Tock Logo

Talking Tock

Talking Tock Week 2

This is the second post in a weekly series tracking the development of Tock, a safe multi-tasking operating system for microcontrollers.

Have you seen our recent blog post explaining how we load applications in Tock using relocatable code? Check it out here.

What’s new in Tock?

Tracking long-term progress

Imix platform

@shaneleonard is working on a development board based on the Firestorm that will be widely available (details to come). It is particularly amenable to Tock development since it exposes many more internal pins for debugging as well as facilitating power-measurement of individual components.

A first revision of the board came back last week and we’ve gotten basic code running on it. That’s helped find some hardware bugs we’ll be fixing for the next revision. Look for a final release early in the fall. For now, here it is blinking!

Imix blinking

Cargo-based build

A pull request is out to switch to a Cargo-based build system. We still need to port the NRF code to the new build system and automate pulling in a nightly build of libcore (probably using the [rust-libcore] crate).

This will allow others to develop ports of Tock out-of-tree.

Native Bluetooth Low-Energy Stack

@phil-levis is leading a port of the Mynewt project’s open source BLE stack for the NRF51 and NRF52 to Tock. Initially, we will run Mynewt as a process with the radio hardware registers exposed to it using the MPU. We will then slowly port layers of the library into Rust drivers in the kernel.

Programming apps at runtime

@KBaichoo has finished a block store abstraction that respects the alignment rules of the ARM Cortex-M memory protection unit. The next step is build a layer on top that gets contiguous blocks of storage sized for an app and program it.