Rabbit Semiconductor’s RabbitFlex has been out for awhile (see “8-Bit Module Custom Carrier Board Takes Less Than A Week,” ED Online 12424). It is a process that a designer can get a custom system based on a Rabbit FlexCore module in a day or so depending upon what you want to pay for shipping. This is a phenomenal turn around time for something of this nature especially since the board is already checked out and ready to use.
The FlexCore modules use the Rabbit 3000 8-bit microcontrollers. I also took a look at the new modules that use the 8-bit Rabbit 4000 (see “8-Bit MCU Packs Encryption Hardware,” ED Online 11272). These will eventually be available in RabbitFlex solutions but for now these new compact modules can be employed in custom solutions.
RabbitFlex: Fast and Flexible
The first thing to consider is what RabbitFlex is. It is actually a manufacturing process that turns out RabbitFlex carrier boards for Rabbit FlexCore modules (see Figure 1). FlexCore is just one family of modules available from Rabbit Semiconductor. The current crop is based on the 8-bit Rabbit 3000 microcontroller. Future versions will be based on the Rabbit 4000. From a developers point of view, it is simply a faster, more power compute platform for RabbitFlex.
Rabbit Semiconductor’s modules normally plug into a carrier board since only interface usually found on the module is an Ethernet RJ-45 jack. There must also be a way to provide power and most of the interfaces on the module are typically connected through additional hardware that might be as simple as a resistor network. Carrier boards include development boards from Rabbit Semiconductor, custom boards developed by people like you and now RabbitFlex boards.
RabbitFlex board has a connector and mounting holes for the FlexCore module. It also has half a dozen connectors that have a set of passives and interface chips that sit between the connectors and the peripheral interfaces on the FlexCore module. The reason for the passives and chips is that the interfaces on the FlexCore module can vary. A particular pin on the Rabbit microcontroller might be an analog input or digital output. Likewise, the interface between the pin and a peripheral might require buffering or isolation.
The web-based RabbitFlex configuration program (see Figure 2) lets developers select what kind of interface will appear on a particular connector. It also creates a C header file that contains the names defined when the RabbitFlex board is designed. This means you can start developing a program for the system once the board has been configured.
I found the web interface easy to work with. You need to be aware of the limitations and the IO overlap that the Rabbit 3000 has. For example, the module can support a single LCD display but it uses some IO ports that can be used for other purposes. The same is true for analog IO. Luckily if you just need digital IO then the choices are much more open.
The 10-pin connectors are organized around 8-bit ports. One of the six connectors is for the serial interfaces but most of the others can be used for digital IO. I selected a mix of PWM outputs for motor control, analog IO and a mid-range LCD display. It took me less than an hour to translate my design into a configuration online. I selected the FlexCore board with Ethernet as well. It was then a matter of walking through the purchasing information and waiting for a couple days (regular shipping) for the board to show up. Pricing ranges from $149 to $279 depending upon the configuration and the FlexCore board you select.
From a software developers point of view this approach is great. I had some servos and sensors that I needed to work with. In less than a week I had something that was custom made and ready to program. This is significantly less than any other project I have put together.
Rabbit also provided the $199 RabbitFlex Toolkit. This is something you will want to purchase with the first board unless you have access to the right connectors and have a Rabbit development kit already.
The RabbitFlex Toolkit includes a power supply, cables with a connector at one end, a breakout board and cables for debugging (see Figure 3). A copy of Dynamic C, the Rabbit processor development tool of choice, is also included. There is a range of add-on modules and protocol stacks available from Rabbit Semiconductor and third parties.
I won’t add a full review of Windows-based Dynamic C here but I would like to mention some of the features not found in other environments. For example, it supports coroutines as part of the language. This type of cooperative multitasking is especially useful in process control and it is also much more efficient. Of course, this can make Dynamic C applications less portable. Still, this is true for any program that takes advantage of the hardware or software features that are the norm for embedded applications.
I had used Dynamic C before so I had an advantage when installing the software and getting up and running using the debug interface but it is relatively simple so I don’t expect the average developer to take much more time than I did. I was able to get a test application loaded on the new RabbitFlex system in two hours starting with a set of unopened boxes. Not bad for hardware and software setup and cabling.
Of course, the first application could only flip a few LEDs and turn some servos but it proves the process. If I had an application already laid out then I expect that getting up and running would be just as easy.
At this point I have a board that I could do prototype work but assuming that its size and configuration are is wanted for a production then it is a simple matter to order another set from Rabbit. The board design is maintained online and the web site can support different versions for a particular design. Of course, quantities are less expensive so it can be worthwhile to use the service for small quantities. How small depends upon the application. This may even run over a hundred per month.
So how does Rabbit do it? The board you receive is custom made but it is designed to handle a fixed set of interfaces. It is all surface mount hardware so building the board is simply a matter of installing the proper surface mount parts before popping it into the oven.
Taking a close look at the board shows a regular layout that is sparsely populated. What the production service does is to populate only those sections necessary to meet the requirements you specify using the web-based design tool. If fact, all RabbitFlex boards are identical. Only the installed components are different. This might include transceiver chips, resistors, capacitors or other parts. You get a schematic of the design in case you want to build your own board. In general you might create a smaller board but probably not one that is much less expensive.
Another benefit is that Rabbit has handled testing of the circuits it is putting on the RabbitFlex board. Granted, the interfaces are relatively simple but knowing what components can be used is something a developer would have to research taking even more time. Likewise, the board is tested before it is shipped.
Another quick note. The RabbitFlex board is about twice as thick as most circuit boards making it a very solid platform. Also, there are no traces or devices on the bottom of the board.
Bottom line. RabbitFlex is elegant. It is ideal for one-off projects, prototypes and incremental development. It is significantly less expensive than custom board development. It is also suitable for production work although the level where this is practical varies.
The Rabbit 4000 is Rabbit Semiconductor’s top of the line microcontroller. It is currently available on to modules: the RCM4000 (see Figure 4) and RCM4100 (see Figure 5). These modules use a new form factor and high density connector found on the bottom of the module. RabbitFlex is expected in the future. Likewise, other rabbit processors will be made available using the new form factor.
The main difference between the 59MHz RCM4000 and 29MHz RCM4100 is addition of the RJ-45 10Base-T Ethernet connector. Both have 512K Flash, 512K SRAM, and 32 MB NAND flash, DMA and eight channels of 12-bit A/D. They also have auxiliary I/O, quadrature decoder, input capture, 40 GPIO lines shared with up to six serial ports, and four levels of alternate pin functions that include variable-phase PWM.
The processor has very low EMI and a number of low power modes. It can be clocked down to 2 kHz. A security-key feature provides “tamper detection” and encryption capabilities but it is not the same as a secure processor or tamperproof system. It is suitable for medium security environments.
The RCM4000 development kit (see Figure 6) comes with a copy of Dynamic C 10. Getting the dev kit up and running was trivial since I already had the RabbitFlex system installed. This kit uses the same compiler and debugging cables. The only difference is the target processor.
Running software on the RCM4000 was a trivial exercise but after playing with the RabbitFlex board the kit’s carrier board seemed almost crude. There is a nice patch area and the mounting holes are just right for many embedded projects and prototypes. Built-in peripherals are limited to a pair of status LEDs and a pair of buttons.
Rabbit’s software is pretty capable out of the box including encryption library support. There are a number of software add-ons that applicable to most of Rabbit’s modules including these. Some examples include a FAT file system, µC/OS-II Real-Time Kernel, and RabbitWeb web services.