Issue
147 October 2002
Watch
Me Pull A Rabbit Out of My Hat
Start
Rabbit 3000 No-Risk
CISC Peck-O-Periphs
Time Traveler One-Stop
Shopping Keep Motoring
Sources 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]