Tock is an embedded operating system designed for running multiple concurrent, mutually distrustful applications on Cortex-M based embedded platforms. Tock's design centers around protection, both from potentially malicious applications and from device drivers. Tock uses two mechanisms to protect different components of the operating system. First, the kernel and device drivers are written in Rust, a systems programming language that provides compile-time memory safety, type safety and strict aliasing. Tock uses Rust to protect the kernel (e.g. the scheduler and hardware abstraction layer) from platform specific device drivers as well as isolate device drivers from each other. Second, Tock uses memory protection units to isolate applications from each other and the kernel.
Learn More
How would you like to get started?
Learn How Tock Works
Tock is documented in the doc folder. Read through the guides there to learn about the overview and design of Tock, its implementation, and much more.
Use Tock
Follow our getting started guide to set up your system to compile Tock.
Head to the hardware page to learn about the hardware platforms Tock supports. Also check out the Tock Book for a step-by-step introduction to getting Tock up and running.
Find example applications that run on top of the Tock kernel written in both Rust and C.
Develop Tock
Read our getting started guide to get the correct
version of the Rust compiler, then look through the /kernel
, /capsules
,
/chips
, and /boards
directories.
We encourage contributions back to Tock and are happy to accept pull requests for anything from small documentation fixes to whole new platforms. For details, check out our Contributing Guide. To get started, please do not hesitate to submit a PR. We'll happily guide you through any needed changes.
Keep Up To Date
Check out the blog where the Talking Tock post series highlights what's new in Tock. Also, follow @talkingtock on Twitter.
You can also browse our email group and our Slack to see discussions on Tock development.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Contributors
The Tock Project Developers include dozens of contributors, some on behalf of
their university, company, or organization. The most up to date list of contributors is available in the git
history: git shortlog -s -n
.
Organizations that have contributed code to Tock include:
- Stanford University
- Princeton University
- University of California, Berkeley
- University of Virginia
- University of Michigan
- Chalmers University
- Helium
- Atihita
Note: the above list may be incomplete. If your organization has supported you in contributing to Tock, and wish to be acknowledged, please update this list accordingly.