This is a large milestone-based release of Tock that encompasses numerous changes made by many contributors over the last five months. We set two main goals for this release which were tracked in the following issues:
- [#985] Make Tock Architecture Agnostic: The core Tock kernel should support running on non-Cortex-M platforms.
- [#1154] Userland UDP: There is now an interface to send and receive UDP packets from userland.
We re-architected the core kernel to (hopefully!) remove all assumptions that Tock is running on a Cortex-M platform, and moved all of the architecture-specific code to the /arch
crates. This will enable Tock to run on other architectures in the future, like Cortex-MF or RISC-V.
We also significantly improved the IPv6/6LoWPAN based networking stack in Tock (built on top of 802.15.4) to enable UDP packet send and receive from userland. This is a promising step towards a full networking stack in Tock.
While we waited to complete these two goals before doing a release, numerous other changes were also made along the way. To briefly summarize:
- The
debug
module in the kernel now includes a genericpanic!()
routine used by many boards. - The kernel
debug
module is now a direct user of aUART
object rather than a psuedo-process. This provides more flexibility and simplifies the kernel internals. Capabilities
are a new feature for controlling access to sensitive (but public) internal Tock APIs.- The
ADC
HIL changed to handle different resolution ADCs. - The
UART
HIL changed to include aconfigure()
method. - The randomness HILs now support multiple widths and entropy and RNG versions.
- Tock switched to the LLVM toolchain, removing the need for ARM gcc.
More details can be found in the CHANGELOG
file.
Stability Guarantees
This release does not include any new API stability guarantees.
Testing and Board Support
This release was tested on these platforms:
- nRF51DK
- nRF52DK
- Hail
- imix
- LaunchXL CC26x2