Skip to content

8051 Based Platforms

g-oikonomou edited this page Mar 10, 2013 · 7 revisions

Table of Contents

Intel 8051-Based Platforms

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:

Sensinode/cc243x (cc2430 and cc2431)

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).

Texas Instruments cc2530 Development Kit

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

cc1110

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/cc253x and 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.

Hardware Feature Matrix

This table lists the various hardware features for the devices supported by Contiki. Unless explicitly mentioned otherwise, the features listed here have been implemented.

List of Hardware Features
Texas Instruments cc2530 DK Sensinode
cc2530EMs on SmartRF05EB cc2531 USB Dongle N740 NanoSensor N601 USB NanoRouter
SoC cc2530F256 cc2531F256 RC230x (cc243xF128)
SoC Features
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
Peripherals
LEDs 42 2 2 2
Buttons 12, 3 2 2 0
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
  1. Only on devices with the RC2301 (cc2431F128)
  2. LED 4 is mapped to the same port/pin as B1. The current implementation configures the pin as input and supports the button.
  3. The board has two buttons but only B1 is connected to the SoC
  4. Driver not implemented

Guides

  1. Prepare your System - Requirements
  2. How to Install and Use Contiki for 8051 Platforms
  3. Understanding 8051 Memory Spaces (and how I learnt to avoid stack overflows)
  4. Understanding Code Banking (and how I learnt to spot banking errors before programming my node with firmware that crashes left right and centre)
  5. How to increase maximum available stack

How you can Help

  • 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

Best Way to Contribute Code

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.

More Reading

  1. GitHub wiki on Contiki's 8051-based ports
  2. Loughborough University's page on Contiki for Sensinode/cc243x devices. This page only serves as an archive, since the port has now been merged upstream.
Clone this wiki locally