circuitcellar.com
Magazine Support   Digital Library   Products & Services   Suppliers Directory 
 
 





 

Issue 147 October 2002
Watch Me Pull A Rabbit Out of My Hat


by Tom Cantrell

Start Rabbit 3000No-Risk CISCPeck-O-PeriphsTime TravelerOne-Stop ShoppingKeep MotoringSources and PDF

ONE-STOP SHOPPING

Yes, the Rabbit 3000 is a neat chip, but there are a lot of those on the market to choose from these days.

What I really like about the Rabbit 3000 isn’t merely the chip itself, but the entire package—documentation, tools, libraries, and so on—that make for a successful project.

Notably, Rabbit gains a lot of synergy by virtue of supplying both the chip and C compiler. Way back when, this was common, but it fell out of favor as chip companies’ afterthought in-house compilers fell to superior third-party offerings.

But remember that Rabbit/Z-World was doing C compilers long before they did their own chip. The result is a fine mesh between hardware and software that’s rare to find in an era of promiscuous couplings between standard tool suites ported to any and all chips.

When it comes to performance, a good compiler can do wonders. Even though the Rabbit 3000 is a frisky chip, it is, after all, still a CISCy beast. Instructions can easily balloon into double-digit clock cycles, depending on how baroque they are (i.e., fancy addressing modes, multiple memory accesses). Nevertheless, even with all of the usual benchmarking caveats, it’s safe to say the Rabbit/Z-World compiler brings it on, especially when it comes to floating point (see Table 1).

Operation/
program
Dhrystone 1.1
1000 loops per second
Whetstone
1000 loops per second
Sieve
(milliseconds)
Rabbit 3000 at 50-MHz Dynamic C 6570 813 53
AMD 188ES at 40-MHz Borland 3.31 C 3603 61 120
Zilog eZ80 at 40-MHz Zilog C compiler 2914 20 158
Dallas DS80C320 (8051) at 33-MHz Keil C 1251 140 160
Phillips 80C51 at 33-MHz Keil C 598 61 350
Table 1—As usual, a simple benchmark summary raises as many questions as it answers. Nevertheless, it’s clear that the combination of the Rabbit 3000 and Dynamic C is no tortoise when it comes to floating point.

 

Even if you don’t care about performance or Rabbit’s claims, there are other big advantages to one-stop compiler and chip shopping. Have you ever struggled to make a C compiler deal with an interrupt? Access an I/O device? Store a variable in flash memory rather than RAM? Perform multitasking (see Listing 1)? For C on the Rabbit, these are all built-in and blessedly easy to use.

I had the chance to plug and play with the Rabbit 3000 development kit, which I found to be polished, user-friendly, and a relative bargain at $299, considering that the C compiler is included. As you can see in Photo 1, the kit is based on the Rabbit Core Module 3000 (RCM), a viable contender for embedded Internet applications thanks to the built-in Ethernet interface and royalty-free (source code is included) protocol stacks.

Photo 1—The Rabbit Core Module (RCM) 3000 serves as the basis of the $299 development kit. With built-in Ethernet (using a Realtek PHY) and up to 512 KB each of flash memory and SRAM, it’s a natural for embedded web applications too.

 

Although I’m not in a position to make an authoritative statement about correctness and performance, the Rabbit networking support feels relatively comprehensive, credible, and confidence-inspiring. That’s more than I can say for a lot of the mini-me network stuff I run across, too much of which borders on snake oil. Kudos to Rabbit Semi for offering more hope and less hype when it comes to putting embedded gadgets on the I-way.

Not that Rabbit 3000 support is an entirely in-house proposition. There’s also a chip-specific port of MicroC/OS-II, the popular RTOS written by Jean Labrosse, and a C compiler from Softools. [3]