Tock Logo

Talking Tock

Talking Tock 28

Recapping the last couple months

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

How long has it been since our last update? Nearly two months??? Well, ain’t nobody getting paid to post these, and I’ve been busy. Since our last update we ran a training at RustConf, the students working with us over the summer made a lot of progress towards a Thread implementation and our paper was accepted to SOSP ‘17. Exciting stuff!

  1. Niklas Speaking at RustFest
  2. RustConf Training
  3. Thread/6lowpan Progress
  4. SOSP Paper
  5. Pull Requests
    1. Merged
      1. Thread/6lowpan
      2. NRF5x Port
      3. Towards Tock 1.0
      4. Userland
      5. Administrativia
    2. Proposed
      1. Thread/6lowpan
      2. Towards Tock 1.0
      3. Administrativia

Niklas Speaking at RustFest

If you’re attending RustFest in Zurich this weekend, be sure to go see our own @niklasad1 give a talk on his master’s thesis work (with @frenicth) on porting Tock to the NRF51 and implementing a pure Rust Bluetooth Low Energy stack.

His talk is on Saturday after lunch at 2:30pm.

RustConf Training

There was an incredible turnout for the Tock training at RustConf. After a few last minute sign-ups, we ended up with a 30-person room at capacity. From our informal survey of the room (a more formal one coming), there were folks from big companies (like Mozilla and Intel), small companies (like Helium), and no companies. It was a really great meeting all of you, and thanks for turning up!

We went over the general design of Tock, then worked with Hails to write a capsule that sampled accelerometer data and a userland application in Rust. All the training materials are available in the main Tock repo https://github.com/helena-project/tock/tree/master/doc/courses/rustconf

We’ll be running similar tutorials (though more geared for academics) at SOSP and SenSys, and James Munns will be running an embedded Rust workshop at RustFest next weekend with some overlap. So if you weren’t able to attend RustConf, there will be other opportunities!

Thread/6lowpan Progress

Hubert Teo (@bbbert), Paul Crews (@ptcrews) and Mateo Garcia (@mog96) are three Stanford students who worked over the summer to implement 6lowpan and Thread support for Tock. Briefly, 6lowpan is a standard for tunneling IPv6 packets over the low-power 802.15.4 wireless radio standard (the same one used in ZigBee). It’s a fairly common standard in wireless sensor networks in academia, and has also been picking up steam in home automation recently thanks to the Thread group standardizing a set bunch of related protocols around 6lowpan for network configuration (if you’re working on Thread professionally and are reading this, when are we getting an OnHub router that supports Thread??).

Implementing full support for Thread turns out be a pretty big task since it involves a handful of different protocols as well as some low-level 802.15.4 features that hadn’t been implemented for the RF233 driver in Tock. It also took some effort to get a test rig up since there isn’t any commercially available hardware that supports Thread natively just yet.

Nonetheless, the students did a really impressive job. As of the end of the summer, Tock has support for 6lowpan compression and decompression, support for packet fragmentation (pending a pull request being merged), most of the Thread security layer, and support for parsing network provisioning messages.

Their end of the summer write-up gives more details on their implementation effort and includes a really nice summary of the Thread/6lowpan stack.

SOSP Paper

We just submitted the camera-ready (i.e. final version) of a paper we wrote detailing the design and implementation of Tock for SOSP (Symposium on Operating Systems Principles). You can read the full paper. We also posted a summary yesterday.

Pull Requests

There has, of course, been plenty of regular work going on, too. The numbers of pull requests merged and proposed is a bit overwhelming, so I broke them into categories this time.

Merged

Thread/6lowpan

NRF5x Port

Towards Tock 1.0

Userland

Administrativia

Proposed

Thread/6lowpan

Towards Tock 1.0

Administrativia