8051 Based Platforms
Clone this wiki locally
Table of Contents
Contiki provides CPU code for two Texas Instruments System-on-Chip (SoC) solutions, the cc253x and cc243x. All those SoCs are equipped with an enhanced Intel 8051 microcontroller core, which means that we build contiki using the Small Device C Compiler (SDCC).
Contiki platforms using this CPU code are:
The port actively supports N740 NanoSensors and N601 USB NanoRouters. Those devices are actually equipped with Radiocrafts RC230x modules, which are cc2430x equivalents. The port also contains some legacy code to support older devices (e.g. N600, N711). Unfortunately, lack of access to the actual hardware means this code is not being tested and may be bugged.
To my knowledge, this hardware is no longer available on the market.
I have received reports that this port has been successfully used with TI's cc2430 DKs with very minor modifications. If you are interested in trying this, start by changing
putchar() to use UART0 (on cc2430 DKs) instead of the default UART1 (on Sensinodes).
The following hardware is supported:
- SmartRF Evaluation Board (SmartRF05EB rev. 1.7 & 1.8) with cc2530 Evaluation Module (EM)
- Initial support for cc2531 USB Sticks
There is no support for the cc1110. However, similar to cc243x and cc253x, this SoC is based on the 8051 MCU. This means that the existing contiki cpu code (
cpu/cc2430) can serve as a basis for cc1110 porting efforts. Due to its RAM and Flash size, it is unlikely that a cc1110 port will support the same feature set (begging to be proven wrong here!). This thread on contiki-developers contains an exchange of ideas on how to go about porting for this SoC.
This table lists the various hardware features for the devices supported by Contiki. Unless explicitly mentioned otherwise, the features listed here have been implemented.
|Texas Instruments cc2530 DK||Sensinode|
|cc2530EMs on SmartRF05EB||cc2531 USB Dongle||N740 NanoSensor||N601 USB NanoRouter|
|MCU||Enhanced Intel 8051 core, using the standard 8051 instruction set.|
|RAM||8 KB with data retention in all power modes||8 KB (4 KB data retention in all power modes)|
|Flash||256 KB||128 KB|
|RF||2.4 GHz IEEE 802.15.4 compliant RF transceiver||2.4 GHz IEEE 802.15.4 compliant RF transceiver, based on the cc2420 radio core|
|Sensors||VDD, On-Chip Temperature|
|Other||cc2431 Location Engine1|
|Hardware AES Encryption/Decryption (AES Co-Processor)4|
|Hardware Random Number Generator|
|I/O Connectors||RS232 (UART0)||USB||MiniUSB (to UART1 over FTDI or to program)||USB (to UART1 over FTDI or to program)|
|USB (to program)||Debug Connector||9-pin (to program)||Debug Connector|
|Serial Flash||256 KB OnBoard SPI Flash4||Numonyx Forté M25P16 (16 Mbit)|
|USB-UART||No||No||FTDI FT232R USB UART|
|Other||LCD4||Hardware USB Support||Freescale Semiconductor ±3g, ±11g Three Axis Accelerometer|
|Joystick4||Vishay Semiconductors Ambient Light Sensor|
|Battery Voltage Sensor|
- Only on devices with the RC2301 (cc2431F128)
- LED 4 is mapped to the same port/pin as B1. The current implementation configures the pin as input and supports the button.
- The board has two buttons but only B1 is connected to the SoC
- Driver not implemented
- Prepare your System - Requirements
- How to Install and Use Contiki for 8051 Platforms
- Understanding 8051 Memory Spaces (and how I learnt to avoid stack overflows)
- Understanding Code Banking (and how I learnt to spot banking errors before programming my node with firmware that crashes left right and centre)
- How to increase maximum available stack
- Testing and bug reporting is always welcome
- Experimentation with TCP and embedded webservers. Reports of success/failure and patches are very welcome
- RPL collect support needs work
- Missing SmartRF drivers:
- SmartRF LCD
- SmartRF Joystick
- SmartRF Serial flash
- Patches for a combined Sensinode / cc2430DK port
If you are willing to contribute driver code, have a good read at this page. Also, due to licensing, I can't consider code directly derived from TI software examples.