Talking Tock

Talking Tock 29 1.0 release, imix and more Oct. 17th 2017 by Amit

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

Tock 1.0

We announced version 1.0 of the Tock system call ABI. It includes the binary format of processes on flash, the semantics and behavior of the five system calls, and the driver interface exposed through system calls for a basic set of portable interfaces.

The goal is to be able to write cross-platform processes that will run on any Tock kernel that is 1.0 compliant. For this version, stability means that those interfaces will not change until, at least, the next major version. In other words, if you write a process to that uses only the stable drivers and it doesn’t work as expected, it’s either a bug in the kernel or a bug in the userland library (and we appreciate bug reports ♥).

imix

Remember imix? It’s a development board we’ve been using for Tock at Stanford and Berkeley (formerly Michigan), specifically for working on BLE, 802.15.4 and power management. It’s similar to Hail with the addition of an RF233 802.15.4 radio, separate power domains for each radio, the MCU, sensors and an external RNG, and as many headers as possible to make power measurement and debugging easier.

Well, it’s finally ready for prime time. We’re confident enough in version 2.1 that we made enough for others too this time. The fab just shipped the boards last night and they’ll be debuted at the SOSP tutorial at the end of the month.

Pull Requests

Merged

Thread/6lowpan

(#581) @ptcrews implemented 6lowpan fragmentation

(#581) @alevy added an example app that sends sensor data over 802.15.4

Tock 1.0

(#599) @alevy standardized the system call interfaces for Tock 1.0

(#638) @bradjc added additional documentation for Tock 1.0

(#639) @alevy stabilized _start API for processes

API for processes (#646) @alevy documented and stabilized the Tock Binary Format (TBF)

(#623) @niklasad1 added a generic user-level interface for Bluetooth Low Energy

(#628) @ppannuto documented how to create a userland library

Build System

(#650) @ppannuto added error reporting when rustfmt is misconfigured

(#653) @ppannuto made sure rustfmt is installed correctly

(#640) @ppannuto fixed discrepancy between GNU and BSD sed

Miscellenia

(#648) @hudson-ayers updated imix “Getting Started”

(#652) @adkinsjd added support for reading the MAX17205 ROM ID

Proposed

Thread/6lowpan