One of my current projects requires to provide IP connectivity for an electronic system. Some power can be borrowed from the base system it will be plugged into. A small, low-power system will do it. So after considering several options (like Lantronix Xport
) and provided I needed at least two serial ports, I settled with a Rabbit Semiconductor
They offer different prebuilt cards you can plug into your design. Rabbit core modules can be programmed using Dynamic C
. They include a TCP/IP library so you can program them using an ad-hoc sockets interface. Sample source code is provided and it generally is quite straight forward. I did have a problem when using a non specified (zero) source port for several destination ports different than 80 or 23, I do not know why.
Rabbit 2000 and 3000 processors are both successors of the ancient Z80
, an eight-bit microprocessor developed by Zilog (a company founded by some former Intel engineers that decided to do a better 8080). Z80 was found on both ZX81 and ZX Spectrum computers made by Sinclair.
Dynamic C is not just a compiler but a programming environment (IDE) that includes a boot loader so generated code is loaded into the Rabbit core module through a serial port and a special programming cable (which is a signal level adapter). They use a special feature of the processor that allows it to be commanded by one of the serial ports on boot, so boot loader code is loaded each time to load the user code afterwards. Basic loader is loaded at 2400 bps and later on, a faster speed is used to speed up the rest of the load process. Then your program runs while a debug window on the PC is used as the console for those printf
commands. This all means an emulator or a hardware programmer are not required to develop with Rabbits. And a basic development system is quite cheap.
As usual, some extra problems use to appear: Dynamic C is a Windows program and there is not a Linux version. Though it can happily run under Wine. However, serial communication fails under Wine, so the thing is pretty useless as code download to the target system is done by means of a serial connection and a special programming cable. Alternatively, you can run it over a Windows guest on VMware. It also works ok, but, again, serial communication fails (maybe due to a critical timing, I do not know).
Almost giving up, I decided to try one more thing: The use of a USB-serial adapter with VMware. My cable is based on pl2303 chip, which used to be supported under Windows but not under Windows XP. The problem is that it works under Linux, so as soon as you plug it in, the Linux driver will be loaded. In order to make it work under the Windows guest hosted in VMware you need to unload the linux driver rmmod pl2302
will do it. Next you have to attach this USB device to your Windows virtual machine. A new device will be detected but, because XP does no have the driver you still will need to search for it
on the net. Once the driver is installed, you have a new serial port. This new serial port will work well with Dynamic C (just do not check the "use a USB-serial adapter" on Dynamic C configuration).
I guess the download times are slightly longer than those of using just Windows XP and a regular serial port, but if you do not have a "real" Windows setup and you have a VMware one, then it's a simple approach.
Ok, you do not have a USB-serial cable. Then, you should go to eBay
and get one as they are really cheap, usually under $1 (but shipping will cost you $6 to $10 more).