{"id":13437002,"url":"https://github.com/tock/tock","last_synced_at":"2025-05-12T05:27:32.006Z","repository":{"id":32834856,"uuid":"36428094","full_name":"tock/tock","owner":"tock","description":"A secure embedded operating system for microcontrollers","archived":false,"fork":false,"pushed_at":"2025-05-11T23:07:34.000Z","size":177240,"stargazers_count":5783,"open_issues_count":156,"forks_count":740,"subscribers_count":118,"default_branch":"master","last_synced_at":"2025-05-12T04:06:00.251Z","etag":null,"topics":["arm","cortex-m","embedded","iot","kernel","mcu","microcontroller","operating-system","risc-v","rust","secure-operating-system","tock"],"latest_commit_sha":null,"homepage":"https://www.tockos.org","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tock.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-05-28T09:26:47.000Z","updated_at":"2025-05-12T03:59:43.000Z","dependencies_parsed_at":"2024-01-01T05:07:45.353Z","dependency_job_id":"2b950f79-ff17-462c-87d3-51f73087e181","html_url":"https://github.com/tock/tock","commit_stats":{"total_commits":11133,"total_committers":228,"mean_commits":"48.828947368421055","dds":0.7802928231384173,"last_synced_commit":"c51466a7dfee238aa972cd8a3cb523e271d2b007"},"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tock%2Ftock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tock%2Ftock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tock%2Ftock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tock%2Ftock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tock","download_url":"https://codeload.github.com/tock/tock/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253680642,"owners_count":21946619,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arm","cortex-m","embedded","iot","kernel","mcu","microcontroller","operating-system","risc-v","rust","secure-operating-system","tock"],"created_at":"2024-07-31T03:00:53.658Z","updated_at":"2025-05-12T05:27:31.977Z","avatar_url":"https://github.com/tock.png","language":"Rust","readme":"# ![TockOS](http://www.tockos.org/assets/img/tock.svg \"TockOS Logo\")\n\n[![tock-ci](https://github.com/tock/tock/workflows/tock-ci/badge.svg)][tock-ci]\n[![slack](https://img.shields.io/badge/slack-tockos-informational)][slack]\n[![book](https://img.shields.io/badge/book-Tock_Book-green)][tock-book]\n\nTock is an embedded operating system designed for running multiple concurrent,\nmutually distrustful applications on Cortex-M and RISC-V based embedded\nplatforms. Tock's design centers around protection, both from potentially\nmalicious applications and from device drivers. Tock uses two mechanisms to\nprotect different components of the operating system. First, the kernel and\ndevice drivers are written in Rust, a systems programming language that provides\ncompile-time memory safety and type safety. Tock uses Rust to protect the kernel\n(e.g. the scheduler and hardware abstraction layer) from platform specific\ndevice drivers as well as isolate device drivers from each other. Second, Tock\nuses memory protection units to isolate applications from each other and the\nkernel.\n\n[tock-ci]: https://github.com/tock/tock/actions?query=branch%3Amaster+workflow%3Atock-ci\n\nTock 2.x!\n---------\n\nTock is now on its second major release! For a summary of the latest new\nfeatures and improvements, check out the [changelog](CHANGELOG.md).\n\n\nGetting Started\n---------------\n\nThere are a variety of resources for learning about Tock, contributing to the\nproject, and getting help.\n\n- About Tock\n  - [The Tock Book][tock-book]: online tutorials and documentation\n  - [Getting Started with Secure Embedded Systems][book-systems]: Tock textbook\n- Developing Tock\n  - [Tock API Docs][tockapidoc]\n  - [Contributing Guide](.github/CONTRIBUTING.md)\n  - [Code Review Guidelines](doc/CodeReview.md)\n- Getting Help\n  - [Slack Channel][slack]\n  - [Email List](https://lists.tockos.org)\n  - [Tock Blog](https://www.tockos.org/blog/)\n  - [@talkingtock](https://twitter.com/talkingtock)\n\n[slack]: https://join.slack.com/t/tockos/shared_invite/enQtNDE5ODQyNDU4NTE1LWVjNTgzMTMwYzA1NDI1MjExZjljMjFmOTMxMGIwOGJlMjk0ZTI4YzY0NTYzNWM0ZmJmZGFjYmY5MTJiMDBlOTk\n\n[tock-book]: https://book.tockos.org\n\n[book-systems]: https://link.springer.com/book/10.1007/978-1-4842-7789-8\n\n[tockapidoc]: https://docs.tockos.org\n\n\nCode of Conduct\n---------------\n\nThe Tock project adheres to the Rust [Code of Conduct][coc].\n\nAll contributors, community members, and visitors are expected to familiarize\nthemselves with the Code of Conduct and to follow these standards in all\nTock-affiliated environments, which includes but is not limited to repositories,\nchats, and meetup events. For moderation issues, please contact members of the\n@tock/core-wg.\n\n[coc]: https://www.rust-lang.org/conduct.html\n\n\nCite this Project\n-----------------\n\n\u003ch4\u003eTock was presented at SOSP'17\u003c/h4\u003e\n\nAmit 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\n\n\u003cp\u003e\n\u003cdetails\u003e\n\u003csummary\u003eBibtex\u003c/summary\u003e\n\u003cpre\u003e\n@inproceedings{levy17multiprogramming,\n      title = {Multiprogramming a 64kB Computer Safely and Efficiently},\n      booktitle = {Proceedings of the 26th Symposium on Operating Systems Principles},\n      series = {SOSP'17},\n      year = {2017},\n      month = {10},\n      isbn = {978-1-4503-5085-3},\n      location = {Shanghai, China},\n      pages = {234--251},\n      numpages = {18},\n      url = {http://doi.acm.org/10.1145/3132747.3132786},\n      doi = {10.1145/3132747.3132786},\n      acmid = {3132786},\n      publisher = {ACM},\n      address = {New York, NY, USA},\n      conference-url = {https://www.sigops.org/sosp/sosp17/},\n      author = {Levy, Amit and Campbell, Bradford and Ghena, Branden and Giffin, Daniel B. and Pannuto, Pat and Dutta, Prabal and Levis, Philip},\n}\n\u003c/pre\u003e\n\u003c/details\u003e\n\u003c/p\u003e\n\n\n\u003cp\u003eThis is the primary paper that describes the design considerations of Tock.\u003c/p\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eOther Tock-related papers\u003c/summary\u003e\n\n  \u003cp\u003eThere are 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.\u003c/p\u003e\n  \u003ch4\u003e\u003ca href=\"http://doi.acm.org/10.1145/3124680.3124717\"\u003eAPSys: The Case for Writing a Kernel in Rust\u003c/a\u003e\u003c/h4\u003e\n\u003cpre\u003e\n@inproceedings{levy17rustkernel,\n\ttitle = {The Case for Writing a Kernel in Rust},\n\tbooktitle = {Proceedings of the 8th Asia-Pacific Workshop on Systems},\n\tseries = {APSys '17},\n\tyear = {2017},\n\tmonth = {9},\n\tisbn = {978-1-4503-5197-3},\n\tlocation = {Mumbai, India},\n\tpages = {1:1--1:7},\n\tarticleno = {1},\n\tnumpages = {7},\n\turl = {http://doi.acm.org/10.1145/3124680.3124717},\n\tdoi = {10.1145/3124680.3124717},\n\tacmid = {3124717},\n\tpublisher = {ACM},\n\taddress = {New York, NY, USA},\n\tconference-url = {https://www.cse.iitb.ac.in/~apsys2017/},\n\tauthor = {Levy, Amit and Campbell, Bradford and Ghena, Branden and Pannuto, Pat and Dutta, Prabal and Levis, Philip},\n}\u003c/pre\u003e\n\n  \u003ch4\u003e\u003ca href=\"http://dx.doi.org/10.1145/2818302.2818306\"\u003ePLOS: Ownership is Theft: Experiences Building an Embedded OS in Rust\u003c/a\u003e\u003c/h4\u003e\n\u003cpre\u003e\n@inproceedings{levy15ownership,\n\ttitle = {Ownership is Theft: Experiences Building an Embedded {OS} in {R}ust},\n\tbooktitle = {Proceedings of the 8th Workshop on Programming Languages and Operating Systems},\n\tseries = {PLOS 2015},\n\tyear = {2015},\n\tmonth = {10},\n\tisbn = {978-1-4503-3942-1},\n\tdoi = {10.1145/2818302.2818306},\n\turl = {http://dx.doi.org/10.1145/2818302.2818306},\n\tlocation = {Monterey, CA},\n\tpublisher = {ACM},\n\taddress = {New York, NY, USA},\n\tconference-url = {http://plosworkshop.org/2015/},\n\tauthor = {Levy, Amit and Andersen, Michael P and Campbell, Bradford and Culler, David and Dutta, Prabal and Ghena, Branden and Levis, Philip and Pannuto, Pat},\n}\u003c/pre\u003e\n  \u003cp\u003eThere is also a paper on the Tock security model. The threat model documentation in the docs/ folder is the source of truth for the current Tock threat model, but this paper represents a snapshot of the reasoning behind the Tock threat model and details how it compares to those in similar embedded OSes.\u003c/p\u003e\n  \u003ch4\u003e\u003ca href=\"https://dx.doi.org/10.1145/3517208.3523752\"\u003eEuroSec: Tiered Trust for useful embedded systems security\u003c/a\u003e\u003c/h4\u003e\n\u003cpre\u003e\n@inproceedings{10.1145/3517208.3523752,\n\tauthor = {Ayers, Hudson and Dutta, Prabal and Levis, Philip and Levy, Amit and Pannuto, Pat and Van Why, Johnathan and Watson, Jean-Luc},\n\ttitle = {Tiered Trust for Useful Embedded Systems Security},\n\tyear = {2022},\n\tisbn = {9781450392556},\n\tpublisher = {Association for Computing Machinery},\n\taddress = {New York, NY, USA},\n\turl = {https://doi.org/10.1145/3517208.3523752},\n\tdoi = {10.1145/3517208.3523752},\n\tbooktitle = {Proceedings of the 15th European Workshop on Systems Security},\n\tpages = {15–21},\n\tnumpages = {7},\n\tkeywords = {security, embedded systems, operating systems, IoT},\n\tlocation = {Rennes, France},\n\tseries = {EuroSec '22}\n}\u003c/pre\u003e\n\u003c/details\u003e\n\n\nLicense\n-------\n\nLicensed under either of\n\n- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or\n  http://www.apache.org/licenses/LICENSE-2.0)\n- MIT license ([LICENSE-MIT](LICENSE-MIT) or\n  http://opensource.org/licenses/MIT)\n\nat your option.\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall\nbe dual licensed as above, without any additional terms or conditions.\n","funding_links":[],"categories":["Applications","Rust","RTOS","应用程序 Applications","应用","应用 Applications","Embedded Development","12. Case Studies and Real-World Examples","arm","OS"],"sub_categories":["Operating systems","ESP8266","操作系统 Operating systems","操作系统","12.2 Tock Operating System","RTOS"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftock%2Ftock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftock%2Ftock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftock%2Ftock/lists"}