September 21, 2020

Rabbit microcontrollers

There was a time where these looked like a nice way to do business. These days I have completely lost interest in them, have moved on briefly to AVR microcontrollers, and then quickly on again to ARM for everything I do these days. I use embedded linux on ARM when I need ethernet. The absolute worst thing about the rabbit was that the development system was only Windows hosted and Wine has always sucked.

However, in September of 2020 I was notified that the OpenRabbit project has a new "dude" (PKK) who is doing what sounds like a lot of excellent work:

OpenRabbit

PKK says:

OpenRabbit now compiles and works on current GNU/Linux systems. Also, I have added support for USB programming cables, it can load programs at higher speed, and no external binary blobs from Dynamic C are needed any more (it now comes with its own replacment for the coldload.bin binary blob, and we can use a pilot.bin blob from Dynamic C 9, which is under MPL (the blob, not Dynamic C), with source available (though that source still requires Dynamic C to compile, it doesn't compile with free tools yet)).
Me, I am sticking with ARM these days, but if I was still doing anything with Rabbit I would be looking at OpenRabbit.

Overview

Everything from here on is from back in 2010 when I took a look at Rabbit.

There are a whole series of rabbit core modules (RCM's) and rabbit processors. A typical RCM has an ethernet port, processor, memory, and bunch of IO. An RCM sells for around $50, which makes them attractive for small embedded projects that need a network interface.

I am playing with an RCM5700. The main reason is that I could buy a module with a development kit for a little more than $100 in late 2009. The RCM5700 does not have a RJ-45 on the module (you need to buy a RCM5710 to get that). Not to worry though, there is an RJ-45 on the development board.

An attractive module is the RCM3700. The main attraction is that this module communicates with your project via a standard 0.1 inch center IDC connector (like the one on every ribbon cable on the planet) on the bottom of the module.

Documentation

I am working with the RCM5700, so here are some documents that I have downloaded to maybe help me along.

Development System

The most important part of any embedded software project is the development system. I would rather use crummy hardware with a good development system than the other way around any day of the week. Rabbit development is done using "Dynamic C" which they give away as part of the development kits, or which you can download for free from the rabbit website. One caveat with the "free" download; you must register and wait a few days for a download link to be issued. As of this time, various versions of dynamic C must be used with different rabbit processors. (They have told me that they will converge to one compiler someday). Right now the game is: My RCM5700 shipped with Dynamic C 10.54, so it looks like I can pitch that and download 10.60, when and if they respond to my download link request.

Linux, Wine, and Rabbits

The bottom line up front: so far this does not work and wine is a looser as far as USB support.

No big surprise, but Dynamic C expects to run on Windows. I strive to never run Windows (and you should too!) My first thought was to see what wine might do for me. I installed Dynamic C 10.60 under wine, which was easy enough, and Dynamic C fires up just fine, but there is no joy as far as communication to the rabbit module via USB.

You can read all the details via this link:

My experiences with the RCM5700 and the Dynamic C 10.60 compiler under linux/wine.

Virtual Box

In an old thread (from 2008), a fellow indicates that under Wine, he could send data to a USB device (namely his rabbit from Dynamic C), but never could read anything back. He gave up and then had success using virtualbox, (A virtual machine product from Sun Microsystems) which he claims works fine with many USB peripherals. This is the direction I am pursuing (even though it involves installing windows inside of virtual box).

Wow, it worked!! And it wasn't impossibly hard. After installing virtual box, I had to set up a USB filter to recognize the usb to serial chip in the rabbit. Then after starting windows in the VM, I plug in the USB cable to the rabbit and windows says it sees new hardware and installs a driver. Then I start up Dynamic C 10.60 and at first I was getting communications errors, but I use Options->Project Options and change the serial port from COM1 to COM3 (USB) and away things go!!! First I use Compile->Reset Target and Compile BIOS, then I select their DEMO1.c program. Use the Compile button to compile it, and the Run button to run it.
It works! Away I go! Hooray!!

z2k

As you may well know, these rabbit controllers are Z80 processors on steroids. What z2k is is a z80 assembler for the rabbit that runs on linux. I am not pursuing this because I want to code in C (although my past experiences with Z80 assembly language were very nice).

OpenRabbit in 2010

A fellow (Lourens Rozema) in the Netherlands is doing linux hosted rabbit development. He uses wine and some of his own tools. He calls this the OpenRabbit Project. He says you can use vi (vim) to generate code (just what I want to do). You can then use a makefile to run the dynamic C compiler inside of wine via command line calls, which sounds perfect. At this point you have a .bin file which you can use his OpenRabbit tool to load into the target system. His command line invocation is:
wine f:/DCRABBIT_8.51/dccl_cmp.exe hello.c -h+ -br
What I use on my system to launch dynamic C in its GUI form is:
wine "c:\dcrabbit_10.05\dcrab_10.05.exe"
I also have a Dccl_cmp.exe executable, so I can do the same trick. Once I find out what all the command line options for that are, who knows! And it turns out if I do:
wine "c:\dcrabbit_10.05\dccl_cmp.exe"
It gives me a list of all the options!
-br says to compile to a bin file using rti parameters
-h+ says to print date, time, program info header.

The rti parameters may be given via online argument and specify a CPU id and revision, base frequency, ram and flash.

Just in case this guy goes away with all his goodies, I have stashed them here on my machine, but you should go to his site to see if he is continuing his work. (Since this is 12/2009 and these files were last updated 7/2004 he seem to have found other things to do with himself).

Tucked away inside his pages I find the phrase:
I was not interested in another time consuming never ending hobby project.
Sound like many of the enterprises I am and have been involved in!!
Feedback? Questions? Drop me a line!

Tom's Computer Info / tom@mmto.org