We already have a fair share of open source operating systems running on Arm Cortex-M microcontrollers with FreeRTOS, mbed OS, Zephyr OS, RIOT, and many others. Earlier this morning, as I wrote about the Embedded Linux and IoT Summit 2018, I discovered you can now also add Tock to the list, with the operating system specifically designed for (secure) IoT on Arm Cortex-M MCUs.
According to the abstract, Tock aims to enable more secure and extensible IoT systems by using a language sandbox and hardware enforced mechanism to isolate third-party and other untrusted code in the system.
The operating systems is comprised of three components:
- A trusted core kernel written in Rust language with a HAL, scheduler and platform-specific configuration
- Capsules compiled with the kernel and use Rust’s type and module systems for safety; typically used for drivers & virtualization layers
- User-space processes using the MPU for hardware protection at runtime; used for network stack, applications, etc…
System components (an application, driver, virtualization layer, etc.) can be implemented in either a capsule or process, but each mechanism trades off concurrency and safety with memory consumption, performance, and granularity.
|Memory Overhead||None||Separate stack|
|Update at Runtime||No||Yes|
Some of the supported hardware two board based on Microchip Atmel SAM4L Cortex-M4 MCU and Nordic Semi nRF51822 BLE Radio:
- $60 Hail development module, based on Photon Particle form factor, and including a temperature and humidity sensor, light intensity sensor, accelerometer & gyroscope.
- Upcoming $100 IMIX development board with the same sensors as Hail, but also adding an 802.15.4 radio, hardware RNG, USB host port, Arduino headers and more.
You’ll find documentation, information about the hardware, and community links in TockOS website, or directly on Helena Project’s github account, where beside the source code for the project, you can also access tools, and the (EAGLE) hardware design files for IMIX board.