Jump to content

Tock (operating system)

From Wikipedia, the free encyclopedia
TockOS
DeveloperAmit Levy and the TockOS community
Written inRust
OS familyEmbedded operating system
Working stateCurrent
Source modelOpen source
Initial releaseFebruary 13, 2018; 6 years ago (2018-02-13)
Latest release2.1.1
Repository
Marketing targetEmbedded systems
Available inEnglish
PlatformsARM, RISC-V
Kernel typeMonolithic
UserlandPOSIX
LicenseMIT License, Apache Software License 2.0
Official websitewww.tockos.org

TockOS is a free and open source embedded operating system for microcontrollers written in Rust. The operating system's goal is to isolate components so untrusted third-party applications can run on Cortex-M, RISC-V[1], and x86[2]processors in a protected environment.

History

[edit]

Amit Levy, a PhD student at Stanford University, began the Tock project to have a security-focused replacement for the TinyOS operating system. Amit became interested in researching IoT low-power computers when he decided to build a smart door lock after bicycles were stolen from him and his roommates due to not locking their front door. [3]

Features

[edit]

The Tock kernel is written in the Rust language. The kernel relies on Rust's memory safety and type safety to isolate parts of the kernel from one another. This isolation makes it easier to write secure extensions to the operating system, as one component cannot modify the memory of another.

The system uses a process abstraction that provides complete isolation of memory and CPU resources between applications and the kernel. This allows Tock applications to be written in any language.[4]

The Tock kernel does not have a shared heap and so does not support dynamic memory allocation within the kernel. All kernel memory is statically allocated. Application processes can dynamically allocate from their own memory.

When device memory is statically allocated, kernel software for managing shared abstraction like radio interfaces must make a static decision about the number of requests it will support. Tock allows kernel components to maintain state for dynamic process requests to kernel services using a mechanism called a grant. Each process has a region of its memory called the grant region, which only the Tock kernel can access. Using the grant region, the kernel can dynamically allocate memory from process memory.[5]

TockOS supports the following features, which can sometimes be found in embedded operating systems: concurrency, dependability from resource exhaustion, fault isolation, memory efficiency, and application updates at runtime. [6][7] The operating system is also customizable to run on different platforms and scheduling modules.[8]

Development and release

[edit]
  • On May 9, 2016, TockOS was released at the OSDI conference. This was the first version of TockOS.
  • On February 13, 2018, TockOS 1.0 was released. This was the first rolling release, which added support for nRF and TM4C series chips. Also included were some driver libraries that supported the 1.0 version system call interface.
  • On April 25, 2018, version 1.1 was released. It included a new register interface and automatic deep sleep for most SAM4L peripherals.
  • On November 30, 2018, TockOS 1.3 was released. This version added support for TockOS to run on non-Cortex-M platforms and an interface for the operating system to send and receive UDP packets.
  • TockOS version 1.4 was released on October 18, 2019 and included support for RISC-V architectures.
  • On April 30, 2020, TockOS version 1.5 was released. It included new features to remove unsafe from TBF parsing in the kernel and added generic components.
  • Version 1.6 was released on October 23, 2020. This version added a scheduler trait, added support for four new boards, and included support for UART over USB.
  • On August 27, 2021, rolling version 2.0 was released. It added two new system calls: AllowReadOnly and Exit. TockOS 2.0 also required that apps be compiled for the new syscall interface.
  • TockOS 2.1 was released on September 7, 2022. Version 2.1 included support for new HILs and boards, bugfixes, and a new system call interface.
  • On January 6, 2023, version 2.1.1 was released. It fixed an issue related to system call errors.[9]

Reception

[edit]

TockOS has been received well by the microcontroller community and has over 190 open source contributors as of October 2024.[10][11] In 2022, the Ti50 firmware on the Google Security Chip (GSC) in Chromebooks started using Tock.[12] Microsoft's Pluton root-of-trust chip uses Tock.[13]

See also

[edit]

References

[edit]
  1. ^ "Tock Port to RISC-V". MIT Lincoln Laboratory. Retrieved 2024-10-12.
  2. ^ "Agenda Tock World 7". Tock Foundation. One of our SoC partners has chosen to implement Pluton using an embedded-class x86 core. To support this platform, our team created a port of Tock OS for the x86 architecture.
  3. ^ "Interview with Amit Levy" (PDF). Retrieved 2024-10-12.
  4. ^ Levy, Amit; Campbell, Bradford; Ghena, Branden; Giffin, Daniel B.; Leonard, Shane; Pannuto, Pat; Dutta, Prabal; Levis, Philip (2017-11-06). The Tock Embedded Operating System. New York, NY, USA: ACM. doi:10.1145/3131672.3136988.
  5. ^ "Tock Operating System Design".
  6. ^ "Multiprogramming a 64 kB Computer Safely and Efficiently" (PDF). Retrieved 2024-10-12.
  7. ^ "Abstraction Layers and Energy Efficiency in TockOS, a Rust-based Runtime for the Internet of Things" (PDF). Retrieved 2024-10-12.
  8. ^ "Tock". OSRTOS. Retrieved 2024-10-12.
  9. ^ Case, Use (2023-01-06). "Releases · tock/tock". GitHub. Retrieved 2024-10-12.
  10. ^ "Tock: a secure embedded operating system for microcontrollers – OSnews". OSnews. 2024-06-03. Retrieved 2024-10-12.
  11. ^ (CNXSoft), Jean-Luc Aufranc (2018-02-13). "Tock Open Source OS for Secure IoT Systems Runs on Arm Cortex-M Microcontrollers". CNX Software - Embedded Systems News. Retrieved 2024-10-12.
  12. ^ "Ti50 Firmware Releases". Retrieved 2024-10-19.
  13. ^ "Agenda Tock World 7". Tock Foundation. The SoC partners have some flexibility in dictating how the Pluton core is implemented, however Microsoft owns the firmware and has chosen to use Tock OS as a common platform for (nearly) all Pluton firmware deliverables.
[edit]