Firmware provides the low-level capabilities within the SHIMMER platform to control the device functions. There are a number of lightweight operating systems that can be used to run on a sensor node, namely TinyOS , Contiki , Nano-RK , ERIKA , MANTIS , and SOS . All SHIMMER firmware is primarily developed by using TinyOS and released into the public domain via SourceForge . Firmware running on the sensor platform provides local processing of the sensed data, local storage of the data if required, and communications of these data to a higher-level application for advanced signal processing, display and data persistence.
TinyOS handles task scheduling, radio communication, time, I/O processing, etc. and has a very small footprint size. TinyOS is a lightweight, event-driven operating system designed for sensor network nodes that have very limited resources.
Real-time Data Streaming to BioMOBIUS
SHIMMER data can be reliably streamed at rates up to 500HZ in real-time to a BioMOBIUS application via the Bluetooth or 802.15.4 radios. To enhance the reliable communications in addition to standard Bluetooth link reliability, a packet format that supports various types of sensor data and provides enhanced reliability to the data transmission through packet sequence numbers and a cyclic redundancy check, was developed. The SHIMMMER firmware (implemented in TinyOS version 1) uses the frame format in Figure 5 for BioMOBIUS application integration.
The content of packets is unrestricted binary data. This can lead to problems with control characters like BOF (Beginning of Frame, hex byte '0xC0') or EOF (End of Frame, hex byte '0xC1') appearing in the packet header or payload and being interpreted as control characters. To avoid this issue, a byte stuffing technique based on ISO's asynchronous high-level data link control (HDLC) protocol is utilized.
Logging Data to MicroSD Card
Many biomedical applications require subjects to have complete and unhindered mobility. To achieve this, capability support for Secure Digital (SD) card logging has been developed. The SHIMMER platform utilizes a MicroSD card slot that supports up to two GBytes of flash memory. For ambulatory ECG monitoring at 500 Hz from three channels, more than 80 days of data can be stored in uncompressed format. There are a number of firmware programs available on SourceForge that facilitate recording of data to the SHIMMER platform's MicroSD card.
A significant difference between most sensor nodes and standard computing platforms is the heavy focus on power management and consumption. A large number of applications require battery-powered operation for extended periods of time . Computational capabilities have far outstripped battery technologies. SHIMMER battery optimizations have been implemented to satisfy various project requirements. These optimizations implemented in firmware have been mostly, but not exclusively, focused on lowering the duty cycle of the 802.15.4 radio. The goal is to minimize the on-time of all hardware subsystems on the sensor hardware platform. For example, each gyroscope on the SHIMMER gyroscope daughterboard requires a supply current of 9.5mA. With two dual-axis gyroscopes on the board there is a substantial 19mA requirement that can be saved when the gyroscopes are off. Other auxiliary battery features have been implemented for integration purposes, such as a low battery indication sent by the SHIMMER platform to a BioMOBIUS software application that prevents corrupted data from the accelerometer being received. The accelerometer outputs are ratio metric which means the output offset and sensitivity will scale linearly with applied supply voltage. Therefore, useful data can only be generated if the supply voltage remains constant. The low battery indication is a SHIMMER firmware feature that halts sampling of data when the supply voltage falls below +3V.
An intuitive mechanism to support the download of firmware executable programs to SHIMMER sensors was highlighted as an important capability for biomedical researchers. The SHIMMER development kit includes an easy-to-use graphical application called the "SHIMMER Windows Bootstrap Loader" to allow users who do not have a TinyOS installation on their system to program SHIMMER sensors for their application needs.