• : Function ereg() is deprecated in /home/project-web/tinyos8051wg/htdocs/includes/ on line 647.
  • : Function ereg() is deprecated in /home/project-web/tinyos8051wg/htdocs/includes/ on line 647.
  • : Function ereg() is deprecated in /home/project-web/tinyos8051wg/htdocs/includes/ on line 647.
  • : Function ereg() is deprecated in /home/project-web/tinyos8051wg/htdocs/includes/ on line 647.
  • : Function ereg() is deprecated in /home/project-web/tinyos8051wg/htdocs/includes/ on line 647.
  • : Function ereg() is deprecated in /home/project-web/tinyos8051wg/htdocs/includes/ on line 647.

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. 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. Presently we support the following platforms using the CC2430 SoC:

3.1.1 TinyOS interface support

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

  • Radio (SimpleMac). The radio is supported through the SimpleMac interface, this differs from the standard AM interface. This allows simple access to packet transmission, but does not provide routing, retransmission, etc. This interface is well suited for 802.15.4 style packet based radios (such as the CC2430, Motorola MC13192, etc.). and is common among the 8051 platforms. See [here] for more on SimpleMac.
  • ADC The Analog-to-Digital Converter is accessed through the core Read interface that enables reading a single value. In order to readmultiple values, an applicationmust issuemultiple read calls or use DMA transfers.
  • Pins The General IO pins are exported through the core GeneralIO interface, that enables setting or clearing a pin, make it an input or an output.
  • UART The UART is exported using the core SerialByteComm interface (that sends and receives single bytes from the UART) and StdOut interfaces (that provides a printf-like abstraction on top of SerialByteComm. See [here] for more on StdOut.
  • Flash We export the flash using the SimpleFlash interface that allows to read and write an array of bytes, as well as delete a page from flash. Note that this interface is much simpler than the abstractions promoted by the TinyOS 2.0 core working group (volumes, logging, large and small objects).
  • Timer The timers are exported using the generic TinyOS Timer interfaces Alarm and Counter (see below for more on timers). These two interfaces gives applications direct access to hardware counters and allows the use of the TinyOS components to extend the timer width from 16 bit to 32 bit.

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:

The TinyOS timers are implemented in the following two components:

While the rest of the timers are implemented in:
The timers are dependent on the system clock which is setup in:


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


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