Contiki is a very small operating system for sensor networks which is designed to work on microcontrollers with a very small amount of memory. According to their website Contiki uses 2 kilobytes of RAM and 40 kilobytes of ROM in a typical setup. The OS uses the uIPv6 stack which supports the 6LowPAN standard to be used on IEEE 802.15.4 radio links.

To get started with the RAVEN Kit and Contiki I had to install a new firmware on theRZUSBstick and the AVR Raven. Basically both devices are intended to be programmed using their JTAG interface. But JTAG programmer are rather expensive and I do not own a JTAG programmer, therefore I had to use the devices ISP port. You need an ISP programmer you can hook up your PC – I use the myAVR MK2 programmer, but in general you can use any other JTAG programmer that is compatible with avrdude.

The Raven has soldering points for ISP, unfortunately the RZUSBstick has not. You can find a quite good post by Michal Ossmann that explains how to connect ISP to the RZUSB – you basically have to soldier some wires directly onto the pins of the microcontroller. This is tricky, advanced soldering skills are required.

As soon a you finish soldering you can hook up the wires to your ISP. I downloaded the binary release of Contiki to flash it on the devices. The firmware is in ELF format which contains both, EEPROM and FLASH of the firmware in one file. Avrdude does not support this format, therefore the ELF file must be split into EEPROM part and the FLASH part as explained on gonium.net. For example the ravenlcd firmware:

# export NAME=ravenlcd_3290
# avr-objcopy -R .eeprom -R .fuse -R .signature -O ihex $NAME.elf $NAME.hex
# avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 -O ihex $NAME.elf $NAME.eep

After that you can use avrdude to flash the FLASH part and the EEPROM part separately:

# avrdude -p m3290p -c avr911 -P /dev/ttyUSB0 -U flash:w:ravenlcd_3290.hex -B10
# avrdude -p m3290p -c avr911 -P /dev/ttyUSB0 -U eeprom:w:ravenlcd_3290.eep -B10

You have to repeat these steps for webserver6.elf and ravenusbstick.elf.

For setting up your IPv6 network interface and radvd on the host the RZUSB is connected you can follow the tutorial on the Contiki Webpage.

If everything works it should look like this: Pinging AVR Raven!! 🙂

Recently bought the AVR Raven 2.4 GHz Evaluation Kit by Atmel. A development Kit for 802.15.4, Zigbee and 6LoWPAN networks. I contains one USB dongle which is basically meant to hook up your computer to one of the mentioned networked and two AVR Raven boards. They are battery powered have a 2.4 transceiver, display, small joystick, temperature sensor JTAG and ISP for the start. Of course there are also some IOs to connect external sensors. I found this hardware having a look at the IPv6 enabled contiki OS. I think I will spend some time with this hardware exploring sensor network technology 🙂 By the way, I think this development kit is pretty cheap. You can get all the stuff for less than 120 EUR!