├── triagebot.toml ├── .github ├── CODEOWNERS └── workflows │ └── Linting.yml ├── rust-embedded-logo-256x256.png ├── CONTRIBUTING.md ├── Code-of-Conduct.md ├── CODE_OF_CONDUCT.md ├── LICENSE-CC0 ├── .markdownlint.yml └── README.md /triagebot.toml: -------------------------------------------------------------------------------- 1 | [assign] 2 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @rust-embedded/resources @RandomInsano @berkus @rahul-thakoor 2 | -------------------------------------------------------------------------------- /rust-embedded-logo-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rust-embedded/awesome-embedded-rust/HEAD/rust-embedded-logo-256x256.png -------------------------------------------------------------------------------- /.github/workflows/Linting.yml: -------------------------------------------------------------------------------- 1 | name: Linting 2 | 3 | on: 4 | push: 5 | branches: 6 | - "master" 7 | pull_request: 8 | 9 | permissions: {} 10 | 11 | jobs: 12 | Super_Linter: 13 | name: Super Linter 14 | runs-on: ubuntu-latest 15 | 16 | permissions: 17 | contents: read 18 | packages: read 19 | # To report GitHub Actions status checks 20 | statuses: write 21 | 22 | steps: 23 | - name: Checkout code 24 | uses: actions/checkout@v4 25 | with: 26 | fetch-depth: 0 27 | - name: Super-linter 28 | uses: super-linter/super-linter@v7.2.0 # x-release-please-version 29 | env: 30 | # Linters 31 | VALIDATE_MARKDOWN: true 32 | VALIDATE_YAML: true 33 | LINTER_RULES_PATH: ./ 34 | MARKDOWN_CONFIG_FILE: .markdownlint.yml 35 | ENABLE_GITHUB_ACTIONS_STEP_SUMMARY: true 36 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 37 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | Please note that this project is released with a [Contributor Code of Conduct](Code-of-Conduct.md). By participating in this project you agree to abide by its terms. 4 | 5 | ## Table of Contents 6 | 7 | - [Adding to this list](#adding-to-this-list) 8 | - [Adding something to an awesome list](#adding-something-to-an-awesome-list) 9 | - [Updating your Pull Request](#updating-your-pull-request) 10 | 11 | ## Adding to this list 12 | 13 | Please ensure your pull request adheres to the following guidelines: 14 | 15 | - Search previous suggestions before making a new one, as yours may be a duplicate. 16 | - Make sure the item is useful before submitting. The awesome lists aim to list actually awesome projects, not collect the names of all projects in existence. 17 | - Make an individual pull request for each suggestion. 18 | - Use [title-casing](http://titlecapitalization.com) (AP style). 19 | - Use the following format: `[Item Name](link) Description text` 20 | - Link additions should be added to the bottom of the relevant alphabetical category. 21 | - Check your spelling and grammar. 22 | - Make sure your text editor is set to remove trailing whitespace. 23 | - The pull request and commit should have a useful title. When you add a project - at least use `Add projectX` as title. See [this article](https://chris.beams.io/posts/git-commit/) on guidelines to good commit messages. 24 | - The body of your commit message should contain a link to the repository. 25 | 26 | Thank you for your suggestions! 27 | 28 | ## Adding something to an awesome list 29 | 30 | If you have something awesome to contribute to an awesome list, this is how you do it. 31 | 32 | You'll need a [GitHub account](https://github.com/join)! 33 | 34 | 1. Access the awesome list's GitHub page. For example: https://github.com/rust-embedded/awesome-embedded-rust 35 | 2. Click on the `readme.md` file: ![Step 2 Click on Readme.md](https://cloud.githubusercontent.com/assets/170270/9402920/53a7e3ea-480c-11e5-9d81-aecf64be55eb.png) 36 | 3. Now click on the edit icon. ![Step 3 - Click on Edit](https://cloud.githubusercontent.com/assets/170270/9402927/6506af22-480c-11e5-8c18-7ea823530099.png) 37 | 4. You can start editing the text of the file in the in-browser editor. Make sure you follow guidelines above. You can use [GitHub Flavored Markdown](https://help.github.com/articles/github-flavored-markdown/). ![Step 4 - Edit the file](https://cloud.githubusercontent.com/assets/170270/9402932/7301c3a0-480c-11e5-81f5-7e343b71674f.png) 38 | 5. Say why you're proposing the changes (see section [Adding to this list](#adding-to-this-list) for details), and then click on "Propose file change". ![Step 5 - Propose Changes](https://cloud.githubusercontent.com/assets/170270/9402937/7dd0652a-480c-11e5-9138-bd14244593d5.png) 39 | 6. Submit the [pull request](https://help.github.com/articles/using-pull-requests/)! 40 | 41 | ## Updating your Pull Request 42 | 43 | Sometimes, a maintainer of an awesome list will ask you to edit your Pull Request before it is included. This is normally due to spelling errors or because your PR didn't match the awesome-* list guidelines. 44 | 45 | [Here](https://github.com/RichardLitt/knowledge/blob/master/github/amending-a-commit-guide.md) is a write up on how to change a Pull Request, and the different ways you can do that. 46 | -------------------------------------------------------------------------------- /Code-of-Conduct.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the Embedded WG. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # The Rust Code of Conduct 2 | 3 | ## Conduct 4 | 5 | **Contact**: [Resources team](https://github.com/rust-embedded/wg#the-resources-team) 6 | 7 | * We are committed to providing a friendly, safe and welcoming environment for all, regardless of level of experience, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, nationality, or other similar characteristic. 8 | * On IRC, please avoid using overtly sexual nicknames or other nicknames that might detract from a friendly, safe and welcoming environment for all. 9 | * Please be kind and courteous. There's no need to be mean or rude. 10 | * Respect that people have differences of opinion and that every design or implementation choice carries a trade-off and numerous costs. There is seldom a right answer. 11 | * Please keep unstructured critique to a minimum. If you have solid ideas you want to experiment with, make a fork and see how it works. 12 | * We will exclude you from interaction if you insult, demean or harass anyone. That is not welcome behavior. We interpret the term "harassment" as including the definition in the [Citizen Code of Conduct](http://citizencodeofconduct.org/); if you have any lack of clarity about what might be included in that concept, please read their definition. In particular, we don't tolerate behavior that excludes people in socially marginalized groups. 13 | * Private harassment is also unacceptable. No matter who you are, if you feel you have been or are being harassed or made uncomfortable by a community member, please contact one of the channel ops or any of the [Resources team][team] immediately. Whether you're a regular contributor or a newcomer, we care about making this community a safe place for you and we've got your back. 14 | * Likewise any spamming, trolling, flaming, baiting or other attention-stealing behavior is not welcome. 15 | 16 | ## Moderation 17 | 18 | These are the policies for upholding our community's standards of conduct. 19 | 20 | 1. Remarks that violate the Rust standards of conduct, including hateful, hurtful, oppressive, or exclusionary remarks, are not allowed. (Cursing is allowed, but never targeting another user, and never in a hateful manner.) 21 | 2. Remarks that moderators find inappropriate, whether listed in the code of conduct or not, are also not allowed. 22 | 3. Moderators will first respond to such remarks with a warning. 23 | 4. If the warning is unheeded, the user will be "kicked," i.e., kicked out of the communication channel to cool off. 24 | 5. If the user comes back and continues to make trouble, they will be banned, i.e., indefinitely excluded. 25 | 6. Moderators may choose at their discretion to un-ban the user if it was a first offense and they offer the offended party a genuine apology. 26 | 7. If a moderator bans someone and you think it was unjustified, please take it up with that moderator, or with a different moderator, **in private**. Complaints about bans in-channel are not allowed. 27 | 8. Moderators are held to a higher standard than other community members. If a moderator creates an inappropriate situation, they should expect less leeway than others. 28 | 29 | In the Rust community we strive to go the extra step to look out for each other. Don't just aim to be technically unimpeachable, try to be your best self. In particular, avoid flirting with offensive or sensitive issues, particularly if they're off-topic; this all too often leads to unnecessary fights, hurt feelings, and damaged trust; worse, it can drive people away from the community entirely. 30 | 31 | And if someone takes issue with something you said or did, resist the urge to be defensive. Just stop doing what it was they complained about and apologize. Even if you feel you were misinterpreted or unfairly accused, chances are good there was something you could've communicated better — remember that it's your responsibility to make your fellow Rustaceans comfortable. Everyone wants to get along and we are all here first and foremost because we want to talk about cool technology. You will find that people will be eager to assume good intent and forgive as long as you earn their trust. 32 | 33 | The enforcement policies listed above apply to all official embedded WG venues; including official IRC channels (#rust-embedded); GitHub repositories under rust-embedded; and all forums under rust-embedded.org (forum.rust-embedded.org). 34 | 35 | *Adapted from the [Node.js Policy on Trolling](http://blog.izs.me/post/30036893703/policy-on-trolling) as well as the [Contributor Covenant v1.3.0](https://www.contributor-covenant.org/version/1/3/0/).* 36 | 37 | [team]: https://github.com/rust-embedded/wg#the-resources-team 38 | -------------------------------------------------------------------------------- /LICENSE-CC0: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /.markdownlint.yml: -------------------------------------------------------------------------------- 1 | # Example markdownlint configuration with all properties set to their default value 2 | 3 | # Default state for all rules 4 | default: true 5 | 6 | # Path to configuration file to extend 7 | extends: null 8 | 9 | # MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md001.md 10 | MD001: true 11 | 12 | # MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md003.md 13 | MD003: 14 | # Heading style 15 | style: "consistent" 16 | 17 | # MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md004.md 18 | MD004: 19 | # List style 20 | style: "consistent" 21 | 22 | # MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md005.md 23 | MD005: true 24 | 25 | # MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md007.md 26 | MD007: 27 | # Spaces for indent 28 | indent: 2 29 | # Whether to indent the first level of the list 30 | start_indented: false 31 | # Spaces for first level indent (when start_indented is set) 32 | start_indent: 2 33 | 34 | # MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md009.md 35 | MD009: 36 | # Spaces for line break 37 | br_spaces: 2 38 | # Allow spaces for empty lines in list items 39 | list_item_empty_lines: false 40 | # Include unnecessary breaks 41 | strict: false 42 | 43 | # MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md010.md 44 | MD010: 45 | # Include code blocks 46 | code_blocks: true 47 | # Fenced code languages to ignore 48 | ignore_code_languages: [] 49 | # Number of spaces for each hard tab 50 | spaces_per_tab: 1 51 | 52 | # MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md011.md 53 | MD011: true 54 | 55 | # MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md012.md 56 | MD012: 57 | # Consecutive blank lines 58 | maximum: 1 59 | 60 | # MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md013.md 61 | MD013: false 62 | # # Number of characters 63 | # line_length: 200 64 | # # Number of characters for headings 65 | # heading_line_length: 80 66 | # # Number of characters for code blocks 67 | # code_block_line_length: 200 68 | # # Include code blocks 69 | # code_blocks: true 70 | # # Include tables 71 | # tables: true 72 | # # Include headings 73 | # headings: true 74 | # # Strict length checking 75 | # strict: false 76 | # # Stern length checking 77 | # stern: false 78 | 79 | # MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md014.md 80 | MD014: true 81 | 82 | # MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md018.md 83 | MD018: true 84 | 85 | # MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md019.md 86 | MD019: true 87 | 88 | # MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md020.md 89 | MD020: true 90 | 91 | # MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md021.md 92 | MD021: true 93 | 94 | # MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md022.md 95 | MD022: 96 | # Blank lines above heading 97 | lines_above: 1 98 | # Blank lines below heading 99 | lines_below: 1 100 | 101 | # MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md023.md 102 | MD023: true 103 | 104 | # MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md024.md 105 | MD024: 106 | # Only check sibling headings 107 | siblings_only: true 108 | 109 | # MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md025.md 110 | MD025: 111 | # Heading level 112 | level: 1 113 | # RegExp for matching title in front matter 114 | front_matter_title: "^\\s*title\\s*[:=]" 115 | 116 | # MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md026.md 117 | MD026: 118 | # Punctuation characters 119 | punctuation: ".,;:!。,;:!" 120 | 121 | # MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md027.md 122 | MD027: true 123 | 124 | # MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md028.md 125 | MD028: true 126 | 127 | # MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md029.md 128 | MD029: 129 | # List style 130 | style: "one_or_ordered" 131 | 132 | # MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md030.md 133 | MD030: 134 | # Spaces for single-line unordered list items 135 | ul_single: 1 136 | # Spaces for single-line ordered list items 137 | ol_single: 1 138 | # Spaces for multi-line unordered list items 139 | ul_multi: 1 140 | # Spaces for multi-line ordered list items 141 | ol_multi: 1 142 | 143 | # MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md031.md 144 | MD031: 145 | # Include list items 146 | list_items: true 147 | 148 | # MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md032.md 149 | MD032: true 150 | 151 | # MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md033.md 152 | MD033: false 153 | # # Allowed elements 154 | # allowed_elements: [] 155 | 156 | # MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md034.md 157 | MD034: false 158 | 159 | # MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md035.md 160 | MD035: 161 | # Horizontal rule style 162 | style: "consistent" 163 | 164 | # MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md036.md 165 | MD036: 166 | # Punctuation characters 167 | punctuation: ".,;:!?。,;:!?" 168 | 169 | # MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md037.md 170 | MD037: true 171 | 172 | # MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md038.md 173 | MD038: true 174 | 175 | # MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md039.md 176 | MD039: true 177 | 178 | # MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md040.md 179 | MD040: 180 | # List of languages 181 | allowed_languages: [] 182 | # Require language only 183 | language_only: false 184 | 185 | # MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md041.md 186 | MD041: 187 | # Heading level 188 | level: 1 189 | # RegExp for matching title in front matter 190 | front_matter_title: "^\\s*title\\s*[:=]" 191 | 192 | # MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md042.md 193 | MD042: true 194 | 195 | # MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md043.md 196 | MD043: 197 | # List of headings 198 | headings: [ "*" ] 199 | # Match case of headings 200 | match_case: false 201 | 202 | # MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md044.md 203 | MD044: 204 | # List of proper names 205 | names: [] 206 | # Include code blocks 207 | code_blocks: true 208 | # Include HTML elements 209 | html_elements: true 210 | 211 | # MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md045.md 212 | MD045: true 213 | 214 | # MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md046.md 215 | MD046: 216 | # Block style 217 | style: "consistent" 218 | 219 | # MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md047.md 220 | MD047: true 221 | 222 | # MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md048.md 223 | MD048: 224 | # Code fence style 225 | style: "consistent" 226 | 227 | # MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md049.md 228 | MD049: 229 | # Emphasis style 230 | style: "consistent" 231 | 232 | # MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md050.md 233 | MD050: 234 | # Strong style 235 | style: "consistent" 236 | 237 | # MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md051.md 238 | MD051: 239 | # Ignore case of fragments 240 | ignore_case: false 241 | 242 | # MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md052.md 243 | MD052: 244 | # Include shortcut syntax 245 | shortcut_syntax: false 246 | 247 | # MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md053.md 248 | MD053: 249 | # Ignored definitions 250 | ignored_definitions: 251 | - "//" 252 | 253 | # MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md054.md 254 | MD054: 255 | # Allow autolinks 256 | autolink: true 257 | # Allow inline links and images 258 | inline: true 259 | # Allow full reference links and images 260 | full: true 261 | # Allow collapsed reference links and images 262 | collapsed: true 263 | # Allow shortcut reference links and images 264 | shortcut: true 265 | # Allow URLs as inline links 266 | url_inline: true 267 | 268 | # MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md055.md 269 | MD055: 270 | # Table pipe style 271 | style: "consistent" 272 | 273 | # MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md056.md 274 | MD056: true 275 | 276 | # MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md058.md 277 | MD058: true -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Embedded Rust 2 | 3 | [![Awesome](https://awesome.re/badge.svg)](https://awesome.re) [![Linting](https://github.com/rust-embedded/awesome-embedded-rust/actions/workflows/Linting.yml/badge.svg)](https://github.com/rust-embedded/awesome-embedded-rust/actions/workflows/Linting.yml) 4 | 5 | This is a curated list of resources related to embedded and low-level programming in the Rust programming language, including a selection of useful crates. 6 | 7 | [Rust Embedded Logo](http://www.rust-embedded.org) 8 | 9 | This project is developed and maintained by the [Resources team][team]. 10 | 11 | ## Table of Contents 12 | 13 | - [Embedded Rust](#embedded-rust) 14 | - [Table of Contents](#table-of-contents) 15 | - [Community](#community) 16 | - [Community Chat Rooms](#community-chat-rooms) 17 | - [Books, blogs, and training materials](#books-blogs-and-training-materials) 18 | - [Free and public materials](#free-and-public-materials) 19 | - [Paid and commercially available materials](#paid-and-commercially-available-materials) 20 | - [Tools](#tools) 21 | - [Real-time](#real-time) 22 | - [Real-time Operating System (RTOS)](#real-time-operating-system-rtos) 23 | - [Real-time tools](#real-time-tools) 24 | - [Runtime Crates](#runtime-crates) 25 | - [Peripheral Access Crates](#peripheral-access-crates) 26 | - [Microchip](#microchip) 27 | - [Nordic](#nordic) 28 | - [NXP](#nxp) 29 | - [Raspberry Pi Silicon](#raspberry-pi-silicon) 30 | - [SiFive](#sifive) 31 | - [Silicon Labs](#silicon-labs) 32 | - [StarFive](#starfive) 33 | - [STMicroelectronics](#stmicroelectronics) 34 | - [Texas Instruments](#texas-instruments) 35 | - [MSP430](#msp430) 36 | - [Espressif](#espressif) 37 | - [Ambiq Micro](#ambiq-micro) 38 | - [GigaDevice](#gigadevice) 39 | - [XMC](#xmc) 40 | - [Vorago](#vorago) 41 | - [Wiznet](#wiznet) 42 | - [Renesas](#renesas) 43 | - [HAL implementation crates](#hal-implementation-crates) 44 | - [OS](#os) 45 | - [Microchip](#microchip-1) 46 | - [Nordic](#nordic-1) 47 | - [NXP](#nxp-1) 48 | - [Raspberry Pi Silicon](#raspberry-pi-silicon-1) 49 | - [SiFive](#sifive-1) 50 | - [STMicroelectronics](#stmicroelectronics-1) 51 | - [Texas Instruments](#texas-instruments-1) 52 | - [MSP430](#msp430-1) 53 | - [Espressif](#espressif-1) 54 | - [Silicon Labs](#silicon-labs-1) 55 | - [XMC](#xmc-1) 56 | - [GigaDevice](#gigadevice-1) 57 | - [Vorago](#vorago-1) 58 | - [Renesas](#renesas-1) 59 | - [StarFive](#starfive-1) 60 | - [Architecture support crates](#architecture-support-crates) 61 | - [ARM](#arm) 62 | - [RISC-V](#risc-v) 63 | - [MIPS](#mips) 64 | - [Board support crates](#board-support-crates) 65 | - [1BitSquared](#1bitsquared) 66 | - [Adafruit](#adafruit) 67 | - [Arduino](#arduino) 68 | - [Nordic](#nordic-2) 69 | - [NXP](#nxp-2) 70 | - [Pimoroni](#pimoroni) 71 | - [Raspberry Pi](#raspberry-pi) 72 | - [Sparkfun](#sparkfun) 73 | - [SeeedStudio](#seeedstudio) 74 | - [SiFive](#sifive-2) 75 | - [Sipeed](#sipeed) 76 | - [Sony](#sony) 77 | - [STMicroelectronics](#stmicroelectronics-2) 78 | - [Teensy](#teensy) 79 | - [Vorago](#vorago-2) 80 | - [Texas Instruments](#texas-instruments-2) 81 | - [Special Purpose](#special-purpose) 82 | - [Sodaq](#sodaq) 83 | - [Other](#other) 84 | - [Component abstraction crates](#component-abstraction-crates) 85 | - [Driver crates](#driver-crates) 86 | - [WIP](#wip) 87 | - [no-std crates](#no-std-crates) 88 | - [WIP](#wip-1) 89 | - [Panic handling](#panic-handling) 90 | - [Firmware projects](#firmware-projects) 91 | - [Old books, blogs, and training materials](#old-books-blogs-and-training-materials) 92 | - [License](#license) 93 | - [Code of Conduct](#code-of-conduct) 94 | 95 | ## Community 96 | 97 | In 2018, the Rust community created an embedded working group to help drive adoption in the Rust ecosystem. 98 | 99 | - [Embedded WG](https://github.com/rust-embedded/wg/), including newsletters with progress updates. 100 | 101 | ### Community Chat Rooms 102 | 103 | - You can usually find community members (including embedded WG members) in the official [`#rust-embedded:matrix.org` Matrix room] 104 | - [#rust-embedded-space:matrix.org] Most Embedded Rust related Matrix rooms are in the Rust Embedded Space 105 | - [embedded.rs-wasm-iot] - English Telegram chat about Rust and WASM for microcontrollers and IoT 106 | - [embedded.rs] - Telegram chat about Rust for microcontrollers in the Russian language 107 | - [#avr-rust:gitter.im] - For discussion of using Embedded Rust on AVR devices 108 | - [#esp-rs:matrix.org] - For discussion of using Embedded Rust on Espressif devices 109 | - [#nrf-rs:matrix.org] - For discussion of using Embedded Rust on Nordic Semiconductor devices 110 | - [#probe-rs:matrix.org] - For discussion of the Probe-rs debugging toolkit 111 | - [#rp-rs:matrix.org] - For discussion of using Embedded Rust on RP2040 based devices 112 | - [#rtic-rs:matrix.org] - For discussion of the Real-Time Interrupt-driven Concurrency framework 113 | - [#rust-embedded-graphics:matrix.org] - For discussion of the [`embedded-graphics`] crate and ecosystem 114 | - [#stm32-rs:matrix.org] - For discussion of using Embedded Rust on STM32 based devices 115 | - [#atsamd-rs:gitter.im] - For discussions of using Embedded Rust on ATSAMD devices 116 | - [#ethercrab:matrix.org] - For discussion of general EtherCAT and the Rust implementation, EtherCrab 117 | - [#mspm0-rs:matrix.org] - For discussion of using Embedded Rust on Texas Instruments MSPM0 (and MSPS003) devices 118 | - [rust-embedded:QQ group] - Chinese community for Rust embedded 119 | - [#embassy-rs:matrix.org] - For discussion of using async on Embedded Rust using the Embassy ecosystem of crates 120 | 121 | [#rust-embedded-graphics:matrix.org]: https://matrix.to/#/#rust-embedded-graphics:matrix.org 122 | [#esp-rs:matrix.org]: https://matrix.to/#/#esp-rs:matrix.org 123 | [`#rust-embedded:matrix.org` Matrix room]: https://matrix.to/#/#rust-embedded:matrix.org 124 | [#rust-embedded-space:matrix.org]: https://matrix.to/#/#rust-embedded-space:matrix.org 125 | [embedded.rs-wasm-iot]: https://t.me/embeddedrust 126 | [embedded.rs]: https://t.me/embedded_rs 127 | [#rtic-rs:matrix.org]: https://matrix.to/#/#rtic-rs:matrix.org 128 | [#nrf-rs:matrix.org]: https://matrix.to/#/#nrf-rs:matrix.org 129 | [#probe-rs:matrix.org]: https://matrix.to/#/#probe-rs:matrix.org 130 | [`embedded-graphics`]: https://crates.io/crates/embedded-graphics 131 | [#stm32-rs:matrix.org]: https://matrix.to/#/#stm32-rs:matrix.org 132 | [#avr-rust:gitter.im]: https://matrix.to/#/#avr-rust_Lobby:gitter.im 133 | [#rp-rs:matrix.org]: https://matrix.to/#/#rp-rs:matrix.org 134 | [#atsamd-rs:gitter.im]: https://matrix.to/#/#atsamd-rs_community:gitter.im 135 | [#ethercrab:matrix.org]: https://matrix.to/#/#ethercrab:matrix.org 136 | [#mspm0-rs:matrix.org]: https://matrix.to/#/#mspm0-rs:matrix.org 137 | [Rust-embedded:QQ group]: https://qm.qq.com/q/A8Hl57xR1C 138 | [#embassy-rs:matrix.org]: https://matrix.to/#/#embassy-rs:matrix.org 139 | 140 | ## Books, blogs, and training materials 141 | 142 | ### Free and public materials 143 | 144 | These materials are available publicly, typically under permissive licenses. 145 | 146 | - [The Embedded Rust Book](https://rust-embedded.github.io/book/) - An introductory book about using the Rust Programming Language on "Bare Metal" embedded systems, such as Microcontrollers. 147 | - [The Rust on ESP Book](https://esp-rs.github.io/book/) - This book aims to provide a comprehensive guide on using the Rust programming language with Espressif SoCs and modules. 148 | - [Embedded Rust (no_std) on Espressif](https://docs.esp-rs.org/no_std-training/) - Training for Rust using no_std approach development on ESP32-C3. 149 | - [Embedded Rust (std) on Espressif](https://docs.esp-rs.org/std-training/) - Training for Rust using std approach development on ESP32-C3 by Ferrous Systems. 150 | - [Discovery](https://rust-embedded.github.io/discovery) by @rust-embedded — this book is an introductory course on microcontroller-based embedded systems that uses Rust as the teaching language. Original author: @japaric 151 | - [Cortex-M Quickstart](https://docs.rs/cortex-m-quickstart/0.3.1/cortex_m_quickstart/) by @japaric – a template and introduction to embedded Rust, suitable for developers familiar with embedded development but new to embedded Rust. 152 | - [Writing an OS in Rust](https://os.phil-opp.com/) A blog series creating a small operating system in Rust 153 | - [MicroRust](https://droogmic.github.io/microrust/) Introductory book for embedded development in Rust on the micro:bit. 154 | - [Physical Computing With Rust](https://rahul-thakoor.github.io/physical-computing-rust/) A (WIP) guide to physical computing with Rust on the Raspberry Pi. 155 | - [Writing an embedded OS in Rust on the Raspberry Pi](https://github.com/rust-embedded/rust-raspi3-OS-tutorials) A set of tutorials that give a guided, step-by-step tour of how to write a monolithic Operating System kernel for an embedded system from scratch. Runs on the Raspberry Pi 3 and the Raspberry Pi 4. 156 | - [Writing embedded drivers in Rust isn't that hard](https://hboeving.dev/blog/rust-2c-driver-p1/) A guide to building an embedded-hal driver. [Part 2](https://hboeving.dev/blog/rust-i2c-driver-p2/) 157 | - [Ferrous Systems' Embedded Training Courses: 2020-current edition](https://github.com/ferrous-systems/embedded-trainings-2020) A hands-on training course for beginner and advanced learners of Embedded Rust, based on Nordic Semiconductor's nRF52840 hardware. This training was given at Oxidize Conferences and by [Ferrous Systems] to corporate customers. 158 | - [Ferrous Systems' Knurling Sessions](https://knurling.ferrous-systems.com/sessions/) are hands-on embedded projects that explore specific concepts using generally available hardware, building full systems and components using microcontrollers, sensors, and actuators. 159 | - [DSP on STM32F407G-DISC1](https://github.com/jacobrosenthal/dsp-discoveryf4-rust/) Unofficial oxidization of the [Digital Signal Processing using Arm Cortex-M based Microcontrollers: Theory and Practice](https://www.amazon.com/Digital-Signal-Processing-Cortex-M-Microcontrollers/dp/1911531166) book. The book isn't necessary to enjoy the examples and learn a functional DSP Rust coding style. 160 | - [Building a sailing starter board with Rust (RTIC)](https://gill.net.in/posts/stm32-pcb-sailing-and-rust/) A step-by-step story/guide to build STM32-based PCB and program it with Rust for fun and games. 161 | - [STM32F4xx with Embedded Rust at the HAL](https://apollolabsblog.hashnode.dev/series/stm32f4-embedded-rust-hal) A blog containing a series of tutorials demonstrating the use of several peripherals through simple examples leveraging the stm32f4xx-hal crate. 162 | - [Embedded Rust programming playlist](https://www.youtube.com/playlist?list=PLP_X41VhYn5X6Wwjnm0bRwI3n2pdaszxU) Various livestreams with Embedded Rust live coding 163 | - [ESP32-C3 Rust Tutorials](https://youtube.com/playlist?list=PLkch9g9DEE0Lkm1LqcD7pZNDmXEczOo-a) Short videos and [Github project](https://github.com/shanemmattner/ESP32-C3_Rust_Tutorials) implementing various peripherals of the ESP32-C3 with the end goal of creating a complete data logger application. 164 | - [Tweede golf's workshop](https://workshop.tweede.golf) - A full workshop about Rust and embedded Rust. The embedded parts use the nRF52840-DK and a LIS3DH breakout board. ([github source](https://github.com/tweedegolf/rust-workshop)) 165 | - [impl Rust on ESP32 Book](https://esp32.implrust.com/) - A hands-on guide that uses the ESP32 DevKit V1 to demonstrate how to work with various modules and sensors. ([github source](https://github.com/ImplFerris/esp32-book)) 166 | - [Pico Pico Book](https://pico.implrust.com/) - A hands-on guide that uses the Pico 2 (RP2350) to demonstrate how to work with various modules and sensors. ([github source](https://github.com/ImplFerris/pico-pico)) 167 | 168 | [Ferrous Systems]: https://ferrous-systems.com 169 | 170 | ### Paid and commercially available materials 171 | 172 | These materials are available for purchase. They have been reviewed for relevancy, but are not 173 | specifically endorsed or reviewed for accuracy or quality by the Embedded Working Group. 174 | 175 | - [Simplified Embedded Rust: Standard Library Edition](https://www.theembeddedrustacean.com/c/ser-std) - This book provides a quick path to start learning embedded Rust with minimal setup. Book is based on ESP devices and the Wokwi Simulator. This edition uses the standard library development approach which is based on the ESP-IDF framework. 176 | - [Simplified Embedded Rust: Core Library Edition](https://www.theembeddedrustacean.com/c/ser-no-std) - This book provides a quick path to start learning embedded Rust with minimal setup. Book is based on ESP devices and the Wokwi Simulator. This edition uses the core library development approach for bare metal development. 177 | 178 | ## Tools 179 | 180 | - [xargo](https://github.com/japaric/xargo) Rust package manager with support for non-default std libraries — build Rust runtime for your embedded system. 181 | - xargo is great, but since it's in maintenance mode, [cargo-xbuild](https://github.com/rust-osdev/cargo-xbuild) is catching up as its intended replacement. 182 | - [svd2rust](https://github.com/japaric/svd2rust) Generate Rust structs with register mappings from SVD files. 183 | - [edc2svd](https://github.com/kiffie/edc2svd) Generate SVD files for PIC32 devices from EDC files. - [![crates.io](https://img.shields.io/crates/v/edc2svd.svg)](https://crates.io/crates/edc2svd) 184 | - [embedded-hal-mock] Mock implementation of `embedded-hal` traits for testing without accessing real hardware. - [![crates.io](https://img.shields.io/crates/v/embedded-hal-mock.svg)](https://crates.io/crates/embedded-hal-mock) 185 | - [bindgen](https://crates.io/crates/bindgen) Automatically generates Rust FFI bindings to C and C++ libraries. - [![crates.io](https://img.shields.io/crates/v/bindgen.svg)](https://crates.io/crates/bindgen) 186 | - [cortex-m semihosting](https://github.com/japaric/cortex-m-semihosting) Semihosting for ARM Cortex-M processors 187 | - [bobbin-cli](https://github.com/bobbin-rs/bobbin-cli) A Rust command line tool to simplify embedded development and deployment. 188 | - [ferros](https://github.com/auxoncorp/ferros) A Rust-based userland which also adds compile-time assurances to seL4 development. 189 | - [cargo-flash](https://probe.rs/docs/tools/cargo-flash/) A small cargo subcommand to download your binary to your target chip. - [![crates.io](https://img.shields.io/crates/v/cargo-flash.svg)](https://crates.io/crates/cargo-flash) 190 | - [cargo-embed](https://probe.rs/docs/tools/cargo-embed/) A superset of cargo-flash with additional useful features like configuration file support, an RTT terminal, or a GDB server. - [![crates.io](https://img.shields.io/crates/v/cargo-embed.svg)](https://crates.io/crates/cargo-embed) 191 | - [cargo-hf2](https://github.com/jacobrosenthal/hf2-rs) A small cargo subcommand to download cargo builds to Microsoft UF2 bootloaders via HID USB . - [![crates.io](https://img.shields.io/crates/v/cargo-hf2.svg)](https://crates.io/crates/cargo-hf2) 192 | - [cargo-bloat](https://github.com/RazrFalcon/cargo-bloat) Find out what takes most of the space in your executable. 193 | - [cargo-call-stack](https://crates.io/crates/cargo-call-stack) Static, whole program stack usage analyzer. 194 | - [cargo-dfu](https://crates.io/crates/cargo-dfu) Cargo extension for flashing embedded rust programs via DFU. 195 | - [espflash](https://github.com/esp-rs/espflash) Serial flasher utility for Espressif SoCs and modules. - [![crates.io](https://img.shields.io/crates/v/espflash.svg)](https://crates.io/crates/espflash) 196 | - [espup](https://github.com/esp-rs/espup) Tool for installing and maintaining Espressif Rust ecosystem. - [![crates.io](https://img.shields.io/crates/v/espup.svg)](https://crates.io/crates/espup) 197 | - [uf2](https://github.com/sajattack/uf2conv-rs) Converts binary files to Microsoft's UF2 format for copying over to mass storage device uf2 bootloaders - [![crates.io](https://img.shields.io/crates/v/uf2.svg)](https://crates.io/crates/uf2) 198 | - [probe-rs](https://github.com/probe-rs/probe-rs): a modern, embedded debugging toolkit, written in Rust 199 | - [embedded-test](https://github.com/probe-rs/embedded-test): A versatile test harness for embedded devices, supporting unit tests, integration tests, async tests, and more. 200 | - [Knurling Tools](https://knurling.ferrous-systems.com/tools/) are developed by [Ferrous Systems] to ease the development process for building, debugging, and testing embedded Rust systems. These tools include: 201 | - [defmt](https://github.com/knurling-rs/defmt): a highly efficient logging framework that targets resource-constrained devices, like microcontrollers. 202 | - [derive-mmio](https://github.com/knurling-rs/derive-mmio): Creating MMIO-friendly APIs for embedded peripherals. 203 | - [flip-link](https://github.com/knurling-rs/flip-link), a linker wrapper that provides stack overflow protection without an MMU by flipping the standard memory layout of ARM Cortex-M programs 204 | - [app-template](https://github.com/knurling-rs/app-template), a `cargo-generate` powered project template for quickly setting up new projects using the Knurling Tools. 205 | - [defmt-test](https://github.com/knurling-rs/defmt-test), an embedded test harness that lets you write and run unit tests as if you were using the built-in `#[test]` attribute, but will run on an embedded target 206 | - [embedded-hal-compat](https://github.com/ryankurte/embedded-hal-compat), a compatibility layer to provide interoperability between `v0.2.x` and `v1.x.x` hal implementations and drivers 207 | - [Embassy start](https://github.com/titanclass/embassy-start) is a GitHub repo template for setting up async embedded Rust projects that use [Embassy](https://github.com/embassy-rs/embassy). This particular template targets nRF hardware and networking using the Uarte for the purposes of illustration only. 208 | - [svd-generator](https://codeberg.org/weathered-steel/svd-generator) CLI tool to parse flattened device tree files, and create a SVD file. - [![crates.io](https://img.shields.io/crates/v/svd-generator.svg)](https://crates.io/crates/svd-generator) 209 | - [rumbac](https://github.com/akavel/rumbac) is a simple CLI flasher for *Arduino Nano 33 BLE Rev2 / Sense Rev2* boards, using the SAM-BA protocol to talk with the Arduino-provided bootloader, porting just enough of the `bossac` tool to Rust 210 | - [commitment-issues](https://github.com/dysonltd/commitment-issues) Compile git metadata into your binary. 211 | 212 | [embedded-hal-mock]: https://crates.io/crates/embedded-hal-mock 213 | 214 | ## Real-time 215 | 216 | ### Real-time Operating System (RTOS) 217 | 218 | - [Drone OS](https://drone-os.github.io) An Embedded Operating System for writing real-time applications in Rust. 219 | - [FreeRTOS.rs](https://github.com/hashmismatch/freertos.rs) Rust interface for the FreeRTOS API 220 | - [FreeRTOS-rust](https://github.com/lobaro/FreeRTOS-rust) Rust interface for FreeRTOS with Rust entry point and build support crate. 221 | - [RIOT-OS](https://doc.riot-os.org/using-rust.html) directly supports applications written in Rust, both in terms of build system integration and by having safe and idiomatic wrappers. 222 | - [Tock](https://www.tockos.org) An embedded operating system designed for running multiple concurrent, mutually distrustful applications on low-memory and low-power microcontrollers 223 | - [Hubris](https://github.com/oxidecomputer/hubris) A real-time operating system built by Oxide Computer to run the Service Controller processor in the mainboards of their rack-mount servers. 224 | - [Zephyr](https://docs.zephyrproject.org/latest/develop/languages/rust/index.html) An embedded RTOS, written in C, with support for writing applications in Rust. 225 | - [Ariel OS](https://ariel-os.org/) A modular operating system written in Rust, providing multicore preemptive scheduling and application portability on top of Embassy. 226 | 227 | ### Real-time tools 228 | 229 | - [RTIC v1.0](https://rtic.rs/1/book/en/) Real-Time Interrupt-driven Concurrency — A concurrency framework for building real-time systems: 230 | - [cortex-m rtic](https://github.com/rtic-rs/cortex-m-rtic) RTIC framework for ARM Cortex-M microcontrollers 231 | - [msp430 rtfm](https://github.com/japaric/msp430-rtfm) RTFM framework for MSP430 MCUs 232 | 233 | ## Runtime Crates 234 | 235 | Basic runtimes for CPUs & MCUs which are needed to run software on them. 236 | 237 | - [`cortex-m-rt`](https://crates.io/crates/cortex-m-rt) Support for Cortex-M 238 | - [`cortex-a-rt`](https://crates.io/crates/cortex-a-rt) Support for Cortex-A 239 | - [`cortex-r-rt`](https://crates.io/crates/cortex-r-rt) Support for Cortex-R 240 | - [`riscv-rt`](https://crates.io/crates/riscv-rt) Support for RISC-V 241 | - [`esp-riscv-rt`](https://crates.io/crates/esp-riscv-rt) Support for RISC-V devices from Espressif (ESP32) 242 | - [`xtensa-lx-rt`](https://crates.io/crates/xtensa-lx-rt) Support for Xtensa LX (ESP32) 243 | - [`mips-rt`](https://crates.io/crates/mips-rt) Support for MIPS 244 | - [`msp430-rt`](https://crates.io/crates/msp430-rt) Support for MSP430 245 | 246 | ## Peripheral Access Crates 247 | 248 | Register definition for microcontroller families. Usually generated using [`svd2rust`]. - [![crates.io](https://img.shields.io/crates/v/svd2rust.svg)](https://crates.io/crates/svd2rust) 249 | 250 | Peripheral Access Crates were also called Device Crates. 251 | 252 | [`svd2rust`]: https://crates.io/crates/svd2rust 253 | 254 | *NOTE* You may be able to find even more peripheral access crates by searching for the 255 | [`svd2rust`][svd2rust-kw] keyword on crates.io! 256 | 257 | [svd2rust-kw]: https://crates.io/keywords/svd2rust 258 | 259 | ### Microchip 260 | 261 | - [`atsamd11`](https://github.com/atsamd-rs/atsamd) Peripheral access API for Microchip (formerly Atmel) SAMD11 microcontrollers. This git repo hosts both the peripheral access crate and the hal. 262 | - [`atsamd21`](https://github.com/atsamd-rs/atsamd) Peripheral access API for Microchip (formerly Atmel) SAMD21 microcontrollers. This git repo hosts both the peripheral access crate and the hal. 263 | - [`atsamd51`](https://github.com/atsamd-rs/atsamd) Peripheral access API for Microchip (formerly Atmel) SAMD51 microcontrollers. This git repo hosts both the peripheral access crate and the hal. 264 | - [`atsame53`](https://github.com/atsamd-rs/atsamd) Peripheral access API for Microchip (formerly Atmel) SAME53 microcontrollers. This git repo hosts both the peripheral access crate and the hal. 265 | - [`atsame54`](https://github.com/atsamd-rs/atsamd) Peripheral access API for Microchip (formerly Atmel) SAME54 microcontrollers. This git repo hosts both the peripheral access crate and the hal. 266 | - [`atsamx7x-rust`](https://github.com/atsams-rs/atsamx7x-rust) Peripheral access API for Microchip (formerly Atmel) SAM S70/E70/V70/V71 microcontrollers. This git repo hosts both the peripheral access crate and the hal. 267 | - [`avr-device`](https://github.com/Rahix/avr-device) Peripheral access API for Microchip (formerly Atmel) AVR microcontroller family. 268 | - [`sam3x8e`](https://crates.io/crates/sam3x8e) Peripheral access API for Atmel SAMD3X8E microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/sam3x8e.svg)](https://crates.io/crates/sam3x8e) 269 | - [`pic32-pac`](https://crates.io/crates/pic32mx2xx) Peripheral access API for PIC32MX1/2xx - [![crates.io](https://img.shields.io/crates/v/pic32mx2xx)](https://crates.io/crates/pic32mx2xx) 270 | 271 | ### Nordic 272 | 273 | - [`nrf51`](https://crates.io/crates/nrf51) Peripheral access API for nRF51 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/nrf51.svg)](https://crates.io/crates/nrf51) 274 | - [`nrf52810-pac`](https://crates.io/crates/nrf52810-pac) - Peripheral access API for the nRF52810 microcontroller (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/nrf52810-pac.svg)](https://crates.io/crates/nrf52810-pac) 275 | - [`nrf52811-pac`](https://crates.io/crates/nrf52811-pac) - Peripheral access API for the nRF52811 microcontroller (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/nrf52811-pac.svg)](https://crates.io/crates/nrf52811-pac) 276 | - [`nrf52832-pac`](https://crates.io/crates/nrf52832-pac) - Peripheral access API for the nRF52832 microcontroller (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/nrf52832-pac.svg)](https://crates.io/crates/nrf52832-pac) 277 | - [`nrf52833-pac`](https://crates.io/crates/nrf52833-pac) - Peripheral access API for the nRF52833 microcontroller (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/nrf52833-pac.svg)](https://crates.io/crates/nrf52833-pac) 278 | - [`nrf52840-pac`](https://crates.io/crates/nrf52840-pac) - Peripheral access API for the nRF52840 microcontroller (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/nrf52840-pac.svg)](https://crates.io/crates/nrf52840-pac) 279 | - [`nrf5340-app-pac`](https://crates.io/crates/nrf5340-app-pac) - Peripheral access API for the nRF5340 application core (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/nrf5340-app-pac.svg)](https://crates.io/crates/nrf5340-app-pac) 280 | - [`nrf5340-net-pac`](https://crates.io/crates/nrf5340-net-pac) - Peripheral access API for the nRF5340 network core (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/nrf5340-net-pac.svg)](https://crates.io/crates/nrf5340-net-pac) 281 | - [`nrf9160-pac`](https://crates.io/crates/nrf9160-pac) - Peripheral access API for the nRF9160 system-in-package (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/nrf9160-pac.svg)](https://crates.io/crates/nrf9160-pac) 282 | 283 | ### NXP 284 | 285 | - [`k64`](https://crates.io/crates/k64) - [![crates.io](https://img.shields.io/crates/v/k64.svg)](https://crates.io/crates/k64) 286 | - [`lpc11uxx`](https://crates.io/crates/lpc11uxx) - [![crates.io](https://img.shields.io/crates/v/lpc11uxx.svg)](https://crates.io/crates/lpc11uxx) 287 | - [`lpc55s6x-pac`](https://crates.io/crates/lpc55s6x-pac) - [![crates.io](https://img.shields.io/crates/v/lpc55s6x-pac.svg)](https://crates.io/crates/lpc55s6x-pac) 288 | - [`lpc82x-pac`](https://crates.io/crates/lpc82x-pac) - [![crates.io](https://img.shields.io/crates/v/lpc82x-pac.svg)](https://crates.io/crates/lpc82x-pac) 289 | - [`lpc845-pac`](https://crates.io/crates/lpc845-pac) - [![crates.io](https://img.shields.io/crates/v/lpc845-pac.svg)](https://crates.io/crates/lpc845-pac) 290 | - [`mkw41z`](https://crates.io/crates/mkw41z) - [![crates.io](https://img.shields.io/crates/v/mkw41z.svg)](https://crates.io/crates/mkw41z) 291 | - [`imxrt-ral`](https://github.com/imxrt-rs/imxrt-rs) Register access layer for i.MX RT series. - [![crates.io](https://img.shields.io/crates/v/imxrt-ral.svg)](https://crates.io/crates/imxrt-ral) 292 | - [`SKEAZN642`](https://crates.io/crates/SKEAZN642) Peripheral access API for KEA64 family microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/SKEAZN642.svg)](https://crates.io/crates/SKEAZN642) 293 | - [`mcx-pac`](https://github.com/mcx-rs/mcx-pac) Peripheral Access Crate for NXP MCX Series MCUs - [![crates.io](https://img.shields.io/crates/v/mcx-pac.svg)](https://crates.io/crates/mcx-pac) 294 | 295 | ### Raspberry Pi Silicon 296 | 297 | - [`rp2040-pac`](https://crates.io/crates/rp2040-pac) - Peripheral access API for the RP2040 dual-core system-on-chip (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/rp2040-pac.svg)](https://crates.io/crates/rp2040-pac) 298 | - [`rp235x-pac`](https://crates.io/crates/rp235x-pac) - Peripheral access API for the RP2350 family of dual-core microcontrollers - [![crates.io](https://img.shields.io/crates/v/rp235x-pac.svg)](https://crates.io/crates/rp235x-pac) 299 | 300 | ### SiFive 301 | 302 | - [`e310x`](https://github.com/riscv-rust/e310x) - svd2rust generated interface to SiFive [Freedom E310](https://www.sifive.com/cores/e31) MCUs - [![crates.io](https://img.shields.io/crates/v/e310x.svg)](https://crates.io/crates/e310x) 303 | 304 | ### Silicon Labs 305 | 306 | - [`efm32pg12-pac`](https://crates.io/crates/efm32pg12-pac) - Peripheral access API for Silicon Labs EFM32PG12 microcontrollers - [![crates.io](https://img.shields.io/crates/v/efm32pg12-pac)](https://crates.io/crates/efm32pg12-pac) 307 | 308 | The [`efm32-rs`](https://github.com/efm32-rs) project has peripheral access APIs for most EFM32 microcontrollers (generated using svd2rust): 309 | 310 | - [`efm32g-pac`](https://crates.io/crates/efm32g-pac) - [![crates.io](https://img.shields.io/crates/v/efm32g-pac)](https://crates.io/crates/efm32g-pac) 311 | - [`efm32gg-pac`](https://crates.io/crates/efm32gg-pac) - [![crates.io](https://img.shields.io/crates/v/efm32gg-pac)](https://crates.io/crates/efm32gg-pac) 312 | - [`efm32gg11b-pac`](https://crates.io/crates/efm32gg11b-pac) - [![crates.io](https://img.shields.io/crates/v/efm32gg11b-pac)](https://crates.io/crates/efm32gg11b-pac) 313 | - [`efm32gg12b-pac`](https://crates.io/crates/efm32gg12b-pac) - [![crates.io](https://img.shields.io/crates/v/efm32gg12b-pac)](https://crates.io/crates/efm32gg12b-pac) 314 | - [`efm32hg-pac`](https://crates.io/crates/efm32hg-pac) - [![crates.io](https://img.shields.io/crates/v/efm32hg-pac)](https://crates.io/crates/efm32hg-pac) 315 | - [`efm32jg1b-pac`](https://crates.io/crates/efm32jg1b-pac) - [![crates.io](https://img.shields.io/crates/v/efm32jg1b-pac)](https://crates.io/crates/efm32jg1b-pac) 316 | - [`efm32jg12b-pac`](https://crates.io/crates/efm32jg12b-pac) - [![crates.io](https://img.shields.io/crates/v/efm32jg12b-pac)](https://crates.io/crates/efm32jg12b-pac) 317 | - [`efm32lg-pac`](https://crates.io/crates/efm32lg-pac) - [![crates.io](https://img.shields.io/crates/v/efm32lg-pac)](https://crates.io/crates/efm32lg-pac) 318 | - [`efm32pg-pac`](https://crates.io/crates/efm32pg-pac) - [![crates.io](https://img.shields.io/crates/v/efm32pg-pac)](https://crates.io/crates/efm32pg-pac) 319 | - [`efm32pg22-pac`](https://crates.io/crates/efm32pg22-pac) - [![crates.io](https://img.shields.io/crates/v/efm32pg22-pac)](https://crates.io/crates/efm32pg22-pac) 320 | - [`efm32pg23-pac`](https://crates.io/crates/efm32pg23-pac) - [![crates.io](https://img.shields.io/crates/v/efm32pg23-pac)](https://crates.io/crates/efm32pg23-pac) 321 | - [`efm32tg-pac`](https://crates.io/crates/efm32tg-pac) - [![crates.io](https://img.shields.io/crates/v/efm32tg-pac)](https://crates.io/crates/efm32tg-pac) 322 | - [`efm32tg11b-pac`](https://crates.io/crates/efm32tg11b-pac) - [![crates.io](https://img.shields.io/crates/v/efm32tg11b-pac)](https://crates.io/crates/efm32tg11b-pac) 323 | - [`efm32wg-pac`](https://crates.io/crates/efm32wg-pac) - [![crates.io](https://img.shields.io/crates/v/efm32wg-pac)](https://crates.io/crates/efm32wg-pac) 324 | - [`efm32zg-pac`](https://crates.io/crates/efm32zg-pac) - [![crates.io](https://img.shields.io/crates/v/efm32zg-pac)](https://crates.io/crates/efm32zg-pac) 325 | 326 | ### StarFive 327 | 328 | - [`j71xx-pac`](https://crates.io/crates/jh71xx-pac) - svd2rust generated interface to StarFive [JH71xx](https://www.starfivetech.com/en/site/soc) MCUs - [![crates.io](https://img.shields.io/crates/v/jh71xx-pac.svg)](https://crates.io/crates/jh71xx-pac) 329 | 330 | ### STMicroelectronics 331 | 332 | The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral access APIs for most STM32 microcontrollers (generated using svd2rust): 333 | 334 | - [`stm32f0`](https://crates.io/crates/stm32f0) - [![crates.io](https://img.shields.io/crates/v/stm32f0.svg)](https://crates.io/crates/stm32f0) 335 | - [`stm32f1`](https://crates.io/crates/stm32f1) - [![crates.io](https://img.shields.io/crates/v/stm32f1.svg)](https://crates.io/crates/stm32f1) 336 | - [`stm32f2`](https://crates.io/crates/stm32f2) - [![crates.io](https://img.shields.io/crates/v/stm32f2.svg)](https://crates.io/crates/stm32f2) 337 | - [`stm32f3`](https://crates.io/crates/stm32f3) - [![crates.io](https://img.shields.io/crates/v/stm32f3.svg)](https://crates.io/crates/stm32f3) 338 | - [`stm32f4`](https://crates.io/crates/stm32f4) - [![crates.io](https://img.shields.io/crates/v/stm32f4.svg)](https://crates.io/crates/stm32f4) 339 | - [`stm32f7`](https://crates.io/crates/stm32f7) - [![crates.io](https://img.shields.io/crates/v/stm32f7.svg)](https://crates.io/crates/stm32f7) 340 | - [`stm32g0`](https://crates.io/crates/stm32g0) - [![crates.io](https://img.shields.io/crates/v/stm32g0.svg)](https://crates.io/crates/stm32g0) 341 | - [`stm32g4`](https://crates.io/crates/stm32g4) - [![crates.io](https://img.shields.io/crates/v/stm32g4.svg)](https://crates.io/crates/stm32g4) 342 | - [`stm32h7`](https://crates.io/crates/stm32h5) - [![crates.io](https://img.shields.io/crates/v/stm32h5.svg)](https://crates.io/crates/stm32h5) 343 | - [`stm32h7`](https://crates.io/crates/stm32h7) - [![crates.io](https://img.shields.io/crates/v/stm32h7.svg)](https://crates.io/crates/stm32h7) 344 | - [`stm32l0`](https://crates.io/crates/stm32l0) - [![crates.io](https://img.shields.io/crates/v/stm32l0.svg)](https://crates.io/crates/stm32l0) 345 | - [`stm32l1`](https://crates.io/crates/stm32l1) - [![crates.io](https://img.shields.io/crates/v/stm32l1.svg)](https://crates.io/crates/stm32l1) 346 | - [`stm32l4`](https://crates.io/crates/stm32l4) - [![crates.io](https://img.shields.io/crates/v/stm32l4.svg)](https://crates.io/crates/stm32l4) 347 | 348 | ### Texas Instruments 349 | 350 | - [`tm4c123x`](https://crates.io/crates/tm4c123x) Peripheral access API for TM4C123x microcontrollers (generated using svd2rust) 351 | - [`tm4c129x`](https://crates.io/crates/tm4c129x) Peripheral access API for TM4C129x microcontrollers (generated using svd2rust) 352 | - [`mspm0-metapac`](https://github.com/mspm0-rs/mspm0-data) 353 | - PAC for all MSPM0 (and MSPS003) microcontrollers. (generated using chiptool) 354 | 355 | ### MSP430 356 | 357 | - [`msp430g2553`](https://github.com/pftbest/msp430g2553) Peripheral access API for MSP430G2553 microcontrollers (generated using svd2rust) 358 | - [msp430 quickstart](https://github.com/rust-embedded/msp430-quickstart) some examples for msp430 359 | - [`msp430fr2355`](https://crates.io/crates/msp430fr2355) Peripheral access API for MSP430FR2355 microcontrollers (generated using svd2rust) 360 | - [`msp430fr6972`](https://crates.io/crates/msp430fr6972) - [![crates.io](https://img.shields.io/crates/v/msp430fr6972)](https://crates.io/crates/msp430fr6972) 361 | 362 | ### Espressif 363 | 364 | - [`esp32`](https://github.com/esp-rs/esp-pacs/tree/main/esp32) - [![crates.io](https://img.shields.io/crates/v/esp32.svg)](https://crates.io/crates/esp32) 365 | - [`esp32c2`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c2) - [![crates.io](https://img.shields.io/crates/v/esp32c2.svg)](https://crates.io/crates/esp32c2) 366 | - [`esp32c3`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c3) - [![crates.io](https://img.shields.io/crates/v/esp32c3.svg)](https://crates.io/crates/esp32c3) 367 | - [`esp32c6`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c6) - [![crates.io](https://img.shields.io/crates/v/esp32c6.svg)](https://crates.io/crates/esp32c6) 368 | - [`esp32h2`](https://github.com/esp-rs/esp-pacs/tree/main/esp32h2) - [![crates.io](https://img.shields.io/crates/v/esp32h2.svg)](https://crates.io/crates/esp32h2) 369 | - [`esp32s2`](https://github.com/esp-rs/esp-pacs/tree/main/esp32s2) - [![crates.io](https://img.shields.io/crates/v/esp32s2.svg)](https://crates.io/crates/esp32s2) 370 | - [`esp32s3`](https://github.com/esp-rs/esp-pacs/tree/main/esp32s3) - [![crates.io](https://img.shields.io/crates/v/esp32s3.svg)](https://crates.io/crates/esp32s3) 371 | - [`esp8266`](https://github.com/esp-rs/esp8266) - [![crates.io](https://img.shields.io/crates/v/esp8266.svg)](https://crates.io/crates/esp8266) *note: esp8266 is archived, no further development planned* 372 | 373 | ### Ambiq Micro 374 | 375 | - [`ambiq-apollo1-pac`](https://crates.io/crates/ambiq-apollo1-pac) Peripheral access API for Ambiq Apollo 1 microcontrollers (generated using svd2rust) 376 | - [`ambiq-apollo2-pac`](https://crates.io/crates/ambiq-apollo2-pac) Peripheral access API for Ambiq Apollo 2 microcontrollers (generated using svd2rust) 377 | - [`ambiq-apollo3-pac`](https://crates.io/crates/ambiq-apollo3-pac) Peripheral access API for Ambiq Apollo 3 microcontrollers (generated using svd2rust) 378 | - [`ambiq-apollo3p-pac`](https://crates.io/crates/ambiq-apollo3p-pac) Peripheral access API for Ambiq Apollo 3 Plus microcontrollers (generated using svd2rust) 379 | 380 | ### GigaDevice 381 | 382 | - [`gd32vf103-pac`](https://github.com/riscv-rust/gd32vf103-pac) Peripheral access API for GD32VF103 RISC-V microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/gd32vf103-pac.svg)](https://crates.io/crates/gd32vf103-pac) 383 | - [`gd32e2`](https://crates.io/crates/gd32e2) Peripheral access API for GD32E23x Cortex-M23 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/gd32e2.svg)](https://crates.io/crates/gd32e2) 384 | - [`gd32f1`](https://crates.io/crates/gd32f1) Peripheral access API for GD32F1x0 Cortex-M3 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/gd32f1.svg)](https://crates.io/crates/gd32f1) 385 | - [`gd32f2`](https://crates.io/crates/gd32f2) Peripheral access API for GD32F20x Cortex-M3 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/gd32f2.svg)](https://crates.io/crates/gd32f2) 386 | 387 | ### XMC 388 | 389 | Peripheral access crates for the different XMC4xxx families of microcontrollers 390 | 391 | - [`xmc4100`](https://github.com/xmc-rs/xmc4100) - [![crates.io](https://img.shields.io/crates/v/xmc4100.svg)](https://crates.io/crates/xmc4100) 392 | - [`xmc4200`](https://github.com/xmc-rs/xmc4200) - [![crates.io](https://img.shields.io/crates/v/xmc4200.svg)](https://crates.io/crates/xmc4200) 393 | - [`xmc4300`](https://github.com/xmc-rs/xmc4300) - [![crates.io](https://img.shields.io/crates/v/xmc4300.svg)](https://crates.io/crates/xmc4300) 394 | - [`xmc4400`](https://github.com/xmc-rs/xmc4400) - [![crates.io](https://img.shields.io/crates/v/xmc4400.svg)](https://crates.io/crates/xmc4400) 395 | - [`xmc4500`](https://github.com/xmc-rs/xmc4500) - [![crates.io](https://img.shields.io/crates/v/xmc4500.svg)](https://crates.io/crates/xmc4500) 396 | - [`xmc4700`](https://github.com/xmc-rs/xmc4700) - [![crates.io](https://img.shields.io/crates/v/xmc4700.svg)](https://crates.io/crates/xmc4700) 397 | - [`xmc4800`](https://github.com/xmc-rs/xmc4800) - [![crates.io](https://img.shields.io/crates/v/xmc4800.svg)](https://crates.io/crates/xmc4800) 398 | 399 | ### Vorago 400 | 401 | - [`va108xx`](https://egit.irs.uni-stuttgart.de/rust/va108xx-rs) - [![crates.io](https://img.shields.io/crates/v/va108xx.svg)](https://crates.io/crates/va108xx) 402 | - [`va416xx`](https://egit.irs.uni-stuttgart.de/rust/va416xx-rs) - [![crates.io](https://img.shields.io/crates/v/va416xx.svg)](https://crates.io/crates/va416xx) 403 | 404 | ### Wiznet 405 | 406 | - [`w7500x-pac`](https://crates.io/crates/w7500x-pac) Peripheral Access Crate for Wiznet's W7500x microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/w7500x-pac.svg)](https://crates.io/crates/w7500x-pac) 407 | 408 | ### Renesas 409 | 410 | - [`ra2a1`](https://github.com/ra-rs/ra/tree/main/pac/ra2a1) Peripheral Access Crate for ra2a1 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/ra2a1.svg)](https://crates.io/crates/ra2a1) 411 | - [`ra2e1`](https://github.com/ra-rs/ra/tree/main/pac/ra2e1) Peripheral Access Crate for ra2e1 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/ra2e1.svg)](https://crates.io/crates/ra2e1) 412 | - [`ra2e2`](https://github.com/ra-rs/ra/tree/main/pac/ra2e2) Peripheral Access Crate for ra2e2 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/ra2e2.svg)](https://crates.io/crates/ra2e2) 413 | - [`ra2l1`](https://github.com/ra-rs/ra/tree/main/pac/ra2l1) Peripheral Access Crate for ra2l1 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/ra2l1.svg)](https://crates.io/crates/ra2l1) 414 | - [`ra4e1`](https://github.com/ra-rs/ra/tree/main/pac/ra4e1) Peripheral Access Crate for ra4e1 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/ra4e1.svg)](https://crates.io/crates/ra4e1) 415 | - [`ra4m1`](https://github.com/ra-rs/ra/tree/main/pac/ra4m1) Peripheral Access Crate for ra4m1 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/ra4m1.svg)](https://crates.io/crates/ra4m1) 416 | - [`ra4m2`](https://github.com/ra-rs/ra/tree/main/pac/ra4m2) Peripheral Access Crate for ra4m2 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/ra4m2.svg)](https://crates.io/crates/ra4m2) 417 | - [`ra4m3`](https://github.com/ra-rs/ra/tree/main/pac/ra4m3) Peripheral Access Crate for ra4m3 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/ra4m3.svg)](https://crates.io/crates/ra4m3) 418 | - [`ra4w1`](https://github.com/ra-rs/ra/tree/main/pac/ra4w1) Peripheral Access Crate for ra4w1 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/ra4w1.svg)](https://crates.io/crates/ra4w1) 419 | - [`ra6e1`](https://github.com/ra-rs/ra/tree/main/pac/ra6e1) Peripheral Access Crate for ra6e1 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/ra6e1.svg)](https://crates.io/crates/ra6e1) 420 | - [`ra6m1`](https://github.com/ra-rs/ra/tree/main/pac/ra6m1) Peripheral Access Crate for ra6m1 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/ra6m1.svg)](https://crates.io/crates/ra6m1) 421 | - [`ra6m2`](https://github.com/ra-rs/ra/tree/main/pac/ra6m2) Peripheral Access Crate for ra6m2 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/ra6m2.svg)](https://crates.io/crates/ra6m2) 422 | - [`ra6m3`](https://github.com/ra-rs/ra/tree/main/pac/ra6m3) Peripheral Access Crate for ra6m3 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/ra6m3.svg)](https://crates.io/crates/ra6m3) 423 | - [`ra6m4`](https://github.com/ra-rs/ra/tree/main/pac/ra6m4) Peripheral Access Crate for ra6m4 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/ra6m4.svg)](https://crates.io/crates/ra6m4) 424 | - [`ra6t1`](https://github.com/ra-rs/ra/tree/main/pac/ra6t1) Peripheral Access Crate for ra6t1 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/ra6t1.svg)](https://crates.io/crates/ra6t1) 425 | - [`ra6t2`](https://github.com/ra-rs/ra/tree/main/pac/ra6t2) Peripheral Access Crate for ra6t2 microcontrollers (generated using svd2rust) - [![crates.io](https://img.shields.io/crates/v/ra6t2.svg)](https://crates.io/crates/ra6t2) 426 | - [`da14531`](https://crates.io/crates/da14531) Peripheral Access Crate for DA14531 Ultra-Low Power BT 5.1 System-on-Chip - [![crates.io](https://img.shields.io/crates/v/da14531.svg)](https://crates.io/crates/da14531) 427 | 428 | ## HAL implementation crates 429 | 430 | Implementations of [`embedded-hal`] for microcontroller families and systems running some OS. - [![crates.io](https://img.shields.io/crates/v/embedded-hal.svg)](https://crates.io/crates/embedded-hal) 431 | 432 | [`embedded-hal`]: https://crates.io/crates/embedded-hal 433 | 434 | *NOTE* You may be able to find even more HAL implementation crates by searching for the 435 | [`embedded-hal-impl`] and [`embedded-hal`][embedded-hal-kw] keywords on crates.io! 436 | 437 | [`embedded-hal-impl`]: https://crates.io/keywords/embedded-hal-impl 438 | [embedded-hal-kw]: https://crates.io/keywords/embedded-hal 439 | 440 | ### OS 441 | 442 | - [`bitbang-hal`] software protocol implementations for microcontrollers with digital::OutputPin and digital::InputPin 443 | - [`ftdi-embedded-hal`] for FTDI FTx232H chips connected to Linux systems via USB 444 | - [`linux-embedded-hal`] for embedded Linux systems like the Raspberry Pi. - [![crates.io](https://img.shields.io/crates/v/linux-embedded-hal.svg)](https://crates.io/crates/linux-embedded-hal) 445 | - [`freebsd-embedded-hal`] for embedded (or [not](https://www.freebsd.org/cgi/man.cgi?query=cp2112&sektion=4)) FreeBSD systems. - [![crates.io](https://img.shields.io/crates/v/freebsd-embedded-hal.svg)](https://crates.io/crates/freebsd-embedded-hal) 446 | 447 | [`bitbang-hal`]: https://crates.io/crates/bitbang-hal 448 | [`ftdi-embedded-hal`]: https://crates.io/crates/ftdi-embedded-hal 449 | [`linux-embedded-hal`]: https://crates.io/crates/linux-embedded-hal 450 | [`freebsd-embedded-hal`]: https://crates.io/crates/freebsd-embedded-hal 451 | 452 | ### Microchip 453 | 454 | - [`atsam4-hal`](https://crates.io/crates/atsam4-hal) - HAL for SAM4E, SAM4N and SAM4S - [![crates.io](https://img.shields.io/crates/v/atsam4-hal.svg)](https://crates.io/crates/atsam4-hal) 455 | - [`atsamd-hal`](https://crates.io/crates/atsamd-hal) - HAL for SAMD11, SAMD21, SAMD51 and SAME54 - [![crates.io](https://img.shields.io/crates/v/atsamd-hal.svg)](https://crates.io/crates/atsamd-hal) 456 | - [`atsamx7x-hal`](https://crates.io/crates/atsamx7x-hal) - HAL for SAM S70/E70/V70/V71-based devices - [![crates.io](https://img.shields.io/crates/v/atsamx7x-hal.svg)](https://crates.io/crates/atsamx7x-hal) 457 | - [`avr-hal`](https://github.com/Rahix/avr-hal) - HAL for AVR microcontroller family and AVR-based boards 458 | - [`pic32-hal`](https://crates.io/crates/pic32-hal) - HAL for PIC32MX - [![crates.io](https://img.shields.io/crates/v/pic32-hal.svg)](https://crates.io/crates/pic32-hal) 459 | 460 | ### Nordic 461 | 462 | - [`nrf51-hal`](https://crates.io/crates/nrf51-hal) - [![crates.io](https://img.shields.io/crates/v/nrf51-hal.svg)](https://crates.io/crates/nrf51-hal) 463 | - [`nrf52810-hal`](https://crates.io/crates/nrf52810-hal) - [![crates.io](https://img.shields.io/crates/v/nrf52810-hal.svg)](https://crates.io/crates/nrf52810-hal) 464 | - [`nrf52811-hal`](https://crates.io/crates/nrf52811-hal) - [![crates.io](https://img.shields.io/crates/v/nrf52811-hal.svg)](https://crates.io/crates/nrf52811-hal) 465 | - [`nrf52832-hal`](https://crates.io/crates/nrf52832-hal) - [![crates.io](https://img.shields.io/crates/v/nrf52832-hal.svg)](https://crates.io/crates/nrf52832-hal) 466 | - [`nrf52833-hal`](https://crates.io/crates/nrf52833-hal) - [![crates.io](https://img.shields.io/crates/v/nrf52833-hal.svg)](https://crates.io/crates/nrf52833-hal) 467 | - [`nrf52840-hal`](https://crates.io/crates/nrf52840-hal) - [![crates.io](https://img.shields.io/crates/v/nrf52840-hal.svg)](https://crates.io/crates/nrf52840-hal) 468 | - [`nrf9160-hal`](https://crates.io/crates/nrf9160-hal) - [![crates.io](https://img.shields.io/crates/v/nrf9160-hal.svg)](https://crates.io/crates/nrf9160-hal) 469 | 470 | ### NXP 471 | 472 | Also check the list of [NXP board support crates][nxp-bsc]! 473 | 474 | [nxp-bsc]: #nxp-2 475 | 476 | - [`lpc55s6x-hal`](https://crates.io/crates/lpc55s6x-hal) - [![crates.io](https://img.shields.io/crates/v/lpc55s6x-hal.svg)](https://crates.io/crates/lpc55s6x-hal) 477 | - [`lpc8xx-hal`](https://crates.io/crates/lpc8xx-hal) - HAL for lpc82x and lpc845 - [![crates.io](https://img.shields.io/crates/v/lpc8xx-hal.svg)](https://crates.io/crates/lpc8xx-hal) 478 | - [`mkw41z-hal`](https://crates.io/crates/mkw41z-hal) - [![crates.io](https://img.shields.io/crates/v/mkw41z-hal.svg)](https://crates.io/crates/mkw41z-hal) 479 | - [`imxrt-hal`](https://github.com/imxrt-rs/imxrt-rs) - HAL for i.MX RT series. - [![crates.io](https://img.shields.io/crates/v/imxrt-hal.svg)](https://crates.io/crates/imxrt-hal) 480 | 481 | ### Raspberry Pi Silicon 482 | 483 | - [`rp2040-hal`](https://crates.io/crates/rp2040-hal) - HAL for the RP2040 dual-core system-on-chip - [![crates.io](https://img.shields.io/crates/v/rp2040-hal.svg)](https://crates.io/crates/rp2040-hal) 484 | - [`rp235x-hal`](https://crates.io/crates/rp235x-hal) - HAL for the RP2350 family of dual-core microcontrollers (used in the Raspberry Pi Pico 2 etc.) - [![crates.io](https://img.shields.io/crates/v/rp235x-hal.svg)](https://crates.io/crates/rp235x-hal) 485 | 486 | ### SiFive 487 | 488 | - [`e310x-hal`](https://github.com/riscv-rust/e310x-hal) - HAL for SiFive [Freedom E310](https://www.sifive.com/cores/e31) MCUs - [![crates.io](https://img.shields.io/crates/v/e310x-hal.svg)](https://crates.io/crates/e310x-hal) 489 | 490 | ### STMicroelectronics 491 | 492 | Also check the list of [STMicroelectronics board support crates][stm-bsc]! 493 | 494 | [stm-bsc]: #stmicroelectronics-2 495 | 496 | - [`stm32f0xx-hal`](https://crates.io/crates/stm32f0xx-hal) - [![crates.io](https://img.shields.io/crates/v/stm32f0xx-hal.svg)](https://crates.io/crates/stm32f0xx-hal) 497 | - Has examples that can run on boards like the [Nucleo-F042K6] and similar boards 498 | - [`stm32f1xx-hal`](https://github.com/stm32-rs/stm32f1xx-hal) - [![crates.io](https://img.shields.io/crates/v/stm32f1xx-hal.svg)](https://crates.io/crates/stm32f1xx-hal) 499 | - Can be run on boards like the [Blue-pill], [Nucleo-F103RB], and similar boards 500 | - [`stm32f3xx-hal`](https://crates.io/crates/stm32f3xx-hal) - [![crates.io](https://img.shields.io/crates/v/stm32f3xx-hal.svg)](https://crates.io/crates/stm32f3xx-hal) 501 | - [`stm32f4xx-hal`](https://crates.io/crates/stm32f4xx-hal) - [![crates.io](https://img.shields.io/crates/v/stm32f4xx-hal.svg)](https://crates.io/crates/stm32f4xx-hal) 502 | - Generic HAL implementation for all MCUs of the stm32f4 series 503 | - [`stm32f7xx-hal`](https://crates.io/crates/stm32f7xx-hal) - [![crates.io](https://img.shields.io/crates/v/stm32f7xx-hal.svg)](https://crates.io/crates/stm32f7xx-hal) 504 | - Generic HAL implementation for all MCUs of the stm32f7 series 505 | - [`stm32g0xx-hal`](https://crates.io/crates/stm32g0xx-hal) - [![crates.io](https://img.shields.io/crates/v/stm32g0xx-hal.svg)](https://crates.io/crates/stm32g0xx-hal) 506 | - [`stm32h7xx-hal`](https://crates.io/crates/stm32h7xx-hal) - [![crates.io](https://img.shields.io/crates/v/stm32h7xx-hal.svg)](https://crates.io/crates/stm32h7xx-hal) 507 | - HAL implementation for the STMicro STM32H7xx family of microcontrollers 508 | - [`stm32l0xx-hal`](https://crates.io/crates/stm32l0xx-hal) - [![crates.io](https://img.shields.io/crates/v/stm32l0xx-hal.svg)](https://crates.io/crates/stm32l0xx-hal) 509 | - HAL implementation for the the STMicro STM32L0xx family of microcontrollers 510 | - [`stm32l1xx-hal`](https://crates.io/crates/stm32l1xx-hal) - [![crates.io](https://img.shields.io/crates/v/stm32l1xx-hal.svg)](https://crates.io/crates/stm32l1xx-hal) 511 | - [`stm32l151-hal`](https://crates.io/crates/stm32l151-hal) - [![crates.io](https://img.shields.io/crates/v/stm32l151-hal.svg)](https://crates.io/crates/stm32l151-hal) 512 | - [`stm32l4xx-hal`](https://crates.io/crates/stm32l4xx-hal) - [![crates.io](https://img.shields.io/crates/v/stm32l4xx-hal.svg)](https://crates.io/crates/stm32l4xx-hal) 513 | - Generic hal support for stm32l4 devices, has examples that can run on boards like the [Nucleo-L432KC], [Solo], and similar boards 514 | - [`stm32-hal`](https://crates.io/crates/stm32-hal2) - [![crates.io](https://img.shields.io/crates/v/stm32-hal2.svg)](https://crates.io/crates/stm32-hal2) 515 | - HAL implementation for STM32 devices across multiple families, with a focus on newer ones like L4, L5, and H7. 516 | 517 | [Nucleo-L432KC]: https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-nucleo/nucleo-l432kc.html 518 | [Solo]: https://solokeys.com/ 519 | [Blue-pill]: http://web.archive.org/web/20230317010201/https://stm32duinoforum.com/forum/wiki_subdomain/index_title_Blue_Pill.html 520 | [Nucleo-F103RB]: http://www.st.com/en/evaluation-tools/nucleo-f103rb.html 521 | [Nucleo-F042K6]: http://www.st.com/en/evaluation-tools/nucleo-f042k6.html 522 | 523 | ### Texas Instruments 524 | 525 | - [`tm4c123x-hal`](https://github.com/rust-embedded-community/tm4c-hal/) 526 | - [`embassy-mspm0`](https://github.com/embassy-rs/embassy/tree/main/embassy-mspm0) 527 | - Embassy HAL implementation for all MSPM0 (and MSPS003) microcontrollers. 528 | 529 | ### MSP430 530 | 531 | - [`msp430fr2x5x-hal`](https://crates.io/crates/msp430fr2x5x-hal) 532 | - HAL implementation for the MSP430FR2x5x family of microcontrollers 533 | 534 | ### Espressif 535 | 536 | - [`esp-idf-hal`](https://github.com/esp-rs/esp-idf-hal) 537 | - An embedded-hal implementation for Rust on ESP32 microcontrollers and ESP-IDF 538 | - [`esp-hal`](https://github.com/esp-rs/esp-hal) 539 | - A `no_std` Hardware Abstraction Layers for ESP32 microcontrollers 540 | 541 | ### Silicon Labs 542 | 543 | - [`tomu-hal`](https://github.com/fudanchii/imtomu-rs) 544 | - HAL implementation targeted for [Tomu] USB board with EFM32HG309F64 ARMv6-M core. Has support to configure [tomu bootloader] directly from an application via the `toboot_config` macro. 545 | 546 | [Tomu]: https://tomu.im/ 547 | [tomu bootloader]: https://github.com/im-tomu/tomu-bootloader 548 | 549 | ### XMC 550 | 551 | - [`xmc1100-hal`](https://github.com/david-sawatzke/xmc1100-hal) - [![crates.io](https://img.shields.io/crates/v/xmc1100-hal.svg)](https://crates.io/crates/xmc1100-hal) 552 | - [`xmc4-hal`](https://github.com/xmc-rs/xmc4-hal) - [![crates.io](https://img.shields.io/crates/v/xmc4-hal.svg)](https://crates.io/crates/xmc4-hal) 553 | 554 | ### GigaDevice 555 | 556 | - [`gd32vf103xx-hal`](https://github.com/riscv-rust/gd32vf103xx-hal) - [![crates.io](https://img.shields.io/crates/v/gd32vf103xx-hal.svg)](https://crates.io/crates/gd32vf103xx-hal) 557 | - HAL for GD32VF103xx microcontrollers 558 | - [`gd32vf103-hal`](https://github.com/luojia65/gd32vf103-hal) - [![crates.io](https://img.shields.io/crates/v/gd32vf103-hal.svg)](https://crates.io/crates/gd32vf103-hal) 559 | - (WIP) Hardware abstract layer (HAL) for the GD32VF103 RISC-V microcontroller 560 | - [`gd32f1x0-hal`](https://crates.io/crates/gd32f1x0-hal) - [![crates.io](https://img.shields.io/crates/v/gd32f1x0-hal.svg)](https://crates.io/crates/gd32f1x0-hal) 561 | - HAL implementation for GD32F1x0 microcontrollers 562 | 563 | ### Vorago 564 | 565 | - [`va108xx-hal`](https://egit.irs.uni-stuttgart.de/rust/va108xx-rs) - [![crates.io](https://img.shields.io/crates/v/va108xx-hal.svg)](https://crates.io/crates/va108xx-hal) 566 | - [Blogpost](https://robamu.github.io/post/rust-ecosystem/) 567 | 568 | ### Renesas 569 | 570 | - [`da14531-hal`](https://crates.io/crates/da14531-hal) HAL crate for DA14531 Ultra-Low Power BT 5.1 System-on-Chip - [![crates.io](https://img.shields.io/crates/v/da14531-hal.svg)](https://crates.io/crates/da14531-hal) 571 | 572 | ### StarFive 573 | 574 | - [`j71xx-hal`](https://crates.io/crates/jh71xx-hal) - HAL crate for StarFive [JH71xx](https://www.starfivetech.com/en/site/soc) MCUs - [![crates.io](https://img.shields.io/crates/v/jh71xx-hal.svg)](https://crates.io/crates/jh71xx-hal) 575 | 576 | ## Architecture support crates 577 | 578 | Crates tailored for general CPU architectures. 579 | 580 | ### ARM 581 | 582 | - [`cortex-a`](https://github.com/andre-richter/cortex-a) Low-level access to Cortex-A processors (early state) - [![crates.io](https://img.shields.io/crates/v/cortex-a.svg)](https://crates.io/crates/cortex-a) 583 | - [`cortex-m`](https://github.com/japaric/cortex-m) Low-level access to Cortex-M processors - [![crates.io](https://img.shields.io/crates/v/cortex-m.svg)](https://crates.io/crates/cortex-m) 584 | 585 | ### RISC-V 586 | 587 | - [`riscv`](https://github.com/rust-embedded/riscv) Low-level access to RISC-V processors - [![crates.io](https://img.shields.io/crates/v/riscv.svg)](https://crates.io/crates/riscv) 588 | 589 | ### MIPS 590 | 591 | - [`mips`](https://github.com/Harry-Chen/rust-mips) Low-level access to MIPS32 processors - [![crates.io](https://img.shields.io/crates/v/mips.svg)](https://crates.io/crates/mips) 592 | - [`mips-mcu`](https://github.com/kiffie/pic32-rs/tree/master/mips-mcu) Low-level access to MIPS MCU cores - [![crates.io](https://img.shields.io/crates/v/mips-mcu.svg)](https://crates.io/crates/mips-mcu) 593 | 594 | ## Board support crates 595 | 596 | Crates tailored for specific boards. 597 | 598 | [STM32F3DISCOVERY]: http://www.st.com/en/evaluation-tools/stm32f3discovery.html 599 | [STM32F4DISCOVERY]: https://www.st.com/en/evaluation-tools/stm32f4discovery.html 600 | [STM32F429DISCOVERY]: https://www.st.com/en/evaluation-tools/32f429idiscovery.html 601 | [atsamd-rs]: https://github.com/atsamd-rs/atsamd 602 | [atsamd-rs tier 1 support]: https://github.com/atsamd-rs/atsamd#how-to-use-a-bsp-ie-getting-started-writing-your-own-code 603 | [atsamd-rs tier 2 support]: https://github.com/atsamd-rs/atsamd#how-to-use-a-bsp-ie-getting-started-writing-your-own-code 604 | 605 | ### 1BitSquared 606 | 607 | - [`onebitsy`](https://crates.io/crates/onebitsy) - Board support crate for the [1bitsy] STM32F4-based board - [![crates.io](https://img.shields.io/crates/v/onebitsy.svg)](https://crates.io/crates/onebitsy) 608 | 609 | [1bitsy]: https://1bitsy.org/ 610 | 611 | ### Adafruit 612 | 613 | - [`metro_m0`](https://crates.io/crates/metro_m0) - Board support for the [Metro M0 board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 1 support] board. [![crates.io](https://img.shields.io/crates/v/metro_m0.svg)](https://crates.io/crates/metro_m0) 614 | - [`metro_m4`](https://crates.io/crates/metro_m4) - Board support for the [Metro M4 board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 1 support] board. [![crates.io](https://img.shields.io/crates/v/metro_m4.svg)](https://crates.io/crates/metro_m4) 615 | - [`pyportal`](https://crates.io/crates/pyportal) - Board support for the [PyPortal board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/pyportal.svg)](https://crates.io/crates/pyportal) 616 | - [`pygamer`](https://crates.io/crates/pygamer) - Board support for the [PyGamer board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 1 support] board. [![crates.io](https://img.shields.io/crates/v/pygamer.svg)](https://crates.io/crates/pygamer) 617 | - [`trellis_m4`](https://crates.io/crates/trellis_m4) - Board support for the [NeoTrellis M4 board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/trellis_m4.svg)](https://crates.io/crates/trellis_m4) 618 | - [`feather-f405`](https://crates.io/crates/feather-f405) - Board support for the [Feather STM32F405 Express]. [![crates.io](https://img.shields.io/crates/v/feather-f405.svg)](https://crates.io/crates/feather-f405) 619 | - [`feather_m0`](https://crates.io/crates/feather_m0) - Board support for the [Feather M0 board], and some variants in the [atsamd-rs] repo. It is an [atsamd-rs tier 1 support] board. [![crates.io](https://img.shields.io/crates/v/feather_m0.svg)](https://crates.io/crates/feather_m0) 620 | - [`feather_m4`](https://crates.io/crates/feather_m4) - Board support for the [Feather M4 board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 1 support] board. [![crates.io](https://img.shields.io/crates/v/feather_m4.svg)](https://crates.io/crates/feather_m4) 621 | - [`circuit_playground_express`](https://crates.io/crates/circuit_playground_express) - Board support for the [Circuit Playground Express board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/circuit_playground_express.svg)](https://crates.io/crates/circuit_playground_express) 622 | - [`edgebadge`](https://crates.io/crates/edgebadge) - Board support for the [EdgeBadge board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/edgebadge.svg)](https://crates.io/crates/edgebadge) 623 | - [`gemma_m0`](https://crates.io/crates/gemma_m0) - Board support for the [Gemma M0 board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/gemma_m0.svg)](https://crates.io/crates/gemma_m0) 624 | - [`itsybitsy_m0`](https://crates.io/crates/itsybitsy_m0) - Board support for the [ItsyBitsy M0 board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/itsybitsy_m0.svg)](https://crates.io/crates/itsybitsy_m0) 625 | - [`itsybitsy_m4`](https://crates.io/crates/itsybitsy_m4) - Board support for the [ItsyBitsy M4 Express board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/itsybitsy_m4.svg)](https://crates.io/crates/itsybitsy_m4) 626 | - [`trinket_m0`](https://crates.io/crates/trinket_m0) - Board support for the [Trinket M0 board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/trinket_m0.svg)](https://crates.io/crates/trinket_m0) 627 | - [`neo_trinkey`](https://crates.io/crates/neo_trinkey) - Board support for the [neo trinkey board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/neo_trinkey.svg)](https://crates.io/crates/neo_trinkey) 628 | - [`neokey_trinkey`](https://crates.io/crates/neokey_trinkey) - Board support for the [neokey trinkey board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/neokey_trinkey.svg)](https://crates.io/crates/neokey_trinkey) 629 | - [`grand_central_m4`](https://crates.io/crates/grand_central_m4) - Board support for the [grand central m4 board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/grand_central_m4.svg)](https://crates.io/crates/grand_central_m4) 630 | - [`qt_py_m0`](https://crates.io/crates/qt_py_m0) - Board support for the [QT Py board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/qt_py_m0.svg)](https://crates.io/crates/qt_py_m0) 631 | - [`adafruit-feather-rp2040`](https://github.com/rp-rs/rp-hal-boards) - Board Support Crate for the [Adafruit Feather RP2040] [![crates.io](https://img.shields.io/crates/v/adafruit-feather-rp2040.svg)](https://crates.io/crates/adafruit-feather-rp2040) 632 | - [`adafruit-itsy-bitsy-rp2040`](https://github.com/rp-rs/rp-hal-boards) - Board Support Crate for the [Adafruit ItsyBitsy RP2040] [![crates.io](https://img.shields.io/crates/v/adafruit-itsy-bitsy-rp2040.svg)](https://crates.io/crates/adafruit-itsy-bitsy-rp2040) 633 | - [`adafruit-kb2040`](https://github.com/rp-rs/rp-hal-boards) - Board Support Crate for the [Adafruit KB2040] [![crates.io](https://img.shields.io/crates/v/adafruit-kb2040.svg)](https://crates.io/crates/adafruit-kb2040) 634 | - [`adafruit-macropad`](https://github.com/rp-rs/rp-hal-boards) - Board Support Crate for the [Adafruit Macropad] [![crates.io](https://img.shields.io/crates/v/adafruit-macropad.svg)](https://crates.io/crates/adafruit-macropad) 635 | - [`adafruit-qt-py-rp2040`](https://github.com/rp-rs/rp-hal-boards) - Board Support Crate for the [Adafruit QT Py RP2040] [![crates.io](https://img.shields.io/crates/v/adafruit-qt-py-rp2040.svg)](https://crates.io/crates/adafruit-qt-py-rp2040) 636 | 637 | [Metro M0 board]: https://www.adafruit.com/product/3505 638 | [Metro M4 board]: https://www.adafruit.com/product/3382 639 | [PyPortal board]: https://www.adafruit.com/product/4116 640 | [PyGamer board]: https://www.adafruit.com/product/4242 641 | [NeoTrellis M4 board]: https://www.adafruit.com/product/3938 642 | [Feather STM32F405 Express]: https://www.adafruit.com/product/4382 643 | [Feather M0 board]: https://www.adafruit.com/product/2772 644 | [Feather M4 board]: https://www.adafruit.com/product/3857 645 | [Circuit Playground Express board]: https://www.adafruit.com/product/3333 646 | [EdgeBadge board]: https://www.adafruit.com/product/4400 647 | [Gemma M0 board]: https://www.adafruit.com/product/3501 648 | [ItsyBitsy M0 board]: https://www.adafruit.com/product/3727 649 | [ItsyBitsy M4 Express board]: https://www.adafruit.com/product/3800 650 | [Trinket M0 board]: https://www.adafruit.com/product/3500 651 | [neo trinkey board]: https://www.adafruit.com/product/4870 652 | [neokey trinkey board]: https://www.adafruit.com/product/5020 653 | [grand central m4 board]: https://www.adafruit.com/product/4064 654 | [QT Py board]: https://www.adafruit.com/product/4600 655 | [Adafruit Feather RP2040]: https://www.adafruit.com/product/4884 656 | [Adafruit ItsyBitsy RP2040]: https://www.adafruit.com/product/4888 657 | [Adafruit KB2040]: https://www.adafruit.com/product/5302 658 | [Adafruit Macropad]: https://www.adafruit.com/product/5128 659 | [Adafruit QT Py RP2040]: https://www.adafruit.com/product/4900 660 | 661 | ### Arduino 662 | 663 | - [`avr-hal`](https://github.com/Rahix/avr-hal) - Board support crate for several AVR-based boards including the Arduino Uno and the Arduino Leonardo 664 | - [`arduino_mkr1000`](https://crates.io/crates/arduino_mkr1000) - Board support for the [MKR 1000 WiFi board](https://docs.arduino.cc/hardware/mkr-1000-wifi) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/arduino_mkr1000.svg)](https://crates.io/crates/arduino_mkr1000) 665 | - [`arduino_mkrvidor4000`](https://crates.io/crates/arduino_mkrvidor4000) - Board support for the [MKR Vidor board](https://store.arduino.cc/usa/mkr-vidor-4000) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/arduino_mkrvidor4000.svg)](https://crates.io/crates/arduino_mkrvidor4000) 666 | - [`arduino_mkrzero`](https://crates.io/crates/arduino_mkrzero) - Board support for the [mkrzero board](https://store.arduino.cc/arduino-mkrzero) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/arduino_mkrzero.svg)](https://crates.io/crates/arduino_mkrzero) 667 | - [`arduino_nano33iot`](https://crates.io/crates/arduino_nano33iot) - Board support for the [Arduino Nano 33 IoT](https://store.arduino.cc/products/arduino-nano-33-iot) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/arduino_nano33iot.svg)](https://crates.io/crates/arduino_nano33iot) 668 | 669 | ### Nordic 670 | 671 | - [`dwm1001`](https://crates.io/crates/dwm1001) - [Decawave DWM1001-DEV] - [![crates.io](https://img.shields.io/crates/v/dwm1001.svg)](https://crates.io/crates/dwm1001) 672 | - [`microbit`](https://crates.io/crates/microbit) - [micro:bit] - [![crates.io](https://img.shields.io/crates/v/microbit.svg)](https://crates.io/crates/microbit) 673 | - [`nrf52840-dk-bsp`](https://crates.io/crates/nrf52840-dk-bsp) - [nrf52840-dk] - [![crates.io](https://img.shields.io/crates/v/nrf52840-dk-bsp.svg)](https://crates.io/crates/nrf52840-dk-bsp) 674 | - [`Thingy:91-nrf9160`](https://crates.io/crates/thingy-91-nrf9160-bsp) - [thingy:91] - [![crates.io](https://img.shields.io/crates/v/thingy-91-nrf9160-bsp.svg)](https://crates.io/crates/thingy-91-nrf9160-bsp) 675 | 676 | [Decawave DWM1001-DEV]: https://www.decawave.com/product/dwm1001-development-board/ 677 | [micro:bit]: http://microbit.org/ 678 | [nrf52840-dk]: https://www.nordicsemi.com/Products/Development-hardware/nrf52840-dk 679 | [thingy:91]: https://www.nordicsemi.com/Products/Development-hardware/Nordic-Thingy-91 680 | 681 | ### NXP 682 | 683 | - [`frdm-kw41z`](https://crates.io/crates/frdm-kw41z) - [FRDM-KW41Z] - [![crates.io](https://img.shields.io/crates/v/frdm-kw41z.svg)](https://crates.io/crates/frdm-kw41z) 684 | 685 | [FRDM-KW41Z]: https://www.nxp.com/products/processors-and-microcontrollers/arm-based-processors-and-mcus/kinetis-cortex-m-mcus/w-serieswireless-conn.m0-plus-m4/freedom-development-kit-for-kinetis-kw41z-31z-21z-mcus:FRDM-KW41Z 686 | 687 | ### Pimoroni 688 | 689 | - [`pimoroni-pico-explorer`](https://github.com/rp-rs/rp-hal-boards) - Board Support for the [Pimoroni Pico Explorer] 690 | - [`pimoroni-pico-lipo-16mb`](https://github.com/rp-rs/rp-hal-boards) - Board Support for the [Pimoroni Pico Lipo 16MB] 691 | 692 | [Pimoroni Pico Explorer]: https://shop.pimoroni.com/products/pico-explorer-base 693 | [Pimoroni Pico Lipo 16MB]: https://shop.pimoroni.com/products/pimoroni-pico-lipo?variant=39335427080275 694 | 695 | For unlisted Pimoroni microcontroller boards, check [this up-to-date list](https://github.com/rp-rs/rp-hal-boards/blob/main/README.md#packages). 696 | 697 | ### Raspberry Pi 698 | 699 | - [`rp-pico`](https://github.com/rp-rs/rp-hal-boards) - Board Support Crate for the RP2040-based Raspberry Pi Pico. 700 | 701 | The same repository includes support for numerous other development boards which use Raspberry Pi microcontrollers. A full list can be found [in the repository documentation](https://github.com/rp-rs/rp-hal-boards/blob/main/README.md#packages). 702 | 703 | ### Sparkfun 704 | 705 | - [`samd21_mini`](https://crates.io/crates/samd21_mini) - Board support for the [SAMD21 Mini Breakout](https://www.sparkfun.com/products/13664) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/samd21_mini.svg)](https://crates.io/crates/samd21_mini) 706 | - [`sparkfun-pro-micro-rp2040`](https://github.com/rp-rs/rp-hal-boards) - Board Support Crate for the RP2040 based Sparkfun Pro Micro. 707 | 708 | ### SeeedStudio 709 | 710 | - [`seedstudio-gd32v`](https://github.com/riscv-rust/seedstudio-gd32v) - Board support crate for the [GD32 RISC-V Dev Board](https://www.seeedstudio.com/SeeedStudio-GD32-RISC-V-Dev-Board-p-4302.html) 711 | [![crates.io](https://img.shields.io/crates/v/seedstudio-gd32v.svg)](https://crates.io/crates/seedstudio-gd32v) 712 | - Contains runnable examples for this board 713 | - [`xiao_m0`](https://crates.io/crates/xiao_m0) - Board support for the [Seeed Studio Seeeduino XIAO](http://wiki.seeedstudio.com/Seeeduino-XIAO/) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/xiao_m0.svg)](https://crates.io/crates/xiao_m0) 714 | - [`wio_lite_mg126`](https://crates.io/crates/wio_lite_mg126) - Board support for the [Seeed Studio wio_lite_mg126](https://wiki.seeedstudio.com/Wio-Lite-MG126) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/wio_lite_mg126.svg)](https://crates.io/crates/wio_lite_mg126) 715 | - [`wio_lite_w600`](https://crates.io/crates/wio_lite_w600) - Board support for the [Seeed Studio wio_lite_w600](https://wiki.seeedstudio.com/Wio-Lite-W600/) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/wio_lite_w600.svg)](https://crates.io/crates/wio_lite_w600) 716 | - [`wio_terminal`](https://crates.io/crates/wio_terminal) - Board support for the [Seeed Studio wio_terminal](https://wiki.seeedstudio.com/Wio-Terminal-Getting-Started/) in the [atsamd-rs] repo. It is an [atsamd-rs tier 1 support] board [![crates.io](https://img.shields.io/crates/v/wio_terminal.svg)](https://crates.io/crates/wio_terminal) 717 | 718 | ### SiFive 719 | 720 | - [`hifive1`](https://github.com/riscv-rust/hifive1) - Board support crate for [HiFive1](https://www.sifive.com/boards/hifive1) and [LoFive](https://hackaday.io/project/26909-lofive) boards - [![crates.io](https://img.shields.io/crates/v/hifive.svg)](https://crates.io/crates/hifive) 721 | 722 | ### Sipeed 723 | 724 | - [`longan-nano`](https://github.com/riscv-rust/longan-nano) - Board support package for the [Longan Nano board](https://www.seeedstudio.com/Sipeed-Longan-Nano-RISC-V-GD32VF103CBT6-Development-Board-p-4205.html) 725 | [![crates.io](https://img.shields.io/crates/v/longan-nano.svg)](https://crates.io/crates/longan-nano) 726 | - Contains runnable examples for this board 727 | 728 | ### Sony 729 | 730 | - [`prussia`](https://github.com/ZirconiumX/prussia) - SDK for the PlayStation 2. 731 | 732 | ### STMicroelectronics 733 | 734 | - [`f3`](https://crates.io/crates/f3) Board Support Crate for the [STM32F3DISCOVERY] - [![crates.io](https://img.shields.io/crates/v/f3.svg)](https://crates.io/crates/f3) 735 | - [`nucleo-f042k6`](https://github.com/therealprof/nucleo-f042k6.git) - [Nucleo-F042K6] 736 | - [`nucleo-f103rb`](https://github.com/therealprof/nucleo-f103rb.git) - [Nucleo-F103RB] 737 | - [`nucleo-f401re`](https://github.com/jkristell/nucleo-f401re.git) - [Nucleo-F401RE] [![crates.io](https://img.shields.io/crates/v/nucleo-f401re.svg)](https://crates.io/crates/nucleo-f401re) 738 | - [`nucleo-h743zi`](https://github.com/astraw/nucleo-h743zi) Beginner-oriented support crate for the Nucleo H743ZI and Nucleo H743ZI2 739 | - [`nucleo-h723zg`](https://github.com/jlogan03/nucleo-h723zg) Board support crate for the Nucleo H723ZG 740 | - [`solo-bsp`](https://crates.io/crates/solo-bsp) Board Support Crate for [Solo], an open source security token (WIP) - [![crates.io](https://img.shields.io/crates/v/solo-bsp.svg)](https://crates.io/crates/solo-bsp) 741 | - [`stm32f407g-disc`](https://crates.io/crates/stm32f407g-disc) Board Support Crate for the [STM32F4DISCOVERY] (WIP) - [![crates.io](https://img.shields.io/crates/v/stm32f407g-disc.svg)](https://crates.io/crates/stm32f407g-disc) 742 | - [`stm32f429i-disc`](https://crates.io/crates/stm32f429i-disc) Board Support Crate for the [STM32F429DISCOVERY] (WIP) - [![crates.io](https://img.shields.io/crates/v/stm32f429i-disc.svg)](https://crates.io/crates/stm32f429i-disc) 743 | - [`stm32f3-discovery`](https://crates.io/crates/stm32f3-discovery) Board Support Crate for the [STM32F3DISCOVERY] used in [Rust Embedded Discovery book](https://rust-embedded.github.io/discovery/index.html) - [![crates.io](https://img.shields.io/crates/v/stm32f3-discovery)](https://crates.io/crates/stm32f3-discovery) 744 | 745 | [Nucleo-F401RE]: https://www.st.com/en/evaluation-tools/nucleo-f401re.html 746 | 747 | ### Teensy 748 | 749 | - [`teensy4-rs`](https://github.com/mciantyre/teensy4-rs) Board Support crate for the [Teensy 4.0] 750 | 751 | ### Vorago 752 | 753 | - [`vorago-reb1`](https://egit.irs.uni-stuttgart.de/rust/va108xx-rs) - [![crates.io](https://img.shields.io/crates/v/vorago-reb1.svg)](https://crates.io/crates/vorago-reb1) 754 | - [Blogpost](https://robamu.github.io/post/rust-ecosystem/) 755 | 756 | ### Texas Instruments 757 | 758 | - [`monotron`](https://github.com/thejpster/monotron) - A 1980s home-computer style application for the Texas Instruments Stellaris Launchpad. PS/2 keyboard input, text output on a bit-bashed 800x600 VGA signal. Uses [menu], [vga-framebuffer] and [pc-keyboard]. 759 | - [`stellaris-launchpad`](https://crates.io/crates/stellaris-launchpad) - For the Texas Instruments Stellaris Launchpad and Tiva-C Launchpad [![crates.io](https://img.shields.io/crates/v/stellaris-launchpad.svg)](https://crates.io/crates/stellaris-launchpad) 760 | - [`tm4c129-launchpad`](https://github.com/jlogan03/tm4c129-launchpad) - For the Texas Instruments TM4C129-XL Launchpad board 761 | 762 | ### Special Purpose 763 | 764 | - [`betafpv-f3`](https://github.com/JoshMcguigan/betafpv-f3) - For the BetaFPV F3 drone flight controller 765 | 766 | ### Sodaq 767 | 768 | - [`sodaq_one`](https://crates.io/crates/sodaq_one) - Board support for the [Sodaq one board](https://support.sodaq.com/Boards/One/) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/sodaq_one.svg)](https://crates.io/crates/sodaq_one) 769 | - [`sodaq_sara_aff`](https://crates.io/crates/sodaq_sara_aff) - Board support for the [Sodaq sara aff board](https://shop.sodaq.com/sodaq-sara-sff-r410m.html) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/sodaq_sara_aff.svg)](https://crates.io/crates/sodaq_sara_aff) 770 | 771 | ### Other 772 | 773 | - [`serpente`](https://crates.io/crates/serpente) - Board support for the [serpente board](https://www.solder.party/docs/serpente/) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/serpente.svg)](https://crates.io/crates/serpente) 774 | - [`p1am_100`](https://crates.io/crates/p1am_100) - Board support for the [p1am_100 board](https://facts-engineering.github.io) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [![crates.io](https://img.shields.io/crates/v/p1am_100.svg)](https://crates.io/crates/p1am_100) 775 | 776 | ## Component abstraction crates 777 | 778 | The following crates provide HAL-like abstractions for subcomponents of embedded 779 | devices that go beyond what is available in [`embedded-hal`]: 780 | 781 | - [`accelerometer`](https://github.com/NeoBirth/accelerometer.rs) - Generic accelerometer support, including traits and types for taking readings from 2 or 3-axis accelerometers and tracking device orientations - [![crates.io](https://img.shields.io/crates/v/accelerometer.svg)](https://crates.io/crates/accelerometer) 782 | - [`embedded-graphics`]: 2D drawing library for any size display - [![crates.io](https://img.shields.io/crates/v/embedded-graphics.svg)](https://crates.io/crates/embedded-graphics) 783 | - [`radio`](https://github.com/ryankurte/rust-radio) - Generic radio transceiver traits, mocks, and helpers - [![crates.io](https://img.shields.io/crates/v/radio.svg)](https://crates.io/crates/radio) 784 | - [`smart-leds`](https://github.com/smart-leds-rs): Support for addressable LEDs including WS2812 and APA102 785 | - [`usb-device`](https://github.com/mvirkkunen/usb-device): Abstraction layer between USB peripheral crates & USB class crates - [![crates.io](https://img.shields.io/crates/v/usb-device.svg)](https://crates.io/crates/usb-device) 786 | - [`atat`](https://github.com/BlackbirdHQ/atat): Abstraction crate to ease writing AT based driver crates - [![crates.io](https://img.shields.io/crates/v/atat.svg)](https://crates.io/crates/atat) 787 | - [`embedded-nal`](https://github.com/rust-embedded-community/embedded-nal): An Embedded Network Abstraction Layer - [![crates.io](https://img.shields.io/crates/v/embedded-nal.svg)](https://crates.io/crates/embedded-nal) 788 | - [`embedded-storage`](https://github.com/rust-embedded-community/embedded-storage): An Embedded Storage Abstraction Layer 789 | - [`switch-hal`](https://github.com/rubberduck203/switch-hal): An "on"/"off" abstraction for input and output switches - [![crates.io](https://img.shields.io/crates/v/switch-hal.svg)](https://crates.io/crates/switch-hal) 790 | 791 | ## Driver crates 792 | 793 | You can also find many of these drivers [on drive-rs](https://tweedegolf.github.io/drive-rs/); please consider adding your driver there ([in the GitHub repo](https://github.com/tweedegolf/drive-rs)) while we work to port everything across. 794 | 795 | Platform agnostic crates to interface external components. These crates use the [`embedded-hal`] 796 | interface to support [all the devices and systems that implement the `embedded-hal` 797 | traits][hal-impl]. 798 | 799 | [hal-impl]: #hal-implementation-crates 800 | 801 | The list below contains drivers that have achieved the "released" status. To add a driver 802 | to this list, please ensure that your driver has a short blog post, article, or sufficiently 803 | explanatory README showing an example of its use. Ideally, this post would demonstrate using the 804 | device in a small project so that a Rust and/or embedded newcomer can also understand it. 805 | Otherwise, please add it to the [WIP section](#wip) below. 806 | 807 | 1. [AD983x] - SPI - AD9833/AD9837 waveform generators / DDS - [Intro blog post][25] - [![crates.io](https://img.shields.io/crates/v/ad983x.svg)](https://crates.io/crates/ad983x) 808 | 1. [adafruit-alphanum4] - I2C - Driver for [Adafruit 14-segment LED Alphanumeric Backpack][29] based on the ht16k33 chip - [![crates.io](https://img.shields.io/crates/v/adafruit-alphanum4.svg)](https://crates.io/crates/adafruit-alphanum4) 809 | 1. [adafruit-seesaw] - I2C - Driver for devices running the [Adafruit Seesaw][75] firmware - [![crates.io](https://img.shields.io/crates/v/adafruit-seesaw.svg)](https://crates.io/crates/adafruit-seesaw) 810 | 1. [ADE791x] - SPI - ADE7912/ADE7913 3-Channel, Isolated, Sigma-Delta ADC - [github][66] - [![crates.io](https://img.shields.io/crates/v/ade791x.svg)](https://crates.io/crates/ade791x) 811 | 1. [ADS1x1x] - I2C - 12/16-bit ADCs like ADS1013, ADS1015, ADS1115, etc. - [Intro blog post][23] - [![crates.io](https://img.shields.io/crates/v/ads1x1x.svg)](https://crates.io/crates/ads1x1x) 812 | 1. [ADXL313] - SPI - 3-axis accelerometer - [![crates.io](https://img.shields.io/crates/v/adxl313.svg)](https://crates.io/crates/adxl313) 813 | 1. [ADXL343] - I2C - 3-axis accelerometer - [![crates.io](https://img.shields.io/crates/v/adxl343.svg)](https://crates.io/crates/adxl343) 814 | 1. [ADXL355] - SPI - 3-axis accelerometer - [Intro blog post][43] - [![crates.io](https://img.shields.io/crates/v/adxl355.svg)](https://crates.io/crates/adxl355) 815 | 1. [AEM10900] - I2C - Energy Harvester - [github](https://github.com/trembel/aem10900) - [![crates.io](https://img.shields.io/crates/v/aem10900.svg)](https://crates.io/crates/aem10900) 816 | 1. [AFE4404] - I2C - Pulse oximeter - [![crates.io](https://img.shields.io/crates/v/afe4404.svg)](https://crates.io/crates/afe4404) 817 | 1. [AHT20] - I2C - Humidity and temperature sensor - [github](https://github.com/chocol4te/aht20) - [![crates.io](https://img.shields.io/crates/v/aht20.svg)](https://crates.io/crates/aht20) 818 | 1. [AHT20-driver] - I2C - Humidity and temperature sensor - [Intro blog post][61] - [github][62] - [![crates.io](https://img.shields.io/crates/v/aht20-driver.svg)](https://crates.io/crates/aht20-driver) 819 | 1. [AnyLeaf] - I2C - pH sensor module - [github](https://github.com/AnyLeaf/ph-rust) - [![crates.io](https://img.shields.io/crates/v/anyleaf.svg)](https://crates.io/crates/anyleaf) 820 | 1. [AT86RF212] - SPI - Low power IEEE 802.15.4-2011 ISM RF Transceiver - [Intro blog post][36] - [![crates.io](https://img.shields.io/crates/v/radio-at86rf212.svg)](https://crates.io/crates/radio-at86rf212) 821 | 1. [BlueNRG] - SPI - driver for BlueNRG-MS Bluetooth module - [Intro post][15] [![crates.io](https://img.shields.io/crates/v/bluenrg.svg)](https://crates.io/crates/bluenrg) 822 | 1. [BMA400] - I2C/SPI - Bosch 12-bit 3-axis accelerometer - [github][70] [![crates.io](https://img.shields.io/crates/v/bma400.svg)](https://crates.io/crates/bma400) 823 | 1. [BNO055] - I2C - Bosch Sensortec BNO055 9-axis IMU driver - [Intro post][18] [![crates.io](https://img.shields.io/crates/v/bno055.svg)](https://crates.io/crates/bno055) 824 | 1. [CD74HC4067] - GPIO - 16-channel digital and analog multiplexer - [Intro blog post][55] - [github][54] - [![crates.io](https://img.shields.io/crates/v/cd74hc4067.svg)](https://crates.io/crates/cd74hc4067) 825 | 1. [dht-sensor] - 1-Wire - DHT11/DHT22 temperature/humidity sensor driver - [github][48] - [![crates.io](https://img.shields.io/crates/v/dht-sensor.svg)](https://crates.io/crates/dht-sensor) 826 | 1. [embedded-dht-rs] - 1-Wire, I2C - DHT11/DHT20/DHT22 temperature/humidity sensor driver - [github][74] - [![crates.io](https://img.shields.io/crates/v/embedded-dht-rs.svg)](https://crates.io/crates/embedded-dht-rs) 827 | 1. [DRV8825] - DRV8825 Stepper Motor Driver (based on [Stepper]) - [Intro blog post][52] - [![crates.io](https://img.shields.io/crates/v/drv8825.svg)](https://crates.io/crates/drv8825) 828 | 1. [DS1307] - I2C - Real-time clock driver - [Intro blog post][13] - [![crates.io](https://img.shields.io/crates/v/ds1307.svg)](https://crates.io/crates/ds1307) 829 | 1. [ebyte-e32] - SERIAL - Ebyte E32 LoRa module driver - [Intro blog post][67] - [![crates.io](https://img.shields.io/crates/v/ebyte-e32.svg)](https://crates.io/crates/ebyte-e32) 830 | 1. [EEPROM24x] - I2C - 24x series serial EEPROM driver - [Intro blog post][12] - [![crates.io](https://img.shields.io/crates/v/eeprom24x.svg)](https://crates.io/crates/eeprom24x) 831 | 1. [embedded-ccs811] - I2C - Gas and VOC sensor driver for monitoring indoor air quality - [Intro blog post][49] - [![crates.io](https://img.shields.io/crates/v/embedded-ccs811.svg)](https://crates.io/crates/embedded-ccs811) 832 | 1. [embedded-sdmmc] - SPI - SD/MMC Card Driver with MS-DOS Partition and FAT16/FAT32 support - [Intro post][20] [![crates.io](https://img.shields.io/crates/v/embedded-sdmmc.svg)](https://crates.io/crates/embedded-sdmmc) 833 | 1. [ENC28J60] - SPI - Ethernet controller - [Intro blog post][4] - [![crates.io](https://img.shields.io/crates/v/enc28j60.svg)](https://crates.io/crates/enc28j60) 834 | 1. [FH101RF] - SPI - Wake-Up Radio - [github](https://github.com/trembel/fh101rf) - [![crates.io](https://img.shields.io/crates/v/fh101rf.svg)](https://crates.io/crates/fh101rf) 835 | 1. [FUSB302B] - I2C - Programmable USB Type‐C Controller with USB Power Delivery - [github][69] 836 | 1. [HC-12] - SERIAL - Wireless serial transceiver module - [Intro blog post][56] - [github][53] - [![crates.io](https://img.shields.io/crates/v/hc12-at.svg)](https://crates.io/crates/hc12-at) 837 | 1. [HTS221] - I2C - Humidity and temperature sensor - [Intro blog post][7] - [![crates.io](https://img.shields.io/crates/v/hts221.svg)](https://crates.io/crates/hts221) 838 | 1. [IS31FL3728] - I2C - LED dot matrix display mode (8×8, 5x11, 6x10,7x9) - [github](https://github.com/leonidv/is31fl3728-rs) -[![crates.io](https://img.shields.io/crates/v/is31fl3728-rs)](https://crates.io/crates/is31fl3728-rs) 839 | 1. [IIS2MDC] - I2C - ST's High accuracy, ultra-low-power, 3-axis digital output magnetometer - [![crates.io](https://img.shields.io/crates/v/iis2mdc.svg)](https://crates.io/crates/iis2mdc) 840 | 1. [ISM330DHCX] - I2C - ST's IMU with 3D accelerometer, 3D gyroscope, ML core and more - [![crates.io](https://img.shields.io/crates/v/ism330dhcx.svg)](https://crates.io/crates/ism330dhcx) 841 | 1. [keypad] - GPIO - Keypad matrix circuits - [Intro post][14] - [![crates.io](https://img.shields.io/crates/v/keypad.svg)](https://crates.io/crates/keypad) 842 | 1. [KXCJ9] - I2C - KXCJ9/KXCJB 3-axis accelerometers - [Intro blog post][24] - [![crates.io](https://img.shields.io/crates/v/kxcj9.svg)](https://crates.io/crates/kxcj9) 843 | 1. [L3GD20] - SPI - Gyroscope - [Intro blog post][1&2] - [![crates.io](https://img.shields.io/crates/v/l3gd20.svg)](https://crates.io/crates/l3gd20) 844 | 1. [lcd_parallel_bus] - GPIO - Async and blocking driver for LCDs based on HD44780 parallel bus - [![crates.io](https://img.shields.io/crates/v/lcd_parallel_bus)](https://crates.io/crates/lcd_parallel_bus) 845 | 1. [LSM303DLHC] - I2C - Accelerometer + compass (magnetometer) - [Intro blog post][1&2] - [![crates.io](https://img.shields.io/crates/v/lsm303dlhc.svg)](https://crates.io/crates/lsm303dlhc) 846 | 1. [MAX6675] - SPI - A driver for the MAX6675 digital thermocouple converter - [Intro blog post][73] - [![crates.io](https://img.shields.io/crates/v/max6675-hal.svg)](https://crates.io/crates/max6675-hal) 847 | 1. [MAX6955] - I2C - Driver for Alphanumeric LED display driver - [Intro blog post][46] - [![crates.io](https://img.shields.io/crates/v/max6955.svg)](https://crates.io/crates/max6955) 848 | 1. [MAX116xx-10bit] - SPI - Driver for the MAX11619-MAX11621, MAX11624 and MAX11625 10-bit ADCs - [Intro blog post][59] - [![crates.io](https://img.shields.io/crates/v/max116xx-10bit.svg)](https://crates.io/crates/max116xx-10bit) 849 | 1. [MCP25LCXX] - SPI - Driver for Microchip's 25LC series of EEPROMs - [![crates.io](https://img.shields.io/crates/v/microchip-eeprom-25lcxx.svg)](https://crates.io/crates/microchip-eeprom-25lcxx) 850 | 1. [MCP3008] - SPI - 8 channel 10-bit ADC - [Intro blog post][3] - [![crates.io](https://img.shields.io/crates/v/adc-mcp3008.svg)](https://crates.io/crates/adc-mcp3008) 851 | 1. [MCP3425] - I2C - 16-bit ADC - [Intro blog post][5] - [![crates.io](https://img.shields.io/crates/v/mcp3425.svg)](https://crates.io/crates/mcp3425) 852 | 1. [MCP794xx] - I2C - Real-time clock / calendar driver - [Intro blog post][26] - [![crates.io](https://img.shields.io/crates/v/mcp794xx.svg)](https://crates.io/crates/mcp794xx) 853 | 1. [MMA7660FC] - I2C - 3-axis accelerometer - [Intro blog post][9] 854 | 1. [OPT300x] - I2C - Ambient light sensor family driver - [Intro blog post][30] - [![crates.io](https://img.shields.io/crates/v/opt300x.svg)](https://crates.io/crates/opt300x) 855 | 1. [PAC194X] - I2C - Single/multi channel power monitor - [Intro blog post][63] - [![crates.io](https://img.shields.io/crates/v/pac194x)](https://crates.io/crates/pac194x) 856 | 1. [port-expander] - I2C - Driver for I2C port expanders (supports `PCA95xx`, `PCF85xx`) - [Intro blog post][58] - [![crates.io](https://img.shields.io/crates/v/port-expander.svg)](https://crates.io/crates/port-expander) 857 | 1. [pwm-pca9685] - I2C - 16-channel, 12-bit PWM/Servo/LED controller - [Intro blog post][32] - [![crates.io](https://img.shields.io/crates/v/pwm-pca9685.svg)](https://crates.io/crates/pwm-pca9685) 858 | 1. [rainbow-hat-rs] - I2C/SPI/GPIO - Pimoroni Rainbow HAT driver for Raspberry Pi - [github][57] - [![crates.io](https://img.shields.io/crates/v/rainbow-hat-rs.svg)](https://crates.io/crates/rainbow-hat-rs) 859 | 1. [rotary-encoder-hal] - GPIO - A rotary encoder driver using `embedded-hal` - [Intro blog post][28] - [![crates.io](https://img.shields.io/crates/v/rotary-encoder-hal.svg)](https://crates.io/crates/rotary-encoder-hal) 860 | 1. [sega-controller] - GPIO - Sega controller input - [github][68] - [![crates.io](https://img.shields.io/crates/v/sega-controller.svg)](https://crates.io/crates/sega-controller) 861 | 1. [SGP30] - I2C - Gas sensor - [Intro blog post][6] - [![crates.io](https://img.shields.io/crates/v/sgp30.svg)](https://crates.io/crates/sgp30) 862 | 1. [SH1106] - I2C - Monochrome OLED display controller - [Intro post][19] [![crates.io](https://img.shields.io/crates/v/sh1106.svg)](https://crates.io/crates/sh1106) 863 | 1. [shared-bus] - I2C - utility driver for sharing a bus between multiple devices - [Intro post][16] [![crates.io](https://img.shields.io/crates/v/shared-bus.svg)](https://crates.io/crates/shared-bus) 864 | 1. [shift-register-driver] - GPIO - Shift register - [Intro blog post][10] - [![crates.io](https://img.shields.io/crates/v/shift-register-driver.svg)](https://crates.io/crates/shift-register-driver) 865 | 1. [Si4703] - I2C - FM radio turner (receiver) driver - [Intro blog post][31] - [![crates.io](https://img.shields.io/crates/v/si4703.svg)](https://crates.io/crates/si4703) 866 | 1. [SRAM23x] - SPI - Microchip 23x series serial SRAM/NVSRAM driver - [Intro blog post][51] - [![crates.io](https://img.shields.io/crates/v/sram23x.svg)](https://crates.io/crates/sram23x) 867 | 1. [SSD1306] - I2C/SPI - OLED display controller - [Intro blog post][8] - [![crates.io](https://img.shields.io/crates/v/ssd1306.svg)](https://crates.io/crates/ssd1306) 868 | 1. [SSD1309] - I2C/SPI - OLED display controller - [Intro blog post][60] - [![crates.io](https://img.shields.io/crates/v/ssd1309.svg)](https://crates.io/crates/ssd1309) 869 | 1. [STSPIN220] - STSPIN220 Stepper Motor Driver (based on [Stepper]) - [Intro blog post][52] - [![crates.io](https://img.shields.io/crates/v/stspin220.svg)](https://crates.io/crates/stspin220) 870 | 1. [Sx127x] - SPI - Long Range Low Power Sub GHz (Gfsk, LoRa) RF Transceiver - [Intro blog post][34] - [![crates.io](https://img.shields.io/crates/v/radio-sx127x.svg)](https://crates.io/crates/radio-sx127x) 871 | 1. [Sx128x] - SPI - Long range, low power 2.4 GHz (Gfsk, Flrc, LoRa) RF Transceiver - [Intro blog post][35] - [![crates.io](https://img.shields.io/crates/v/radio-sx128x.svg)](https://crates.io/crates/radio-sx128x) 872 | 1. [TC72] - SPI - Microchip TC72 temperature sensor - [![crates.io](https://img.shields.io/crates/v/microchip-tc72r-rs.svg)](https://crates.io/crates/microchip-tc72r-rs) 873 | 1. [TCN75A] - I2C - Microchip TCN75A temperature sensor - [![crates.io](https://img.shields.io/crates/v/tcn75a.svg)](https://crates.io/crates/tcn75a) 874 | 1. [TMP006] - I2C - Contact-less infrared (IR) thermopile temperature sensor driver - [Intro post][17] [![crates.io](https://img.shields.io/crates/v/tmp006.svg)](https://crates.io/crates/tmp006) 875 | 1. [TMP1x2] - I2C - TMP102 and TMP112x temperature sensor driver - [Intro blog post][22] [![crates.io](https://img.shields.io/crates/v/tmp1x2.svg)](https://crates.io/crates/tmp1x2) 876 | 1. [TSIC] - GPIO - TSIC 306 temperature sensor driver - [Intro blog post][50] [![crates.io](https://img.shields.io/crates/v/tsic.svg)](https://crates.io/crates/tsic) 877 | 1. [TSL256X] - I2C - Light Intensity Sensor - [Intro blog post][11] - [![crates.io](https://img.shields.io/crates/v/tsl256x.svg)](https://crates.io/crates/tsl256x) 878 | 1. [VEML6030/VEML7700] - I2C - Ambient light sensors - [Intro blog post][33] - [![crates.io](https://img.shields.io/crates/v/veml6030.svg)](https://crates.io/crates/veml6030) 879 | 1. [VEML6075] - I2C - UVA and UVB light sensor - [Intro blog post][27] - [![crates.io](https://img.shields.io/crates/v/veml6075.svg)](https://crates.io/crates/veml6075) 880 | 1. [usbd-serial] - USB CDC-ACM class (serial) implementation - [github][37] - [![crates.io](https://img.shields.io/crates/v/usbd-serial.svg)](https://crates.io/crates/usbd-serial) 881 | 1. [usbd-hid] - USB HID class implementation - [github][38] - [![crates.io](https://img.shields.io/crates/v/usbd-hid.svg)](https://crates.io/crates/usbd-hid) 882 | 1. [usbd-hid-device] - USB HID class implementation without `unsafe` - [github][40] - [![crates.io](https://img.shields.io/crates/v/usbd-hid-device.svg)](https://crates.io/crates/usbd-hid-device) 883 | 1. [usbd-human-interface-device] - Batteries included embedded USB HID library for `usb-device`. Includes concrete Keyboard (boot and NKRO), Mouse and Consumer Control implementations as well as support for building your own HID classes - [github][65] - [![crates.io](https://img.shields.io/crates/v/usbd-human-interface-device.svg)](https://crates.io/crates/usbd-human-interface-device) 884 | 1. [usbd-midi] - USB MIDI class implementation - [github][41] - [![crates.io](https://img.shields.io/crates/v/usbd-midi.svg)](https://crates.io/crates/usbd-midi) 885 | 1. [usbd-webusb] - USB webUSB class implementation - [github][39] - [![crates.io](https://img.shields.io/crates/v/usbd-webusb.svg)](https://crates.io/crates/usbd-webusb) 886 | 1. [SHTCx] - I2C - Temperature / humidity sensors - [github][42] - [![crates.io](https://img.shields.io/crates/v/shtcx.svg)](https://crates.io/crates/shtcx) 887 | 1. [ST7789] - SPI - An embedded-graphics compatible driver for the popular lcd family from Sitronix used in the PineTime watch - [github][44] - [![crates.io](https://img.shields.io/crates/v/st7789.svg)](https://crates.io/crates/st7789) 888 | 1. [DW1000] - SPI - Radio transceiver (IEEE 802.15.4 and position tracking) - [Article][45] - [![crates.io](https://img.shields.io/crates/v/dw1000.svg)](https://crates.io/crates/dw1000) 889 | 1. [Adafruit-7segment] - I2C - Driver for Adafruit 7-segment LED Numeric Backpack based on the ht16k33 chip - [github][47] - [![crates.io](https://img.shields.io/crates/v/adafruit-7segment.svg)](https://crates.io/crates/adafruit-7segment) 890 | 1. [ST7565] - SPI - An embedded-graphics compatible driver for LCD displays based on the ST7565 chip - [github][64] - [![crates.io](https://img.shields.io/crates/v/st7565.svg)](https://crates.io/crates/st7565) 891 | 1. [tb6612fng] - A `no_std` driver for the TB6612FNG motor driver - [![crates.io](https://img.shields.io/crates/v/tb6612fng.svg)](https://crates.io/crates/tb6612fng) 892 | 1. [vl53l1x-uld] - I2C - A pure-rust driver for the [ST VL53L1X](https://www.st.com/en/imaging-and-photonics-solutions/vl53l1x.html) - [![crates.io](https://img.shields.io/crates/v/vl53l1x-uld.svg)](https://crates.io/crates/vl53l1x-uld) 893 | 1. [i2c-multiplexer] - I2C - An I2C Multiplexer library that supports the PCA9546 and TCA9546A chips - [github][71] - [![crates.io](https://img.shields.io/crates/v/i2c-multiplexer.svg)](https://crates.io/crates/i2c-multiplexer) 894 | 1. [SHT31-rs] - I2C - Fully supported SHT temperature / humidity sensors - [github][72] - [![crates.io](https://img.shields.io/crates/v/sht31.svg)](https://crates.io/crates/sht31) 895 | 1. [AP33772S-rs] - I2C - no-std sync and async compatible rust driver for the AP33772S USB C Power Delivery with Extended Power Range I2C chip - [github][76] - [![crates.io](https://img.shields.io/crates/v/ap33772s-rs.svg)](https://crates.io/crates/ap33772s-rs) 896 | 897 | [1&2]: http://blog.japaric.io/wd-1-2-l3gd20-lsm303dlhc-madgwick/ 898 | [3]: http://pramode.in/2018/02/24/an-introduction-to-writing-embedded-hal-based-drivers-in-rust/ 899 | [4]: http://blog.japaric.io/wd-4-enc28j60/ 900 | [5]: https://blog.dbrgn.ch/2018/3/13/rust-mcp3425-driver/ 901 | [6]: https://blog.dbrgn.ch/2018/4/1/rust-sgp30-driver/ 902 | [7]: https://medium.com/@pdanielgallagher/hts221-humidity-and-temperature-sensor-88056ea9e5fa 903 | [8]: https://wapl.es/electronics/rust/2018/04/30/ssd1306-driver.html 904 | [9]: https://rahul-thakoor.github.io/an-i2c-rust-driver-for-mma7660fc-based-3-axis-digital-accelerometer/ 905 | [10]: https://www.joshmcguigan.com/blog/shift-register-driver/ 906 | [11]: https://www.joshmcguigan.com/blog/tsl256x-light-intensity-sensor-driver/ 907 | [12]: https://blog.eldruin.com/24x-serial-eeprom-driver-in-rust/ 908 | [13]: https://blog.eldruin.com/ds1307-real-time-clock-rtc-driver-in-rust/ 909 | [14]: https://www.reddit.com/r/rust/comments/9j42o9/weekly_driver_keypad_matrix_circuits/ 910 | [15]: https://www.219design.com/bluetooth-low-energy-with-rust/ 911 | [16]: https://blog.rahix.de/001-shared-bus/ 912 | [17]: https://blog.eldruin.com/tmp006-contact-less-infrared-ir-thermopile-driver-in-rust/ 913 | [18]: https://www.reddit.com/r/rust/comments/ao4sqq/embeddedhal_bno055_9axis_imu_driver/ 914 | [19]: https://wapl.es/electronics/rust/2019/02/13/sh1106-driver.html 915 | [20]: https://www.reddit.com/r/rust/comments/ascvls/introducing_embeddedsdmmc_a_purerust_no_std_sd/ 916 | [22]: https://blog.eldruin.com/tmp1x2-temperature-sensor-driver-in-rust/ 917 | [23]: https://blog.eldruin.com/ads1x1x-analog-to-digital-converter-driver-in-rust/ 918 | [24]: https://blog.eldruin.com/kxcj9-kxcjb-tri-axis-mems-accelerator-driver-in-rust/ 919 | [25]: https://blog.eldruin.com/ad983x-waveform-generator-dds-driver-in-rust/ 920 | [26]: https://blog.eldruin.com/mcp794xx-real-time-clock-rtc-driver-in-rust/ 921 | [27]: https://blog.eldruin.com/veml6075-uva-uvb-uv-index-light-sensor-driver-in-rust/ 922 | [28]: https://leshow.github.io/post/rotary_encoder_hal/ 923 | [29]: https://learn.adafruit.com/adafruit-led-backpack/0-54-alphanumeric 924 | [30]: https://blog.eldruin.com/opt300x-ambient-light-sensor-driver-in-rust/ 925 | [31]: https://blog.eldruin.com/si4703-fm-radio-receiver-driver-in-rust/ 926 | [32]: https://blog.eldruin.com/pca9685-pwm-led-servo-controller-driver-in-rust/ 927 | [33]: https://blog.eldruin.com/veml6030-ambient-light-sensor-driver-in-rust/ 928 | [34]: http://web.archive.org/web/20230328083333/https://ryan.kurte.nz/notes/2020-01-05-rust-radio 929 | [35]: http://web.archive.org/web/20230328083333/https://ryan.kurte.nz/notes/2020-01-05-rust-radio 930 | [36]: http://web.archive.org/web/20230328083333/https://ryan.kurte.nz/notes/2020-01-05-rust-radio 931 | [37]: https://github.com/mvirkkunen/usbd-serial 932 | [38]: https://github.com/twitchyliquid64/usbd-hid 933 | [39]: https://github.com/redpfire/usbd-webusb 934 | [40]: https://github.com/agalakhov/usbd-hid-device 935 | [41]: https://github.com/btrepp/usbd-midi 936 | [42]: https://github.com/dbrgn/shtcx-rs 937 | [43]: https://jitter.company/blog/2020/02/14/adxl355-embedded-hal-driver-crate/ 938 | [44]: https://github.com/almindor/st7789 939 | [45]: https://braun-embedded.com/dw1000/ 940 | [46]: https://lonesometraveler.github.io/2020/03/20/max6955.html 941 | [47]: https://github.com/kallemooo/adafruit-7segment 942 | [48]: https://github.com/michaelbeaumont/dht-sensor 943 | [49]: https://blog.eldruin.com/ccs811-indoor-air-quality-sensor-driver-in-rust/ 944 | [50]: https://nitschinger.at/Rusty-PID-Porting-the-TSic-sensor-from-C-to-Rust/ 945 | [51]: https://blog.a1w.ca/p/rust-embedded-driver-microchip-23x-sram 946 | [52]: http://web.archive.org/web/20210129151911/https://flott-motion.org/news/announcing-step-dir/ 947 | [53]: https://github.com/barafael/hc12-at-rs 948 | [54]: https://github.com/barafael/cd74hc4067-rs 949 | [55]: https://barafael.github.io/A-Platform-Agnostic-Driver-for-the-CD74HC4067 950 | [56]: https://barafael.github.io/A-Platform-Agnostic-Driver-for-the-HC12-serial-radio-module/ 951 | [57]: https://github.com/yannart/rainbow-hat-rs 952 | [58]: https://blog.rahix.de/port-expander/ 953 | [59]: https://robamu.github.io/post/max11619-driver-rust/ 954 | [60]: https://antonok.com/projects/ssd1309 955 | [61]: http://www.rawmeat.org/code/20220130-aht20_driver/ 956 | [62]: https://github.com/anglerud/aht20-driver 957 | [63]: https://blog.kiranshila.com/post/pac_rust_driver 958 | [64]: https://github.com/Finomnis/st7565 959 | [65]: https://github.com/dlkj/usbd-human-interface-device 960 | [66]: https://github.com/GrepitAB/ade791x-rs 961 | [67]: https://barafael.github.io/A-Platform-Agnostic-Driver-for-EBYTE-E32-LoRa-Modules/ 962 | [68]: https://github.com/UnderLogic/sega-controller 963 | [69]: https://github.com/fmckeogh/usb-pd-rs 964 | [70]: https://github.com/cfrenette/bma400-rs 965 | [71]: https://github.com/FloppyDisck/i2c-multiplexer 966 | [72]: https://github.com/FloppyDisck/SHT31-rs 967 | [73]: https://barretts.club/posts/max6675-hal/ 968 | [74]: https://github.com/rust-dd/embedded-dht-rs 969 | [75]: https://learn.adafruit.com/adafruit-seesaw-atsamd09-breakout/overview 970 | [76]: https://github.com/ScottGibb/AP33772S-rs 971 | 972 | [AD983x]: https://crates.io/crates/ad983x 973 | [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 974 | [adafruit-seesaw]: https://crates.io/crates/adafruit-seesaw 975 | [ADE791x]: https://crates.io/crates/ade791x 976 | [ADS1x1x]: https://crates.io/crates/ads1x1x 977 | [ADXL313]: https://crates.io/crates/adxl313 978 | [ADXL343]: https://crates.io/crates/adxl343 979 | [ADXL355]: https://crates.io/crates/adxl355 980 | [AEM10900]: https://crates.io/crates/aem10900 981 | [AFE4404]: https://github.com/pulse-loop/afe4404 982 | [AHT20]: https://crates.io/crates/aht20 983 | [AHT20-driver]: https://crates.io/crates/aht20-driver 984 | [AnyLeaf]: https://crates.io/crates/anyleaf 985 | [at86rf212]: https://crates.io/crates/radio-at86rf212 986 | [BlueNRG]: https://crates.io/crates/bluenrg 987 | [BMA400]: https://crates.io/crates/bma400 988 | [BNO055]: https://crates.io/crates/bno055 989 | [dht-sensor]: https://crates.io/crates/dht-sensor 990 | [DRV8825]: https://crates.io/crates/drv8825 991 | [DS1307]: https://crates.io/crates/ds1307 992 | [ebyte-e32]: https://crates.io/crates/ebyte-e32 993 | [EEPROM24x]: https://crates.io/crates/eeprom24x 994 | [embedded-dht-rs]: https://crates.io/crates/embedded-dht-rs 995 | [embedded-ccs811]: https://crates.io/crates/embedded-ccs811 996 | [embedded-sdmmc]: https://crates.io/crates/embedded-sdmmc 997 | [ENC28J60]: https://crates.io/crates/enc28j60 998 | [FH101RF]: https://crates.io/crates/fh101rf 999 | [FUSB302B]: https://github.com/fmckeogh/usb-pd-rs 1000 | [HTS221]: https://crates.io/crates/hts221 1001 | [IS31FL3728]: https://crates.io/crates/is31fl3728-rs 1002 | [IIS2MDC]: https://crates.io/crates/iis2mdc 1003 | [ISM330DHCX]: https://crates.io/crates/ism330dhcx 1004 | [keypad]: https://crates.io/crates/keypad 1005 | [KXCJ9]: https://crates.io/crates/kxcj9 1006 | [L3GD20]: https://crates.io/crates/l3gd20 1007 | [lcd_parallel_bus]: https://crates.io/crates/lcd_parallel_bus 1008 | [LSM303DLHC]: https://crates.io/crates/lsm303dlhc 1009 | [MAX6675]: https://crates.io/crates/max6675-hal 1010 | [MAX6955]: https://crates.io/crates/max6955 1011 | [MAX116xx-10bit]: https://crates.io/crates/max116xx-10bit 1012 | [MCP25LCXX]: https://crates.io/crates/microchip-eeprom-25lcxx 1013 | [MCP3008]: https://crates.io/crates/adc-mcp3008 1014 | [MCP3425]: https://crates.io/crates/mcp3425 1015 | [MCP794xx]: https://crates.io/crates/mcp794xx 1016 | [MMA7660FC]: https://crates.io/crates/mma7660fc 1017 | [OPT300x]: https://github.com/eldruin/opt300x-rs 1018 | [PAC194X]: https://github.com/kiranshila/pac194x 1019 | [port-expander]: https://crates.io/crates/port-expander 1020 | [pwm-pca9685]: https://crates.io/crates/pwm-pca9685 1021 | [rainbow-hat-rs]: https://crates.io/crates/rainbow-hat-rs 1022 | [rotary-encoder-hal]: https://crates.io/crates/rotary-encoder-hal 1023 | [sega-controller]: https://crates.io/crates/sega-controller 1024 | [SGP30]: https://crates.io/crates/sgp30 1025 | [SH1106]: https://crates.io/crates/sh1106 1026 | [shared-bus]: https://github.com/Rahix/shared-bus 1027 | [shift-register-driver]: https://crates.io/crates/shift-register-driver 1028 | [Si4703]: https://crates.io/crates/si4703 1029 | [SRAM23x]: https://crates.io/crates/sram23x 1030 | [SSD1306]: https://crates.io/crates/ssd1306 1031 | [SSD1309]: https://crates.io/crates/ssd1309 1032 | [STSPIN220]: https://crates.io/crates/stspin220 1033 | [Sx127x]: https://crates.io/crates/radio-sx127x 1034 | [Sx128x]: https://crates.io/crates/radio-sx128x 1035 | [TC72]: https://crates.io/crates/microchip-tc72r-rs 1036 | [TCN75A]: https://crates.io/crates/tcn75a 1037 | [TMP006]: https://crates.io/crates/tmp006 1038 | [TMP1x2]: https://crates.io/crates/tmp1x2 1039 | [TSIC]: https://crates.io/crates/tsic 1040 | [TSL256X]: https://crates.io/crates/tsl256x 1041 | [VEML6030/VEML7700]: https://crates.io/crates/veml6030 1042 | [VEML6075]: https://crates.io/crates/veml6075 1043 | [usbd-serial]: http://crates.io/crates/usbd-serial 1044 | [usbd-hid]: http://crates.io/crates/usbd-hid 1045 | [usbd-hid-device]: http://crates.io/crates/usbd-hid-device 1046 | [usbd-human-interface-device]: https://github.com/dlkj/usbd-human-interface-device 1047 | [usbd-midi]: http://crates.io/crates/usbd-midi 1048 | [usbd-webusb]: http://crates.io/crates/usbd-webusb 1049 | [SHTCx]: http://crates.io/crates/shtcx 1050 | [ST7789]: http://crates.io/crates/st7789 1051 | [DW1000]: https://crates.io/crates/dw1000 1052 | [Adafruit-7segment]: https://crates.io/crates/adafruit-7segment 1053 | [ST7565]: http://crates.io/crates/st7565 1054 | [tb6612fng]: https://crates.io/crates/tb6612fng 1055 | [vl53l1x-uld]: https://crates.io/crates/vl53l1x-uld 1056 | [i2c-multiplexer]: https://crates.io/crates/i2c-multiplexer 1057 | [SHT31-rs]: https://crates.io/crates/sht31 1058 | [AP33772S-rs]: https://crates.io/crates/ap33772s-rs 1059 | 1060 | *NOTE* You may be able to find even more driver crates by searching for the [`embedded-hal-driver`] 1061 | keyword on crates.io! 1062 | 1063 | [`embedded-hal-driver`]: https://crates.io/keywords/embedded-hal-driver 1064 | 1065 | ### WIP 1066 | 1067 | Work in progress drivers. Help the authors make these crates awesome! 1068 | 1069 | 1. [AD9850] - Embedded driver for the AD9850 DDS synthesizer chip - [![crates.io](https://img.shields.io/crates/v/ad9850.svg)](https://crates.io/crates/ad9850) 1070 | 1. [AFE4400] - SPI - Pulse oximeter 1071 | 1. [APDS9960] - I2C - Proximity, ambient light, RGB, and gesture sensor - [![crates.io](https://img.shields.io/crates/v/apds9960.svg)](https://crates.io/crates/apds9960) 1072 | 1. [AS5048A] - SPI - AMS AS5048A Magnetic Rotary Encoder 1073 | 1. [AXP209] - I2C - Power management unit 1074 | 1. [ad57xx] - SPI - Quad and dual channel DAC - [![crates.io](https://img.shields.io/crates/v/ad57xx.svg)](https://crates.io/crates/ad57xx) 1075 | 1. [BH1750] - I2C - ambient light sensor (lux meter) 1076 | 1. [BME280] - A rust device driver for the Bosch BME280 temperature, humidity, and atmospheric pressure sensor and the Bosch BMP280 temperature and atmospheric pressure sensor. [![crates.io](https://img.shields.io/crates/v/bme280.svg)](https://crates.io/crates/bme280) 1077 | 1. [bme680] - I2C - Temperature / humidity / gas / pressure sensor - [![crates.io](https://img.shields.io/crates/v/bme680.svg)](https://crates.io/crates/bme680) 1078 | 1. [BMI160] - I2C / SPI - Inertial Measurement Unit - [![crates.io](https://img.shields.io/crates/v/bmi160.svg)](https://crates.io/crates/bmi160) 1079 | 1. [BMP280] - A platform agnostic driver to interface with the BMP280 pressure sensor [![crates.io](https://img.shields.io/crates/v/bmp280-ehal.svg)](https://crates.io/crates/bmp280-ehal) 1080 | 1. [CC1101] - SPI - Sub-1GHz RF Transceiver - [![crates.io](https://img.shields.io/crates/v/cc1101.svg)](https://crates.io/crates/cc1101) 1081 | 1. [DS3231] - I2C - real-time clock 1082 | 1. [DS3234] - SPI - Real-time clock 1083 | 1. [DS323x] - I2C/SPI - Real-time clocks (RTC): DS3231, DS3232 and DS3234 - [![crates.io](https://img.shields.io/crates/v/ds323x.svg)](https://crates.io/crates/ds323x) 1084 | 1. [epd-waveshare] - SPI - driver for E-Paper Modules from Waveshare [![crates.io](https://img.shields.io/crates/v/epd-waveshare.svg)](https://crates.io/crates/epd-waveshare) 1085 | 1. [embedded-morse] - Output morse messages - [![crates.io](https://img.shields.io/crates/v/embedded-morse.svg)](https://crates.io/crates/embedded-morse) 1086 | 1. [embedded-nrf24l01] - SPI+GPIO - 2.4 GHz radio 1087 | 1. [Ft6x36] - I2C - Rust driver for focal tech touch screen FT6236, FT6336 - [![crates.io](https://img.shields.io/crates/v/ft6x36.svg)](https://crates.io/crates/ft6x36) 1088 | 1. [grove-matrix-led-my9221-rs] - I2C - Rust driver for Grove RGB Matrix Led with my-9221 Driver - [![crates.io](https://img.shields.io/crates/v/grove-matrix-led-my9221-rs.svg)](https://crates.io/crates/grove-matrix-led-my9221-rs) 1089 | 1. [GridEYE] - I2C - Rust driver for Grid-EYE / Panasonic AMG88(33) - [![crates.io](https://img.shields.io/crates/v/GridEYE.svg)](https://crates.io/crates/GridEYE) 1090 | 1. [HC-SR04] - DIO - Ultrasound sensor 1091 | 1. [HD44780-driver] - GPIO - LCD controller - [![crates.io](https://img.shields.io/crates/v/hd44780-driver.svg)](https://crates.io/crates/hd44780-driver) 1092 | 1. [HD44780] - Parallel port - LCD controller 1093 | 1. [HM11] - USART - HM-11 bluetooth module AT configuration crate - [![crates.io](https://img.shields.io/crates/v/hm11.svg)](https://crates.io/crates/hm11) 1094 | 1. [HRS3300] - I2C - Heart rate sensor / monitor used in the PineTime smartwatch, for example. - [![crates.io](https://img.shields.io/crates/v/hrs3300.svg)](https://crates.io/crates/hrs3300) 1095 | 1. [HDC20xx] - I2C - Temperature and humidity sensor compatible with HDC2080, HDC2021 and HDC2010. - [![crates.io](https://img.shields.io/crates/v/hdc20xx.svg)](https://crates.io/crates/hdc20xx) 1096 | 1. [hub75] - A driver for rgb led matrices with the hub75 interface - [![crates.io](https://img.shields.io/crates/v/hub75.svg)](https://crates.io/crates/hub75) 1097 | 1. [hzgrow-r502] - UART capacitive fingerprint reader - [![crates.io](https://img.shields.io/crates/v/hzgrow-r502.svg)](https://crates.io/crates/hzgrow-r502) 1098 | 1. [iAQ-Core] - I2C - iAQ-Core-C/iAQ-Core-P Gas and VOC sensor driver for monitoring indoor air quality. 1099 | 1. [ILI9341] - SPI - TFT LCD display 1100 | 1. [INA260] - I2C - power monitor - [![crates.io](https://img.shields.io/crates/v/ina260.svg)](https://crates.io/crates/ina260) 1101 | 1. [ISL29125] - I2C - RGB Color Light Sensor with IR Blocking Filter - [![crates.io](https://img.shields.io/crates/v/isl29125.svg)](https://crates.io/crates/isl29125) 1102 | 1. [IST7920] - SPI monochrome LCD display - [![crates.io](https://img.shields.io/crates/v/ist7920.svg)](https://crates.io/crates/ist7920) 1103 | 1. [LM75] - I2C - Temperature sensor and thermal watchdog (also compatible with LM75A, LM75B, LM75C, AT30TS75A, DS1775, DS75, DS7505, G751, MAX7500/1/2/3/4, MAX6625, MCP9800/1/2/3, STDS75, TCN75, PCT2075) - [![crates.io](https://img.shields.io/crates/v/lm75.svg)](https://crates.io/crates/lm75) 1104 | 1. [lp586x] - I2C/SPI - LED matrix driver [![crates.io](https://img.shields.io/crates/v/lp586x.svg)](https://crates.io/crates/lp586x) 1105 | 1. [LS010B7DH01] - SPI - Memory LCD 1106 | 1. [LSM303AGR] - I2C/SPI - 3D accelerometer + 3D magnetometer. (Used in e.g. micro:bit boards) [![crates.io](https://img.shields.io/crates/v/lsm303agr.svg)](https://crates.io/crates/lsm303agr) 1107 | 1. [LSM303C] - A platform agnostic driver to interface with the LSM303C (accelerometer + compass) [![crates.io](https://img.shields.io/crates/v/lsm303c.svg)](https://crates.io/crates/lsm303c) 1108 | 1. [LSM9DS1] - I2C/SPI - 9-axis motion sensor module [![crates.io](https://img.shields.io/crates/v/lsm9ds1.svg)](https://crates.io/crates/lsm9ds1) 1109 | 1. [ltr-559] - I2C - Ambient Light Sensor and Proximity sensor [![crates.io](https://img.shields.io/crates/v/ltr-559.svg)](https://crates.io/crates/ltr-559) 1110 | 1. [lvgl] - no_std [LittleVGL](https://github.com/littlevgl/lvgl) port - [![crates.io](https://img.shields.io/crates/v/lvgl.svg)](https://crates.io/crates/lvgl) 1111 | 1. [M95320] - SPI - STMicroelectronics Serial flash EEPROM - [![crates.io](https://img.shields.io/crates/v/m95320.svg)](https://crates.io/crates/m95320) 1112 | 1. [MAG3110] - I2C - Magnetometer 1113 | 1. [MAX17048/9] - I2C - LiPo Fuel gauge, battery monitoring IC - [![crates.io](https://img.shields.io/crates/v/max17048.svg)](https://crates.io/crates/max17048) 1114 | 1. [MAX170xx] - I2C - LiPo Fuel gauge, battery monitoring ICs compatible with MAX17043/4, MAX17048/9, MAX17058/9. - [![crates.io](https://img.shields.io/crates/v/max170xx.svg)](https://crates.io/crates/max170xx) 1115 | 1. [MAX3010x] - I2C - Pulse oximeter and heart-rate sensor. ATM Compatible with MAX30102. - [![crates.io](https://img.shields.io/crates/v/max3010x.svg)](https://crates.io/crates/max3010x) 1116 | 1. [MAX31855] - SPI - Thermocouple digital converter -[![crates.io](https://img.shields.io/crates/v/max31855.svg)](https://crates.io/crates/max31855) 1117 | 1. [MAX31865] - SPI - RTD to Digital converter - [![crates.io](https://img.shields.io/crates/v/max31865.svg)](https://crates.io/crates/max31865) 1118 | 1. [MAX44009] - I2C - Ambient light sensor - [![crates.io](https://img.shields.io/crates/v/max44009.svg)](https://crates.io/crates/max44009) 1119 | 1. [MAX7219] - SPI - LED display driver - [![crates.io](https://img.shields.io/crates/v/max7219.svg)](https://crates.io/crates/max7219) 1120 | 1. [MCP4725] - I2C - 12-bit DAC - [![crates.io](https://img.shields.io/crates/v/mcp4725)](https://crates.io/crates/mcp4725) 1121 | 1. [MCP49xx] - SPI - 8/10/12-bit DACs like MCP4921, MCP4922, MCP4801, etc. - [![crates.io](https://img.shields.io/crates/v/mcp49xx.svg)](https://crates.io/crates/mcp49xx) 1122 | 1. [MCP9808] - I2C - Temperature sensor - [![crates.io](https://img.shields.io/crates/v/mcp9808.svg)](https://crates.io/crates/mcp9808) 1123 | 1. [MCP4x] - SPI - Digital potentiometers (digipot) like MCP41010, MCP41050, MCP41100, MCP42010, MCP42050 and MCP42100, etc. - [![crates.io](https://img.shields.io/crates/v/mcp4x.svg)](https://crates.io/crates/mcp4x) 1124 | 1. [MFRC522] - SPI - RFID tag reader/writer 1125 | 1. [midi-port] - UART - MIDI input - [![crates.io](https://img.shields.io/crates/v/midi-port.svg)](https://crates.io/crates/midi-port) 1126 | 1. [MLX9061x] - I2C - MLX90614/MLX90615 Contact-less infrared (IR) temperature sensor driver. - [![crates.io](https://img.shields.io/crates/v/mlx9061x.svg)](https://crates.io/crates/mlx9061x) 1127 | 1. [MMA8x5x] - I2C - Tri-axis accelerometers like MMA8451Q, MMA8452Q, MMA8453Q, MMA8652FC and MMA8653FC. - [![crates.io](https://img.shields.io/crates/v/mma8x5x.svg)](https://crates.io/crates/mma8x5x) 1128 | 1. [motor-driver] - Motor drivers: L298N, TB6612FNG, etc. 1129 | 1. [MPU6050] - I2C - no_std driver for the MPU6050 [![crates.io](https://img.shields.io/crates/v/mpu6050.svg)](https://crates.io/crates/mpu6050) 1130 | 1. [MPU9250] - no_std driver for the MPU9250 (and other MPU* devices) & onboard AK8963 (accelerometer + gyroscope + magnetometer IMU) [![crates.io](https://img.shields.io/crates/v/mpu9250.svg)](https://crates.io/crates/mpu9250) 1131 | 1. [MS5637] - no_std I2C driver for the MS5637 temperature and pressure sensor [![crates.io](https://img.shields.io/crates/v/ms5637.svg)](https://crates.io/crates/ms5637) 1132 | 1. [NRF24L01] - SPI - 2.4 GHz wireless communication 1133 | 1. [OneWire] - 1wire - OneWire protocol implementation with drivers for devices such as [DS18B20](https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf) - [![crates.io](https://img.shields.io/crates/v/onewire.svg)](https://crates.io/crates/onewire) 1134 | 1. [PCD8544] - SPI - 48x84 pixels matrix LCD controller 1135 | 1. [PCD8544_rich] - SPI - Rich driver for 48x84 pixels matrix LCD controller - [![crates.io](https://img.shields.io/crates/v/pcd8544.svg)](https://crates.io/crates/pcd8544) 1136 | 1. [PCF857x] - I2C - I/O expanders: PCF8574, PCF8574A, PCF8575 [![crates.io](https://img.shields.io/crates/v/pcf857x.svg)](https://crates.io/crates/pcf857x) 1137 | 1. [radio-at86rf212] - SPI - Sub GHz 802.15.4 radio transceiver [![crates.io](https://img.shields.io/crates/v/radio-at86rf212.svg)](https://crates.io/crates/radio-at86rf212) 1138 | 1. [RFM69] - SPI - ISM radio transceiver 1139 | 1. [RN2xx3] - Serial - A driver for the RN2483 / RN2903 LoRaWAN modems by Microchip 1140 | 1. [SCD30] - I2C - CO₂ sensor - [![crates.io](https://img.shields.io/crates/v/scd30.svg)](https://crates.io/crates/scd30) 1141 | 1. [SHT2x] - I2C - temperature / humidity sensors 1142 | 1. [SHT3x] - I2C - Temperature / humidity sensors 1143 | 1. [SI5351] - I2C - clock generator 1144 | 1. [SI7021] - I2C - Humidity and temperature sensor 1145 | 1. [SPL06-007] - I2C - Pressure and temperature sensor - [![crates.io](https://img.shields.io/crates/v/spl06-007.svg)](https://crates.io/crates/spl06-007) 1146 | 1. [spi-memory] - SPI - A generic driver for various SPI Flash and EEPROM chips - [![crates.io](https://img.shields.io/crates/v/spi-memory.svg)](https://crates.io/crates/spi-memory) 1147 | 1. [SSD1320] - SPI - Graphical OLED display controller - [![crates.io](https://img.shields.io/crates/v/ssd1320.svg)](https://crates.io/crates/ssd1320) 1148 | 1. [SSD1322] - SPI - Graphical OLED display controller - [![crates.io](https://img.shields.io/crates/v/ssd1322.svg)](https://crates.io/crates/ssd1322) 1149 | 1. [SSD1322_rs] - SPI - Async graphics driver for SSD1322 screen - [![crates.io](https://img.shields.io/crates/v/ssd1322_rs.svg)](https://crates.io/crates/ssd1322_rs) 1150 | 1. [SSD1351] - SPI - 16bit colour OLED display driver - [![crates.io](https://img.shields.io/crates/v/ssd1351.svg)](https://crates.io/crates/ssd1351) 1151 | 1. [SSD1675] - SPI - Tri-color ePaper display controller - [![crates.io](https://img.shields.io/crates/v/ssd1675.svg)](https://crates.io/crates/ssd1675) 1152 | 1. [st7032i] - I2C - Dot Matrix LCD Controller driver (Sitronix ST7032i or similar). - [![crates.io](https://img.shields.io/crates/v/st7032i.svg)](https://crates.io/crates/st7032i) 1153 | 1. [ST7735-lcd] - SPI - An embedded-graphics compatible driver for the popular lcd family from Sitronix [![crates.io](https://img.shields.io/crates/v/st7735-lcd.svg)](https://crates.io/crates/st7735-lcd) 1154 | 1. [ST7920] - SPI - LCD displays using the ST7920 controller [![crates.io](https://img.shields.io/crates/v/st7920.svg)](https://crates.io/crates/st7920) 1155 | 1. [stm32-eth] - MCU - Ethernet 1156 | 1. [SX1278] - SPI - Long range (LoRa) transceiver 1157 | 1. [SX1509] - I2C - IO Expander / Keypad driver 1158 | 1. [TCS3472] - I2C - RGB color light sensor - [![crates.io](https://img.shields.io/crates/v/tcs3472.svg)](https://crates.io/crates/tcs3472) 1159 | 1. [TPA2016D2] - I2C - A driver for interfacing with the Texas Instruments TPA2016D2 Class-D amplifier - [![crates.io](https://img.shields.io/crates/v/tpa2016d2.svg)](https://crates.io/crates/tpa2016d2) 1160 | 1. [VEML6040] - I2C - RGBW color light sensor - [![crates.io](https://img.shields.io/crates/v/veml6040.svg)](https://crates.io/crates/veml6040) 1161 | 1. [VEML6070] - I2C - UVA light sensor - [![crates.io](https://img.shields.io/crates/v/veml6070.svg)](https://crates.io/crates/veml6070) 1162 | 1. [VEML7700] - I2C - Ambient light sensors - [![crates.io](https://img.shields.io/crates/v/veml7700.svg)](https://crates.io/crates/veml7700) 1163 | 1. [vesc-comm] - A driver for communicating with [VESC-compatible electronic speed controllers](http://vedder.se/2015/01/vesc-open-source-esc/) [![crates.io](https://img.shields.io/crates/v/vesc-comm.svg)](https://crates.io/crates/vesc-comm) 1164 | 1. [VL53L0X] - A platform agnostic driver to interface with the vl53l0x (time-of-flight sensor) [![crates.io](https://img.shields.io/crates/v/vl53l0x.svg)](https://crates.io/crates/vl53l0x) 1165 | 1. [w5500] - SPI - Ethernet Module with hardwired protocols : TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE - [![crates.io](https://img.shields.io/crates/v/w5500.svg)](https://crates.io/crates/w5500) 1166 | 1. [xCA9548A] - I2C - I2C switches/multiplexers: TCA9548A, PCA9548A - [![crates.io](https://img.shields.io/crates/v/xca9548a.svg)](https://crates.io/crates/xca9548a) 1167 | 1. [ublox-cellular-rs] - Serial - Cellular driver for the full Ublox cellular serial based family 1168 | 1. [atwinc1500-rs] - SPI - A host driver for the Atwinc1500 network controller 1169 | 1. [HX711] - GPIO - An interrupt-based driver for the HX711 Load Cell Amplifier IC. no-std. 1170 | 1. [tmag5273] - Cross-platform no_std compatible i2c library for 3-axis Hall Effect sensor. 1171 | 1. [paa5100je-pwm3901] - Cross platform no-std compatible spi async library for an Optical Flow Sensor. 1172 | 1173 | [AD9850]: https://crates.io/crates/ad9850 1174 | [AFE4400]: https://github.com/ReeceStevens/afe4400 1175 | [APDS9960]: https://crates.io/crates/apds9960 1176 | [AS5048A]: https://github.com/uwearzt/as5048a 1177 | [AXP209]: https://github.com/RandomInsano/axp209-rs 1178 | [ad57xx]: https://github.com/deltronix/ad57xx 1179 | [BH1750]: https://github.com/wose/bh1750 1180 | [BME280]: https://crates.io/crates/bme280 1181 | [bme680]: https://github.com/marcelbuesing/bme680 1182 | [BMI160]: https://crates.io/crates/bmi160 1183 | [BMP280]: https://crates.io/crates/bmp280-ehal 1184 | [CC1101]: https://crates.io/crates/cc1101 1185 | [CD74HC4067]: https://crates.io/crates/cd74hc4067 1186 | [DS3231]: https://github.com/wose/ds3231 1187 | [DS3234]: https://github.com/rust-embedded/wg/issues/39#issuecomment-375262785 1188 | [DS323x]: https://crates.io/crates/ds323x 1189 | [epd-waveshare]: https://crates.io/crates/epd-waveshare 1190 | [embedded-morse]: https://crates.io/crates/embedded-morse 1191 | [embedded-nrf24l01]: https://crates.io/crates/embedded-nrf24l01 1192 | [Ft6x36]: https://crates.io/crates/ft6x36 1193 | [grove-matrix-led-my9221-rs]: https://crates.io/crates/grove-matrix-led-my9221-rs 1194 | [GridEYE]: https://crates.io/crates/grideye 1195 | [HC-12]: https://crates.io/crates/hc12-at 1196 | [HC-SR04]: https://github.com/nordmoen/hc-sr04 1197 | [HD44780-driver]: https://crates.io/crates/hd44780-driver 1198 | [HD44780]: http://github.com/kunerd/clerk 1199 | [HDC20xx]: https://crates.io/crates/hdc20xx 1200 | [HM11]: https://crates.io/crates/hm11 1201 | [HRS3300]: https://crates.io/crates/hrs3300 1202 | [hub75]: https://github.com/david-sawatzke/hub75-rs 1203 | [hzgrow-r502]: https://crates.io/crates/hzgrow-r502 1204 | [iAQ-Core]: https://github.com/eldruin/iaq-core-rs 1205 | [ILI9341]: https://github.com/yuri91/ili9341-rs 1206 | [INA260]: https://crates.io/crates/ina260 1207 | [ISL29125]: https://crates.io/crates/isl29125 1208 | [IST7920]: https://crates.io/crates/ist7920 1209 | [LM75]: https://crates.io/crates/lm75 1210 | [lp586x]: https://crates.io/crates/lp586x 1211 | [LS010B7DH01]: https://github.com/byronwasti/ls010b7dh01 1212 | [LSM303AGR]: https://crates.io/crates/lsm303agr 1213 | [LSM303C]: https://crates.io/crates/lsm303c 1214 | [LSM9DS1]: https://crates.io/crates/lsm9ds1 1215 | [ltr-559]: https://crates.io/crates/ltr-559 1216 | [lvgl]: https://github.com/rafaelcaricio/lvgl-rs 1217 | [M95320]: https://crates.io/crates/m95320 1218 | [MAG3110]: https://github.com/therealprof/mag3110 1219 | [MAX17048/9]: https://crates.io/crates/max17048 1220 | [MAX170xx]: https://github.com/eldruin/max170xx-rs 1221 | [MAX3010x]: https://crates.io/crates/max3010x 1222 | [MAX31855]: https://github.com/cs2dsb/max31855.rs 1223 | [MAX31865]: https://crates.io/crates/max31865 1224 | [MAX44009]: https://crates.io/crates/max44009 1225 | [MAX7219]: https://github.com/almindor/max7219 1226 | [MCP4725]: https://crates.io/crates/mcp4725 1227 | [MCP49xx]: https://crates.io/crates/mcp49xx 1228 | [MCP4x]: https://crates.io/crates/mcp4x 1229 | [MCP9808]: https://crates.io/crates/mcp9808 1230 | [MFRC522]: https://github.com/japaric/mfrc522 1231 | [midi-port]: https://crates.io/crates/midi-port 1232 | [MLX9061x]: https://crates.io/crates/mlx9061x 1233 | [MMA8x5x]: https://crates.io/crates/mma8x5x 1234 | [motor-driver]: https://github.com/japaric/motor-driver 1235 | [MPU6050]: https://crates.io/crates/mpu6050 1236 | [MPU9250]: https://crates.io/crates/mpu9250 1237 | [MS5637]: https://crates.io/crates/ms5637 1238 | [NRF24L01]: https://github.com/maikelwever/nrf24l01 1239 | [OneWire]: https://crates.io/crates/onewire 1240 | [PCD8544]: https://github.com/pcein/pcd8544 1241 | [PCD8544_rich]: https://crates.io/crates/pcd8544 1242 | [PCF857x]: https://crates.io/crates/pcf857x 1243 | [radio-at86rf212]: https://crates.io/crates/radio-at86rf212 1244 | [RFM69]: https://github.com/lolzballs/rfm69 1245 | [RN2xx3]: https://github.com/dbrgn/rn2xx3-rs/ 1246 | [SCD30]: https://crates.io/crates/scd30 1247 | [SHT2x]: https://github.com/dbrgn/sht2x-rs 1248 | [SHT3x]: https://github.com/miek/sht3x-rs 1249 | [SI5351]: https://github.com/ilya-epifanov/si5351 1250 | [SI7021]: https://github.com/wose/si7021 1251 | [SPL06-007]: https://github.com/roxgib/SPL06-007 1252 | [spi-memory]: https://github.com/jonas-schievink/spi-memory/ 1253 | [SSD1320]: https://crates.io/crates/ssd1320 1254 | [SSD1322]: https://crates.io/crates/ssd1322 1255 | [SSD1322_rs]: https://crates.io/crates/ssd1322_rs 1256 | [SSD1351]: https://crates.io/crates/ssd1351 1257 | [SSD1675]: https://crates.io/crates/ssd1675 1258 | [st7032i]: https://github.com/dotcypress/st7032i 1259 | [ST7735-lcd]: https://crates.io/crates/st7735-lcd 1260 | [ST7920]: https://crates.io/crates/st7920 1261 | [stm32-eth]: https://github.com/stm32-rs/stm32-eth 1262 | [SX1278]: https://github.com/susu/sx1278 1263 | [SX1509]: https://github.com/wez/sx1509 1264 | [TCS3472]: https://crates.io/crates/tcs3472 1265 | [TPA2016D2]: https://crates.io/crates/tpa2016d2 1266 | [VEML6040]: https://crates.io/crates/veml6040 1267 | [VEML6070]: https://crates.io/crates/veml6070 1268 | [VEML7700]: https://crates.io/crates/veml7700 1269 | [vesc-comm]: https://github.com/chocol4te/vesc-comm 1270 | [VL53L0X]: https://crates.io/crates/vl53l0x 1271 | [w5500]: https://crates.io/crates/w5500 1272 | [xCA9548A]: https://crates.io/crates/xca9548a 1273 | [ublox-cellular-rs]: https://github.com/BlackbirdHQ/ublox-cellular-rs 1274 | [atwinc1500-rs]: https://crates.io/crates/atwinc1500 1275 | [HX711]: https://github.com/DaneSlattery/hx711 1276 | [tmag5273]: https://github.com/dysonltd/tmag5273 1277 | [paa5100je-pwm3901]: https://github.com/dysonltd/paa5100je-pwm3901 1278 | 1279 | ## no-std crates 1280 | 1281 | [`#![no_std]` crates][no-std-category] designed to run on resource-constrained devices. 1282 | 1283 | 1. [adskalman](https://crates.io/crates/adskalman): Kalman filter and Rauch-Tung-Striebel smoothing implementation. [![crates.io](https://img.shields.io/crates/v/adskalman.svg)](https://crates.io/crates/adskalman) 1284 | 1. [arbitrary-int](https://crates.io/crates/arbitrary-int): This crate implements arbitrary numbers for Rust. Once included, you can use types like `u5` or `u120` 1285 | 1. [atomic](https://crates.io/crates/atomic): Generic Atomic wrapper type. [![crates.io](https://img.shields.io/crates/v/atomic.svg)](https://crates.io/crates/atomic) 1286 | 1. [bbqueue](https://crates.io/crates/bbqueue): A SPSC, statically allocatable queue based on BipBuffers suitable for DMA transfers - [![crates.io](https://img.shields.io/crates/v/bbqueue.svg)](https://crates.io/crates/bbqueue) 1287 | 1. [bitmatch]: A crate that allows you to match, bind, and pack the individual bits of integers. - [![crates.io](https://img.shields.io/crates/v/bitmatch.svg)](https://crates.io/crates/bitmatch) 1288 | 1. [biquad]: A library for creating second-order IIR filters for signal processing based on Biquads, where both a Direct Form 1 (DF1) and Direct Form 2 Transposed (DF2T) implementation is available. [![crates.io](https://img.shields.io/crates/v/biquad.svg)](https://crates.io/crates/biquad) 1289 | 1. [bit_field](https://crates.io/crates/bit_field): manipulating bitfields and bitarrays - [![crates.io](https://img.shields.io/crates/v/bit_field.svg)](https://crates.io/crates/bit_field) 1290 | 1. [bitbybit](https://crates.io/crates/bitbybit): macros that create bit fields and bit enums, which are useful in bit packing code (e.g. in drivers or networking code) 1291 | 1. [bitfield-struct](https://crates.io/crates/bitfield-struct): Procedural macro for bitfields that allows specifying bitfields as structs 1292 | 1. [bluetooth-hci](https://crates.io/crates/bluetooth-hci): device-independent Bluetooth Host-Controller Interface implementation. [![crates.io](https://img.shields.io/crates/v/bluetooth-hci.svg)](https://crates.io/crates/bluetooth-hci) 1293 | 1. [bounded-registers](https://crates.io/crates/bounded-registers) A high-assurance memory-mapped register code generation and interaction library. `bounded-registers` provides a Tock-like API for MMIO registers with the addition of type-based bounds checking. - [![crates.io](https://img.shields.io/crates/v/bounded-registers.svg)](https://crates.io/crates/bounded-registers) 1294 | 1. [cam-geom](https://crates.io/crates/cam-geom): Geometric models of cameras for photogrammetry. [![crates.io](https://img.shields.io/crates/v/cam-geom.svg)](https://crates.io/crates/cam-geom) 1295 | 1. [combine](https://crates.io/crates/combine): parser combinator library - [![crates.io](https://img.shields.io/crates/v/combine.svg)](https://crates.io/crates/combine) 1296 | 1. [console-traits](https://github.com/thejpster/console-traits): Describes a basic text console. Used by [menu] and implemented by [vga-framebuffer]. [![crates.io](https://img.shields.io/crates/v/console-tratis.svg)](https://crates.io/crates/console-tratis) 1297 | 1. [`cmim`], or Cortex-M Interrupt Move: A crate for Cortex-M devices to move data to interrupt context, without needing a critical section to access the data within an interrupt, and to remove the need for the "mutex dance" - [![crates.io](https://img.shields.io/crates/v/cmim.svg)](https://crates.io/crates/cmim) 1298 | 1. [`cmsis-dsp-sys`](https://github.com/jacobrosenthal/cmsis-dsp-sys): Rust FFI bindings to the [Arm CMSIS_5](https://github.com/ARM-software/CMSIS_5) math library - [![crates.io](https://img.shields.io/crates/v/cmsis-dsp-sys.svg)](https://crates.io/crates/cmsis-dsp-sys) 1299 | 1. [dcmimu]: An algorithm for fusing low-cost triaxial MEMS gyroscope and accelerometer measurements [![crates.io](https://img.shields.io/crates/v/dcmimu.svg)](https://crates.io/crates/dcmimu) 1300 | 1. [debouncr]: A simple no-std input debouncer to detect rising/falling edges with minimal RAM requirements. [![crates.io](https://img.shields.io/crates/v/debouncr.svg)](https://crates.io/crates/debouncr) 1301 | 1. [device-driver]: A toolkit to write better device drivers, faster. [![crates.io](https://img.shields.io/crates/v/device-driver.svg)](https://crates.io/crates/device-driver) 1302 | 1. [drogue-device](https://github.com/drogue-iot/drogue-device): A distribution of tools and examples for building embedded applications in Rust. 1303 | 1. [dummy-pin](https://crates.io/crates/dummy-pin): Dummy implementations of the input/output pin traits. [![crates.io](https://img.shields.io/crates/v/dummy-pin.svg)](https://crates.io/crates/dummy-pin) 1304 | 1. [crossbus](https://github.com/hominee/crossbus): A Platform-Less, Runtime-Less Actor Computing Model. 1305 | 1. [ector](https://github.com/drogue-iot/ector): An async actor framework for embedded, based on embassy. 1306 | 1. [embassy]: A set of embedded async tools to make async/await a first-class option for embedded development 1307 | 1. [embedded-cli](https://crates.io/crates/embedded-cli): CLI library with autocompletion, subcommands, options, help and history support. [![crates.io](https://img.shields.io/crates/v/embedded-cli.svg)](https://crates.io/crates/embedded-cli) 1308 | 1. [embedded-crc-macros](https://crates.io/crates/embedded-crc-macros): Macros implementing portable CRC algorithms and build-time lookup table generation. [![crates.io](https://img.shields.io/crates/v/embedded-crc-macros.svg)](https://crates.io/crates/embedded-crc-macros) 1309 | 1. [embedded-update](https://github.com/drogue-iot/embedded-update): Pluggable firmware update protocol for embedded devices. 1310 | 1. [embedded-tls](https://github.com/drogue-iot/embedded-tls): A TLS 1.3 implementation that runs in a no-std environment. 1311 | 1. [embedded-websocket](https://crates.io/crates/embedded-websocket): A lightweight server and client websocket library for embedded systems. [![crates.io](https://img.shields.io/crates/v/embedded-websocket.svg)](https://crates.io/crates/embedded-websocket) 1312 | 1. [endian_codec]: (En/De)code rust types as packed bytes with specific order (endian). Supports derive. - [![crates.io](https://img.shields.io/crates/v/endian_codec.svg)](https://crates.io/crates/endian_codec) 1313 | 1. [ethercrab](https://github.com/ethercrab-rs/ethercrab): A Rust implementation of the [EtherCAT](https://ethercat.org) industrial automation protocol - [![crates.io](https://img.shields.io/crates/v/ethercrab.svg)](https://crates.io/crates/ethercrab) 1314 | 1. [fixed-fft](https://crates.io/crates/fixed-fft): Fixed-point Fast Fourier Transform - [![Crates.io](https://img.shields.io/crates/v/fixed-fft.svg)](https://crates.io/crates/fixed-fft) 1315 | 1. [gcode](https://github.com/Michael-F-Bryan/gcode-rs): A gcode parser for no-std applications - [![crates.io](https://img.shields.io/crates/v/gcode.svg)](https://crates.io/crates/gcode) 1316 | 1. [gdbstub](https://crates.io/crates/gdbstub): zero-allocation, pure Rust implementation of the GDB Remote Serial Protocol - [![crates.io](https://img.shields.io/crates/v/gdbstub.svg)](https://crates.io/crates/gdbstub) 1317 | 1. [hayasen](https://github.com/Vaishnav-Sabari-Girish/Hayasen): An Embedded Rust crate with support for multiple sensors. [![crates.io](https://img.shields.io/crates/v/hayasen.svg)](https://crates.io/crates/hayasen) 1318 | 1. [heapless](https://crates.io/crates/heapless): provides `Vec`, `String`, `LinearMap`, `RingBuffer` backed by fixed-size buffers - [![crates.io](https://img.shields.io/crates/v/heapless.svg)](https://crates.io/crates/heapless) 1319 | 1. [idsp](https://crates.io/crates/idsp): integer DSP algorithms (trigonometry, filtering, PLL...) tuned for precision and speed - [![crates.io](https://img.shields.io/crates/v/idsp.svg)](https://crates.io/crates/idsp) 1320 | 1. [ieee802154](https://crates.io/crates/ieee802154): Partial implementation of the IEEE 802.15.4 standard - [![crates.io](https://img.shields.io/crates/v/ieee802154.svg)](https://crates.io/crates/ieee802154) 1321 | 1. [infrared](https://crates.io/crates/infrared): infrared remote control library for embedded rust - [![crates.io](https://img.shields.io/crates/v/infrared.svg)](https://crates.io/crates/infrared) 1322 | 1. [intrusive-collections](https://crates.io/crates/intrusive-collections): intrusive (non-allocating) singly/doubly linked lists and red-black trees - [![crates.io](https://img.shields.io/crates/v/intrusive-collections.svg)](https://crates.io/crates/intrusive-collections) 1323 | 1. [inverted-pin](https://crates.io/crates/inverted-pin): Implementations of the input/output pin traits with inverted logic. [![crates.io](https://img.shields.io/crates/v/inverted-pin.svg)](https://crates.io/crates/inverted-pin) 1324 | 1. [irq](https://crates.io/crates/irq): utilities for writing interrupt handlers (allows moving data into interrupts, and sharing data between them) - [![crates.io](https://img.shields.io/crates/v/irq.svg)](https://crates.io/crates/irq) 1325 | 1. [lakers](https://crates.io/crates/lakers): Microcontroller-optimized [EDHOC](https://datatracker.ietf.org/doc/draft-ietf-lake-edhoc/) implementation, with bindings for C and Python - [![crates.io](https://img.shields.io/crates/v/lakers.svg)](https://crates.io/crates/lakers) 1326 | 1. [locate-rs](https://github.com/trembel/locate-rs): Microcontroller-optimized solver for Indoor Localization (Multilateration / TDOA) - [![crates.io](https://img.shields.io/crates/v/locate-rs.svg)](https://crates.io/crates/locate-rs) 1327 | 1. [lorawan-encoding](https://github.com/lora-rs/lora-rs/tree/main/lorawan-encoding): A LoRaWAN packet codec. 1328 | 1. [lorawan-device](https://github.com/lora-rs/lora-rs/tree/main/lorawan-device): A LoRaWAN MAC implementation supporting both event-driven and async mode. 1329 | 1. [managed](https://crates.io/crates/managed): provides `ManagedSlice`, `ManagedMap` backed by either their std counterparts or fixed-size buffers for `#![no_std]`. - [![crates.io](https://img.shields.io/crates/v/managed.svg)](https://crates.io/crates/managed) 1330 | 1. [menu]: A basic command-line interface library. Has nested menus and basic help functionality. [![crates.io](https://img.shields.io/crates/v/menu.svg)](https://crates.io/crates/menu) 1331 | 1. [micropb](https://crates.io/crates/micropb): Rust Protobuf library targetting embedded systems and no_std environments without an allocator. - [![crates.io](https://img.shields.io/crates/v/micropb.svg)](https://crates.io/crates/micropb) 1332 | 1. [mqtt-sn](https://crates.io/crates/mqtt-sn): Implementation of the MQTT-SN protocol - [![crates.io](https://img.shields.io/crates/v/mqtt-sn.svg)](https://crates.io/crates/mqtt-sn) 1333 | 1. [microfft](https://crates.io/crates/microfft): Embedded-friendly (`no_std`, no-`alloc`) fast fourier transforms - [![crates.io](https://img.shields.io/crates/v/microfft.svg)](https://crates.io/crates/microfft) 1334 | 1. [micromath](https://github.com/NeoBirth/micromath): Embedded Rust math library featuring fast, safe floating point approximations for common arithmetic operations, 2D and 3D vector types, and statistical analysis - [![crates.io](https://img.shields.io/crates/v/micromath.svg)](https://crates.io/crates/micromath) 1335 | 1. [miniconf](https://crates.io/crates/miniconf): Lookup/enumerate/serialize/deserialize nodes in trees of heterogeneous structs/arrays by path/key - [![crates.io](https://img.shields.io/crates/v/miniconf.svg)](https://crates.io/crates/miniconf) 1336 | 1. [minimq](https://crates.io/crates/minimq): A minimal MQTT5 client designed for no_std platforms - [![crates.io](https://img.shields.io/crates/v/minimq.svg)](https://crates.io/crates/minimq) 1337 | 1. [moonboot](https://github.com/jhbruhn/moonboot): OTA Bootloader Construction Framework for Rust no_std environments, especially embedded devices without an OS 1338 | 1. [nalgebra](https://crates.io/crates/nalgebra): general-purpose and low-dimensional linear algebra library - [![crates.io](https://img.shields.io/crates/v/nalgebra.svg)](https://crates.io/crates/nalgebra) 1339 | 1. [nom](https://crates.io/crates/nom): parser combinator framework - [![crates.io](https://img.shields.io/crates/v/nom.svg)](https://crates.io/crates/nom) 1340 | 1. [null-terminated](https://crates.io/crates/null-terminated): generic null-terminated arrays - [![crates.io](https://img.shields.io/crates/v/null-terminated.svg)](https://crates.io/crates/null-terminated) 1341 | 1. [num-format](https://crates.io/crates/num-format): Crate for producing string representations of numbers, formatted according to international standards, e.g. "1,000,000" for US English - [![crates.io](https://img.shields.io/crates/v/num-format.svg)](https://crates.io/crates/num-format) 1342 | 1. [pc-keyboard]: A PS/2 keyboard protocol driver. Transport (bit-banging or SPI) agnostic, but can convert Set 2 Scancodes into Unicode. [![crates.io](https://img.shields.io/crates/v/pc-keyboard.svg)](https://crates.io/crates/pc-keyboard) 1343 | 1. [qei](https://crates.io/crates/qei) : A qei wrapper that allows you to extend your qei timers from a 16-bit integer to a 64-bit integer. - [![crates.io](https://img.shields.io/crates/v/qei.svg)](https://crates.io/crates/qei) 1344 | 1. [qemu-exit]: Quit a running QEMU session with user-defined exit code. Useful for unit or integration tests using QEMU. - [![crates.io](https://img.shields.io/crates/v/qemu-exit.svg)](https://crates.io/crates/qemu-exit) 1345 | 1. [RampMaker](https://crates.io/crates/ramp-maker): Stepper Motor Acceleration Ramp Generator - [![crates.io](https://img.shields.io/crates/v/ramp-maker.svg)](https://crates.io/crates/ramp-maker) 1346 | 1. [register-rs](https://github.com/rust-embedded/register-rs): Unified interface for MMIO and CPU registers. Provides type-safe bitfield manipulation. `register-rs` is Tock registers with added support for CPU register definitions using the same API as for the MMIO registers. This enables homogeneous interfaces to registers of all kinds. - [![crates.io](https://img.shields.io/crates/v/register.svg)](https://crates.io/crates/register) 1347 | 1. [scapegoat](https://crates.io/crates/scapegoat): Safe, stack-only alternative to `BTreeSet` and `BTreeMap`. - [![crates.io](https://img.shields.io/crates/v/scapegoat.svg)](https://crates.io/crates/scapegoat) 1348 | 1. [scroll](https://crates.io/crates/scroll): extensible and endian-aware Read/Write traits for generic containers - [![crates.io](https://img.shields.io/crates/v/scroll.svg)](https://crates.io/crates/scroll) 1349 | 1. [sized-dst](https://crates.io/crates/sized-dst): Owned container for dynamically-sized types (such as trait objects) backed by stack memory. - [![crates.io](https://img.shields.io/crates/v/sized-dst.svg)](https://crates.io/crates/sized-dst) 1350 | 1. [Slint](https://crates.io/crates/slint): Declarative GUI framework that works on microcontrollers. [![crates.io](https://img.shields.io/crates/v/slint.svg)](https://crates.io/crates/slint) 1351 | 1. [smbus-pec](https://crates.io/crates/smbus-pec): Minimal portable System Management Bus Packet Error Code calculation algorithm. [![crates.io](https://img.shields.io/crates/v/smbus-pec.svg)](https://crates.io/crates/smbus-pec) 1352 | 1. [smoltcp](https://github.com/m-labs/smoltcp): a small TCP/IP stack that runs without `alloc`. [![crates.io](https://img.shields.io/crates/v/smoltcp.svg)](https://crates.io/crates/smoltcp) 1353 | 1. [sntpc]: Rust SNTP client to get a timestamp from NTP servers. - [![crates.io](https://img.shields.io/crates/v/sntpc)](https://crates.io/crates/sntpc) 1354 | 1. [static-bytes](https://github.com/xoac/static-bytes): Help work with buffers without dynamic allocation. Implement traits from bytes crate. [![crate.io](https://img.shields.io/crates/v/static-bytes.svg)](https://crates.io/crates/static-bytes) 1355 | 1. [Stepper]: Universal Stepper Motor Interface - [![crates.io](https://img.shields.io/crates/v/stepper.svg)](https://crates.io/crates/stepper) 1356 | 1. [tinybmp](https://crates.io/crates/tinybmp): No-std, no-alloc BMP parser for embedded systems. [Introductory blog post](https://wapl.es/rust/2019/03/04/embedded-graphics-0.4.7-bmp-support.html) - [![crates.io](https://img.shields.io/crates/v/tinybmp.svg)](https://crates.io/crates/tinybmp) 1357 | 1. [vga-framebuffer]: A VGA signal generator and font renderer for VGA-less microcontrollers. Used by [Monotron](https://github.com/thejpster/monotron) to generate 48 by 36 character display using 3 SPI peripherals and a timer. [![crates.io](https://img.shields.io/crates/v/vga-framebuffer.svg)](https://crates.io/crates/vga-framebuffer) 1358 | 1. [usb-pd](https://github.com/fmckeogh/usb-pd-rs): USB-PD library, supports using the FUSB302B as a Sink driver, with Source functionality planned. 1359 | 1. [wyhash]: A fast, simple and portable hashing algorithm and random number generator. - [![crates.io](https://img.shields.io/crates/v/wyhash.svg)](https://crates.io/crates/wyhash) 1360 | 1. [adafruit-bluefruit-protocol]: A `no_std` parser for the [Adafruit Bluefruit LE Connect controller protocol]. - [![crates.io](https://img.shields.io/crates/v/adafruit-bluefruit-protocol)](https://crates.io/crates/adafruit-bluefruit-protocol) 1361 | 1. [wtx](https://github.com/c410-f3r/wtx): Among other things, provides implementations to interact with HTTP, WebSockets and Databases. 1362 | 1363 | [no-std-category]: https://crates.io/categories/no-std 1364 | [`cmim`]: https://crates.io/crates/cmim 1365 | [bitmatch]: https://crates.io/crates/bitmatch 1366 | [biquad]: https://crates.io/crates/biquad 1367 | [embassy]: https://github.com/akiles/embassy 1368 | [dcmimu]: https://crates.io/crates/dcmimu 1369 | [debouncr]: https://crates.io/crates/debouncr 1370 | [device-driver]: https://crates.io/crates/device-driver 1371 | [endian_codec]: https://crates.io/crates/endian_codec 1372 | [menu]: https://github.com/thejpster/menu 1373 | [pc-keyboard]: https://github.com/thejpster/pc-keyboard 1374 | [qemu-exit]: https://crates.io/crates/qemu-exit 1375 | [sntpc]: https://crates.io/crates/sntpc 1376 | [Stepper]: https://crates.io/crates/stepper 1377 | [vga-framebuffer]: https://github.com/thejpster/vga-framebuffer-rs 1378 | [wyhash]: https://crates.io/crates/wyhash 1379 | [adafruit-bluefruit-protocol]: https://crates.io/crates/adafruit-bluefruit-protocol 1380 | [Adafruit Bluefruit LE Connect controller protocol]: https://learn.adafruit.com/bluefruit-le-connect/controller 1381 | 1382 | ### WIP 1383 | 1384 | Work in progress crates. Help the authors make these crates awesome! 1385 | 1386 | - [light-cli](https://github.com/rudihorn/light-cli): a lightweight heapless cli interface [![crates.io](https://img.shields.io/crates/v/light_cli.svg)](https://crates.io/crates/light_cli) 1387 | - [OxCC](https://github.com/jonlamb-gh/oxcc): A port of Open Source Car Control written in Rust 1388 | - [Rubble](https://github.com/jonas-schievink/rubble): A pure-Rust embedded BLE stack [![crates.io](https://img.shields.io/crates/v/rubble.svg)](https://crates.io/crates/rubble) 1389 | - [post-haste](https://github.com/petekubiak/post-haste): A no_std, alloc-free async Rust library for creating modular projects. 1390 | 1391 | ## Panic handling 1392 | 1393 | There are many ways to handle panics in embedded devices, these crates provide helpful variants. 1394 | 1395 | 1. [`dont_panic`] + [`dont_panic_slice`]: panic!()-like macro that causes linking error instead of panicking. May be used to statically ensure some code won't panic. [![crates.io](https://img.shields.io/crates/v/dont_panic.svg)](https://crates.io/crates/dont_panic) + [![crates.io](https://img.shields.io/crates/v/dont_panic_slice.svg)](https://crates.io/crates/dont_panic_slice) 1396 | 1. [`no-panic`]: Attribute macro to require that the compiler prove a function can't ever panic. [![crates.io](https://img.shields.io/crates/v/no-panic.svg)](https://crates.io/crates/no-panic) 1397 | 1. [`panic-abort`]: Causes an abort on panics (nightly-only) [![crates.io](https://img.shields.io/crates/v/panic-abort.svg)](https://crates.io/crates/panic-abort) 1398 | 1. [`panic-halt`]: Halts the processor on panics [![crates.io](https://img.shields.io/crates/v/panic-halt.svg)](https://crates.io/crates/panic-halt) 1399 | 1. [`panic-itm`]: Prints the panic through the chip's ITM to a debugger attached to the SWO pin (Cortex-M with ITM only) 1400 | 1. [`panic-never`]: This crate guarantees that your application is free of panicking branches. [![crates.io](https://img.shields.io/crates/v/panic-never.svg)](https://crates.io/crates/panic-never) 1401 | 1. [`panic-persist`]: A panic handler crate inspired by `panic-ramdump` that logs panic messages to a region of RAM defined by the user, allowing for discovery of panic messages post-mortem using normal program control flow. - [![crates.io](https://img.shields.io/crates/v/panic-persist.svg)](https://crates.io/crates/panic-persist) 1402 | 1. [`panic-probe`]: A panic handler that exits `probe-run` with an error code. [![crates.io](https://img.shields.io/crates/v/panic-probe.svg)](https://crates.io/crates/panic-probe) 1403 | 1. [`panic-ramdump`]: Writes the panic message into the beginning of RAM and enters an infinite loop; the message can be extracted by attaching a debugger (Cortex-M only) [![crates.io](https://img.shields.io/crates/v/panic-ramdump.svg)](https://crates.io/crates/panic-ramdump) 1404 | 1. [`panic-rtt`]: Set the panicking behavior to log to a JLINK debugger and loop. [![crates.io](https://img.shields.io/crates/v/panic_rtt.svg)](https://crates.io/crates/panic_rtt) 1405 | 1. [`panic-rtt-target`]: Logs panic messages over RTT. Uses `rtt-target`. [![crates.io](https://img.shields.io/crates/v/panic-rtt-target.svg)](https://crates.io/crates/panic-rtt-target) 1406 | 1. [`panic-semihosting`]: Prints the panic message via semihosting to an attached debugger (Cortex-M only) 1407 | 1. [`rp2040-panic-usb-boot`]: Save panic message in XIP RAM and reboot RP2040 to USB mode [![crates.io](https://img.shields.io/crates/v/rp2040-panic-usb-boot.svg)](https://crates.io/crates/rp2040-panic-usb-boot) 1408 | 1409 | [`dont_panic_slice`]: https://crates.io/crates/dont_panic_slice 1410 | [`dont_panic`]: https://crates.io/crates/dont_panic 1411 | [`no-panic`]: https://crates.io/crates/no-panic 1412 | [`panic-abort`]: https://crates.io/crates/panic-abort 1413 | [`panic-halt`]: https://crates.io/crates/panic-halt 1414 | [`panic-itm`]: https://github.com/rust-embedded/cortex-m/tree/master/panic-itm 1415 | [`panic-never`]: https://crates.io/crates/panic-never 1416 | [`panic-persist`]: https://crates.io/crates/panic-persist 1417 | [`panic-probe`]: https://crates.io/crates/panic-probe 1418 | [`panic-ramdump`]: https://crates.io/crates/panic-ramdump 1419 | [`panic-rtt`]: https://crates.io/crates/panic_rtt 1420 | [`panic-rtt-target`]: https://crates.io/crates/panic-rtt-target 1421 | [`panic-semihosting`]: https://github.com/rust-embedded/panic-semihosting 1422 | [`rp2040-panic-usb-boot`]: https://crates.io/crates/rp2040-panic-usb-boot 1423 | 1424 | ## Firmware projects 1425 | 1426 | - [rmk](https://github.com/HaoboGu/rmk): Mechanical keyboard firmware for stm32/rp2040, supports vial/dynamic keymap/eeprom, written in Rust 1427 | - [anne-key](https://github.com/ah-/anne-key): Alternate keyboard firmware for the Obins ANNE Pro 1428 | - [μLA](https://github.com/dotcypress/ula): Micro Logic Analyzer for RP2040 1429 | - [air-gradient-pro-rs](https://github.com/jonlamb-gh/air-gradient-pro-rs): Bootloader, firmware, and CLI tools for the AirGradient PRO 1430 | - [Stabilizer](https://github.com/quartiq/stabilizer): Firmware for a DSP tool used in quantum physics experimentation, includes telemetry via MQTT and run-time configuration 1431 | - [Booster](https://github.com/quartiq/booster): Firmware for an RF power amplifier, including telemetry via MQTT and run-time configuration 1432 | - [Thermostat EEM](https://github.com/quartiq/thermostat-eem): Firmware for a multi-channel temperature controller used in physics experiments 1433 | - [Card/IO ECG](https://github.com/card-io-ecg/card-io-fw): Firmware for a business-card-sized ECG device with Wifi connectivity 1434 | - [BillMock](https://github.com/pmnxis/billmock-app-rs): Firmware for credit card terminal add-on hardware to install on Korean arcade machines 1435 | - [LuLuu](https://github.com/fu5ha/luluu): Firmware for a custom RP2040-based display controller that streams animated images from a microSD card to a small LCD display. 1436 | - [prinThor](https://github.com/cbruiz/printhor): 3DPrinter/CNC/Engraver firmware framework powered by rust embassy for stm32 families and rp2040. 1437 | 1438 | ## Old books, blogs, and training materials 1439 | 1440 | These materials may be outdated and reflect earlier practices, but they might still be helpful for reference. 1441 | 1442 | - [Exploring Rust on Teensy](https://branan.github.io/teensy/) by @branan — Beginner set of articles on getting into embedded dev in Rust. 1443 | - [Pragmatic Bare Metal Rust](http://www.hashmismatch.net/pragmatic-bare-metal-rust/) A starter article about starting Rust development on STM32 microcontrollers (cubeMX + FFI). 1444 | - [Using Rust in an Embedded Project: A Simple Example](https://spin.atomicobject.com/2016/07/08/rust-embedded-project-example/#.V3-os-6qlZw.hackernews) Article and some links on setting up Rust cross-compiling. 1445 | - [Robigalia](https://robigalia.org) general purpose robust operating system in Rust running on secure seL4 microkernel. 1446 | - [intermezzOS](http://intermezzos.github.io) A small teaching operating system in Rust. A book with some explanations is also included. 1447 | - [Fearless concurrency](http://blog.japaric.io/fearless-concurrency/) by @japaric — How to easily develop Rust programs for pretty much any ARM Cortex-M microcontroller with memory-safe concurrency. 1448 | - [Internet of Streams](https://www.youtube.com/playlist?list=PLX44HkctSkTewrL9frlUz0yeKLKecebT1) A video series by [@jamesmunns] building a bare metal IoT Sensor Node Platform from (nearly) scratch in Rust 1449 | - [Ferrous Systems' Embedded Training Courses: 2019 edition](https://github.com/ferrous-systems/embedded-trainings/) A hands-on training course for beginner and advanced learners of Embedded Rust, based on Nordic Semiconductor's nRF52 and Decawave's DWM1001-DEV hardware. This training was given at Oxidize Conferences and by Ferrous Systems to corporate customers. 1450 | 1451 | [@jamesmunns]: https://github.com/jamesmunns 1452 | 1453 | ## License 1454 | 1455 | This list is licensed under 1456 | 1457 | - [CC0 1.0 Universal License](https://creativecommons.org/publicdomain/zero/1.0/legalcode) aka [LICENSE-CC0](LICENSE-CC0) 1458 | 1459 | ## Code of Conduct 1460 | 1461 | Contribution to this crate is organized under the terms of the [Rust Code of 1462 | Conduct][CoC], the maintainer of this crate, the [Resources team][team], promises 1463 | to intervene to uphold that code of conduct. 1464 | 1465 | [CoC]: CODE_OF_CONDUCT.md 1466 | [team]: https://github.com/rust-embedded/wg#the-resources-team 1467 | --------------------------------------------------------------------------------