Wednesday, June 29, 2011

OpenChronos is finally SWAP-enabled

Endless weeks of work, porting SWAP to the standard Open Chronos firmware, adding new functionalities and debugging all this... Longer than I initially expected but it was worth the work. I'm now able to do what I planned to do with my Chronos: browsing and controlling external SWAP endpoints, transmitting data from the internal sensors, configuring the watch and still keep most of the functionality provided by the Open Chronos firmware.

The following slides navigate along the Chronos screens, showing some of the functionality already provided by the standard Open Chronos firmware and also the new SWAP features:

For those wanting to take a look at the code, I still have to consult the Open Chronos team about the best way to merge both works. If maintaining a fork is the solution, then I'll upload the project to the panStamp code page as I did with the Arduino work and the Java tools. I understand than replacing Simpliciti by SWAP may not be of the interest to everyone so forking from the trunk project may be an option.

-- Edit --
These SWAP mods have been recently added to the Open Chronos project as a fork from the main project:

What are the main differences between using Open Chronos with Simpliciti or with SWAP?

General functionality
Both firmwares provide similar functionalities, except that the SWAP firmware does not include a method for re-flashing the Chronos wirelessly. Instead, the Chronos has to be reprogrammed using the JTAG programmer provided in the kit.

Transmission of accelerometer data (ACC mode)
With Simpliciti, the Chronos sends XYZ accelerometer data every 0.5 seconds whilst SWAP initially stablish a periodic interval of 1 second in order to simplify resources and save power. However, this may be changed in the future.

Reception of packets in SYNC mode
Simpliciti plays with periodic windows where the Chronos is able to receive data. Out of these windows , the radio remains inactive. The SWAP way is much simpler although more power consuming. Instead, the new Sync mode is mainly limited to short transactions, like sending a limited number of configuration commands.

Firmware footprint
Due to the simple nature of SWAP, the new firmware does around 2 KB of savings in Flash space. I've not done the necessary RAM tests but I'd say that SWAP saves some space there too.

Power consumption
More or less the same in both cases, depending on the working mode in use.

ez430-Chronos powered from the external JTAG connector at 3.6 VDC
Mode SWAP Simpliciti
Normal operation (radio off) 12 uA 15 uA
Accelerometer, radio off 0.88 mA 0.88 mA
Sync mode 16.26 mA 4.5 mA
ACC mode, radio on 0.1 mA 4.5 mA

Table 1: Table of consumptions. Comparison between SWAP and Simpliciti.

Regarding the storage of user data in Flash (the CC430 processor has no EEPROM inside), I had to give it up due to the large space consumed by the infomem driver. Open Chronos, like TI's stock firmware, already takes most of the flash space provided by the CC430F6137 processor (32 KB) so adding this new feature forced me to remove some others.

By the way, I've added a custom configuration window for the Chronos in the SWAPdmt tool. This has let me run my tests quickly without having to type the configuration commands by hand from the serial terminal.

Figure 1: SWAPdmt configuration window for the ez430-Chronos
Anything else to relate? Well, this has nothing to do with the firmware but I had wanted the Chronos to show a better wireless range – a few meters according to my tests – but this was not a surprise since other users reported the same limitation. Anyway, I hope to improve this range after placing a decent whip antenna to the panStamp connected to my computer. But these new experiences will surely deserve a new entry in this blog.


  1. Do you plan to implement a simple Repeater mechanism like the one used in the SimpliciTI protocol?

  2. I don't plan to develop repeater functionality in the short term although this could be easily done