Platforms

This port aims at being supporting a wide veriety of 8051 variant. Presently we support the following chips, please note that the completenes varies for each chip.

3.1 ChipCon/Texas Instruments CC2430 based platforms

The CC2430 driver implementation is located in the "chips" directory. At presently this implementation is far from complete, it constitutes a basis for further development. Presently we support the following platforms using the CC2430 SoC:

3.1.1 Limits of the current software base:

Radio

The radio is supported through the SimpleMac interface, this differs from the standard AM interface. The AM interface must be supported. Further it would be interesting to support industry standard MAC layers such as 802.15.4 and 6lopan.

The SimpleMac component indicates transmission errors on UartC uart, e.g.:
MAC: CRC Failed
MAC: Buffer flushed

3.1.2 Interfaces

  • A number of components are exported using non standard interfaces (including the UART), these must be updated to support the TOS standards

3.1.3 Additional chips

The CC2430 is based on an 8051 core that seems to be shared by a number of Texas Instruments chips (e.g. CC2431, CC2510), none of these are supported at present, but they seem similar enough that porting to these chips should be relatively straightforward.

3.1.4 Timers

The timers implementation work around for bugs present in the first chip revisions. Now that more mature chips are available the timers still need to be updated.

The timers are implemented in the following two directories:
tos/chips/cc2430/timer
tos/chips/cc2430/timer_hpl

The TinyOS timers are implemented in the following two components:
HplCC2430Timer1AlarmCounterC.nc
HplCC2430Timer1AlarmCounterP.nc

While the rest of the timers are implemented in:
HplCC2430Timer*P.nc
The timers are dependent on the system clock which is setup in:
PlatformP.nc

Example:

configuration MyTesterC {
components new Alarm32khz32C() as Alarm;
MyTesterP.Alarm -> Alarm;
....

Module:

module MyTexterP {
uses interface Boot;
uses interface Alarm<T32khz, uint32_t> as Alarm;
} implementation {
event void Boot.booted() {
call Alarmen.start((uint32_t) 0xFFFFul);
}

async event void Alarm.fired() {
call Alarmen.start((uint32_t) 0xFFFFul);
}

3.2 SiLabs cip51 based platforms

We support the c8051F340 which is part of the SiLabs cip51 family of 8051 variants, with the following features:

  • USB communication through the usb library
  • I/O: General I/O (pins), SPI
  • Timers through the classic 8051 timers (more advanced timers are unsupported)
  • UART

3.3 Nordic VLSI nRF based platforms

We support the nRF24e1 based on the Synoosys DW 8051 IP block.

  • I/O: General I/O (pins)
  • Timers through the classic 8051 timers (more advanced timers are unsupported)
  • UART