All Projects → tock → Tock

tock / Tock

Licence: other
A secure embedded operating system for microcontrollers

Programming Languages

rust
11053 projects
python
139335 projects - #7 most used programming language
Makefile
30231 projects
shell
77523 projects
c
50402 projects - #5 most used programming language
Nix
1067 projects

Projects that are alternatives of or similar to Tock

rnk
rnk is a RTOS targeting ARM architecture.
Stars: ✭ 22 (-99.32%)
Mutual labels:  arm, microcontroller, kernel, cortex-m, operating-system, mcu
Rt Thread
RT-Thread is an open source IoT operating system.
Stars: ✭ 6,466 (+98.47%)
Mutual labels:  arm, risc-v, cortex-m, iot, kernel
Distortos
object-oriented C++ RTOS for microcontrollers
Stars: ✭ 354 (-89.13%)
Mutual labels:  arm, microcontroller, cortex-m, operating-system, embedded
Platformio Core
PlatformIO is a professional collaborative platform for embedded development 👽 A place where Developers and Teams have true Freedom! No more vendor lock-in!
Stars: ✭ 5,539 (+70.01%)
Mutual labels:  arm, microcontroller, risc-v, iot, embedded
Daplink
Stars: ✭ 1,162 (-64.33%)
Mutual labels:  arm, microcontroller, mcu, cortex-m, embedded
Pyocd
Open source Python library for programming and debugging Arm Cortex-M microcontrollers
Stars: ✭ 550 (-83.12%)
Mutual labels:  arm, microcontroller, mcu, cortex-m, embedded
mdepx
MDEPX — A BSD-style RTOS
Stars: ✭ 17 (-99.48%)
Mutual labels:  arm, microcontroller, embedded, cortex-m, risc-v
ez-rtos
A micro real-time operating system supporting task switching, delay function, memory allocator and critical section. It is writen on ARM Cortex-M3 assemble language, it runs successfully on STM32F103 MCU.
Stars: ✭ 57 (-98.25%)
Mutual labels:  arm, cortex-m, operating-system, mcu
Lib Python
Blynk IoT library for Python and Micropython
Stars: ✭ 140 (-95.7%)
Mutual labels:  microcontroller, mcu, iot, embedded
DemOS
Free, simple, extremely lightweight, stackless, cooperative, co-routine system (OS) for microcontrollers
Stars: ✭ 18 (-99.45%)
Mutual labels:  arm, microcontroller, cortex-m, operating-system
Embox
Modular and configurable OS for embedded applications
Stars: ✭ 576 (-82.32%)
Mutual labels:  microcontroller, mcu, kernel, embedded
Embedded Notes
嵌入式linux软件开发、嵌入式linux驱动开发、c语言、单片机开发、IOT开发等面试要点记录
Stars: ✭ 487 (-85.05%)
Mutual labels:  arm, mcu, iot, embedded
Frosted
Frosted: Free POSIX OS for tiny embedded devices
Stars: ✭ 194 (-94.05%)
Mutual labels:  arm, kernel, operating-system, embedded
Chino Os
A real time operating system for IoT written in C++
Stars: ✭ 139 (-95.73%)
Mutual labels:  microcontroller, iot, operating-system, embedded
Utensor
TinyML AI inference library
Stars: ✭ 1,295 (-60.25%)
Mutual labels:  microcontroller, cortex-m, iot, embedded
Pikort
A tiny Linux-like real-time kernel optimized for ARM Cortex-M chips
Stars: ✭ 268 (-91.77%)
Mutual labels:  arm, mcu, cortex-m, kernel
Guilite
✔️The smallest header-only GUI library(4 KLOC) for all platforms
Stars: ✭ 5,841 (+79.28%)
Mutual labels:  microcontroller, mcu, iot, embedded
Nnom
A higher-level Neural Network library for microcontrollers.
Stars: ✭ 382 (-88.28%)
Mutual labels:  microcontroller, mcu, iot, embedded
Zephyr
Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
Stars: ✭ 5,335 (+63.75%)
Mutual labels:  microcontroller, mcu, iot, embedded
bx-github-ci
This tutorial provides one example on how a CI (Continuous Integration) workflow with the IAR Build Tools for Linux can be set up on GitHub. The IAR Build Tools on Linux are available for Arm, RISC-V and Renesas (RH850, RL78 and RX).
Stars: ✭ 20 (-99.39%)
Mutual labels:  arm, embedded, cortex-m, risc-v

TockOS

tock-ci slack

Tock is an embedded operating system designed for running multiple concurrent, mutually distrustful applications on Cortex-M and RISC-V 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.

Tock 2.0!

Tock is now on its second major release! Here are some 2.0 highlights, and see the release notes for more detail, or the changelog for the complete set of changes.

  • Revamped system call interface.
  • Support for 11 new hardware platforms.
  • Updated kernel types.
  • Many new and improved HILs.

As 2.0 includes many breaking changes, to use the new kernel you will need to ensure you have updated versions of userspace apps and the various Tock tools. We recommend if you are using git that you do a git pull, and if you are using tagged releases be sure to update to the 2.0 release.

Initially, only libtock-c is compatible with Tock 2.0. Work on supporting Tock 2.0 for libtock-rs is under development.

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. There are also generated source code docs.

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.

Code of Conduct

The Tock project adheres to the Rust Code of Conduct.

All contributors, community members, and visitors are expected to familiarize themselves with the Code of Conduct and to follow these standards in all Tock-affiliated environments, which includes but is not limited to repositories, chats, and meetup events. For moderation issues, please contact members of the @tock/core-wg.

Cite this Project

Tock was presented at SOSP'17

Amit Levy, Bradford Campbell, Branden Ghena, Daniel B. Giffin, Pat Pannuto, Prabal Dutta, and Philip Levis. 2017. Multiprogramming a 64kB Computer Safely and Efficiently. In Proceedings of the 26th Symposium on Operating Systems Principles (SOSP ’17). Association for Computing Machinery, New York, NY, USA, 234–251. DOI: https://doi.org/10.1145/3132747.3132786

Bibtex
@inproceedings{levy17multiprogramming,
      title = {Multiprogramming a 64kB Computer Safely and Efficiently},
      booktitle = {Proceedings of the 26th Symposium on Operating Systems Principles},
      series = {SOSP'17},
      year = {2017},
      month = {10},
      isbn = {978-1-4503-5085-3},
      location = {Shanghai, China},
      pages = {234--251},
      numpages = {18},
      url = {http://doi.acm.org/10.1145/3132747.3132786},
      doi = {10.1145/3132747.3132786},
      acmid = {3132786},
      publisher = {ACM},
      address = {New York, NY, USA},
      conference-url = {https://www.sigops.org/sosp/sosp17/},
      author = {Levy, Amit and Campbell, Bradford and Ghena, Branden and Giffin, Daniel B. and Pannuto, Pat and Dutta, Prabal and Levis, Philip},
}

This is the primary paper that describes the design considerations of Tock.

Other Tock-related papers

There are also two shorter papers that look at potential limitations of the Rust language for embedded software development. The earlier PLOS paper lays out challenges and the later APSys paper lays out potential solutions. Some persons describing work on programming languages and type theory may benefit from these references, but generally, most work should cite the SOSP paper above.

APSys: The Case for Writing a Kernel in Rust

@inproceedings{levy17rustkernel,
	title = {The Case for Writing a Kernel in Rust},
	booktitle = {Proceedings of the 8th Asia-Pacific Workshop on Systems},
	series = {APSys '17},
	year = {2017},
	month = {9},
	isbn = {978-1-4503-5197-3},
	location = {Mumbai, India},
	pages = {1:1--1:7},
	articleno = {1},
	numpages = {7},
	url = {http://doi.acm.org/10.1145/3124680.3124717},
	doi = {10.1145/3124680.3124717},
	acmid = {3124717},
	publisher = {ACM},
	address = {New York, NY, USA},
	conference-url = {https://www.cse.iitb.ac.in/~apsys2017/},
	author = {Levy, Amit and Campbell, Bradford and Ghena, Branden and Pannuto, Pat and Dutta, Prabal and Levis, Philip},
}

PLOS: Ownership is Theft: Experiences Building an Embedded OS in Rust

@inproceedings{levy15ownership,
	title = {Ownership is Theft: Experiences Building an Embedded {OS} in {R}ust},
	booktitle = {Proceedings of the 8th Workshop on Programming Languages and Operating Systems},
	series = {PLOS 2015},
	year = {2015},
	month = {10},
	isbn = {978-1-4503-3942-1},
	doi = {10.1145/2818302.2818306},
	url = {http://dx.doi.org/10.1145/2818302.2818306},
	location = {Monterey, CA},
	publisher = {ACM},
	address = {New York, NY, USA},
	conference-url = {http://plosworkshop.org/2015/},
	author = {Levy, Amit and Andersen, Michael P and Campbell, Bradford and Culler, David and Dutta, Prabal and Ghena, Branden and Levis, Philip and Pannuto, Pat},
}

License

Licensed under either of

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].