From 1a1016a35173af1db15dbfe87e62fbb98a610df8 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Mon, 13 Dec 2021 21:45:41 +0100 Subject: [PATCH 001/178] added vorago-reb1 BSP and va416xx PAC --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index adbf9672..c308e0ca 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,7 @@ This project is developed and maintained by the [Resources team][team]. * [STMicroelectronics](#stmicroelectronics-2) * [Texas Instruments](#texas-instruments-2) * [Teensy](#teensy) + * [Vorago](#vorago-2) * [Special Purpose](#special-purpose) * [Component abstraction crates](#component-abstraction-crates) * [Driver crates](#driver-crates) @@ -273,6 +274,7 @@ Peripheral access crates for the different XMC4xxx families of microcontrollers ### Vorago - [`va108xx`](https://egit.irs.uni-stuttgart.de/rust/va108xx) - ![crates.io](https://img.shields.io/crates/v/va108xx.svg) +- [`va416xx`](https://egit.irs.uni-stuttgart.de/rust/va416xx) - ![crates.io](https://img.shields.io/crates/v/va416xx.svg) ## HAL implementation crates @@ -534,6 +536,10 @@ Crates tailored for specific boards. ### Teensy - [`teensy4-rs`](https://github.com/mciantyre/teensy4-rs) Board Support create for the [Teensy 4.0] +### Vorago + +- [`vorago-reb1`](https://egit.irs.uni-stuttgart.de/rust/vorago-reb1) - ![crates.io](https://img.shields.io/crates/v/vorago-reb1.svg) + ### Texas Instruments - [`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]. From ee2410b481804d08f670ec0f9b68df54f17ed1ca Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Mon, 13 Dec 2021 21:57:27 +0100 Subject: [PATCH 002/178] Add MAX116xx 10-bit ADC --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c308e0ca..c2fd7be7 100644 --- a/README.md +++ b/README.md @@ -808,6 +808,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [MAG3110] - I2C - Magnetometer 1. [MAX17048/9] - I2C - LiPo Fuel gauge, battery monitoring IC - ![crates.io](https://img.shields.io/crates/v/max17048.svg) 1. [MAX170xx] - I2C - LiPo Fuel gauge, battery monitoring ICs compatible with MAX17043/4, MAX17048/9, MAX17058/9. +1. [MAX116xx-10bit] - SPI - Driver for the MAX11619-MAX11621, MAX11624 and MAX11625 10-bit ADCs - ![crates.io](https://img.shields.io/crates/v/max116xx-10bit.svg) 1. [MAX3010x] - I2C - Pulse oximeter and heart-rate sensor. ATM Compatible with MAX30102. -![crates.io](https://img.shields.io/crates/v/max3010x.svg) 1. [MAX31855] - SPI - Thermocouple digital converter -![crates.io](https://img.shields.io/crates/v/max31855.svg) 1. [MAX31865] - SPI - RTD to Digital converter - ![crates.io](https://img.shields.io/crates/v/max31865.svg) From ecd4e7f5722d3cb0460bb591897165c3233e28da Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Mon, 13 Dec 2021 22:05:30 +0100 Subject: [PATCH 003/178] forgot the link --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c2fd7be7..6a7cfebe 100644 --- a/README.md +++ b/README.md @@ -899,6 +899,7 @@ Work in progress drivers. Help the authors make these crates awesome! [MAG3110]: https://github.com/therealprof/mag3110 [MAX17048/9]: https://crates.io/crates/max17048 [MAX170xx]: https://github.com/eldruin/max170xx-rs +[MAX116xx-10bit]: https://egit.irs.uni-stuttgart.de/rust/max116xx-10bit [MAX3010x]: https://crates.io/crates/max3010x [MAX31855]: https://github.com/cs2dsb/max31855.rs [MAX31865]: https://crates.io/crates/max31865 From 86103a6d80941a9b42066137a4db612ab0085158 Mon Sep 17 00:00:00 2001 From: Rahix Date: Wed, 15 Dec 2021 21:44:47 +0100 Subject: [PATCH 004/178] Add port-expander crate --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 6a7cfebe..93776f66 100644 --- a/README.md +++ b/README.md @@ -610,6 +610,7 @@ have achieved the "released" status (published on crates.io + documentation / sh 1. [MCP794xx] - I2C - Real-time clock / calendar driver - [Intro blog post][26] - ![crates.io](https://img.shields.io/crates/v/mcp794xx.svg) 1. [MMA7660FC] - I2C - 3-axis accelerometer - [Intro blog post][9] 1. [OPT300x] - I2C - Ambient light sensor family driver - [Intro blog post][30] - ![crates.io](https://img.shields.io/crates/v/opt300x.svg) +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) 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) 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) 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) @@ -696,6 +697,7 @@ have achieved the "released" status (published on crates.io + documentation / sh [55]: https://barafael.github.io/A-Platform-Agnostic-Driver-for-the-CD74HC4067 [56]: https://barafael.github.io/A-Platform-Agnostic-Driver-for-the-HC12-serial-radio-module/ [57]: https://github.com/yannart/rainbow-hat-rs +[58]: https://blog.rahix.de/port-expander/ [AD983x]: https://crates.io/crates/ad983x [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 @@ -729,6 +731,7 @@ have achieved the "released" status (published on crates.io + documentation / sh [MCP794xx]: https://crates.io/crates/mcp794xx [MMA7660FC]: https://crates.io/crates/mma7660fc [OPT300x]: https://github.com/eldruin/opt300x-rs +[port-expander]: https://crates.io/crates/port-expander [pwm-pca9685]: https://crates.io/crates/pwm-pca9685 [rainbow-hat-rs]: https://crates.io/crates/rainbow-hat-rs [rotary-encoder-hal]: https://crates.io/crates/rotary-encoder-hal From 262c0847c25d5f87bba56badb9834676d261a016 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Fri, 17 Dec 2021 01:00:10 +0100 Subject: [PATCH 005/178] move adc to released section, add blogposts --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 93776f66..1c2430b1 100644 --- a/README.md +++ b/README.md @@ -407,7 +407,7 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! ### Vorago - [`va108xx-hal`](https://egit.irs.uni-stuttgart.de/rust/va108xx-hal) - ![crates.io](https://img.shields.io/crates/v/va108xx-hal.svg) - + - [Blogpost](https://robamu.github.io/post/rust-ecosystem/) ## Architecture support crates Crates tailored for general CPU architectures. @@ -539,6 +539,7 @@ Crates tailored for specific boards. ### Vorago - [`vorago-reb1`](https://egit.irs.uni-stuttgart.de/rust/vorago-reb1) - ![crates.io](https://img.shields.io/crates/v/vorago-reb1.svg) + - [Blogpost](https://robamu.github.io/post/rust-ecosystem/) ### Texas Instruments @@ -604,6 +605,7 @@ have achieved the "released" status (published on crates.io + documentation / sh 1. [L3GD20] - SPI - Gyroscope - [Intro blog post][1&2] - ![crates.io](https://img.shields.io/crates/v/l3gd20.svg) 1. [LSM303DLHC] - I2C - Accelerometer + compass (magnetometer) - [Intro blog post][1&2] - ![crates.io](https://img.shields.io/crates/v/lsm303dlhc.svg) 1. [MAX6955] - I2C - Driver for Alphanumeric LED display driver - [Intro blog post][46] - ![crates.io](https://img.shields.io/crates/v/max6955.svg) +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) 1. [MCP25LCXX] - SPI - Driver for Microchip's 25LC series of EEPROMs - ![crates.io](https://img.shields.io/crates/v/microchip-eeprom-25lcxx.svg) 1. [MCP3008] - SPI - 8 channel 10-bit ADC - [Intro blog post][3] - ![crates.io](https://img.shields.io/crates/v/adc-mcp3008.svg) 1. [MCP3425] - I2C - 16-bit ADC - [Intro blog post][5] - ![crates.io](https://img.shields.io/crates/v/mcp3425.svg) @@ -698,6 +700,7 @@ have achieved the "released" status (published on crates.io + documentation / sh [56]: https://barafael.github.io/A-Platform-Agnostic-Driver-for-the-HC12-serial-radio-module/ [57]: https://github.com/yannart/rainbow-hat-rs [58]: https://blog.rahix.de/port-expander/ +[59]: https://robamu.github.io/post/max11619-driver-rust/ [AD983x]: https://crates.io/crates/ad983x [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 @@ -725,6 +728,7 @@ have achieved the "released" status (published on crates.io + documentation / sh [L3GD20]: https://crates.io/crates/l3gd20 [LSM303DLHC]: https://crates.io/crates/lsm303dlhc [MAX6955]: https://crates.io/crates/max6955 +[MAX116xx-10bit]: https://crates.io/crates/max116xx-10bit [MCP25LCXX]: https://crates.io/crates/microchip-eeprom-25lcxx [MCP3008]: https://crates.io/crates/adc-mcp3008 [MCP3425]: https://crates.io/crates/mcp3425 @@ -811,7 +815,6 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [MAG3110] - I2C - Magnetometer 1. [MAX17048/9] - I2C - LiPo Fuel gauge, battery monitoring IC - ![crates.io](https://img.shields.io/crates/v/max17048.svg) 1. [MAX170xx] - I2C - LiPo Fuel gauge, battery monitoring ICs compatible with MAX17043/4, MAX17048/9, MAX17058/9. -1. [MAX116xx-10bit] - SPI - Driver for the MAX11619-MAX11621, MAX11624 and MAX11625 10-bit ADCs - ![crates.io](https://img.shields.io/crates/v/max116xx-10bit.svg) 1. [MAX3010x] - I2C - Pulse oximeter and heart-rate sensor. ATM Compatible with MAX30102. -![crates.io](https://img.shields.io/crates/v/max3010x.svg) 1. [MAX31855] - SPI - Thermocouple digital converter -![crates.io](https://img.shields.io/crates/v/max31855.svg) 1. [MAX31865] - SPI - RTD to Digital converter - ![crates.io](https://img.shields.io/crates/v/max31865.svg) @@ -902,7 +905,6 @@ Work in progress drivers. Help the authors make these crates awesome! [MAG3110]: https://github.com/therealprof/mag3110 [MAX17048/9]: https://crates.io/crates/max17048 [MAX170xx]: https://github.com/eldruin/max170xx-rs -[MAX116xx-10bit]: https://egit.irs.uni-stuttgart.de/rust/max116xx-10bit [MAX3010x]: https://crates.io/crates/max3010x [MAX31855]: https://github.com/cs2dsb/max31855.rs [MAX31865]: https://crates.io/crates/max31865 From 845fb3b14ca77347aae74e48c37697023067ceee Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Fri, 17 Dec 2021 01:03:15 +0100 Subject: [PATCH 006/178] small tweaks --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1c2430b1..30836997 100644 --- a/README.md +++ b/README.md @@ -408,6 +408,7 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! - [`va108xx-hal`](https://egit.irs.uni-stuttgart.de/rust/va108xx-hal) - ![crates.io](https://img.shields.io/crates/v/va108xx-hal.svg) - [Blogpost](https://robamu.github.io/post/rust-ecosystem/) + ## Architecture support crates Crates tailored for general CPU architectures. @@ -539,7 +540,7 @@ Crates tailored for specific boards. ### Vorago - [`vorago-reb1`](https://egit.irs.uni-stuttgart.de/rust/vorago-reb1) - ![crates.io](https://img.shields.io/crates/v/vorago-reb1.svg) - - [Blogpost](https://robamu.github.io/post/rust-ecosystem/) + - [Blogpost](https://robamu.github.io/post/rust-ecosystem/) ### Texas Instruments From bf555ae6ee626d77a2e7879d1cf9dfc9496e7e3d Mon Sep 17 00:00:00 2001 From: Christopher Hunt Date: Sat, 18 Dec 2021 19:27:57 +1100 Subject: [PATCH 007/178] Adds embassy-start This is a link to a project starter template for writing embedded async Rust applications using Embassy. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 30836997..4e6db376 100644 --- a/README.md +++ b/README.md @@ -120,7 +120,8 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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 harware. This training was given at Oxidize Conferences and by [Ferrous Systems] to corporate customers. - [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. - [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. - +- [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) with production in mind. The template has been derived from a number of projects that are targeting the real-world. +- [Ferrous Systems]: https://ferrous-systems.com ## Tools From db53487239b95956e4334f747f71c21686f0ab4c Mon Sep 17 00:00:00 2001 From: Christopher Hunt Date: Mon, 20 Dec 2021 10:44:34 +1100 Subject: [PATCH 008/178] PR feedback --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4e6db376..c63f3988 100644 --- a/README.md +++ b/README.md @@ -120,8 +120,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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 harware. This training was given at Oxidize Conferences and by [Ferrous Systems] to corporate customers. - [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. - [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. -- [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) with production in mind. The template has been derived from a number of projects that are targeting the real-world. -- + [Ferrous Systems]: https://ferrous-systems.com ## Tools @@ -146,6 +145,8 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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. - [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 - [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 +- [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) with production in mind. The template has been derived from a number of projects that are targeting the real-world. This particular template targets nRF hardware and networking using the Uarte for the purposes of illustration only. + [embedded-hal-mock]: https://crates.io/crates/embedded-hal-mock From 4b3920270e60e8a8235f381dd2fe355519c263a9 Mon Sep 17 00:00:00 2001 From: Christopher Hunt Date: Mon, 20 Dec 2021 20:44:24 +1100 Subject: [PATCH 009/178] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c63f3988..845b7b7b 100644 --- a/README.md +++ b/README.md @@ -145,7 +145,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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. - [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 - [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 -- [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) with production in mind. The template has been derived from a number of projects that are targeting the real-world. This particular template targets nRF hardware and networking using the Uarte for the purposes of illustration only. +- [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. [embedded-hal-mock]: https://crates.io/crates/embedded-hal-mock From c13c7d7fa792f96b90c68d5038550e53795232f8 Mon Sep 17 00:00:00 2001 From: Christopher Hunt Date: Mon, 20 Dec 2021 20:46:35 +1100 Subject: [PATCH 010/178] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 845b7b7b..e059b1b4 100644 --- a/README.md +++ b/README.md @@ -145,7 +145,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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. - [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 - [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 -- [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. +- [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. [embedded-hal-mock]: https://crates.io/crates/embedded-hal-mock From 0f0c1f659a0b0fcbc43a541250fef631fcc2cd3d Mon Sep 17 00:00:00 2001 From: Constantine Solovev Date: Sat, 25 Dec 2021 21:47:33 +0400 Subject: [PATCH 011/178] Fix broken links --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e059b1b4..5945f1ef 100644 --- a/README.md +++ b/README.md @@ -134,8 +134,8 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [cortex-m semihosting](https://github.com/japaric/cortex-m-semihosting) Semihosting for ARM Cortex-M processors - [bobbin-cli](https://github.com/bobbin-rs/bobbin-cli) A Rust command line tool to simplify embedded development and deployment. - [ferros](https://github.com/auxoncorp/ferros) A Rust-based userland which also adds compile-time assurances to seL4 development. -- [cargo-flash](https://probe.rs/guide/1_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) -- [cargo-embed](https://probe.rs/guide/1_tools/cargo-embed/) A superset of cargo-flash with additional useful features like configuration file support, a RTT terminal or a GDB server. - ![crates.io](https://img.shields.io/crates/v/cargo-embed.svg) +- [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) +- [cargo-embed](https://probe.rs/docs/tools/cargo-embed/) A superset of cargo-flash with additional useful features like configuration file support, a RTT terminal or a GDB server. - ![crates.io](https://img.shields.io/crates/v/cargo-embed.svg) - [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) - [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) - [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: From 04a2a0c5df4c597d01252588beb274803f8aa8f6 Mon Sep 17 00:00:00 2001 From: Jonathan 'theJPster' Pallant Date: Sun, 26 Dec 2021 19:57:48 +0000 Subject: [PATCH 012/178] Update README with some RP2040 boards Also bump RTIC to 1.0 --- README.md | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5945f1ef..a3c8267c 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ This project is developed and maintained by the [Resources team][team]. * [Microchip](#microchip) * [Nordic](#nordic) * [NXP](#nxp) + * [Raspberry Pi Silicon](#raspberry-pi-silicon) * [SiFive](#sifive) * [Silicon Labs](#silicon-labs) * [STMicroelectronics](#stmicroelectronics) @@ -37,6 +38,7 @@ This project is developed and maintained by the [Resources team][team]. * [GigaDevice](#gigadevice-1) * [Nordic](#nordic-1) * [NXP](#nxp-1) + * [Raspberry Pi Silicon](#raspberry-pi-silicon-1) * [SiFive](#sifive-1) * [STMicroelectronics](#stmicroelectronics-1) * [Texas Instruments](#texas-instruments-1) @@ -55,6 +57,8 @@ This project is developed and maintained by the [Resources team][team]. * [Arduino](#arduino) * [Nordic](#nordic-2) * [NXP](#nxp-2) + * [Pimoroni](#pimoroni) + * [Raspberry Pi](#raspberry-pi) * [Sparkfun](#sparkfun) * [SeeedStudio](#seeedstudio) * [SiFive](#sifive-2) @@ -158,10 +162,11 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [FreeRTOS.rs](https://github.com/hashmismatch/freertos.rs) Rust interface for the FreeRTOS API - [FreeRTOS-rust](https://github.com/lobaro/FreeRTOS-rust) Rust interface for FreeRTOS with Rust entry point and build support crate. - [Tock](https://www.tockos.org) An embedded operating system designed for running multiple concurrent, mutually distrustful applications on low-memory and low-power microcontrollers +- [Hubris](https://github.com/oxidecomputer/hubris) A real-time operating systems built by Oxide Computer to run the Service Controller processor in the mainboards of their rack-mount servers. ### Real-time tools -- [RTIC v0.5](https://rtic.rs/0.5/book/en/) Real-Time Interrupt-driven Concurrency — A concurrency framework for building real time systems: +- [RTIC v1.0](https://rtic.rs/1.0/book/en/) Real-Time Interrupt-driven Concurrency — A concurrency framework for building real time systems: - [cortex-m rtic](https://github.com/rtic-rs/cortex-m-rtic) RTIC framework for ARM Cortex-M microcontrollers - [msp430 rtfm](https://github.com/japaric/msp430-rtfm) RTFM framework for MSP430 MCUs @@ -211,6 +216,9 @@ Peripheral Access Crates were also called Device Crates. - [`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) - [`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) +### Raspberry Pi Silicon + +- [`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) ### SiFive @@ -328,6 +336,9 @@ Also check the list of [NXP board support crates][nxp-bsc]! - [`mkw41z-hal`](https://crates.io/crates/mkw41z-hal) - ![crates.io](https://img.shields.io/crates/v/mkw41z-hal.svg) - [`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) +### Raspberry Pi Silicon + +- [`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) ### SiFive @@ -372,7 +383,7 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! ### Texas Instruments -- [`tm4c123x-hal`](https://github.com/thejpster/tm4c123x-hal) +- [`tm4c123x-hal`](https://github.com/rust-embedded-community/tm4c-hal/) ### MSP430 @@ -471,6 +482,17 @@ Crates tailored for specific boards. ![crates.io](https://img.shields.io/crates/v/itsybitsy_m4.svg) - [`trinket_m0`](https://crates.io/crates/trinket_m0) - Board support for the [Trinket M0 board](https://www.adafruit.com/product/3500) ![crates.io](https://img.shields.io/crates/v/trinket_m0.svg) +- [`adafruit-feather-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit Feather RP2040]. +- [`adafruit-itsy-bitsy-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit Itsy Bitsy RP2040]. +- [`adafruit-kb2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit KB2040]. +- [`adafruit-macropad`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit Macropad]. +- [`adafruit-qt-py-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit QT Py RP2040]. + +[Adafruit Feather RP2040]: https://www.adafruit.com/product/4884 +[Adafruit ItsyBitsy RP2040]: https://www.adafruit.com/product/4888 +[Adafruit KB2040]: https://www.adafruit.com/product/5302 +[Adafruit Macropad]: https://www.adafruit.com/product/5128 +[Adafruit QT Py RP2040]: https://www.adafruit.com/product/4900 ### Arduino @@ -497,9 +519,22 @@ Crates tailored for specific boards. [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 +### Pimoroni + +- [`pimoroni-pico-explorer`](https://github.com/rp-rs/rp-hal) - Board Support for the [Pimoroni Pico Explorer] +- [`pimoroni-pico-lipo-16mb`](https://github.com/rp-rs/rp-hal) - Board Support for the [Pimoroni Pico Lipo 16MB] + +[Pimoroni Pico Lipo 16MB]: https://shop.pimoroni.com/products/pimoroni-pico-lipo?variant=39335427080275 +[pimoroni-pico-lipo-16mb]: https://github.com/rp-rs/rp-hal/tree/main/boards/pimoroni_pico_lipo_16mb + +### Raspberry Pi + +- [`rp-pico`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the RP2040 based Raspberry Pi Pico. + ### Sparkfun - [`samd21_mini`](https://crates.io/crates/samd21_mini) - Board support for the [SAMD21 Mini Breakout](https://www.sparkfun.com/products/13664) ![crates.io](https://img.shields.io/crates/v/samd21_mini.svg) +- [`sparkfun-pro-micro-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the RP2040 based Sparkfun Pro Micro. ### SeeedStudio From d191784e21586cf415ffdc62c952d54ab8f0d4b5 Mon Sep 17 00:00:00 2001 From: Jonathan 'theJPster' Pallant Date: Sun, 26 Dec 2021 20:03:19 +0000 Subject: [PATCH 013/178] Typo in ItsyBitsy --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a3c8267c..e9613ab1 100644 --- a/README.md +++ b/README.md @@ -483,7 +483,7 @@ Crates tailored for specific boards. - [`trinket_m0`](https://crates.io/crates/trinket_m0) - Board support for the [Trinket M0 board](https://www.adafruit.com/product/3500) ![crates.io](https://img.shields.io/crates/v/trinket_m0.svg) - [`adafruit-feather-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit Feather RP2040]. -- [`adafruit-itsy-bitsy-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit Itsy Bitsy RP2040]. +- [`adafruit-itsy-bitsy-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit ItsyBitsy RP2040]. - [`adafruit-kb2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit KB2040]. - [`adafruit-macropad`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit Macropad]. - [`adafruit-qt-py-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit QT Py RP2040]. From 312f7b55fb5da0e9c55fba4722e9a902842a1e83 Mon Sep 17 00:00:00 2001 From: Jonathan 'theJPster' Pallant Date: Mon, 27 Dec 2021 17:06:33 +0000 Subject: [PATCH 014/178] Add missing Pimoroni links --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e9613ab1..e014d88f 100644 --- a/README.md +++ b/README.md @@ -524,8 +524,10 @@ Crates tailored for specific boards. - [`pimoroni-pico-explorer`](https://github.com/rp-rs/rp-hal) - Board Support for the [Pimoroni Pico Explorer] - [`pimoroni-pico-lipo-16mb`](https://github.com/rp-rs/rp-hal) - Board Support for the [Pimoroni Pico Lipo 16MB] -[Pimoroni Pico Lipo 16MB]: https://shop.pimoroni.com/products/pimoroni-pico-lipo?variant=39335427080275 +[pimoroni-pico-explorer]: https://github.com/rp-rs/rp-hal/tree/main/boards/pimoroni-pico-explorer +[Pimoroni Pico Explorer]: https://shop.pimoroni.com/products/pico-explorer-base [pimoroni-pico-lipo-16mb]: https://github.com/rp-rs/rp-hal/tree/main/boards/pimoroni_pico_lipo_16mb +[Pimoroni Pico Lipo 16MB]: https://shop.pimoroni.com/products/pimoroni-pico-lipo?variant=39335427080275 ### Raspberry Pi From 71344ef8a24ae2cf0df91555925440273afcbdaa Mon Sep 17 00:00:00 2001 From: Stephan Date: Thu, 30 Dec 2021 19:44:19 +0100 Subject: [PATCH 015/178] add crates.io links to PIC32; add fixed-fft --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e014d88f..d6b64196 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,7 @@ Peripheral Access Crates were also called Device Crates. - [`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. - [`avr-device`](https://github.com/Rahix/avr-device) Peripheral access API for Microchip (formerly Atmel) AVR microcontroller family. - [`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) -- [`pic32-pac`](https://github.com/kiffie/pic32-pac) Peripheral access API for PIC32MX1xx, PIC32MX2xx, PIC32MX274 XLP +- [`pic32-pac`](https://crates.io/crates/pic32mx2xx) Peripheral access API for PIC32MX1/2xx - ![crates.io](https://img.shields.io/crates/v/pic32mx2xx) ### Nordic @@ -313,7 +313,7 @@ Implementations of [`embedded-hal`] for microcontroller families and systems run - [`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) - [`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) - [`avr-hal`](https://github.com/Rahix/avr-hal) - HAL for AVR microcontroller family and AVR-based boards -- [`pic32-hal`](https://github.com/kiffie/pic32-rs) - HAL for PIC32MX +- [`pic32-hal`](https://crates.io/crates/pic32-hal) - HAL for PIC32MX - ![crates.io](https://img.shields.io/crates/v/pic32-hal.svg) ### Nordic @@ -1018,6 +1018,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 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) +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) 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) 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) 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) From 5a8da47403de9d5ee0b99b8bdac7c4b06fa70a16 Mon Sep 17 00:00:00 2001 From: unrelentingtech Date: Fri, 31 Dec 2021 19:23:01 +0300 Subject: [PATCH 016/178] Add freebsd-embedded-hal --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index d6b64196..1881a9b3 100644 --- a/README.md +++ b/README.md @@ -303,10 +303,12 @@ Implementations of [`embedded-hal`] for microcontroller families and systems run - [`bitbang-hal`] software protocol implementations for microcontrollers with digital::OutputPin and digital::InputPin - [`ftdi-embedded-hal`] for FTDI FTx232H chips connected to Linux systems via USB - [`linux-embedded-hal`] for embedded Linux systems like the Raspberry Pi. - ![crates.io](https://img.shields.io/crates/v/linux-embedded-hal.svg) +- [`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) [`bitbang-hal`]: https://crates.io/crates/bitbang-hal [`ftdi-embedded-hal`]: https://crates.io/crates/ftdi-embedded-hal [`linux-embedded-hal`]: https://crates.io/crates/linux-embedded-hal +[`freebsd-embedded-hal`]: https://crates.io/crates/freebsd-embedded-hal ### Microchip From 4ff20edab43fdecb1bdf6d25c62303c8b6e45d4c Mon Sep 17 00:00:00 2001 From: Tyler Holmes Date: Sat, 8 Jan 2022 14:38:19 -0800 Subject: [PATCH 017/178] update with latest boards from atsamd-rs --- README.md | 230 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 132 insertions(+), 98 deletions(-) diff --git a/README.md b/README.md index 1881a9b3..cb2fde1e 100644 --- a/README.md +++ b/README.md @@ -12,71 +12,77 @@ This project is developed and maintained by the [Resources team][team]. ## Table of contents -* [Community](#community) - * [Community Chat Rooms](#community-chat-rooms) -* [Books, blogs and training materials](#books-blogs-and-training-materials) -* [Tools](#tools) -* [Real-time](#real-time) - * [Real-time Operating System](#real-time-operating-system-rtos) - * [Real-time tools](#real-time-tools) -* [Peripheral Access Crates](#peripheral-access-crates) - * [GigaDevice](#gigadevice) - * [Microchip](#microchip) - * [Nordic](#nordic) - * [NXP](#nxp) - * [Raspberry Pi Silicon](#raspberry-pi-silicon) - * [SiFive](#sifive) - * [Silicon Labs](#silicon-labs) - * [STMicroelectronics](#stmicroelectronics) - * [Texas Instruments](#texas-instruments) - * [MSP430](#msp430) - * [Ambiq Micro](#ambiq-micro) - * [XMC](#xmc) - * [Vorago](#vorago) -* [HAL implementation crates](#hal-implementation-crates) - * [OS](#os) - * [GigaDevice](#gigadevice-1) - * [Nordic](#nordic-1) - * [NXP](#nxp-1) - * [Raspberry Pi Silicon](#raspberry-pi-silicon-1) - * [SiFive](#sifive-1) - * [STMicroelectronics](#stmicroelectronics-1) - * [Texas Instruments](#texas-instruments-1) - * [MSP430](#msp430-1) - * [Espressif](#espressif) - * [Silicon Labs](#silicon-labs-1) - * [XMC](#xmc) - * [Vorago](#vorago-1) -* [Architecture support crates](#architecture-support-crates) - * [ARM](#arm) - * [RISC-V](#risc-v) - * [MIPS](#mips) -* [Board support crates](#board-support-crates) - * [1BitSquared](#1bitsquared) - * [Adafruit](#adafruit) - * [Arduino](#arduino) - * [Nordic](#nordic-2) - * [NXP](#nxp-2) - * [Pimoroni](#pimoroni) - * [Raspberry Pi](#raspberry-pi) - * [Sparkfun](#sparkfun) - * [SeeedStudio](#seeedstudio) - * [SiFive](#sifive-2) - * [Sipeed](#sipeed) - * [Sony](#sony) - * [STMicroelectronics](#stmicroelectronics-2) - * [Texas Instruments](#texas-instruments-2) - * [Teensy](#teensy) - * [Vorago](#vorago-2) - * [Special Purpose](#special-purpose) -* [Component abstraction crates](#component-abstraction-crates) -* [Driver crates](#driver-crates) - * [WIP](#wip) -* [no-std crates](#no-std-crates) - * [WIP](#wip-1) -* [Firmware projects](#firmware-projects) -* [Old books, blogs and training materials](#old-books-blogs-and-training-materials) -* [License](#license) +- [Embedded Rust](#embedded-rust) + - [Table of contents](#table-of-contents) + - [Community](#community) + - [Community Chat Rooms](#community-chat-rooms) + - [Books, blogs and training materials](#books-blogs-and-training-materials) + - [Tools](#tools) + - [Real-time](#real-time) + - [Real-time Operating System (RTOS)](#real-time-operating-system-rtos) + - [Real-time tools](#real-time-tools) + - [Peripheral Access Crates](#peripheral-access-crates) + - [Microchip](#microchip) + - [Nordic](#nordic) + - [NXP](#nxp) + - [Raspberry Pi Silicon](#raspberry-pi-silicon) + - [SiFive](#sifive) + - [Silicon Labs](#silicon-labs) + - [STMicroelectronics](#stmicroelectronics) + - [Texas Instruments](#texas-instruments) + - [MSP430](#msp430) + - [Ambiq Micro](#ambiq-micro) + - [GigaDevice](#gigadevice) + - [XMC](#xmc) + - [Vorago](#vorago) + - [HAL implementation crates](#hal-implementation-crates) + - [OS](#os) + - [Microchip](#microchip-1) + - [Nordic](#nordic-1) + - [NXP](#nxp-1) + - [Raspberry Pi Silicon](#raspberry-pi-silicon-1) + - [SiFive](#sifive-1) + - [STMicroelectronics](#stmicroelectronics-1) + - [Texas Instruments](#texas-instruments-1) + - [MSP430](#msp430-1) + - [Espressif](#espressif) + - [Silicon Labs](#silicon-labs-1) + - [XMC](#xmc-1) + - [GigaDevice](#gigadevice-1) + - [Vorago](#vorago-1) + - [Architecture support crates](#architecture-support-crates) + - [ARM](#arm) + - [RISC-V](#risc-v) + - [MIPS](#mips) + - [Board support crates](#board-support-crates) + - [1BitSquared](#1bitsquared) + - [Adafruit](#adafruit) + - [Arduino](#arduino) + - [Nordic](#nordic-2) + - [NXP](#nxp-2) + - [Pimoroni](#pimoroni) + - [Raspberry Pi](#raspberry-pi) + - [Sparkfun](#sparkfun) + - [SeeedStudio](#seeedstudio) + - [SiFive](#sifive-2) + - [Sipeed](#sipeed) + - [Sony](#sony) + - [STMicroelectronics](#stmicroelectronics-2) + - [Teensy](#teensy) + - [Vorago](#vorago-2) + - [Texas Instruments](#texas-instruments-2) + - [Special Purpose](#special-purpose) + - [Sodaq](#sodaq) + - [Other](#other) + - [Component abstraction crates](#component-abstraction-crates) + - [Driver crates](#driver-crates) + - [WIP](#wip) + - [no-std crates](#no-std-crates) + - [WIP](#wip-1) + - [Firmware projects](#firmware-projects) + - [Old books, blogs and training materials](#old-books-blogs-and-training-materials) + - [License](#license) + - [Code of Conduct](#code-of-conduct) ## Community @@ -188,6 +194,7 @@ Peripheral Access Crates were also called Device Crates. - [`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. - [`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. - [`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. +- [`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. - [`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. - [`avr-device`](https://github.com/Rahix/avr-device) Peripheral access API for Microchip (formerly Atmel) AVR microcontroller family. - [`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) @@ -449,6 +456,9 @@ Crates tailored for specific boards. [STM32F3DISCOVERY]: http://www.st.com/en/evaluation-tools/stm32f3discovery.html [STM32F4DISCOVERY]: https://www.st.com/en/evaluation-tools/stm32f4discovery.html [STM32F429DISCOVERY]: https://www.st.com/en/evaluation-tools/32f429idiscovery.html +[atsamd-rs]: https://github.com/atsamd-rs/atsamd +[atsamd-rs tier 1 support]: https://github.com/atsamd-rs/atsamd#how-to-use-a-bsp-ie-getting-started-writing-your-own-code +[atsamd-rs tier 2 support]: https://github.com/atsamd-rs/atsamd#how-to-use-a-bsp-ie-getting-started-writing-your-own-code ### 1BitSquared @@ -458,38 +468,48 @@ Crates tailored for specific boards. ### Adafruit -- [`metro_m0`](https://crates.io/crates/metro_m0) - Board support for the [Metro M0 board](https://www.adafruit.com/product/3505) - ![crates.io](https://img.shields.io/crates/v/metro_m0.svg) -- [`metro_m4`](https://crates.io/crates/metro_m4) - Board support for the [Metro M4 board](https://www.adafruit.com/product/3382) - ![crates.io](https://img.shields.io/crates/v/metro_m4.svg) -- [`pyportal`](https://crates.io/crates/pyportal) - Board support for the [PyPortal board](https://www.adafruit.com/product/4116) - ![crates.io](https://img.shields.io/crates/v/pyportal.svg) -- [`pygamer`](https://crates.io/crates/pygamer) - Board support for the [PyGamer board](https://www.adafruit.com/product/4242) - ![crates.io](https://img.shields.io/crates/v/pygamer.svg) -- [`trellis_m4`](https://crates.io/crates/trellis_m4) - Board support for the [NeoTrellis M4 board](https://www.adafruit.com/product/3938) - ![crates.io](https://img.shields.io/crates/v/trellis_m4.svg) -- [`feather-f405`](https://crates.io/crates/feather-f405) - Board support for the [Feather STM32F405 Express](https://www.adafruit.com/product/4382) ![crates.io](https://img.shields.io/crates/v/feather-f405.svg) -- [`feather_m0`](https://crates.io/crates/feather_m0) - Board support for the [Feather M0 board](https://www.adafruit.com/product/2772) ![crates.io](https://img.shields.io/crates/v/feather_m0.svg) -- [`feather_m4`](https://crates.io/crates/feather_m4) - Board support for the [Feather M4 board](https://www.adafruit.com/product/3857) - ![crates.io](https://img.shields.io/crates/v/feather_m4.svg) -- [`circuit_playground_express`](https://crates.io/crates/circuit_playground_express) - Board support for the [Circuit Playground Express board](https://www.adafruit.com/product/3333) - ![crates.io](https://img.shields.io/crates/v/circuit_playground_express.svg) -- [`edgebadge`](https://crates.io/crates/edgebadge) - Board support for the [EdgeBadge board](https://www.adafruit.com/product/4400) - ![crates.io](https://img.shields.io/crates/v/edgebadge.svg) -- [`gemma_m0`](https://crates.io/crates/gemma_m0) - Board support for the [Gemma M0 board](https://www.adafruit.com/product/3501) - ![crates.io](https://img.shields.io/crates/v/gemma_m0.svg) -- [`itsybitsy_m0`](https://crates.io/crates/itsybitsy_m0) - Board support for the [ItsyBitsy M0 board](https://www.adafruit.com/product/3727) - ![crates.io](https://img.shields.io/crates/v/itsybitsy_m0.svg) -- [`itsybitsy_m4`](https://crates.io/crates/itsybitsy_m4) - Board support for the [ItsyBitsy M4 Express board](https://www.adafruit.com/product/3800) - ![crates.io](https://img.shields.io/crates/v/itsybitsy_m4.svg) -- [`trinket_m0`](https://crates.io/crates/trinket_m0) - Board support for the [Trinket M0 board](https://www.adafruit.com/product/3500) - ![crates.io](https://img.shields.io/crates/v/trinket_m0.svg) -- [`adafruit-feather-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit Feather RP2040]. -- [`adafruit-itsy-bitsy-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit ItsyBitsy RP2040]. -- [`adafruit-kb2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit KB2040]. -- [`adafruit-macropad`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit Macropad]. -- [`adafruit-qt-py-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit QT Py RP2040]. - +- [`metro_m0`](https://crates.io/crates/metro_m0) - Board support for the [Metro M0 board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 1 support] support board. ![crates.io](https://img.shields.io/crates/v/metro_m0.svg) +- [`metro_m4`](https://crates.io/crates/metro_m4) - Board support for the [Metro M4 board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 1 support] support board. ![crates.io](https://img.shields.io/crates/v/metro_m4.svg) +- [`pyportal`](https://crates.io/crates/pyportal) - Board support for the [PyPortal board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/pyportal.svg) +- [`pygamer`](https://crates.io/crates/pygamer) - Board support for the [PyGamer board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 1 support] support board. ![crates.io](https://img.shields.io/crates/v/pygamer.svg) +- [`trellis_m4`](https://crates.io/crates/trellis_m4) - Board support for the [NeoTrellis M4 board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/trellis_m4.svg) +- [`feather-f405`](https://crates.io/crates/feather-f405) - Board support for the [Feather STM32F405 Express] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/feather-f405.svg) +- [`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 a [atsamd-rs tier 1 support] support board. ![crates.io](https://img.shields.io/crates/v/feather_m0.svg) +- [`feather_m4`](https://crates.io/crates/feather_m4) - Board support for the [Feather M4 board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 1 support] support board. ![crates.io](https://img.shields.io/crates/v/feather_m4.svg) +- [`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 a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/circuit_playground_express.svg) +- [`edgebadge`](https://crates.io/crates/edgebadge) - Board support for the [EdgeBadge board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/edgebadge.svg) +- [`gemma_m0`](https://crates.io/crates/gemma_m0) - Board support for the [Gemma M0 board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/gemma_m0.svg) +- [`itsybitsy_m0`](https://crates.io/crates/itsybitsy_m0) - Board support for the [ItsyBitsy M0 board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/itsybitsy_m0.svg) +- [`itsybitsy_m4`](https://crates.io/crates/itsybitsy_m4) - Board support for the [ItsyBitsy M4 Express board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/itsybitsy_m4.svg) +- [`trinket_m0`](https://crates.io/crates/trinket_m0) - Board support for the [Trinket M0 board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/trinket_m0.svg) +- [`neo_trinkey`](https://crates.io/crates/neo_trinkey) - Board support for the [neo trinkey board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/neo_trinkey.svg) +- [`neokey_trinkey`](https://crates.io/crates/neokey_trinkey) - Board support for the [neokey trinkey board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/neokey_trinkey.svg) +- [`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 a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/grand_central_m4.svg) +- [`qt_py_m0`](https://crates.io/crates/qt_py_m0) - Board support for the [QT Py board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/qt_py_m0.svg) +- [`adafruit-feather-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit Feather RP2040] ![crates.io](https://img.shields.io/crates/v/adafruit-feather-rp2040.svg) +- [`adafruit-itsy-bitsy-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit ItsyBitsy RP2040] ![crates.io](https://img.shields.io/crates/v/adafruit-itsy-bitsy-rp2040.svg) +- [`adafruit-kb2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit KB2040] ![crates.io](https://img.shields.io/crates/v/adafruit-kb2040.svg) +- [`adafruit-macropad`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit Macropad] ![crates.io](https://img.shields.io/crates/v/adafruit-macropad.svg) +- [`adafruit-qt-py-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit QT Py RP2040] ![crates.io](https://img.shields.io/crates/v/adafruit-qt-py-rp2040.svg) + +[Metro M0 board]: https://www.adafruit.com/product/3505 +[Metro M4 board]: https://www.adafruit.com/product/3382 +[PyPortal board]: https://www.adafruit.com/product/4116 +[PyGamer board]: https://www.adafruit.com/product/4242 +[NeoTrellis M4 board]: https://www.adafruit.com/product/3938 +[Feather STM32F405 Express]: https://www.adafruit.com/product/4382 +[Feather M0 board]: https://www.adafruit.com/product/2772 +[Feather M4 board]: https://www.adafruit.com/product/3857 +[Circuit Playground Express board]: https://www.adafruit.com/product/3333 +[EdgeBadge board]: https://www.adafruit.com/product/4400 +[Gemma M0 board]: https://www.adafruit.com/product/3501 +[ItsyBitsy M0 board]: https://www.adafruit.com/product/3727 +[ItsyBitsy M4 Express board]: https://www.adafruit.com/product/3800 +[Trinket M0 board]: https://www.adafruit.com/product/3500 +[neo trinkey board]: https://www.adafruit.com/product/4870 +[neokey trinkey board]: https://www.adafruit.com/product/5020 +[grand central m4 board]: https://www.adafruit.com/product/4064 +[QT Py board]: https://www.adafruit.com/product/4600 [Adafruit Feather RP2040]: https://www.adafruit.com/product/4884 [Adafruit ItsyBitsy RP2040]: https://www.adafruit.com/product/4888 [Adafruit KB2040]: https://www.adafruit.com/product/5302 @@ -499,6 +519,7 @@ Crates tailored for specific boards. ### Arduino - [`avr-hal`](https://github.com/Rahix/avr-hal) - Board support crate for several AVR-based boards including the Arduino Uno and the Arduino Leonardo +- [`arduino_mkr1000`](https://crates.io/crates/arduino_mkr1000) - Board support for the [MKR 1000 WiFi board](https://docs.arduino.cc/hardware/mkr-1000-wifi) ![crates.io](https://img.shields.io/crates/v/arduino_mkr1000.svg) - [`arduino_mkrvidor4000`](https://crates.io/crates/arduino_mkrvidor4000) - Board support for the [MKR Vidor board](https://store.arduino.cc/usa/mkr-vidor-4000) ![crates.io](https://img.shields.io/crates/v/arduino_mkrvidor4000.svg) - [`arduino_mkrzero`](https://crates.io/crates/arduino_mkrzero) - Board support for the [mkrzero board](https://store.arduino.cc/arduino-mkrzero) ![crates.io](https://img.shields.io/crates/v/arduino_mkrzero.svg) - [`arduino_nano33iot`](https://crates.io/crates/arduino_nano33iot) - Board support for the [Arduino Nano 33 IoT](https://store.arduino.cc/usa/nano-33-iot) ![crates.io](https://img.shields.io/crates/v/arduino_nano33iot.svg) @@ -545,7 +566,10 @@ Crates tailored for specific boards. - [`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) ![crates.io](https://img.shields.io/crates/v/seedstudio-gd32v.svg) - Contains runnable examples for this board -- [`xiao_m0`](https://crates.io/crates/xiao_m0) - Board support for the [Seeed Studio Seeeduino XIAO](http://wiki.seeedstudio.com/Seeeduino-XIAO/) ![crates.io](https://img.shields.io/crates/v/xiao_m0.svg) +- [`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 a [atsamd-rs tier 2 support] board ![crates.io](https://img.shields.io/crates/v/xiao_m0.svg) +- [`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 a [atsamd-rs tier 2 support] board ![crates.io](https://img.shields.io.crates/v/wio_lite_mg126.svg) +- [`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 a [atsamd-rs tier 2 support] board ![crates.io](https://img.shields.io.crates/v/wio_lite_w600.svg) +- [`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 a [atsamd-rs tier 1 support] board ![crates.io](https://img.shields.io.crates/v/wio_terminal.svg) ### SiFive @@ -592,6 +616,16 @@ Crates tailored for specific boards. - [`betafpv-f3`](https://github.com/JoshMcguigan/betafpv-f3) - For the BetaFPV F3 drone flight controller +### Sodaq + +- [`sodaq_one`](https://crates.io/crates/sodaq_one) - Board support for the [Sodaq one board](https://shop.sodaq.com/sodaq-one-eu-rn2483-v3.html) in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] board ![crates.io](https://img.shields.io/crates/v/sodaq_one.svg) +- [`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 a [atsamd-rs tier 2 support] board ![crates.io](https://img.shields.io/crates/v/sodaq_sara_aff.svg) + +### Other + +- [`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 a [atsamd-rs tier 2 support] board ![crates.io](https://img.shields.io/crates/v/serpente.svg) +- [`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 a [atsamd-rs tier 2 support] board ![crates.io](https://img.shields.io/crates/v/p1am_100.svg) + ## Component abstraction crates The following crates provide HAL-like abstractions for subcomponents of embedded From 1a90dadcfdae04d31f478079c0e0e898fd7598c9 Mon Sep 17 00:00:00 2001 From: Tyler Holmes Date: Sat, 8 Jan 2022 15:00:03 -0800 Subject: [PATCH 018/178] atsamd-rs does not support f405. whoops. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cb2fde1e..8522dad7 100644 --- a/README.md +++ b/README.md @@ -473,7 +473,7 @@ Crates tailored for specific boards. - [`pyportal`](https://crates.io/crates/pyportal) - Board support for the [PyPortal board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/pyportal.svg) - [`pygamer`](https://crates.io/crates/pygamer) - Board support for the [PyGamer board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 1 support] support board. ![crates.io](https://img.shields.io/crates/v/pygamer.svg) - [`trellis_m4`](https://crates.io/crates/trellis_m4) - Board support for the [NeoTrellis M4 board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/trellis_m4.svg) -- [`feather-f405`](https://crates.io/crates/feather-f405) - Board support for the [Feather STM32F405 Express] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/feather-f405.svg) +- [`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) - [`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 a [atsamd-rs tier 1 support] support board. ![crates.io](https://img.shields.io/crates/v/feather_m0.svg) - [`feather_m4`](https://crates.io/crates/feather_m4) - Board support for the [Feather M4 board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 1 support] support board. ![crates.io](https://img.shields.io/crates/v/feather_m4.svg) - [`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 a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/circuit_playground_express.svg) From c1fcfa6845d9da3fe0ff1243ef5e07b3eb0ef8f3 Mon Sep 17 00:00:00 2001 From: Tyler Holmes Date: Sat, 8 Jan 2022 19:03:46 -0800 Subject: [PATCH 019/178] remove top level heading --- README.md | 141 +++++++++++++++++++++++++++--------------------------- 1 file changed, 70 insertions(+), 71 deletions(-) diff --git a/README.md b/README.md index 8522dad7..afb5550d 100644 --- a/README.md +++ b/README.md @@ -12,77 +12,76 @@ This project is developed and maintained by the [Resources team][team]. ## Table of contents -- [Embedded Rust](#embedded-rust) - - [Table of contents](#table-of-contents) - - [Community](#community) - - [Community Chat Rooms](#community-chat-rooms) - - [Books, blogs and training materials](#books-blogs-and-training-materials) - - [Tools](#tools) - - [Real-time](#real-time) - - [Real-time Operating System (RTOS)](#real-time-operating-system-rtos) - - [Real-time tools](#real-time-tools) - - [Peripheral Access Crates](#peripheral-access-crates) - - [Microchip](#microchip) - - [Nordic](#nordic) - - [NXP](#nxp) - - [Raspberry Pi Silicon](#raspberry-pi-silicon) - - [SiFive](#sifive) - - [Silicon Labs](#silicon-labs) - - [STMicroelectronics](#stmicroelectronics) - - [Texas Instruments](#texas-instruments) - - [MSP430](#msp430) - - [Ambiq Micro](#ambiq-micro) - - [GigaDevice](#gigadevice) - - [XMC](#xmc) - - [Vorago](#vorago) - - [HAL implementation crates](#hal-implementation-crates) - - [OS](#os) - - [Microchip](#microchip-1) - - [Nordic](#nordic-1) - - [NXP](#nxp-1) - - [Raspberry Pi Silicon](#raspberry-pi-silicon-1) - - [SiFive](#sifive-1) - - [STMicroelectronics](#stmicroelectronics-1) - - [Texas Instruments](#texas-instruments-1) - - [MSP430](#msp430-1) - - [Espressif](#espressif) - - [Silicon Labs](#silicon-labs-1) - - [XMC](#xmc-1) - - [GigaDevice](#gigadevice-1) - - [Vorago](#vorago-1) - - [Architecture support crates](#architecture-support-crates) - - [ARM](#arm) - - [RISC-V](#risc-v) - - [MIPS](#mips) - - [Board support crates](#board-support-crates) - - [1BitSquared](#1bitsquared) - - [Adafruit](#adafruit) - - [Arduino](#arduino) - - [Nordic](#nordic-2) - - [NXP](#nxp-2) - - [Pimoroni](#pimoroni) - - [Raspberry Pi](#raspberry-pi) - - [Sparkfun](#sparkfun) - - [SeeedStudio](#seeedstudio) - - [SiFive](#sifive-2) - - [Sipeed](#sipeed) - - [Sony](#sony) - - [STMicroelectronics](#stmicroelectronics-2) - - [Teensy](#teensy) - - [Vorago](#vorago-2) - - [Texas Instruments](#texas-instruments-2) - - [Special Purpose](#special-purpose) - - [Sodaq](#sodaq) - - [Other](#other) - - [Component abstraction crates](#component-abstraction-crates) - - [Driver crates](#driver-crates) - - [WIP](#wip) - - [no-std crates](#no-std-crates) - - [WIP](#wip-1) - - [Firmware projects](#firmware-projects) - - [Old books, blogs and training materials](#old-books-blogs-and-training-materials) - - [License](#license) - - [Code of Conduct](#code-of-conduct) +- [Table of contents](#table-of-contents) +- [Community](#community) + - [Community Chat Rooms](#community-chat-rooms) +- [Books, blogs and training materials](#books-blogs-and-training-materials) +- [Tools](#tools) +- [Real-time](#real-time) + - [Real-time Operating System (RTOS)](#real-time-operating-system-rtos) + - [Real-time tools](#real-time-tools) +- [Peripheral Access Crates](#peripheral-access-crates) + - [Microchip](#microchip) + - [Nordic](#nordic) + - [NXP](#nxp) + - [Raspberry Pi Silicon](#raspberry-pi-silicon) + - [SiFive](#sifive) + - [Silicon Labs](#silicon-labs) + - [STMicroelectronics](#stmicroelectronics) + - [Texas Instruments](#texas-instruments) + - [MSP430](#msp430) + - [Ambiq Micro](#ambiq-micro) + - [GigaDevice](#gigadevice) + - [XMC](#xmc) + - [Vorago](#vorago) +- [HAL implementation crates](#hal-implementation-crates) + - [OS](#os) + - [Microchip](#microchip-1) + - [Nordic](#nordic-1) + - [NXP](#nxp-1) + - [Raspberry Pi Silicon](#raspberry-pi-silicon-1) + - [SiFive](#sifive-1) + - [STMicroelectronics](#stmicroelectronics-1) + - [Texas Instruments](#texas-instruments-1) + - [MSP430](#msp430-1) + - [Espressif](#espressif) + - [Silicon Labs](#silicon-labs-1) + - [XMC](#xmc-1) + - [GigaDevice](#gigadevice-1) + - [Vorago](#vorago-1) +- [Architecture support crates](#architecture-support-crates) + - [ARM](#arm) + - [RISC-V](#risc-v) + - [MIPS](#mips) +- [Board support crates](#board-support-crates) + - [1BitSquared](#1bitsquared) + - [Adafruit](#adafruit) + - [Arduino](#arduino) + - [Nordic](#nordic-2) + - [NXP](#nxp-2) + - [Pimoroni](#pimoroni) + - [Raspberry Pi](#raspberry-pi) + - [Sparkfun](#sparkfun) + - [SeeedStudio](#seeedstudio) + - [SiFive](#sifive-2) + - [Sipeed](#sipeed) + - [Sony](#sony) + - [STMicroelectronics](#stmicroelectronics-2) + - [Teensy](#teensy) + - [Vorago](#vorago-2) + - [Texas Instruments](#texas-instruments-2) + - [Special Purpose](#special-purpose) + - [Sodaq](#sodaq) + - [Other](#other) +- [Component abstraction crates](#component-abstraction-crates) +- [Driver crates](#driver-crates) + - [WIP](#wip) +- [no-std crates](#no-std-crates) + - [WIP](#wip-1) +- [Firmware projects](#firmware-projects) +- [Old books, blogs and training materials](#old-books-blogs-and-training-materials) +- [License](#license) +- [Code of Conduct](#code-of-conduct) ## Community From 074855b58391936c98493be5238634bb7b2e6173 Mon Sep 17 00:00:00 2001 From: Tyler Holmes Date: Sat, 8 Jan 2022 19:10:45 -0800 Subject: [PATCH 020/178] add atsamd room --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index afb5550d..8f2b7247 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [#rtic-rs:matrix.org] - For discussion of the Real-Time Interrupt-driven Concurrency framework - [#rust-embedded-graphics:matrix.org] - For discussion of the [`embedded-graphics`] crate and ecosystem - [#stm32-rs:matrix.org] - For discussion of using Embedded Rust on STM32 based devices +- [#atsamd-rs:gitter.im] - For discussions of using Embedded Rust on ATSAMD devices [#rust-embedded-graphics:matrix.org]: https://matrix.to/#/#rust-embedded-graphics:matrix.org [#esp-rs:matrix.org]: https://matrix.to/#/#esp-rs:matrix.org @@ -115,6 +116,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt [#stm32-rs:matrix.org]: https://matrix.to/#/#stm32-rs:matrix.org [#avr-rust:gitter.im]: https://matrix.to/#/#avr-rust_Lobby:gitter.im [#rp-rs:matrix.org]: https://matrix.to/#/#rp-rs:matrix.org +[#atsamd-rs:gitter.im]: https://matrix.to/#/#atsamd-rs_community:gitter.im ## Books, blogs and training materials From 9811f4a5d2c4b93d343d2298356a1ceb9cece351 Mon Sep 17 00:00:00 2001 From: Tyler Holmes Date: Mon, 10 Jan 2022 13:29:21 -0800 Subject: [PATCH 021/178] cleanup wording errors and add the language to some boards I missed --- README.md | 60 +++++++++++++++++++++++++++---------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 8f2b7247..469c1697 100644 --- a/README.md +++ b/README.md @@ -469,24 +469,24 @@ Crates tailored for specific boards. ### Adafruit -- [`metro_m0`](https://crates.io/crates/metro_m0) - Board support for the [Metro M0 board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 1 support] support board. ![crates.io](https://img.shields.io/crates/v/metro_m0.svg) -- [`metro_m4`](https://crates.io/crates/metro_m4) - Board support for the [Metro M4 board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 1 support] support board. ![crates.io](https://img.shields.io/crates/v/metro_m4.svg) -- [`pyportal`](https://crates.io/crates/pyportal) - Board support for the [PyPortal board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/pyportal.svg) -- [`pygamer`](https://crates.io/crates/pygamer) - Board support for the [PyGamer board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 1 support] support board. ![crates.io](https://img.shields.io/crates/v/pygamer.svg) -- [`trellis_m4`](https://crates.io/crates/trellis_m4) - Board support for the [NeoTrellis M4 board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/trellis_m4.svg) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) - [`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) -- [`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 a [atsamd-rs tier 1 support] support board. ![crates.io](https://img.shields.io/crates/v/feather_m0.svg) -- [`feather_m4`](https://crates.io/crates/feather_m4) - Board support for the [Feather M4 board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 1 support] support board. ![crates.io](https://img.shields.io/crates/v/feather_m4.svg) -- [`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 a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/circuit_playground_express.svg) -- [`edgebadge`](https://crates.io/crates/edgebadge) - Board support for the [EdgeBadge board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/edgebadge.svg) -- [`gemma_m0`](https://crates.io/crates/gemma_m0) - Board support for the [Gemma M0 board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/gemma_m0.svg) -- [`itsybitsy_m0`](https://crates.io/crates/itsybitsy_m0) - Board support for the [ItsyBitsy M0 board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/itsybitsy_m0.svg) -- [`itsybitsy_m4`](https://crates.io/crates/itsybitsy_m4) - Board support for the [ItsyBitsy M4 Express board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/itsybitsy_m4.svg) -- [`trinket_m0`](https://crates.io/crates/trinket_m0) - Board support for the [Trinket M0 board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/trinket_m0.svg) -- [`neo_trinkey`](https://crates.io/crates/neo_trinkey) - Board support for the [neo trinkey board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/neo_trinkey.svg) -- [`neokey_trinkey`](https://crates.io/crates/neokey_trinkey) - Board support for the [neokey trinkey board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/neokey_trinkey.svg) -- [`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 a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/grand_central_m4.svg) -- [`qt_py_m0`](https://crates.io/crates/qt_py_m0) - Board support for the [QT Py board] in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] support board. ![crates.io](https://img.shields.io/crates/v/qt_py_m0.svg) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) - [`adafruit-feather-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit Feather RP2040] ![crates.io](https://img.shields.io/crates/v/adafruit-feather-rp2040.svg) - [`adafruit-itsy-bitsy-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit ItsyBitsy RP2040] ![crates.io](https://img.shields.io/crates/v/adafruit-itsy-bitsy-rp2040.svg) - [`adafruit-kb2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit KB2040] ![crates.io](https://img.shields.io/crates/v/adafruit-kb2040.svg) @@ -520,10 +520,10 @@ Crates tailored for specific boards. ### Arduino - [`avr-hal`](https://github.com/Rahix/avr-hal) - Board support crate for several AVR-based boards including the Arduino Uno and the Arduino Leonardo -- [`arduino_mkr1000`](https://crates.io/crates/arduino_mkr1000) - Board support for the [MKR 1000 WiFi board](https://docs.arduino.cc/hardware/mkr-1000-wifi) ![crates.io](https://img.shields.io/crates/v/arduino_mkr1000.svg) -- [`arduino_mkrvidor4000`](https://crates.io/crates/arduino_mkrvidor4000) - Board support for the [MKR Vidor board](https://store.arduino.cc/usa/mkr-vidor-4000) ![crates.io](https://img.shields.io/crates/v/arduino_mkrvidor4000.svg) -- [`arduino_mkrzero`](https://crates.io/crates/arduino_mkrzero) - Board support for the [mkrzero board](https://store.arduino.cc/arduino-mkrzero) ![crates.io](https://img.shields.io/crates/v/arduino_mkrzero.svg) -- [`arduino_nano33iot`](https://crates.io/crates/arduino_nano33iot) - Board support for the [Arduino Nano 33 IoT](https://store.arduino.cc/usa/nano-33-iot) ![crates.io](https://img.shields.io/crates/v/arduino_nano33iot.svg) +- [`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) +- [`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) +- [`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) +- [`arduino_nano33iot`](https://crates.io/crates/arduino_nano33iot) - Board support for the [Arduino Nano 33 IoT](https://store.arduino.cc/usa/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) ### Nordic @@ -559,7 +559,7 @@ Crates tailored for specific boards. ### Sparkfun -- [`samd21_mini`](https://crates.io/crates/samd21_mini) - Board support for the [SAMD21 Mini Breakout](https://www.sparkfun.com/products/13664) ![crates.io](https://img.shields.io/crates/v/samd21_mini.svg) +- [`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) - [`sparkfun-pro-micro-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the RP2040 based Sparkfun Pro Micro. ### SeeedStudio @@ -567,10 +567,10 @@ Crates tailored for specific boards. - [`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) ![crates.io](https://img.shields.io/crates/v/seedstudio-gd32v.svg) - Contains runnable examples for this board -- [`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 a [atsamd-rs tier 2 support] board ![crates.io](https://img.shields.io/crates/v/xiao_m0.svg) -- [`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 a [atsamd-rs tier 2 support] board ![crates.io](https://img.shields.io.crates/v/wio_lite_mg126.svg) -- [`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 a [atsamd-rs tier 2 support] board ![crates.io](https://img.shields.io.crates/v/wio_lite_w600.svg) -- [`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 a [atsamd-rs tier 1 support] board ![crates.io](https://img.shields.io.crates/v/wio_terminal.svg) +- [`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) +- [`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) +- [`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) +- [`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) ### SiFive @@ -619,13 +619,13 @@ Crates tailored for specific boards. ### Sodaq -- [`sodaq_one`](https://crates.io/crates/sodaq_one) - Board support for the [Sodaq one board](https://shop.sodaq.com/sodaq-one-eu-rn2483-v3.html) in the [atsamd-rs] repo. It is a [atsamd-rs tier 2 support] board ![crates.io](https://img.shields.io/crates/v/sodaq_one.svg) -- [`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 a [atsamd-rs tier 2 support] board ![crates.io](https://img.shields.io/crates/v/sodaq_sara_aff.svg) +- [`sodaq_one`](https://crates.io/crates/sodaq_one) - Board support for the [Sodaq one board](https://shop.sodaq.com/sodaq-one-eu-rn2483-v3.html) 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) +- [`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) ### Other -- [`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 a [atsamd-rs tier 2 support] board ![crates.io](https://img.shields.io/crates/v/serpente.svg) -- [`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 a [atsamd-rs tier 2 support] board ![crates.io](https://img.shields.io/crates/v/p1am_100.svg) +- [`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) +- [`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) ## Component abstraction crates From ae850f392339c15ed1ad5aa30fcbd8837d4bb9e5 Mon Sep 17 00:00:00 2001 From: chrysn Date: Tue, 11 Jan 2022 20:43:57 +0100 Subject: [PATCH 022/178] Add RIOT to RTOS list --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 469c1697..8d6e3cc8 100644 --- a/README.md +++ b/README.md @@ -168,6 +168,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [Drone OS](https://drone-os.github.io) An Embedded Operating System for writing real-time applications in Rust. - [FreeRTOS.rs](https://github.com/hashmismatch/freertos.rs) Rust interface for the FreeRTOS API - [FreeRTOS-rust](https://github.com/lobaro/FreeRTOS-rust) Rust interface for FreeRTOS with Rust entry point and build support crate. +- [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. - [Tock](https://www.tockos.org) An embedded operating system designed for running multiple concurrent, mutually distrustful applications on low-memory and low-power microcontrollers - [Hubris](https://github.com/oxidecomputer/hubris) A real-time operating systems built by Oxide Computer to run the Service Controller processor in the mainboards of their rack-mount servers. From c514206922736cd2b8d2907e59f939e2866b3982 Mon Sep 17 00:00:00 2001 From: Ulf Lilleengen Date: Mon, 17 Jan 2022 15:23:07 +0100 Subject: [PATCH 023/178] Add entries for drogue projects and lorawan projects --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 8d6e3cc8..fda9fd4a 100644 --- a/README.md +++ b/README.md @@ -1052,6 +1052,8 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [dcmimu]: An algorithm for fusing low-cost triaxial MEMS gyroscope and accelerometer measurements ![crates.io](https://img.shields.io/crates/v/dcmimu.svg) 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) 1. [device-driver]: A toolkit to write better device drivers, faster. ![crates.io](https://img.shields.io/crates/v/device-driver.svg) +1. [drogue-device](https://github.com/drogue-iot/drogue-device): An async actor framework for embedded, based on embassy. +1. [drogue-tls](https://github.com/drogue-iot/drogue-tls): A TLS 1.3 implementation that runs in a no-std environment. 1. [embassy]: A set of embedded async tools to make async/await a first-class option for embedded development 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) 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) @@ -1064,6 +1066,8 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [infrared](https://crates.io/crates/infrared): infrared remote control library for embedded rust - ![crates.io](https://img.shields.io/crates/v/infrared.svg) 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) 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) +1. [lorawan-encoding](https://github.com/ivajloip/rust-lorawan/tree/master/encoding): A LoRaWAN packet codec. +1. [lorawan-device](https://github.com/ivajloip/rust-lorawan/tree/master/device): A LoRaWAN MAC implementation supporting both event driven and async mode. 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) 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) 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) From 76a15e3c77eff4e026f77566beedff0300c7519c Mon Sep 17 00:00:00 2001 From: Diego Barrios Romero Date: Tue, 25 Jan 2022 22:03:20 +0100 Subject: [PATCH 024/178] Clarify released driver section requisites --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index fda9fd4a..034e8588 100644 --- a/README.md +++ b/README.md @@ -650,10 +650,11 @@ traits][hal-impl]. [hal-impl]: #hal-implementation-crates -The list below contains drivers developed as part of the [Weekly Driver initiative][wd] and that -have achieved the "released" status (published on crates.io + documentation / short blog post). - -[wd]: https://github.com/rust-embedded/wg/issues/39 +The list below contains drivers that have achieved the "released" status. In order to add a driver +to this list, please ensure that your driver has a short blog post, article or sufficiently +explanatory README showing an example of its use. Ideally this post would demonstrate using the +device in a small project so that a Rust and/or embedded newcomer can also understand it. +Otherwise please add it to the [WIP section][#WIP] below. 1. [AD983x] - SPI - AD9833/AD9837 waveform generators / DDS - [Intro blog post][25] - ![crates.io](https://img.shields.io/crates/v/ad983x.svg) 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) From 5fb7340fb0afbc76f5762e47362039d45441e323 Mon Sep 17 00:00:00 2001 From: Diego Barrios Romero Date: Wed, 26 Jan 2022 08:51:29 +0100 Subject: [PATCH 025/178] Fix WIP section link --- README.md | 143 +++++++++++++++++++++++++++--------------------------- 1 file changed, 72 insertions(+), 71 deletions(-) diff --git a/README.md b/README.md index 034e8588..385dc00c 100644 --- a/README.md +++ b/README.md @@ -12,76 +12,77 @@ This project is developed and maintained by the [Resources team][team]. ## Table of contents -- [Table of contents](#table-of-contents) -- [Community](#community) - - [Community Chat Rooms](#community-chat-rooms) -- [Books, blogs and training materials](#books-blogs-and-training-materials) -- [Tools](#tools) -- [Real-time](#real-time) - - [Real-time Operating System (RTOS)](#real-time-operating-system-rtos) - - [Real-time tools](#real-time-tools) -- [Peripheral Access Crates](#peripheral-access-crates) - - [Microchip](#microchip) - - [Nordic](#nordic) - - [NXP](#nxp) - - [Raspberry Pi Silicon](#raspberry-pi-silicon) - - [SiFive](#sifive) - - [Silicon Labs](#silicon-labs) - - [STMicroelectronics](#stmicroelectronics) - - [Texas Instruments](#texas-instruments) - - [MSP430](#msp430) - - [Ambiq Micro](#ambiq-micro) - - [GigaDevice](#gigadevice) - - [XMC](#xmc) - - [Vorago](#vorago) -- [HAL implementation crates](#hal-implementation-crates) - - [OS](#os) - - [Microchip](#microchip-1) - - [Nordic](#nordic-1) - - [NXP](#nxp-1) - - [Raspberry Pi Silicon](#raspberry-pi-silicon-1) - - [SiFive](#sifive-1) - - [STMicroelectronics](#stmicroelectronics-1) - - [Texas Instruments](#texas-instruments-1) - - [MSP430](#msp430-1) - - [Espressif](#espressif) - - [Silicon Labs](#silicon-labs-1) - - [XMC](#xmc-1) - - [GigaDevice](#gigadevice-1) - - [Vorago](#vorago-1) -- [Architecture support crates](#architecture-support-crates) - - [ARM](#arm) - - [RISC-V](#risc-v) - - [MIPS](#mips) -- [Board support crates](#board-support-crates) - - [1BitSquared](#1bitsquared) - - [Adafruit](#adafruit) - - [Arduino](#arduino) - - [Nordic](#nordic-2) - - [NXP](#nxp-2) - - [Pimoroni](#pimoroni) - - [Raspberry Pi](#raspberry-pi) - - [Sparkfun](#sparkfun) - - [SeeedStudio](#seeedstudio) - - [SiFive](#sifive-2) - - [Sipeed](#sipeed) - - [Sony](#sony) - - [STMicroelectronics](#stmicroelectronics-2) - - [Teensy](#teensy) - - [Vorago](#vorago-2) - - [Texas Instruments](#texas-instruments-2) - - [Special Purpose](#special-purpose) - - [Sodaq](#sodaq) - - [Other](#other) -- [Component abstraction crates](#component-abstraction-crates) -- [Driver crates](#driver-crates) - - [WIP](#wip) -- [no-std crates](#no-std-crates) - - [WIP](#wip-1) -- [Firmware projects](#firmware-projects) -- [Old books, blogs and training materials](#old-books-blogs-and-training-materials) -- [License](#license) -- [Code of Conduct](#code-of-conduct) +- [Embedded Rust](#embedded-rust) + - [Table of contents](#table-of-contents) + - [Community](#community) + - [Community Chat Rooms](#community-chat-rooms) + - [Books, blogs and training materials](#books-blogs-and-training-materials) + - [Tools](#tools) + - [Real-time](#real-time) + - [Real-time Operating System (RTOS)](#real-time-operating-system-rtos) + - [Real-time tools](#real-time-tools) + - [Peripheral Access Crates](#peripheral-access-crates) + - [Microchip](#microchip) + - [Nordic](#nordic) + - [NXP](#nxp) + - [Raspberry Pi Silicon](#raspberry-pi-silicon) + - [SiFive](#sifive) + - [Silicon Labs](#silicon-labs) + - [STMicroelectronics](#stmicroelectronics) + - [Texas Instruments](#texas-instruments) + - [MSP430](#msp430) + - [Ambiq Micro](#ambiq-micro) + - [GigaDevice](#gigadevice) + - [XMC](#xmc) + - [Vorago](#vorago) + - [HAL implementation crates](#hal-implementation-crates) + - [OS](#os) + - [Microchip](#microchip-1) + - [Nordic](#nordic-1) + - [NXP](#nxp-1) + - [Raspberry Pi Silicon](#raspberry-pi-silicon-1) + - [SiFive](#sifive-1) + - [STMicroelectronics](#stmicroelectronics-1) + - [Texas Instruments](#texas-instruments-1) + - [MSP430](#msp430-1) + - [Espressif](#espressif) + - [Silicon Labs](#silicon-labs-1) + - [XMC](#xmc-1) + - [GigaDevice](#gigadevice-1) + - [Vorago](#vorago-1) + - [Architecture support crates](#architecture-support-crates) + - [ARM](#arm) + - [RISC-V](#risc-v) + - [MIPS](#mips) + - [Board support crates](#board-support-crates) + - [1BitSquared](#1bitsquared) + - [Adafruit](#adafruit) + - [Arduino](#arduino) + - [Nordic](#nordic-2) + - [NXP](#nxp-2) + - [Pimoroni](#pimoroni) + - [Raspberry Pi](#raspberry-pi) + - [Sparkfun](#sparkfun) + - [SeeedStudio](#seeedstudio) + - [SiFive](#sifive-2) + - [Sipeed](#sipeed) + - [Sony](#sony) + - [STMicroelectronics](#stmicroelectronics-2) + - [Teensy](#teensy) + - [Vorago](#vorago-2) + - [Texas Instruments](#texas-instruments-2) + - [Special Purpose](#special-purpose) + - [Sodaq](#sodaq) + - [Other](#other) + - [Component abstraction crates](#component-abstraction-crates) + - [Driver crates](#driver-crates) + - [WIP](#wip) + - [no-std crates](#no-std-crates) + - [WIP](#wip-1) + - [Firmware projects](#firmware-projects) + - [Old books, blogs and training materials](#old-books-blogs-and-training-materials) + - [License](#license) + - [Code of Conduct](#code-of-conduct) ## Community @@ -654,7 +655,7 @@ The list below contains drivers that have achieved the "released" status. In ord to this list, please ensure that your driver has a short blog post, article or sufficiently explanatory README showing an example of its use. Ideally this post would demonstrate using the device in a small project so that a Rust and/or embedded newcomer can also understand it. -Otherwise please add it to the [WIP section][#WIP] below. +Otherwise please add it to the [WIP section](#WIP) below. 1. [AD983x] - SPI - AD9833/AD9837 waveform generators / DDS - [Intro blog post][25] - ![crates.io](https://img.shields.io/crates/v/ad983x.svg) 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) From 35c8e3956af50d733e1c153d5b346b46e15ada4e Mon Sep 17 00:00:00 2001 From: Anton Lazarev Date: Thu, 5 Nov 2020 03:02:08 -0500 Subject: [PATCH 026/178] add ssd1309 to README --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 385dc00c..c59d3cb8 100644 --- a/README.md +++ b/README.md @@ -703,6 +703,7 @@ Otherwise please add it to the [WIP section](#WIP) below. 1. [Si4703] - I2C - FM radio turner (receiver) driver - [Intro blog post][31] - ![crates.io](https://img.shields.io/crates/v/si4703.svg) 1. [SRAM23x] - SPI - Microchip 23x series serial SRAM/NVSRAM driver - [Intro blog post][51] - ![crates.io](https://img.shields.io/crates/v/sram23x.svg) 1. [SSD1306] - I2C/SPI - OLED display controller - [Intro blog post][8] - ![crates.io](https://img.shields.io/crates/v/ssd1306.svg) +1. [SSD1309] - I2C/SPI - OLED display controller - [Intro blog post][60] - ![crates.io](https://img.shields.io/crates/v/ssd1309.svg) 1. [STSPIN220] - STSPIN220 Stepper Motor Driver (based on [Stepper]) - [Intro blog post][52] - ![crates.io](https://img.shields.io/crates/v/stspin220.svg) 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) 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) @@ -781,6 +782,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [57]: https://github.com/yannart/rainbow-hat-rs [58]: https://blog.rahix.de/port-expander/ [59]: https://robamu.github.io/post/max11619-driver-rust/ +[60]: https://antonok.com/projects/ssd1309 [AD983x]: https://crates.io/crates/ad983x [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 @@ -826,7 +828,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [Si4703]: https://crates.io/crates/si4703 [SRAM23x]: https://crates.io/crates/sram23x [SSD1306]: https://crates.io/crates/ssd1306 -[STSPIN220]: https://crates.io/crates/stspin220 +[SSD1309]: https://crates.io/crates/ssd1309 [Sx127x]: https://crates.io/crates/radio-sx127x [Sx128x]: https://crates.io/crates/radio-sx128x [TC72]: https://crates.io/crates/microchip-tc72r-rs From 2e7de1056340b41ddb7180de9af07b6986fe2492 Mon Sep 17 00:00:00 2001 From: Diego Barrios Romero Date: Wed, 26 Jan 2022 21:49:16 +0100 Subject: [PATCH 027/178] Fix SSD1309/STSPIN220 crate links --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c59d3cb8..e886420d 100644 --- a/README.md +++ b/README.md @@ -829,6 +829,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [SRAM23x]: https://crates.io/crates/sram23x [SSD1306]: https://crates.io/crates/ssd1306 [SSD1309]: https://crates.io/crates/ssd1309 +[STSPIN220]: https://crates.io/crates/stspin220 [Sx127x]: https://crates.io/crates/radio-sx127x [Sx128x]: https://crates.io/crates/radio-sx128x [TC72]: https://crates.io/crates/microchip-tc72r-rs From 6e6c628029af54642a3aff1bb8d0080683f0cc38 Mon Sep 17 00:00:00 2001 From: Rikard Anglerud Date: Sun, 6 Feb 2022 20:38:26 +0000 Subject: [PATCH 028/178] Add an alternative AHT20 driver --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index e886420d..17b5dfa1 100644 --- a/README.md +++ b/README.md @@ -664,6 +664,7 @@ Otherwise please add it to the [WIP section](#WIP) below. 1. [ADXL343] - I2C - 3-axis accelerometer - ![crates.io](https://img.shields.io/crates/v/adxl343.svg) 1. [ADXL355] - SPI - 3-axis accelerometer - [Intro blog post][43] - ![crates.io](https://img.shields.io/crates/v/adxl355.svg) 1. [AHT20] - I2C - Humidity and temperature sensor - [github](https://github.com/chocol4te/aht20) - ![crates.io](https://img.shields.io/crates/v/aht20.svg) +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) 1. [AnyLeaf] - I2C - pH sensor module - [github](https://github.com/AnyLeaf/ph-rust) - ![crates.io](https://img.shields.io/crates/v/anyleaf.svg) 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) 1. [BlueNRG] - SPI - driver for BlueNRG-MS Bluetooth module - [Intro post][15] ![crates.io](https://img.shields.io/crates/v/bluenrg.svg) @@ -783,6 +784,8 @@ Otherwise please add it to the [WIP section](#WIP) below. [58]: https://blog.rahix.de/port-expander/ [59]: https://robamu.github.io/post/max11619-driver-rust/ [60]: https://antonok.com/projects/ssd1309 +[61]: http://www.rawmeat.org/code/20220130-aht20_driver/ +[62]: https://github.com/anglerud/aht20-driver [AD983x]: https://crates.io/crates/ad983x [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 @@ -791,6 +794,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [ADXL343]: https://crates.io/crates/adxl343 [ADXL355]: https://crates.io/crates/adxl355 [AHT20]: https://crates.io/crates/aht20 +[AHT20-driver]: https://crates.io/crates/aht20-driver [AnyLeaf]: https://crates.io/crates/anyleaf [at86rf212]: https://crates.io/crates/radio-at86rf212 [BlueNRG]: https://crates.io/crates/bluenrg From 7c66bbd29e48734a7bf6a50efb476e6e4e8f930b Mon Sep 17 00:00:00 2001 From: Oyren Date: Sun, 13 Feb 2022 17:24:01 +0100 Subject: [PATCH 029/178] Add minimq to the list of no-std crates --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 17b5dfa1..2388de2e 100644 --- a/README.md +++ b/README.md @@ -1082,6 +1082,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 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) +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) 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) 1. [nom](https://crates.io/crates/nom): parser combinator framework - ![crates.io](https://img.shields.io/crates/v/nom.svg) 1. [null-terminated](https://crates.io/crates/null-terminated): generic null-terminated arrays - ![crates.io](https://img.shields.io/crates/v/null-terminated.svg) From 93a2ce08f570cd953522229ae7e6f7ff04c09aa3 Mon Sep 17 00:00:00 2001 From: Diego Barrios Romero Date: Thu, 17 Feb 2022 21:24:28 +0100 Subject: [PATCH 030/178] Add dummy-pin and inverted-pin utility crates --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 2388de2e..111b7cef 100644 --- a/README.md +++ b/README.md @@ -1063,6 +1063,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [device-driver]: A toolkit to write better device drivers, faster. ![crates.io](https://img.shields.io/crates/v/device-driver.svg) 1. [drogue-device](https://github.com/drogue-iot/drogue-device): An async actor framework for embedded, based on embassy. 1. [drogue-tls](https://github.com/drogue-iot/drogue-tls): A TLS 1.3 implementation that runs in a no-std environment. +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) 1. [embassy]: A set of embedded async tools to make async/await a first-class option for embedded development 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) 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) @@ -1074,6 +1075,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 1. [infrared](https://crates.io/crates/infrared): infrared remote control library for embedded rust - ![crates.io](https://img.shields.io/crates/v/infrared.svg) 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) +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) 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) 1. [lorawan-encoding](https://github.com/ivajloip/rust-lorawan/tree/master/encoding): A LoRaWAN packet codec. 1. [lorawan-device](https://github.com/ivajloip/rust-lorawan/tree/master/device): A LoRaWAN MAC implementation supporting both event driven and async mode. From dd0952e7881c144bd142989636ca96c7d3bf4215 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Aillet Date: Sun, 20 Feb 2022 21:01:08 +0100 Subject: [PATCH 031/178] Add Ft6x36 touch screen driver --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 2388de2e..32179985 100644 --- a/README.md +++ b/README.md @@ -879,6 +879,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [epd-waveshare] - SPI - driver for E-Paper Modules from Waveshare ![crates.io](https://img.shields.io/crates/v/epd-waveshare.svg) 1. [embedded-morse] - Output morse messages - ![crates.io](https://img.shields.io/crates/v/embedded-morse.svg) 1. [embedded-nrf24l01] - SPI+GPIO - 2.4 GHz radio +1. [Ft6x36] - I2C - Rust driver for focal tech touch screen FT6236, FT6336 - ![crates.io](https://img.shields.io/crates/v/ft6x36.svg) 1. [GridEYE] - I2C - Rust driver for Grid-EYE / Panasonic AMG88(33) - ![crates.io](https://img.shields.io/crates/v/GridEYE.svg) 1. [HC-SR04] - DIO - Ultrasound sensor 1. [HD44780-driver] - GPIO - LCD controller - ![crates.io](https://img.shields.io/crates/v/hd44780-driver.svg) @@ -968,6 +969,7 @@ Work in progress drivers. Help the authors make these crates awesome! [epd-waveshare]: https://crates.io/crates/epd-waveshare [embedded-morse]: https://crates.io/crates/embedded-morse [embedded-nrf24l01]: https://crates.io/crates/embedded-nrf24l01 +[Ft6x36]: https://crates.io/crates/ft6x36 [GridEYE]: https://crates.io/crates/grideye [HC-12]: https://crates.io/crates/hc12-at [HC-SR04]: https://github.com/nordmoen/hc-sr04 From 2eec2935d38b6552857197458928323207ee24bd Mon Sep 17 00:00:00 2001 From: Pierre-Yves Aillet Date: Sun, 20 Feb 2022 21:01:08 +0100 Subject: [PATCH 032/178] Add grove matrix led my-9221 driver --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 32179985..ec6e3130 100644 --- a/README.md +++ b/README.md @@ -880,6 +880,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [embedded-morse] - Output morse messages - ![crates.io](https://img.shields.io/crates/v/embedded-morse.svg) 1. [embedded-nrf24l01] - SPI+GPIO - 2.4 GHz radio 1. [Ft6x36] - I2C - Rust driver for focal tech touch screen FT6236, FT6336 - ![crates.io](https://img.shields.io/crates/v/ft6x36.svg) +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) 1. [GridEYE] - I2C - Rust driver for Grid-EYE / Panasonic AMG88(33) - ![crates.io](https://img.shields.io/crates/v/GridEYE.svg) 1. [HC-SR04] - DIO - Ultrasound sensor 1. [HD44780-driver] - GPIO - LCD controller - ![crates.io](https://img.shields.io/crates/v/hd44780-driver.svg) @@ -970,6 +971,7 @@ Work in progress drivers. Help the authors make these crates awesome! [embedded-morse]: https://crates.io/crates/embedded-morse [embedded-nrf24l01]: https://crates.io/crates/embedded-nrf24l01 [Ft6x36]: https://crates.io/crates/ft6x36 +[grove-matrix-led-my9221-rs]: https://crates.io/crates/grove-matrix-led-my9221-rs [GridEYE]: https://crates.io/crates/grideye [HC-12]: https://crates.io/crates/hc12-at [HC-SR04]: https://github.com/nordmoen/hc-sr04 From 12763a232dd886c5d532e80f51b074404454dce7 Mon Sep 17 00:00:00 2001 From: VersBinarii Date: Mon, 28 Mar 2022 14:00:59 +0200 Subject: [PATCH 033/178] Add Embedded Rust series video playlist --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 12b2b42b..f492047a 100644 --- a/README.md +++ b/README.md @@ -132,6 +132,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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 harware. This training was given at Oxidize Conferences and by [Ferrous Systems] to corporate customers. - [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. - [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. +- [Embedded Rust programming playlist](https://www.youtube.com/playlist?list=PLP_X41VhYn5X6Wwjnm0bRwI3n2pdaszxU) Various livestreams with Embedded Rust live coding [Ferrous Systems]: https://ferrous-systems.com From e4b1b96dddcec4939c4b37bc40163a87827c63d1 Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Tue, 29 Mar 2022 14:32:12 +0200 Subject: [PATCH 034/178] Add Espressif content --- README.md | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 12b2b42b..833263cd 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ This project is developed and maintained by the [Resources team][team]. - [STMicroelectronics](#stmicroelectronics) - [Texas Instruments](#texas-instruments) - [MSP430](#msp430) + - [Espressif](#espressif) - [Ambiq Micro](#ambiq-micro) - [GigaDevice](#gigadevice) - [XMC](#xmc) @@ -45,7 +46,7 @@ This project is developed and maintained by the [Resources team][team]. - [STMicroelectronics](#stmicroelectronics-1) - [Texas Instruments](#texas-instruments-1) - [MSP430](#msp430-1) - - [Espressif](#espressif) + - [Espressif](#espressif-1) - [Silicon Labs](#silicon-labs-1) - [XMC](#xmc-1) - [GigaDevice](#gigadevice-1) @@ -96,7 +97,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [embedded.rs-wasm-iot] - English Telegram chat about Rust and WASM for microcontrollers and IoT - [embedded.rs] - Telegram chat about Rust for microcontrollers in the Russian language. - [#avr-rust:gitter.im] - For discussion of using Embedded Rust on AVR devices -- [#esp-rs:matrix.org] - For discussion of using Embedded Rust on Xtensa devices +- [#esp-rs:matrix.org] - For discussion of using Embedded Rust on Espressif devices - [#nrf-rs:matrix.org] - For discussion of using Embedded Rust on Nordic Semiconductor devices - [#probe-rs:matrix.org] - For discussion of the Probe-rs debugging toolkit - [#rp-rs:matrix.org] - For discussion of using Embedded Rust on RP2040 based devices @@ -122,6 +123,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt ## Books, blogs and training materials - [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. +- [The Rust on ESP Book](https://esp-rs.github.io/book/) - The goal of this book is to provide a comprehensive guide on using the Rust programming language with Espressif SoCs and modules. - [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 - [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 to embedded development but new to embedded Rust. - [Writing an OS in rust](https://os.phil-opp.com/) A blog series creating a small operating system in Rust @@ -131,6 +133,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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/) - [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 harware. This training was given at Oxidize Conferences and by [Ferrous Systems] to corporate customers. - [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. +- [Ferrous Systems' Embedded Rust on Espressif](https://espressif-trainings.ferrous-systems.com/) - Training Material for learning to use Embedded Rust with the Espressif ESP32-C3. - [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. [Ferrous Systems]: https://ferrous-systems.com @@ -267,6 +270,14 @@ The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral ac - [`msp430fr2355`](https://crates.io/crates/msp430fr2355) Peripheral access API for MSP430FR2355 microcontrollers (generated using svd2rust) - [`msp430fr6972`](https://crates.io/crates/msp430fr6972) - ![Crates.io](https://img.shields.io/crates/v/msp430fr6972) +### Espressif + +- [`esp32`](https://github.com/esp-rs/esp-pacs/tree/main/esp32) - ![crates.io](https://img.shields.io/crates/v/esp32.svg) +- [`esp32c3`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c3) - ![crates.io](https://img.shields.io/crates/v/esp32c3.svg) +- [`esp32s2`](https://github.com/esp-rs/esp-pacs/tree/main/esp32s2) - ![crates.io](https://img.shields.io/crates/v/esp32s2.svg) +- [`esp32s3`](https://github.com/esp-rs/esp-pacs/tree/main/esp32s3) - ![crates.io](https://img.shields.io/crates/v/esp32s3.svg) +- [`esp8266`](https://github.com/esp-rs/esp-pacs/tree/main/esp8266) - ![crates.io](https://img.shields.io/crates/v/esp8266.svg) + ### Ambiq Micro - [`ambiq-apollo1-pac`](https://crates.io/crates/ambiq-apollo1-pac) Peripheral access API for Ambiq Apollo 1 microcontrollers (generated using svd2rust) @@ -406,6 +417,11 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! - [`rust-xtensa`](https://github.com/MabezDev/rust-xtensa) - rust fork enables projects to be built for the ESP32 and ESP8266. ([quick start repo](https://github.com/MabezDev/xtensa-rust-quickstart)). +- [`esp-idf-hal`](https://github.com/esp-rs/esp-idf-hal) + - An embedded-hal implementation for ESP32[-XX] + ESP-IDF +- [`esp-hal`](https://github.com/esp-rs/esp-hal) + - An _extremely experimental_ attempt at writing a HAL which targets the ESP32, ESP32-C3, ESP32-S2, and ESP32-S3. + ### Silicon Labs From 435ba8f9aa5aa1b069f08458b51be5fd49ac7bc4 Mon Sep 17 00:00:00 2001 From: Andrew Straw Date: Sun, 3 Apr 2022 11:29:04 +0200 Subject: [PATCH 035/178] add nucleo-h743zi repo --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 833263cd..42b64b59 100644 --- a/README.md +++ b/README.md @@ -610,6 +610,7 @@ Crates tailored for specific boards. - [`nucleo-f042k6`](https://github.com/therealprof/nucleo-f042k6.git) - [Nucleo-F042K6] - [`nucleo-f103rb`](https://github.com/therealprof/nucleo-f103rb.git) - [Nucleo-F103RB] - [`nucleo-f401re`](https://github.com/jkristell/nucleo-f401re.git) - [Nucleo-F401RE] ![crates.io](https://img.shields.io/crates/v/nucleo-f401re.svg) +- [`nucleo-h743zi`](https://github.com/astraw/nucleo-h743zi) Beginner-oriented support crate for the Nucleo H743ZI and Nucleo H743ZI2 - [`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) - [`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) - [`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) From 14824f0cd48bb6b2b69c2fdb3102727c71708c50 Mon Sep 17 00:00:00 2001 From: Kiran Shila Date: Sun, 10 Apr 2022 17:10:23 -0700 Subject: [PATCH 036/178] Add PAC194X Driver Crate I just finished writing a quick blog post about this crate and the project it is a apart of. It's tested and working with a quick example in the readme. --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 42b64b59..119ad333 100644 --- a/README.md +++ b/README.md @@ -710,6 +710,7 @@ Otherwise please add it to the [WIP section](#WIP) below. 1. [MCP794xx] - I2C - Real-time clock / calendar driver - [Intro blog post][26] - ![crates.io](https://img.shields.io/crates/v/mcp794xx.svg) 1. [MMA7660FC] - I2C - 3-axis accelerometer - [Intro blog post][9] 1. [OPT300x] - I2C - Ambient light sensor family driver - [Intro blog post][30] - ![crates.io](https://img.shields.io/crates/v/opt300x.svg) +1. [PAC194X] - I2C - Single/multi channel power monitor - [Intro blog post][63] - ![crates.io](https://img.shields.io/crates/v/pac194x) 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) 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) 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) @@ -803,6 +804,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [60]: https://antonok.com/projects/ssd1309 [61]: http://www.rawmeat.org/code/20220130-aht20_driver/ [62]: https://github.com/anglerud/aht20-driver +[63]: https://blog.kiranshila.com/blog/pac_rust_driver.md [AD983x]: https://crates.io/crates/ad983x [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 @@ -838,6 +840,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [MCP794xx]: https://crates.io/crates/mcp794xx [MMA7660FC]: https://crates.io/crates/mma7660fc [OPT300x]: https://github.com/eldruin/opt300x-rs +[PAC194X]: https://github.com/kiranshila/pac194x [port-expander]: https://crates.io/crates/port-expander [pwm-pca9685]: https://crates.io/crates/pwm-pca9685 [rainbow-hat-rs]: https://crates.io/crates/rainbow-hat-rs From b908cb980a2ee4572f7981d94f159e279c7549dd Mon Sep 17 00:00:00 2001 From: Luke Frisken Date: Thu, 12 May 2022 22:58:58 +1000 Subject: [PATCH 037/178] Add blog post about using RTIC --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 119ad333..62d60c99 100644 --- a/README.md +++ b/README.md @@ -135,6 +135,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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. - [Ferrous Systems' Embedded Rust on Espressif](https://espressif-trainings.ferrous-systems.com/) - Training Material for learning to use Embedded Rust with the Espressif ESP32-C3. - [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. +- [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. [Ferrous Systems]: https://ferrous-systems.com From 4e2ddc0093eb60ab73078440f5c89da859839350 Mon Sep 17 00:00:00 2001 From: Nikita Fedyashev Date: Tue, 14 Jun 2022 15:48:34 +0300 Subject: [PATCH 038/178] Fix a typo in README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 62d60c99..2624a52d 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [Physical Computing With Rust](https://rahul-thakoor.github.io/physical-computing-rust/) A (WIP) guide to physical computing with Rust on the Raspberry Pi. - [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. - [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/) -- [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 harware. This training was given at Oxidize Conferences and by [Ferrous Systems] to corporate customers. +- [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. - [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. - [Ferrous Systems' Embedded Rust on Espressif](https://espressif-trainings.ferrous-systems.com/) - Training Material for learning to use Embedded Rust with the Espressif ESP32-C3. - [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. @@ -1173,7 +1173,7 @@ These materials may be outdated and reflect earlier practices, but might still b - [intermezzOS](http://intermezzos.github.io) A small teaching operating system in Rust. A book with some explanations is also included. - [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. - [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 -- [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 harware. This training was given at Oxidize Conferences and by Ferrous Systems to corporate customers. +- [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. [@jamesmunns]: https://github.com/jamesmunns From c8acaaa99c191c316294b66d447db2d3f67ec657 Mon Sep 17 00:00:00 2001 From: Ulf Lilleengen Date: Tue, 14 Jun 2022 21:35:58 +0200 Subject: [PATCH 039/178] Update and add descriptions of some new projects --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 62d60c99..04181cad 100644 --- a/README.md +++ b/README.md @@ -1086,11 +1086,13 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [dcmimu]: An algorithm for fusing low-cost triaxial MEMS gyroscope and accelerometer measurements ![crates.io](https://img.shields.io/crates/v/dcmimu.svg) 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) 1. [device-driver]: A toolkit to write better device drivers, faster. ![crates.io](https://img.shields.io/crates/v/device-driver.svg) -1. [drogue-device](https://github.com/drogue-iot/drogue-device): An async actor framework for embedded, based on embassy. -1. [drogue-tls](https://github.com/drogue-iot/drogue-tls): A TLS 1.3 implementation that runs in a no-std environment. +1. [drogue-device](https://github.com/drogue-iot/drogue-device): A distribution of tools and examples for building embedded applications in Rust. 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) +1. [ector](https://github.com/drogue-iot/ector): An async actor framework for embedded, based on embassy. 1. [embassy]: A set of embedded async tools to make async/await a first-class option for embedded development 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) +1. [embedded-update](https://github.com/drogue-iot/embedded-update): Pluggable firmware update protocol for embedded devices. +1. [embedded-tls](https://github.com/drogue-iot/embedded-tls): A TLS 1.3 implementation that runs in a no-std environment. 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) 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) 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) From c30405520b7e2d9c0761a2c05bbe8f5924d855e3 Mon Sep 17 00:00:00 2001 From: Andrew Walbran Date: Thu, 7 Jul 2022 14:53:20 +0100 Subject: [PATCH 040/178] Add gd32e2 and gd32f2 PACs --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 90e8d01f..e30c8f50 100644 --- a/README.md +++ b/README.md @@ -290,7 +290,9 @@ The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral ac ### GigaDevice - [`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) +- [`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) - [`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) +- [`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) ### XMC From efec498f6b74464543f2dbe3deb15683cce77612 Mon Sep 17 00:00:00 2001 From: Jan-Henrik Bruhn Date: Mon, 18 Jul 2022 23:12:22 +0200 Subject: [PATCH 041/178] Add moonboot Update Bootloader Framework --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e30c8f50..ba5f3751 100644 --- a/README.md +++ b/README.md @@ -1115,6 +1115,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 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) +1. [moonboot](https://github.com/jhbruhn/moonboot): OTA Bootloader Construction Framework for Rust no_std environments, especially embedded devices without an OS 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) 1. [nom](https://crates.io/crates/nom): parser combinator framework - ![crates.io](https://img.shields.io/crates/v/nom.svg) 1. [null-terminated](https://crates.io/crates/null-terminated): generic null-terminated arrays - ![crates.io](https://img.shields.io/crates/v/null-terminated.svg) From 73557f32af449494e240d1bc85be06c374aa04e1 Mon Sep 17 00:00:00 2001 From: Vladimir Petrigo Date: Wed, 27 Jul 2022 13:55:16 +0300 Subject: [PATCH 042/178] Update README.md Add info about efm32-rs project and related EFM32 MCU crates --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index ba5f3751..31cd1e7e 100644 --- a/README.md +++ b/README.md @@ -243,6 +243,24 @@ Peripheral Access Crates were also called Device Crates. - [`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) +The [`efm32-rs`](https://github.com/efm32-rs) project has peripheral access APIs for most EFM32 microcontrollers (generated using svd2rust): + +- [`efm32g-pac`](https://crates.io/crates/efm32g-pac) - ![crates.io](https://img.shields.io/crates/v/efm32g-pac) +- [`efm32gg-pac`](https://crates.io/crates/efm32gg-pac) - ![crates.io](https://img.shields.io/crates/v/efm32gg-pac) +- [`efm32gg11b-pac`](https://crates.io/crates/efm32gg11b-pac) - ![crates.io](https://img.shields.io/crates/v/efm32gg11b-pac) +- [`efm32gg12b-pac`](https://crates.io/crates/efm32gg12b-pac) - ![crates.io](https://img.shields.io/crates/v/efm32gg12b-pac) +- [`efm32hg-pac`](https://crates.io/crates/efm32hg-pac) - ![crates.io](https://img.shields.io/crates/v/efm32hg-pac) +- [`efm32jg1b-pac`](https://crates.io/crates/efm32jg1b-pac) - ![crates.io](https://img.shields.io/crates/v/efm32jg1b-pac) +- [`efm32jg12b-pac`](https://crates.io/crates/efm32jg12b-pac) - ![crates.io](https://img.shields.io/crates/v/efm32jg12b-pac) +- [`efm32lg-pac`](https://crates.io/crates/efm32lg-pac) - ![crates.io](https://img.shields.io/crates/v/efm32lg-pac) +- [`efm32pg-pac`](https://crates.io/crates/efm32pg-pac) - ![crates.io](https://img.shields.io/crates/v/efm32pg-pac) +- [`efm32pg22-pac`](https://crates.io/crates/efm32pg22-pac) - ![crates.io](https://img.shields.io/crates/v/efm32pg22-pac) +- [`efm32pg23-pac`](https://crates.io/crates/efm32pg23-pac) - ![crates.io](https://img.shields.io/crates/v/efm32pg23-pac) +- [`efm32tg-pac`](https://crates.io/crates/efm32tg-pac) - ![crates.io](https://img.shields.io/crates/v/efm32tg-pac) +- [`efm32tg11b-pac`](https://crates.io/crates/efm32tg11b-pac) - ![crates.io](https://img.shields.io/crates/v/efm32tg11b-pac) +- [`efm32wg-pac`](https://crates.io/crates/efm32wg-pac) - ![crates.io](https://img.shields.io/crates/v/efm32wg-pac) +- [`efm32zg-pac`](https://crates.io/crates/efm32zg-pac) - ![crates.io](https://img.shields.io/crates/v/efm32zg-pac) + ### STMicroelectronics The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral access APIs for most STM32 microcontrollers (generated using svd2rust): From 20aeddb8f2d3761d40356cb42ab2d130572372e2 Mon Sep 17 00:00:00 2001 From: Finomnis Date: Mon, 29 Aug 2022 10:33:07 +0200 Subject: [PATCH 043/178] Add st7565 SPI LCD driver --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 31cd1e7e..f816356f 100644 --- a/README.md +++ b/README.md @@ -762,9 +762,10 @@ Otherwise please add it to the [WIP section](#WIP) below. 1. [usbd-midi] - USB MIDI class implementation - [github][41] - ![crates.io](https://img.shields.io/crates/v/usbd-midi.svg) 1. [usbd-webusb] - USB webUSB class implementation - [github][39] - ![crates.io](https://img.shields.io/crates/v/usbd-webusb.svg) 1. [SHTCx] - I2C - Temperature / humidity sensors - [github][42] - ![crates.io](https://img.shields.io/crates/v/shtcx.svg) -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) +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) 1. [DW1000] - SPI - Radio transceiver (IEEE 802.15.4 and position tracking) - [Article][45] - ![crates.io](https://img.shields.io/crates/v/dw1000.svg) 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) +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) [1&2]: http://blog.japaric.io/wd-1-2-l3gd20-lsm303dlhc-madgwick/ [3]: http://pramode.in/2018/02/24/an-introduction-to-writing-embedded-hal-based-drivers-in-rust/ @@ -827,6 +828,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [61]: http://www.rawmeat.org/code/20220130-aht20_driver/ [62]: https://github.com/anglerud/aht20-driver [63]: https://blog.kiranshila.com/blog/pac_rust_driver.md +[64]: https://github.com/Finomnis/st7565 [AD983x]: https://crates.io/crates/ad983x [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 @@ -895,6 +897,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [ST7789]: http://crates.io/crates/st7789 [DW1000]: https://crates.io/crates/dw1000 [Adafruit-7segment]: https://crates.io/crates/adafruit-7segment +[ST7565]: http://crates.io/crates/st7565 *NOTE* You may be able to find even more driver crates by searching for the [`embedded-hal-driver`] keyword on crates.io! From cdbc4b4efa988c761590f6e6162bc2034eabc1c6 Mon Sep 17 00:00:00 2001 From: Daniel Kenyon-Jones Date: Sat, 17 Sep 2022 14:26:46 +0100 Subject: [PATCH 044/178] Added usbd-human-interface-device --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index f816356f..ba863d32 100644 --- a/README.md +++ b/README.md @@ -759,6 +759,7 @@ Otherwise please add it to the [WIP section](#WIP) below. 1. [usbd-serial] - USB CDC-ACM class (serial) implementation - [github][37] - ![crates.io](https://img.shields.io/crates/v/usbd-serial.svg) 1. [usbd-hid] - USB HID class implementation - [github][38] - ![crates.io](https://img.shields.io/crates/v/usbd-hid.svg) 1. [usbd-hid-device] - USB HID class implementation without `unsafe` - [github][40] - ![crates.io](https://img.shields.io/crates/v/usbd-hid-device.svg) +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) 1. [usbd-midi] - USB MIDI class implementation - [github][41] - ![crates.io](https://img.shields.io/crates/v/usbd-midi.svg) 1. [usbd-webusb] - USB webUSB class implementation - [github][39] - ![crates.io](https://img.shields.io/crates/v/usbd-webusb.svg) 1. [SHTCx] - I2C - Temperature / humidity sensors - [github][42] - ![crates.io](https://img.shields.io/crates/v/shtcx.svg) @@ -829,6 +830,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [62]: https://github.com/anglerud/aht20-driver [63]: https://blog.kiranshila.com/blog/pac_rust_driver.md [64]: https://github.com/Finomnis/st7565 +[65]: https://github.com/dlkj/usbd-human-interface-device [AD983x]: https://crates.io/crates/ad983x [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 @@ -891,6 +893,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [usbd-serial]: http://crates.io/crates/usbd-serial [usbd-hid]: http://crates.io/crates/usbd-hid [usbd-hid-device]: http://crates.io/crates/usbd-hid-device +[usbd-human-interface-device]: https://github.com/dlkj/usbd-human-interface-device [usbd-midi]: http://crates.io/crates/usbd-midi [usbd-webusb]: http://crates.io/crates/usbd-webusb [SHTCx]: http://crates.io/crates/shtcx From 4535a96b1743f5a1073f30e82cdf958250796625 Mon Sep 17 00:00:00 2001 From: Daniel Kenyon-Jones Date: Sat, 17 Sep 2022 14:32:41 +0100 Subject: [PATCH 045/178] Fix broken link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ba863d32..f41bd7a8 100644 --- a/README.md +++ b/README.md @@ -759,7 +759,7 @@ Otherwise please add it to the [WIP section](#WIP) below. 1. [usbd-serial] - USB CDC-ACM class (serial) implementation - [github][37] - ![crates.io](https://img.shields.io/crates/v/usbd-serial.svg) 1. [usbd-hid] - USB HID class implementation - [github][38] - ![crates.io](https://img.shields.io/crates/v/usbd-hid.svg) 1. [usbd-hid-device] - USB HID class implementation without `unsafe` - [github][40] - ![crates.io](https://img.shields.io/crates/v/usbd-hid-device.svg) -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) +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) 1. [usbd-midi] - USB MIDI class implementation - [github][41] - ![crates.io](https://img.shields.io/crates/v/usbd-midi.svg) 1. [usbd-webusb] - USB webUSB class implementation - [github][39] - ![crates.io](https://img.shields.io/crates/v/usbd-webusb.svg) 1. [SHTCx] - I2C - Temperature / humidity sensors - [github][42] - ![crates.io](https://img.shields.io/crates/v/shtcx.svg) From ceca59dbc86de26b4fbefc18221e441cb935280a Mon Sep 17 00:00:00 2001 From: Jonah Stiennon Date: Tue, 27 Sep 2022 12:52:10 -0700 Subject: [PATCH 046/178] add `m95320` as a WIP peripheral crate --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index f41bd7a8..93381b91 100644 --- a/README.md +++ b/README.md @@ -949,6 +949,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [LSM9DS1] - I2C/SPI - 9-axis motion sensor module ![crates.io](https://img.shields.io/crates/v/lsm9ds1.svg) 1. [ltr-559] - I2C - Ambient Light Sensor and Proximity sensor ![crates.io](https://img.shields.io/crates/v/ltr-559.svg) 1. [lvgl] - no_std [LittleVGL](https://github.com/littlevgl/lvgl) port - ![crates.io](https://img.shields.io/crates/v/lvgl.svg) +1. [M95320] - SPI - STMicroelectronics Serial flash EEPROM - ![crates.io](https://img.shields.io/crates/v/m95320.svg) 1. [MAG3110] - I2C - Magnetometer 1. [MAX17048/9] - I2C - LiPo Fuel gauge, battery monitoring IC - ![crates.io](https://img.shields.io/crates/v/max17048.svg) 1. [MAX170xx] - I2C - LiPo Fuel gauge, battery monitoring ICs compatible with MAX17043/4, MAX17048/9, MAX17058/9. @@ -1041,6 +1042,7 @@ Work in progress drivers. Help the authors make these crates awesome! [LSM9DS1]: https://crates.io/crates/lsm9ds1 [ltr-559]: https://crates.io/crates/ltr-559 [lvgl]: https://github.com/rafaelcaricio/lvgl-rs +[M95320]: https://crates.io/crates/m95320 [MAG3110]: https://github.com/therealprof/mag3110 [MAX17048/9]: https://crates.io/crates/max17048 [MAX170xx]: https://github.com/eldruin/max170xx-rs From 08113f5e51fdcfa239863e0857a9e2a0d1f0e0c2 Mon Sep 17 00:00:00 2001 From: apollolabsdev <104051566+apollolabsdev@users.noreply.github.com> Date: Mon, 3 Oct 2022 10:48:01 +0300 Subject: [PATCH 047/178] Update readme.md with additional training material I added a blog resource to the list that could be valuable to learners interested in learning HAL topics. I personally found it hard to navigate the different HALs when starting out based on the existing resources. I created the added blog in the hope to help newcomers that could be in the same position I was in. It's a blog I update on weekly basis with a new topic relevant to embedded Rust. This is the link https://apollolabsblog.hashnode.dev/series/stm32f4-embedded-rust-hal On a side note, I had attempted to submit a pull request before though I think I did something wrong where it didn't make it through somehow. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 93381b91..3f06d160 100644 --- a/README.md +++ b/README.md @@ -136,6 +136,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [Ferrous Systems' Embedded Rust on Espressif](https://espressif-trainings.ferrous-systems.com/) - Training Material for learning to use Embedded Rust with the Espressif ESP32-C3. - [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. - [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. +- [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. - [Embedded Rust programming playlist](https://www.youtube.com/playlist?list=PLP_X41VhYn5X6Wwjnm0bRwI3n2pdaszxU) Various livestreams with Embedded Rust live coding [Ferrous Systems]: https://ferrous-systems.com From fbdbd0e73c0b2d06f6be4e76dd7aeb1af017e5c1 Mon Sep 17 00:00:00 2001 From: Andrew Christiansen Date: Wed, 19 Oct 2022 19:51:52 -0700 Subject: [PATCH 048/178] Add atwinc1500-rs to WIP driver list --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 3f06d160..2b88a457 100644 --- a/README.md +++ b/README.md @@ -1002,6 +1002,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 1. [xCA9548A] - I2C - I2C switches/multiplexers: TCA9548A, PCA9548A - ![crates.io](https://img.shields.io/crates/v/xca9548a.svg) 1. [ublox-cellular-rs] - Serial - Cellular driver for the full Ublox cellular serial based family +1. [atwinc1500-rs] - SPI - A host driver for the Atwinc1500 network controller [AFE4400]: https://github.com/ReeceStevens/afe4400 [APDS9960]: https://crates.io/crates/apds9960 @@ -1095,6 +1096,7 @@ Work in progress drivers. Help the authors make these crates awesome! [w5500]: https://crates.io/crates/w5500 [xCA9548A]: https://crates.io/crates/xca9548a [ublox-cellular-rs]: https://github.com/BlackbirdHQ/ublox-cellular-rs +[atwinc1500-rs]: https://crates.io/crates/atwinc1500 ## no-std crates From 4d1554bbf783d883b09cef8e5ae0ef0bb30f0a99 Mon Sep 17 00:00:00 2001 From: Erik Rogers Date: Fri, 4 Nov 2022 03:00:08 -0400 Subject: [PATCH 049/178] chore: add sega-controller lib --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 2b88a457..447bc2a3 100644 --- a/README.md +++ b/README.md @@ -738,6 +738,7 @@ Otherwise please add it to the [WIP section](#WIP) below. 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) 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) 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) +1. [sega-controller] - GPIO - Sega controller input - [github][66] - ![crates.io](https://img.shields.io/crates/v/sega-controller.svg) 1. [SGP30] - I2C - Gas sensor - [Intro blog post][6] - ![crates.io](https://img.shields.io/crates/v/sgp30.svg) 1. [SH1106] - I2C - Monochrome OLED display controller - [Intro post][19] ![crates.io](https://img.shields.io/crates/v/sh1106.svg) 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) @@ -832,6 +833,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [63]: https://blog.kiranshila.com/blog/pac_rust_driver.md [64]: https://github.com/Finomnis/st7565 [65]: https://github.com/dlkj/usbd-human-interface-device +[66]: https://github.com/UnderLogic/sega-controller [AD983x]: https://crates.io/crates/ad983x [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 From 3f32d61f35147c99d193ce243d69dbb38f16c13c Mon Sep 17 00:00:00 2001 From: Erik Rogers Date: Fri, 4 Nov 2022 03:01:48 -0400 Subject: [PATCH 050/178] fix: sega-controller link url --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 447bc2a3..4e50a75a 100644 --- a/README.md +++ b/README.md @@ -874,6 +874,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [pwm-pca9685]: https://crates.io/crates/pwm-pca9685 [rainbow-hat-rs]: https://crates.io/crates/rainbow-hat-rs [rotary-encoder-hal]: https://crates.io/crates/rotary-encoder-hal +[sega-controller]: https://crates.io/crates/sega-controller [SGP30]: https://crates.io/crates/sgp30 [SH1106]: https://crates.io/crates/sh1106 [shared-bus]: https://github.com/Rahix/shared-bus From 226db2f1ecb0da4afa7e69e39fb4f927a67f1525 Mon Sep 17 00:00:00 2001 From: Georges Date: Sat, 5 Nov 2022 11:49:39 +0100 Subject: [PATCH 051/178] add w7500x-pac --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 2b88a457..c38c50f9 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ This project is developed and maintained by the [Resources team][team]. - [GigaDevice](#gigadevice) - [XMC](#xmc) - [Vorago](#vorago) + - [Wiznet](#wiznet) - [HAL implementation crates](#hal-implementation-crates) - [OS](#os) - [Microchip](#microchip-1) @@ -330,6 +331,10 @@ Peripheral access crates for the different XMC4xxx families of microcontrollers - [`va108xx`](https://egit.irs.uni-stuttgart.de/rust/va108xx) - ![crates.io](https://img.shields.io/crates/v/va108xx.svg) - [`va416xx`](https://egit.irs.uni-stuttgart.de/rust/va416xx) - ![crates.io](https://img.shields.io/crates/v/va416xx.svg) +### Wiznet + +- [`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) + ## HAL implementation crates Implementations of [`embedded-hal`] for microcontroller families and systems running some OS. - ![crates.io](https://img.shields.io/crates/v/embedded-hal.svg) From 2c7e2a5def36200e415573963fa7f05d1ad28968 Mon Sep 17 00:00:00 2001 From: Dblm0 Date: Fri, 2 Dec 2022 16:11:45 +0300 Subject: [PATCH 052/178] Add cargo-bloat tool --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c38c50f9..3d9fcac5 100644 --- a/README.md +++ b/README.md @@ -165,6 +165,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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 - [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 - [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. +- [cargo-bloat](https://github.com/RazrFalcon/cargo-bloat) Find out what takes most of the space in your executable. [embedded-hal-mock]: https://crates.io/crates/embedded-hal-mock From 5c9df090e0a80fa0b42b35c497b5cde1f762fad5 Mon Sep 17 00:00:00 2001 From: Dblm0 Date: Fri, 2 Dec 2022 17:53:42 +0300 Subject: [PATCH 053/178] Move cargo-bloat closer to cargo-* tools --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3d9fcac5..7c2e837d 100644 --- a/README.md +++ b/README.md @@ -156,6 +156,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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) - [cargo-embed](https://probe.rs/docs/tools/cargo-embed/) A superset of cargo-flash with additional useful features like configuration file support, a RTT terminal or a GDB server. - ![crates.io](https://img.shields.io/crates/v/cargo-embed.svg) - [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) +- [cargo-bloat](https://github.com/RazrFalcon/cargo-bloat) Find out what takes most of the space in your executable. - [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) - [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: - [Probe Run](https://github.com/knurling-rs/probe-run): a cargo runner to flash and run embedded applications just like you would native applications, including backtraces and panicking behavior @@ -165,7 +166,6 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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 - [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 - [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. -- [cargo-bloat](https://github.com/RazrFalcon/cargo-bloat) Find out what takes most of the space in your executable. [embedded-hal-mock]: https://crates.io/crates/embedded-hal-mock From 2fe3f9d1f44f0794192e14833f84e68b576c35b2 Mon Sep 17 00:00:00 2001 From: Dblm0 Date: Fri, 2 Dec 2022 17:56:52 +0300 Subject: [PATCH 054/178] Add cargo-call-stack tool --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7c2e837d..c8fb93b9 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [cargo-embed](https://probe.rs/docs/tools/cargo-embed/) A superset of cargo-flash with additional useful features like configuration file support, a RTT terminal or a GDB server. - ![crates.io](https://img.shields.io/crates/v/cargo-embed.svg) - [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) - [cargo-bloat](https://github.com/RazrFalcon/cargo-bloat) Find out what takes most of the space in your executable. +- [cargo-call-stack](https://crates.io/crates/cargo-call-stack) Static, whole program stack usage analyzer. - [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) - [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: - [Probe Run](https://github.com/knurling-rs/probe-run): a cargo runner to flash and run embedded applications just like you would native applications, including backtraces and panicking behavior From 2fb6ada16f4a917f3086e8a547b6446862384039 Mon Sep 17 00:00:00 2001 From: Dblm0 Date: Fri, 2 Dec 2022 17:57:14 +0300 Subject: [PATCH 055/178] Add cargo-dfu tool --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c8fb93b9..e944c027 100644 --- a/README.md +++ b/README.md @@ -158,6 +158,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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) - [cargo-bloat](https://github.com/RazrFalcon/cargo-bloat) Find out what takes most of the space in your executable. - [cargo-call-stack](https://crates.io/crates/cargo-call-stack) Static, whole program stack usage analyzer. +- [cargo-dfu](https://crates.io/crates/cargo-dfu) Cargo extension for flashing embedded rust programs via DFU. - [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) - [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: - [Probe Run](https://github.com/knurling-rs/probe-run): a cargo runner to flash and run embedded applications just like you would native applications, including backtraces and panicking behavior From 16cec50e2c9ec56479935ef3fde9088c40f54985 Mon Sep 17 00:00:00 2001 From: James Logan Date: Tue, 6 Dec 2022 17:00:29 -0500 Subject: [PATCH 056/178] add tm4c129-launchpad to board crates list --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e944c027..f2db0f50 100644 --- a/README.md +++ b/README.md @@ -662,6 +662,7 @@ Crates tailored for specific boards. - [`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]. - [`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) +- [`tm4c129-launchpad`](https://github.com/jlogan03/tm4c129-launchpad) - For the Texas Instruments TM4C129-XL Launchpad board ### Special Purpose From 94baed7bb61a76de52024d4ad01a6118638cd8a5 Mon Sep 17 00:00:00 2001 From: Matteo Carnelos Date: Thu, 8 Dec 2022 10:39:24 +0100 Subject: [PATCH 057/178] Add `ade791x` to driver list --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index e944c027..3e894f05 100644 --- a/README.md +++ b/README.md @@ -707,6 +707,7 @@ Otherwise please add it to the [WIP section](#WIP) below. 1. [AD983x] - SPI - AD9833/AD9837 waveform generators / DDS - [Intro blog post][25] - ![crates.io](https://img.shields.io/crates/v/ad983x.svg) 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) +1. [ADE791x] - SPI - ADE7912/ADE7913 3-Channel, Isolated, Sigma-Delta ADC - [github][66] - ![crates.io](https://img.shields.io/crates/v/ade791x.svg) 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) 1. [ADXL313] - SPI - 3-axis accelerometer - ![crates.io](https://img.shields.io/crates/v/adxl313.svg) 1. [ADXL343] - I2C - 3-axis accelerometer - ![crates.io](https://img.shields.io/crates/v/adxl343.svg) @@ -840,9 +841,11 @@ Otherwise please add it to the [WIP section](#WIP) below. [63]: https://blog.kiranshila.com/blog/pac_rust_driver.md [64]: https://github.com/Finomnis/st7565 [65]: https://github.com/dlkj/usbd-human-interface-device +[66]: https://github.com/GrepitAB/ade791x-rs [AD983x]: https://crates.io/crates/ad983x [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 +[ADE791x]: https://crates.io/crates/ade791x [ADS1x1x]: https://crates.io/crates/ads1x1x [ADXL313]: https://crates.io/crates/adxl313 [ADXL343]: https://crates.io/crates/adxl343 From be9563949cebb87fa547fae63e9d19c9e16c12ef Mon Sep 17 00:00:00 2001 From: FabioCragnolini <48365955+FabioCragnolini@users.noreply.github.com> Date: Sun, 11 Dec 2022 16:14:26 +0100 Subject: [PATCH 058/178] Add AFE4404. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e944c027..939334d9 100644 --- a/README.md +++ b/README.md @@ -921,6 +921,7 @@ keyword on crates.io! Work in progress drivers. Help the authors make these crates awesome! 1. [AFE4400] - SPI - Pulse oximeter +1. [AFE4404] - I2C - Pulse oximeter - ![crates.io](https://img.shields.io/crates/v/afe4404.svg) 1. [APDS9960] - I2C - Proximity, ambient light, RGB and gesture sensor - ![crates.io](https://img.shields.io/crates/v/apds9960.svg) 1. [AS5048A] - SPI - AMS AS5048A Magnetic Rotary Encoder 1. [AXP209] - I2C - Power management unit @@ -1013,6 +1014,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [atwinc1500-rs] - SPI - A host driver for the Atwinc1500 network controller [AFE4400]: https://github.com/ReeceStevens/afe4400 +[AFE4404]: https://github.com/pulse-loop/afe4404 [APDS9960]: https://crates.io/crates/apds9960 [AS5048A]: https://github.com/uwearzt/as5048a [AXP209]: https://github.com/RandomInsano/axp209-rs From 7dc618ae6012f04157075cb3fe31cef99c239a2a Mon Sep 17 00:00:00 2001 From: Harry Hornbacher Date: Thu, 15 Dec 2022 11:49:26 +0100 Subject: [PATCH 059/178] Add Renesas DA14531 PAC and HAL crates --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index e944c027..fbcf5157 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ This project is developed and maintained by the [Resources team][team]. - [XMC](#xmc) - [Vorago](#vorago) - [Wiznet](#wiznet) + - [Renesas](#renesas) - [HAL implementation crates](#hal-implementation-crates) - [OS](#os) - [Microchip](#microchip-1) @@ -52,6 +53,7 @@ This project is developed and maintained by the [Resources team][team]. - [XMC](#xmc-1) - [GigaDevice](#gigadevice-1) - [Vorago](#vorago-1) + - [Renesas](#renesas-1) - [Architecture support crates](#architecture-support-crates) - [ARM](#arm) - [RISC-V](#risc-v) @@ -338,6 +340,10 @@ Peripheral access crates for the different XMC4xxx families of microcontrollers - [`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) +### Renesas +- [`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) + + ## HAL implementation crates Implementations of [`embedded-hal`] for microcontroller families and systems running some OS. - ![crates.io](https://img.shields.io/crates/v/embedded-hal.svg) @@ -481,6 +487,9 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! - [`va108xx-hal`](https://egit.irs.uni-stuttgart.de/rust/va108xx-hal) - ![crates.io](https://img.shields.io/crates/v/va108xx-hal.svg) - [Blogpost](https://robamu.github.io/post/rust-ecosystem/) +### Renesas +- [`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) + ## Architecture support crates Crates tailored for general CPU architectures. From 78226bc0dca8fa5c1d45db12ce96a1cea8613e2f Mon Sep 17 00:00:00 2001 From: Rafael Bachmann Date: Fri, 18 Nov 2022 20:07:46 +0100 Subject: [PATCH 060/178] Add ebyte-e32 to list --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 88c9ce11..b8480dfd 100644 --- a/README.md +++ b/README.md @@ -732,6 +732,7 @@ Otherwise please add it to the [WIP section](#WIP) below. 1. [dht-sensor] - 1-Wire - DHT11/DHT22 temperature/humidity sensor driver - [github][48] - ![crates.io](https://img.shields.io/crates/v/dht-sensor.svg) 1. [DRV8825] - DRV8825 Stepper Motor Driver (based on [Stepper]) - [Intro blog post][52] - ![crates.io](https://img.shields.io/crates/v/drv8825.svg) 1. [DS1307] - I2C - Real-time clock driver - [Intro blog post][13] - ![crates.io](https://img.shields.io/crates/v/ds1307.svg) +1. [ebyte-e32] - SERIAL - Ebyte E32 LoRa module driver - [Intro blog post][67] - ![crates.io](https://img.shields.io/crates/v/ebyte-e32.svg) 1. [EEPROM24x] - I2C - 24x series serial EEPROM driver - [Intro blog post][12] - ![crates.io](https://img.shields.io/crates/v/eeprom24x.svg) 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) 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) @@ -852,6 +853,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [64]: https://github.com/Finomnis/st7565 [65]: https://github.com/dlkj/usbd-human-interface-device [66]: https://github.com/GrepitAB/ade791x-rs +[67]: https://barafael.github.io/A-Platform-Agnostic-Driver-for-EBYTE-E32-LoRa-Modules/ [AD983x]: https://crates.io/crates/ad983x [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 @@ -869,6 +871,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [dht-sensor]: https://crates.io/crates/dht-sensor [DRV8825]: https://crates.io/crates/drv8825 [DS1307]: https://crates.io/crates/ds1307 +[ebyte-e32]: https://crates.io/crates/ebyte-e32 [EEPROM24x]: https://crates.io/crates/eeprom24x [embedded-ccs811]: https://crates.io/crates/embedded-ccs811 [embedded-sdmmc]: https://crates.io/crates/embedded-sdmmc From 5ce773ba8757025f991f25842f53f4b52211cb45 Mon Sep 17 00:00:00 2001 From: Ralph Ursprung Date: Sat, 7 Jan 2023 12:04:16 +0100 Subject: [PATCH 061/178] add additional crates two are mine, the third is one i'm using but am otherwise not associated with. --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index b8480dfd..7bc00a56 100644 --- a/README.md +++ b/README.md @@ -788,6 +788,8 @@ Otherwise please add it to the [WIP section](#WIP) below. 1. [DW1000] - SPI - Radio transceiver (IEEE 802.15.4 and position tracking) - [Article][45] - ![crates.io](https://img.shields.io/crates/v/dw1000.svg) 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) 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) +1. [tb6612fng] - A `no_std` driver for the TB6612FNG motor driver - ![Crates.io](https://img.shields.io/crates/v/tb6612fng.svg) +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) [1&2]: http://blog.japaric.io/wd-1-2-l3gd20-lsm303dlhc-madgwick/ [3]: http://pramode.in/2018/02/24/an-introduction-to-writing-embedded-hal-based-drivers-in-rust/ @@ -926,6 +928,8 @@ Otherwise please add it to the [WIP section](#WIP) below. [DW1000]: https://crates.io/crates/dw1000 [Adafruit-7segment]: https://crates.io/crates/adafruit-7segment [ST7565]: http://crates.io/crates/st7565 +[tb6612fng]: https://crates.io/crates/tb6612fng +[vl53l1x-uld]: https://crates.io/crates/vl53l1x-uld *NOTE* You may be able to find even more driver crates by searching for the [`embedded-hal-driver`] keyword on crates.io! @@ -1191,6 +1195,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 1. [wyhash]: A fast, simple and portable hashing algorithm and random number generator. - ![crates.io](https://img.shields.io/crates/v/wyhash.svg) +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) [`cmim`]: https://crates.io/crates/cmim [`panic-persist`]: https://crates.io/crates/panic-persist @@ -1208,6 +1213,8 @@ Work in progress drivers. Help the authors make these crates awesome! [Stepper]: https://crates.io/crates/stepper [vga-framebuffer]: https://github.com/thejpster/vga-framebuffer-rs [wyhash]: https://crates.io/crates/wyhash +[adafruit-bluefruit-protocol]: https://crates.io/crates/adafruit-bluefruit-protocol +[Adafruit Bluefruit LE Connect controller protocol]: https://learn.adafruit.com/bluefruit-le-connect/controller ### WIP From f60d992d8232d757c506725b2b1c8c9c552e9725 Mon Sep 17 00:00:00 2001 From: James Munns Date: Sat, 7 Jan 2023 12:06:48 +0100 Subject: [PATCH 062/178] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7bc00a56..fce65f73 100644 --- a/README.md +++ b/README.md @@ -1195,7 +1195,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 1. [wyhash]: A fast, simple and portable hashing algorithm and random number generator. - ![crates.io](https://img.shields.io/crates/v/wyhash.svg) -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) +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) [`cmim`]: https://crates.io/crates/cmim [`panic-persist`]: https://crates.io/crates/panic-persist From 4069115ba0b39411bd84da19ff8d3221d6413c53 Mon Sep 17 00:00:00 2001 From: chrysn Date: Sat, 4 Feb 2023 22:16:57 +0100 Subject: [PATCH 063/178] Add switch-hal --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index fce65f73..613255c3 100644 --- a/README.md +++ b/README.md @@ -700,6 +700,8 @@ devices which go beyond what is available in [`embedded-hal`]: - [`atat`](https://github.com/BlackbirdHQ/atat): Abstraction crate to ease writting AT based driver crates - ![crates.io](https://img.shields.io/crates/v/atat.svg) - [`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) - [`embedded-storage`](https://github.com/rust-embedded-community/embedded-storage): An Embedded Storage Abstraction Layer +- [`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) + ## Driver crates From d6be0dd0cca0d0675e36aa911ce3f348c004bd0e Mon Sep 17 00:00:00 2001 From: Sam Bradshaw <33942237+roxgib@users.noreply.github.com> Date: Tue, 21 Feb 2023 11:27:30 +1100 Subject: [PATCH 064/178] Add SPL06-007 to WIP driver list --- README.md | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 613255c3..f3f496ab 100644 --- a/README.md +++ b/README.md @@ -1012,28 +1012,29 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [SHT3x] - I2C - Temperature / humidity sensors 1. [SI5351] - I2C - clock generator 1. [SI7021] - I2C - Humidity and temperature sensor +1. [SPL06-007] - I2C - Pressure and temerature sensor - ![crates.io](https://img.shields.io/crates/v/spl06-007.svg) 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) -1. [SSD1320] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1320.svg) -1. [SSD1322] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1322.svg) -1. [SSD1351] - SPI - 16bit colour OLED display driver - ![crates.io](https://img.shields.io/crates/v/ssd1351.svg) -1. [SSD1675] - SPI - Tri-color ePaper display controller - ![crates.io](https://img.shields.io/crates/v/ssd1675.svg) -1. [st7032i] - I2C - Dot Matrix LCD Controller driver (Sitronix ST7032i or similar). - ![crates.io](https://img.shields.io/crates/v/st7032i.svg) -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) -1. [ST7920] - SPI - LCD displays using the ST7920 controller ![crates.io](https://img.shields.io/crates/v/st7920.svg) -1. [stm32-eth] - MCU - Ethernet -1. [SX1278] - SPI - Long range (LoRa) transceiver -1. [SX1509] - I2C - IO Expander / Keypad driver -1. [TCS3472] - I2C - RGB color light sensor - ![crates.io](https://img.shields.io/crates/v/tcs3472.svg) -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) -1. [VEML6040] - I2C - RGBW color light sensor - ![crates.io](https://img.shields.io/crates/v/veml6040.svg) -1. [VEML6070] - I2C - UVA light sensor - ![crates.io](https://img.shields.io/crates/v/veml6070.svg) -1. [VEML7700] - I2C - Ambient light sensors - ![crates.io](https://img.shields.io/crates/v/veml7700.svg) -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) -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) -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) -1. [xCA9548A] - I2C - I2C switches/multiplexers: TCA9548A, PCA9548A - ![crates.io](https://img.shields.io/crates/v/xca9548a.svg) -1. [ublox-cellular-rs] - Serial - Cellular driver for the full Ublox cellular serial based family -1. [atwinc1500-rs] - SPI - A host driver for the Atwinc1500 network controller +3. [SSD1320] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1320.svg) +4. [SSD1322] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1322.svg) +5. [SSD1351] - SPI - 16bit colour OLED display driver - ![crates.io](https://img.shields.io/crates/v/ssd1351.svg) +6. [SSD1675] - SPI - Tri-color ePaper display controller - ![crates.io](https://img.shields.io/crates/v/ssd1675.svg) +7. [st7032i] - I2C - Dot Matrix LCD Controller driver (Sitronix ST7032i or similar). - ![crates.io](https://img.shields.io/crates/v/st7032i.svg) +8. [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) +9. [ST7920] - SPI - LCD displays using the ST7920 controller ![crates.io](https://img.shields.io/crates/v/st7920.svg) +10. [stm32-eth] - MCU - Ethernet +11. [SX1278] - SPI - Long range (LoRa) transceiver +12. [SX1509] - I2C - IO Expander / Keypad driver +13. [TCS3472] - I2C - RGB color light sensor - ![crates.io](https://img.shields.io/crates/v/tcs3472.svg) +14. [TPA2016D2] - I2C - A driver for interfacing with the Texas Instruments TPA2016D2 Class-D amplifier - ![crates.io](https://img.shields.io/crates/v/tpa2016d2.svg) +15. [VEML6040] - I2C - RGBW color light sensor - ![crates.io](https://img.shields.io/crates/v/veml6040.svg) +16. [VEML6070] - I2C - UVA light sensor - ![crates.io](https://img.shields.io/crates/v/veml6070.svg) +17. [VEML7700] - I2C - Ambient light sensors - ![crates.io](https://img.shields.io/crates/v/veml7700.svg) +18. [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) +19. [VL53L0X] - A platform agnostic driver to interface with the vl53l0x (time-of-flight sensor) ![crates.io](https://img.shields.io/crates/v/vl53l0x.svg) +20. [w5500] - SPI - Ethernet Module with hardwired protocols : TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE - ![crates.io](https://img.shields.io/crates/v/w5500.svg) +21. [xCA9548A] - I2C - I2C switches/multiplexers: TCA9548A, PCA9548A - ![crates.io](https://img.shields.io/crates/v/xca9548a.svg) +22. [ublox-cellular-rs] - Serial - Cellular driver for the full Ublox cellular serial based family +23. [atwinc1500-rs] - SPI - A host driver for the Atwinc1500 network controller [AFE4400]: https://github.com/ReeceStevens/afe4400 [AFE4404]: https://github.com/pulse-loop/afe4404 From 8254957390a5f96d0ef744a30733cf97a4682265 Mon Sep 17 00:00:00 2001 From: Sam Bradshaw <33942237+roxgib@users.noreply.github.com> Date: Tue, 21 Feb 2023 11:37:20 +1100 Subject: [PATCH 065/178] Fix link https://github.com/roxgib/SPL06-007 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f3f496ab..4401319b 100644 --- a/README.md +++ b/README.md @@ -1108,6 +1108,7 @@ Work in progress drivers. Help the authors make these crates awesome! [SHT3x]: https://github.com/miek/sht3x-rs [SI5351]: https://github.com/ilya-epifanov/si5351 [SI7021]: https://github.com/wose/si7021 +[SPL06-007]: https://github.com/roxgib/SPL06-007 [spi-memory]: https://github.com/jonas-schievink/spi-memory/ [SSD1320]: https://crates.io/crates/ssd1320 [SSD1322]: https://crates.io/crates/ssd1322 From 97fb134bc24c5fb312f29edce31b4e1beef9e115 Mon Sep 17 00:00:00 2001 From: Sam Bradshaw <33942237+roxgib@users.noreply.github.com> Date: Tue, 21 Feb 2023 11:39:43 +1100 Subject: [PATCH 066/178] Changes numbers back to 1 --- README.md | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 4401319b..e9d51201 100644 --- a/README.md +++ b/README.md @@ -1014,27 +1014,27 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [SI7021] - I2C - Humidity and temperature sensor 1. [SPL06-007] - I2C - Pressure and temerature sensor - ![crates.io](https://img.shields.io/crates/v/spl06-007.svg) 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) -3. [SSD1320] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1320.svg) -4. [SSD1322] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1322.svg) -5. [SSD1351] - SPI - 16bit colour OLED display driver - ![crates.io](https://img.shields.io/crates/v/ssd1351.svg) -6. [SSD1675] - SPI - Tri-color ePaper display controller - ![crates.io](https://img.shields.io/crates/v/ssd1675.svg) -7. [st7032i] - I2C - Dot Matrix LCD Controller driver (Sitronix ST7032i or similar). - ![crates.io](https://img.shields.io/crates/v/st7032i.svg) -8. [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) -9. [ST7920] - SPI - LCD displays using the ST7920 controller ![crates.io](https://img.shields.io/crates/v/st7920.svg) -10. [stm32-eth] - MCU - Ethernet -11. [SX1278] - SPI - Long range (LoRa) transceiver -12. [SX1509] - I2C - IO Expander / Keypad driver -13. [TCS3472] - I2C - RGB color light sensor - ![crates.io](https://img.shields.io/crates/v/tcs3472.svg) -14. [TPA2016D2] - I2C - A driver for interfacing with the Texas Instruments TPA2016D2 Class-D amplifier - ![crates.io](https://img.shields.io/crates/v/tpa2016d2.svg) -15. [VEML6040] - I2C - RGBW color light sensor - ![crates.io](https://img.shields.io/crates/v/veml6040.svg) -16. [VEML6070] - I2C - UVA light sensor - ![crates.io](https://img.shields.io/crates/v/veml6070.svg) -17. [VEML7700] - I2C - Ambient light sensors - ![crates.io](https://img.shields.io/crates/v/veml7700.svg) -18. [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) -19. [VL53L0X] - A platform agnostic driver to interface with the vl53l0x (time-of-flight sensor) ![crates.io](https://img.shields.io/crates/v/vl53l0x.svg) -20. [w5500] - SPI - Ethernet Module with hardwired protocols : TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE - ![crates.io](https://img.shields.io/crates/v/w5500.svg) -21. [xCA9548A] - I2C - I2C switches/multiplexers: TCA9548A, PCA9548A - ![crates.io](https://img.shields.io/crates/v/xca9548a.svg) -22. [ublox-cellular-rs] - Serial - Cellular driver for the full Ublox cellular serial based family -23. [atwinc1500-rs] - SPI - A host driver for the Atwinc1500 network controller +1. [SSD1320] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1320.svg) +1. [SSD1322] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1322.svg) +1. [SSD1351] - SPI - 16bit colour OLED display driver - ![crates.io](https://img.shields.io/crates/v/ssd1351.svg) +1. [SSD1675] - SPI - Tri-color ePaper display controller - ![crates.io](https://img.shields.io/crates/v/ssd1675.svg) +1. [st7032i] - I2C - Dot Matrix LCD Controller driver (Sitronix ST7032i or similar). - ![crates.io](https://img.shields.io/crates/v/st7032i.svg) +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) +1. [ST7920] - SPI - LCD displays using the ST7920 controller ![crates.io](https://img.shields.io/crates/v/st7920.svg) +1. [stm32-eth] - MCU - Ethernet +1. [SX1278] - SPI - Long range (LoRa) transceiver +1. [SX1509] - I2C - IO Expander / Keypad driver +1. [TCS3472] - I2C - RGB color light sensor - ![crates.io](https://img.shields.io/crates/v/tcs3472.svg) +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) +1. [VEML6040] - I2C - RGBW color light sensor - ![crates.io](https://img.shields.io/crates/v/veml6040.svg) +1. [VEML6070] - I2C - UVA light sensor - ![crates.io](https://img.shields.io/crates/v/veml6070.svg) +1. [VEML7700] - I2C - Ambient light sensors - ![crates.io](https://img.shields.io/crates/v/veml7700.svg) +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) +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) +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) +1. [xCA9548A] - I2C - I2C switches/multiplexers: TCA9548A, PCA9548A - ![crates.io](https://img.shields.io/crates/v/xca9548a.svg) +1. [ublox-cellular-rs] - Serial - Cellular driver for the full Ublox cellular serial based family +1. [atwinc1500-rs] - SPI - A host driver for the Atwinc1500 network controller [AFE4400]: https://github.com/ReeceStevens/afe4400 [AFE4404]: https://github.com/pulse-loop/afe4404 From 9fae0a3e2c4cf12177720b1ffa38633e180b0e2c Mon Sep 17 00:00:00 2001 From: Guy Garcia Date: Fri, 24 Feb 2023 19:17:03 -0400 Subject: [PATCH 067/178] added crates --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index c71ba09b..6f5c7232 100644 --- a/README.md +++ b/README.md @@ -793,6 +793,8 @@ Otherwise please add it to the [WIP section](#WIP) below. 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) 1. [tb6612fng] - A `no_std` driver for the TB6612FNG motor driver - ![Crates.io](https://img.shields.io/crates/v/tb6612fng.svg) 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) +1. [i2c-multiplexer] - I2C - An I2C Multiplexer library that supports the PCA9546 and TCA9546A chips - [github][69] - ![crates.io](https://img.shields.io/crates/v/i2c-multiplexer.svg) +1. [SHT31-rs] - I2C - Fully supported SHT temperature / humidity sensors - [github][70] - ![crates.io](https://img.shields.io/crates/v/sht31.svg) [1&2]: http://blog.japaric.io/wd-1-2-l3gd20-lsm303dlhc-madgwick/ [3]: http://pramode.in/2018/02/24/an-introduction-to-writing-embedded-hal-based-drivers-in-rust/ @@ -860,6 +862,8 @@ Otherwise please add it to the [WIP section](#WIP) below. [66]: https://github.com/GrepitAB/ade791x-rs [67]: https://barafael.github.io/A-Platform-Agnostic-Driver-for-EBYTE-E32-LoRa-Modules/ [68]: https://github.com/UnderLogic/sega-controller +[69]: https://github.com/FloppyDisck/i2c-multiplexer +[70]: https://github.com/FloppyDisck/SHT31-rs [AD983x]: https://crates.io/crates/ad983x [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 @@ -935,6 +939,8 @@ Otherwise please add it to the [WIP section](#WIP) below. [ST7565]: http://crates.io/crates/st7565 [tb6612fng]: https://crates.io/crates/tb6612fng [vl53l1x-uld]: https://crates.io/crates/vl53l1x-uld +[i2c-multiplexer]: https://crates.io/crates/i2c-multiplexer +[SHT31-rs]: https://crates.io/crates/sht31 *NOTE* You may be able to find even more driver crates by searching for the [`embedded-hal-driver`] keyword on crates.io! From cde772bd0ba69d709e60d347e3501edff14b61cc Mon Sep 17 00:00:00 2001 From: Nathan Date: Fri, 3 Mar 2023 12:13:09 -0600 Subject: [PATCH 068/178] Add Renesas RA family PACs --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index c71ba09b..092c4e82 100644 --- a/README.md +++ b/README.md @@ -341,6 +341,22 @@ Peripheral access crates for the different XMC4xxx families of microcontrollers - [`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) ### Renesas +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) - [`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) From d8917f71161f6c7e112048b4110d118ad5c0deb4 Mon Sep 17 00:00:00 2001 From: Shane Date: Sun, 5 Mar 2023 20:14:00 -0800 Subject: [PATCH 069/178] Add info and link to ESP32-C3 Tutorials --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c71ba09b..9b36f803 100644 --- a/README.md +++ b/README.md @@ -141,7 +141,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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. - [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. - [Embedded Rust programming playlist](https://www.youtube.com/playlist?list=PLP_X41VhYn5X6Wwjnm0bRwI3n2pdaszxU) Various livestreams with Embedded Rust live coding - +- [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. [Ferrous Systems]: https://ferrous-systems.com ## Tools From fa9bc9920a12f9d3dfcec30298033fdd039abcfe Mon Sep 17 00:00:00 2001 From: FabioCragnolini <48365955+FabioCragnolini@users.noreply.github.com> Date: Fri, 10 Mar 2023 09:56:25 +0100 Subject: [PATCH 070/178] Move AFE4404 from WIP to Driver crates. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 131739ca..66b782e1 100644 --- a/README.md +++ b/README.md @@ -740,6 +740,7 @@ Otherwise please add it to the [WIP section](#WIP) below. 1. [ADXL313] - SPI - 3-axis accelerometer - ![crates.io](https://img.shields.io/crates/v/adxl313.svg) 1. [ADXL343] - I2C - 3-axis accelerometer - ![crates.io](https://img.shields.io/crates/v/adxl343.svg) 1. [ADXL355] - SPI - 3-axis accelerometer - [Intro blog post][43] - ![crates.io](https://img.shields.io/crates/v/adxl355.svg) +1. [AFE4404] - I2C - Pulse oximeter - ![crates.io](https://img.shields.io/crates/v/afe4404.svg) 1. [AHT20] - I2C - Humidity and temperature sensor - [github](https://github.com/chocol4te/aht20) - ![crates.io](https://img.shields.io/crates/v/aht20.svg) 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) 1. [AnyLeaf] - I2C - pH sensor module - [github](https://github.com/AnyLeaf/ph-rust) - ![crates.io](https://img.shields.io/crates/v/anyleaf.svg) @@ -884,6 +885,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [ADXL313]: https://crates.io/crates/adxl313 [ADXL343]: https://crates.io/crates/adxl343 [ADXL355]: https://crates.io/crates/adxl355 +[AFE4404]: https://github.com/pulse-loop/afe4404 [AHT20]: https://crates.io/crates/aht20 [AHT20-driver]: https://crates.io/crates/aht20-driver [AnyLeaf]: https://crates.io/crates/anyleaf @@ -962,7 +964,6 @@ keyword on crates.io! Work in progress drivers. Help the authors make these crates awesome! 1. [AFE4400] - SPI - Pulse oximeter -1. [AFE4404] - I2C - Pulse oximeter - ![crates.io](https://img.shields.io/crates/v/afe4404.svg) 1. [APDS9960] - I2C - Proximity, ambient light, RGB and gesture sensor - ![crates.io](https://img.shields.io/crates/v/apds9960.svg) 1. [AS5048A] - SPI - AMS AS5048A Magnetic Rotary Encoder 1. [AXP209] - I2C - Power management unit @@ -1056,7 +1057,6 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [atwinc1500-rs] - SPI - A host driver for the Atwinc1500 network controller [AFE4400]: https://github.com/ReeceStevens/afe4400 -[AFE4404]: https://github.com/pulse-loop/afe4404 [APDS9960]: https://crates.io/crates/apds9960 [AS5048A]: https://github.com/uwearzt/as5048a [AXP209]: https://github.com/RandomInsano/axp209-rs From 1688a6d36d8b436ae5d424e59e399ee87583e0e6 Mon Sep 17 00:00:00 2001 From: cfrenette Date: Tue, 14 Mar 2023 18:03:29 -0400 Subject: [PATCH 071/178] add BMA400 --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 131739ca..22a83c86 100644 --- a/README.md +++ b/README.md @@ -745,6 +745,7 @@ Otherwise please add it to the [WIP section](#WIP) below. 1. [AnyLeaf] - I2C - pH sensor module - [github](https://github.com/AnyLeaf/ph-rust) - ![crates.io](https://img.shields.io/crates/v/anyleaf.svg) 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) 1. [BlueNRG] - SPI - driver for BlueNRG-MS Bluetooth module - [Intro post][15] ![crates.io](https://img.shields.io/crates/v/bluenrg.svg) +1. [BMA400] - I2C/SPI - Bosch 12-bit 3-axis accelerometer - [github][69] ![crates.io](https://img.shields.io/crates/v/bma400.svg) 1. [BNO055] - I2C - Bosch Sensortec BNO055 9-axis IMU driver - [Intro post][18] ![crates.io](https://img.shields.io/crates/v/bno055.svg) 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) 1. [dht-sensor] - 1-Wire - DHT11/DHT22 temperature/humidity sensor driver - [github][48] - ![crates.io](https://img.shields.io/crates/v/dht-sensor.svg) @@ -876,6 +877,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [66]: https://github.com/GrepitAB/ade791x-rs [67]: https://barafael.github.io/A-Platform-Agnostic-Driver-for-EBYTE-E32-LoRa-Modules/ [68]: https://github.com/UnderLogic/sega-controller +[69]: https://github.com/cfrenette/bma400-rs [AD983x]: https://crates.io/crates/ad983x [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 @@ -889,6 +891,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [AnyLeaf]: https://crates.io/crates/anyleaf [at86rf212]: https://crates.io/crates/radio-at86rf212 [BlueNRG]: https://crates.io/crates/bluenrg +[BMA400]: https://crates.io/crates/bma400 [BNO055]: https://crates.io/crates/bno055 [dht-sensor]: https://crates.io/crates/dht-sensor [DRV8825]: https://crates.io/crates/drv8825 From 80b86e58c4d7f68f02dc570ae9949a84650b44ad Mon Sep 17 00:00:00 2001 From: Bruce Yuan <50130186+hominee@users.noreply.github.com> Date: Thu, 30 Mar 2023 00:49:54 +0800 Subject: [PATCH 072/178] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 131739ca..9daa57c4 100644 --- a/README.md +++ b/README.md @@ -1173,6 +1173,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [device-driver]: A toolkit to write better device drivers, faster. ![crates.io](https://img.shields.io/crates/v/device-driver.svg) 1. [drogue-device](https://github.com/drogue-iot/drogue-device): A distribution of tools and examples for building embedded applications in Rust. 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) +1. [crossbus](https://github.com/hominee/crossbus): A Platform-Less, Runtime-Less Actor Computing Model. 1. [ector](https://github.com/drogue-iot/ector): An async actor framework for embedded, based on embassy. 1. [embassy]: A set of embedded async tools to make async/await a first-class option for embedded development 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) From 52f7b2dd88e4b02cd9e7f3331a3593b24b478258 Mon Sep 17 00:00:00 2001 From: James Logan Date: Thu, 30 Mar 2023 20:54:15 -0400 Subject: [PATCH 073/178] add nucleo-h723zg board support crate --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9daa57c4..d335db5e 100644 --- a/README.md +++ b/README.md @@ -667,6 +667,7 @@ Crates tailored for specific boards. - [`nucleo-f103rb`](https://github.com/therealprof/nucleo-f103rb.git) - [Nucleo-F103RB] - [`nucleo-f401re`](https://github.com/jkristell/nucleo-f401re.git) - [Nucleo-F401RE] ![crates.io](https://img.shields.io/crates/v/nucleo-f401re.svg) - [`nucleo-h743zi`](https://github.com/astraw/nucleo-h743zi) Beginner-oriented support crate for the Nucleo H743ZI and Nucleo H743ZI2 +- [`nucleo-h723zg`](https://github.com/jlogan03/nucleo-h723zg) Board support crate for the Nucleo H723ZG - [`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) - [`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) - [`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) From b1e661a18f4f819b707c84b65841614fc4723b4d Mon Sep 17 00:00:00 2001 From: Adam Greig Date: Sat, 1 Apr 2023 14:48:56 +0100 Subject: [PATCH 074/178] Add Rust Embedded Space to room list --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index d335db5e..d732bb49 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt ### Community Chat Rooms - You can usually find community members (including embedded WG members) in the official [`#rust-embedded:matrix.org` Matrix room]. +- [#rust-embedded-space:matrix.org] Most Embedded Rust related Matrix rooms are in the Rust Embedded Space - [embedded.rs-wasm-iot] - English Telegram chat about Rust and WASM for microcontrollers and IoT - [embedded.rs] - Telegram chat about Rust for microcontrollers in the Russian language. - [#avr-rust:gitter.im] - For discussion of using Embedded Rust on AVR devices @@ -112,6 +113,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt [#rust-embedded-graphics:matrix.org]: https://matrix.to/#/#rust-embedded-graphics:matrix.org [#esp-rs:matrix.org]: https://matrix.to/#/#esp-rs:matrix.org [`#rust-embedded:matrix.org` Matrix room]: https://matrix.to/#/#rust-embedded:matrix.org +[#rust-embedded-space:matrix.org]: https://matrix.to/#/#rust-embedded-space:matrix.org [embedded.rs-wasm-iot]: https://t.me/embeddedrust [embedded.rs]: https://t.me/embedded_rs [#rtic-rs:matrix.org]: https://matrix.to/#/#rtic-rs:matrix.org From 98372499d6660bf102529d77d019966e671ae725 Mon Sep 17 00:00:00 2001 From: stonefoxes <35688470+stonefoxes@users.noreply.github.com> Date: Sun, 16 Apr 2023 21:03:32 +0300 Subject: [PATCH 075/178] Fix link to a RTIC v1 book Current link leads to 404 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d732bb49..c67df4f4 100644 --- a/README.md +++ b/README.md @@ -189,7 +189,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt ### Real-time tools -- [RTIC v1.0](https://rtic.rs/1.0/book/en/) Real-Time Interrupt-driven Concurrency — A concurrency framework for building real time systems: +- [RTIC v1.0](https://rtic.rs/1/book/en/) Real-Time Interrupt-driven Concurrency — A concurrency framework for building real time systems: - [cortex-m rtic](https://github.com/rtic-rs/cortex-m-rtic) RTIC framework for ARM Cortex-M microcontrollers - [msp430 rtfm](https://github.com/japaric/msp430-rtfm) RTFM framework for MSP430 MCUs From b5ad8f0c5f5e05de4060ddf4e996034e301d38db Mon Sep 17 00:00:00 2001 From: Vitaly Domnikov Date: Wed, 19 Apr 2023 10:58:26 -0700 Subject: [PATCH 076/178] =?UTF-8?q?Add=20=CE=BCLA=20to=20firmware=20projec?= =?UTF-8?q?ts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c67df4f4..ca297768 100644 --- a/README.md +++ b/README.md @@ -1256,6 +1256,7 @@ Work in progress crates. Help the authors make these crates awesome! ## Firmware projects - [anne-key](https://github.com/ah-/anne-key): Alternate keyboard firmware for the Obins ANNE Pro +- [μLA](https://github.com/dotcypress/ula): Micro Logic Analyzer for RP2040 ## Old books, blogs and training materials From f3f4ef3e52922162222a481c5e9c8a3d29acdafa Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Fri, 21 Apr 2023 11:18:35 +0200 Subject: [PATCH 077/178] =?UTF-8?q?feat:=20=E2=9C=A8=20Add=20espressif=20R?= =?UTF-8?q?ust=20tools?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ca297768..c852fbcf 100644 --- a/README.md +++ b/README.md @@ -143,7 +143,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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. - [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. - [Embedded Rust programming playlist](https://www.youtube.com/playlist?list=PLP_X41VhYn5X6Wwjnm0bRwI3n2pdaszxU) Various livestreams with Embedded Rust live coding -- [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. +- [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. [Ferrous Systems]: https://ferrous-systems.com ## Tools @@ -163,6 +163,8 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [cargo-bloat](https://github.com/RazrFalcon/cargo-bloat) Find out what takes most of the space in your executable. - [cargo-call-stack](https://crates.io/crates/cargo-call-stack) Static, whole program stack usage analyzer. - [cargo-dfu](https://crates.io/crates/cargo-dfu) Cargo extension for flashing embedded rust programs via DFU. +- [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) +- [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) - [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) - [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: - [Probe Run](https://github.com/knurling-rs/probe-run): a cargo runner to flash and run embedded applications just like you would native applications, including backtraces and panicking behavior From f26772c7037ca86de377a90915170ed3e36a57e0 Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Fri, 21 Apr 2023 11:22:52 +0200 Subject: [PATCH 078/178] =?UTF-8?q?feat:=20=E2=9C=A8=20Update=20Espressif?= =?UTF-8?q?=20PACs=20and=20HALs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c852fbcf..84f71de2 100644 --- a/README.md +++ b/README.md @@ -304,7 +304,9 @@ The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral ac ### Espressif - [`esp32`](https://github.com/esp-rs/esp-pacs/tree/main/esp32) - ![crates.io](https://img.shields.io/crates/v/esp32.svg) +- [`esp32c2`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c2) - ![crates.io](https://img.shields.io/crates/v/esp32c2.svg) - [`esp32c3`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c3) - ![crates.io](https://img.shields.io/crates/v/esp32c3.svg) +- [`esp32c3`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c6) - ![crates.io](https://img.shields.io/crates/v/esp32c6.svg) - [`esp32s2`](https://github.com/esp-rs/esp-pacs/tree/main/esp32s2) - ![crates.io](https://img.shields.io/crates/v/esp32s2.svg) - [`esp32s3`](https://github.com/esp-rs/esp-pacs/tree/main/esp32s3) - ![crates.io](https://img.shields.io/crates/v/esp32s3.svg) - [`esp8266`](https://github.com/esp-rs/esp-pacs/tree/main/esp8266) - ![crates.io](https://img.shields.io/crates/v/esp8266.svg) @@ -472,12 +474,10 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! ### Espressif -- [`rust-xtensa`](https://github.com/MabezDev/rust-xtensa) - - rust fork enables projects to be built for the ESP32 and ESP8266. ([quick start repo](https://github.com/MabezDev/xtensa-rust-quickstart)). - [`esp-idf-hal`](https://github.com/esp-rs/esp-idf-hal) - - An embedded-hal implementation for ESP32[-XX] + ESP-IDF + - An embedded-hal implementation for Rust on ESP32 microcontrollers and ESP-IDF - [`esp-hal`](https://github.com/esp-rs/esp-hal) - - An _extremely experimental_ attempt at writing a HAL which targets the ESP32, ESP32-C3, ESP32-S2, and ESP32-S3. + - A `no_std` Hardware Abstraction Layers for ESP32 microcontrollers ### Silicon Labs From f9b0d63fd13d74ef34fc8b2ea3df2a3a1db8a96c Mon Sep 17 00:00:00 2001 From: Jon <1671674+jonlamb-gh@users.noreply.github.com> Date: Tue, 25 Apr 2023 04:20:07 -0700 Subject: [PATCH 079/178] Add air-gradient-pro-rs to firmware projects --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 84f71de2..aa80dcb1 100644 --- a/README.md +++ b/README.md @@ -1259,6 +1259,7 @@ Work in progress crates. Help the authors make these crates awesome! - [anne-key](https://github.com/ah-/anne-key): Alternate keyboard firmware for the Obins ANNE Pro - [μLA](https://github.com/dotcypress/ula): Micro Logic Analyzer for RP2040 +- [air-gradient-pro-rs](https://github.com/jonlamb-gh/air-gradient-pro-rs): Bootloader, firmware and CLI tools for the AirGradient PRO ## Old books, blogs and training materials From e69b7e20997e120279c98a4a72dc48bd0e88e5b8 Mon Sep 17 00:00:00 2001 From: Ferdia McKeogh Date: Tue, 30 May 2023 09:13:48 +0100 Subject: [PATCH 080/178] Add `usb-pd` --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index aa80dcb1..cd1d9f53 100644 --- a/README.md +++ b/README.md @@ -760,6 +760,7 @@ Otherwise please add it to the [WIP section](#WIP) below. 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) 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) 1. [ENC28J60] - SPI - Ethernet controller - [Intro blog post][4] - ![crates.io](https://img.shields.io/crates/v/enc28j60.svg) +1. [FUSB302B] - I2C - Programmable USB Type‐C Controller with USB Power Delivery - [github][69] 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) 1. [HTS221] - I2C - Humidity and temperature sensor - [Intro blog post][7] - ![crates.io](https://img.shields.io/crates/v/hts221.svg) 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) @@ -881,6 +882,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [66]: https://github.com/GrepitAB/ade791x-rs [67]: https://barafael.github.io/A-Platform-Agnostic-Driver-for-EBYTE-E32-LoRa-Modules/ [68]: https://github.com/UnderLogic/sega-controller +[69]: https://github.com/fmckeogh/usb-pd-rs [AD983x]: https://crates.io/crates/ad983x [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 @@ -903,6 +905,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [embedded-ccs811]: https://crates.io/crates/embedded-ccs811 [embedded-sdmmc]: https://crates.io/crates/embedded-sdmmc [ENC28J60]: https://crates.io/crates/enc28j60 +[FUSB302B]: https://github.com/fmckeogh/usb-pd-rs [HTS221]: https://crates.io/crates/hts221 [IIS2MDC]: https://crates.io/crates/iis2mdc [ISM330DHCX]: https://crates.io/crates/ism330dhcx @@ -1223,6 +1226,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [Stepper]: Universal Stepper Motor Interface - ![crates.io](https://img.shields.io/crates/v/stepper.svg) 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) 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) +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. 1. [wyhash]: A fast, simple and portable hashing algorithm and random number generator. - ![crates.io](https://img.shields.io/crates/v/wyhash.svg) 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) From 2f31c09feab546bbb75f22dcc1d7ff23854e2d17 Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Arcos Date: Thu, 1 Jun 2023 15:28:22 +0200 Subject: [PATCH 081/178] fix: Ferrous System Espressif training --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aa80dcb1..f33ea6e0 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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/) - [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. - [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. -- [Ferrous Systems' Embedded Rust on Espressif](https://espressif-trainings.ferrous-systems.com/) - Training Material for learning to use Embedded Rust with the Espressif ESP32-C3. +- [Ferrous Systems' Embedded Rust on Espressif](https://esp-rs.github.io/std-training) - Training Material for learning to use Embedded Rust with the Espressif ESP32-C3. - [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. - [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. - [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. From 4bb0281f716592e48459e1de74302fdeffe30600 Mon Sep 17 00:00:00 2001 From: Diego Barrios Romero Date: Wed, 21 Jun 2023 07:29:30 +0200 Subject: [PATCH 082/178] Prepare switch to GHMQ --- .github/bors.toml | 3 --- .github/workflows/dummy.yml | 18 ------------------ 2 files changed, 21 deletions(-) delete mode 100644 .github/bors.toml delete mode 100644 .github/workflows/dummy.yml diff --git a/.github/bors.toml b/.github/bors.toml deleted file mode 100644 index 953d954a..00000000 --- a/.github/bors.toml +++ /dev/null @@ -1,3 +0,0 @@ -delete_merged_branches = true -required_approvals = 1 -status = ["dummy"] diff --git a/.github/workflows/dummy.yml b/.github/workflows/dummy.yml deleted file mode 100644 index 7fd158c0..00000000 --- a/.github/workflows/dummy.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: CI - -on: - push: - branches: - - master - - staging - - trying - pull_request: - branches: - - master - -jobs: - dummy: - runs-on: ubuntu-latest - steps: - - name: Succeed - run: true From fef95df24f3f591b5a51f239d0bb06999fb2413b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20J=C3=B6rdens?= Date: Fri, 23 Jun 2023 17:29:10 +0200 Subject: [PATCH 083/178] add idsp crate --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f33ea6e0..99cf8379 100644 --- a/README.md +++ b/README.md @@ -1190,6 +1190,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 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) +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) 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) 1. [infrared](https://crates.io/crates/infrared): infrared remote control library for embedded rust - ![crates.io](https://img.shields.io/crates/v/infrared.svg) 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) From 18703a83ec4c4f3088cd96a0548ce8f5d604524b Mon Sep 17 00:00:00 2001 From: theshank Date: Thu, 6 Jul 2023 17:45:18 -0400 Subject: [PATCH 084/178] Update README.md to fix typo The name of `esp32c6` crate was misspelled as `esp32c3`. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 99cf8379..bd67abfa 100644 --- a/README.md +++ b/README.md @@ -306,7 +306,7 @@ The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral ac - [`esp32`](https://github.com/esp-rs/esp-pacs/tree/main/esp32) - ![crates.io](https://img.shields.io/crates/v/esp32.svg) - [`esp32c2`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c2) - ![crates.io](https://img.shields.io/crates/v/esp32c2.svg) - [`esp32c3`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c3) - ![crates.io](https://img.shields.io/crates/v/esp32c3.svg) -- [`esp32c3`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c6) - ![crates.io](https://img.shields.io/crates/v/esp32c6.svg) +- [`esp32c6`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c6) - ![crates.io](https://img.shields.io/crates/v/esp32c6.svg) - [`esp32s2`](https://github.com/esp-rs/esp-pacs/tree/main/esp32s2) - ![crates.io](https://img.shields.io/crates/v/esp32s2.svg) - [`esp32s3`](https://github.com/esp-rs/esp-pacs/tree/main/esp32s3) - ![crates.io](https://img.shields.io/crates/v/esp32s3.svg) - [`esp8266`](https://github.com/esp-rs/esp-pacs/tree/main/esp8266) - ![crates.io](https://img.shields.io/crates/v/esp8266.svg) From f433daa3520cf735886592a5ad84b37e26289457 Mon Sep 17 00:00:00 2001 From: Kiran Shila Date: Fri, 14 Jul 2023 17:37:46 +0000 Subject: [PATCH 085/178] Update blog post link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bd67abfa..d8226aa8 100644 --- a/README.md +++ b/README.md @@ -875,7 +875,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [60]: https://antonok.com/projects/ssd1309 [61]: http://www.rawmeat.org/code/20220130-aht20_driver/ [62]: https://github.com/anglerud/aht20-driver -[63]: https://blog.kiranshila.com/blog/pac_rust_driver.md +[63]: https://blog.kiranshila.com/post/pac_rust_driver [64]: https://github.com/Finomnis/st7565 [65]: https://github.com/dlkj/usbd-human-interface-device [66]: https://github.com/GrepitAB/ade791x-rs From c2c436a016bc7ef897fc8365937193e6eff07540 Mon Sep 17 00:00:00 2001 From: Ryan Summers Date: Tue, 18 Jul 2023 12:06:27 +0200 Subject: [PATCH 086/178] Add QUARTIQ Stabilizer + Booster Adds Stabilizer (https://github.com/quartiq/stabilizer) and Booster (https://github.com/quartiq/booster) from QUARTIQ to embedded example projects --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index d8226aa8..f5bd403a 100644 --- a/README.md +++ b/README.md @@ -1261,6 +1261,9 @@ Work in progress crates. Help the authors make these crates awesome! - [anne-key](https://github.com/ah-/anne-key): Alternate keyboard firmware for the Obins ANNE Pro - [μLA](https://github.com/dotcypress/ula): Micro Logic Analyzer for RP2040 - [air-gradient-pro-rs](https://github.com/jonlamb-gh/air-gradient-pro-rs): Bootloader, firmware and CLI tools for the AirGradient PRO +- [Stabilizer](https://github.com/quartiq/stabilizer): Firmware for a DSP tool used in quantum physics experimentation, includes telemetry via MQTT and run-time configuration +- [Booster](https://github.com/quartiq/booster): Firmware for an RF power amplifier, including telemetry via MQTT and run-time configuration + ## Old books, blogs and training materials From e63a67a9ee3b0a5de054830e0ca6d264cb78ab39 Mon Sep 17 00:00:00 2001 From: Ryan Summers Date: Tue, 18 Jul 2023 12:38:08 +0200 Subject: [PATCH 087/178] Adding thermostat project from https://github.com/quartiq/thermostat-eem --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f5bd403a..9f685700 100644 --- a/README.md +++ b/README.md @@ -1263,6 +1263,7 @@ Work in progress crates. Help the authors make these crates awesome! - [air-gradient-pro-rs](https://github.com/jonlamb-gh/air-gradient-pro-rs): Bootloader, firmware and CLI tools for the AirGradient PRO - [Stabilizer](https://github.com/quartiq/stabilizer): Firmware for a DSP tool used in quantum physics experimentation, includes telemetry via MQTT and run-time configuration - [Booster](https://github.com/quartiq/booster): Firmware for an RF power amplifier, including telemetry via MQTT and run-time configuration +- [Thermostat EEM](https://github.com/quartiq/thermostat-eem): Firmware for a multi-channel temperature controller used in physics experiments ## Old books, blogs and training materials From 3f59541cd083b42b994a96f769bd7d3138e69072 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1niel=20Buga?= Date: Tue, 18 Jul 2023 21:51:29 +0200 Subject: [PATCH 088/178] Add Card/IO to readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6a261f55..a2e0c2bc 100644 --- a/README.md +++ b/README.md @@ -1277,6 +1277,7 @@ Work in progress crates. Help the authors make these crates awesome! - [Stabilizer](https://github.com/quartiq/stabilizer): Firmware for a DSP tool used in quantum physics experimentation, includes telemetry via MQTT and run-time configuration - [Booster](https://github.com/quartiq/booster): Firmware for an RF power amplifier, including telemetry via MQTT and run-time configuration - [Thermostat EEM](https://github.com/quartiq/thermostat-eem): Firmware for a multi-channel temperature controller used in physics experiments +- [Card/IO ECG](https://github.com/card-io-ecg/card-io-fw): Firmware for a business-card sized ECG device with Wifi connectivity ## Old books, blogs and training materials From 6378f17e7941cff6152e757db9f3e43ef815ef63 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 22 Aug 2023 13:29:43 +0200 Subject: [PATCH 089/178] Add Slint --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a2e0c2bc..94778712 100644 --- a/README.md +++ b/README.md @@ -1229,6 +1229,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 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) +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) 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) 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) 1. [sntpc]: Rust SNTP client to get a timestamp from NTP servers. - ![crates.io](https://img.shields.io/crates/v/sntpc) From 56b42dfedce585136b7d77ccf220addac7ff6f34 Mon Sep 17 00:00:00 2001 From: Jinwoo Park Date: Tue, 5 Sep 2023 02:52:43 +0900 Subject: [PATCH 090/178] Update README.md for BillMock (Firmware Project) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 94778712..1493cf09 100644 --- a/README.md +++ b/README.md @@ -1279,7 +1279,7 @@ Work in progress crates. Help the authors make these crates awesome! - [Booster](https://github.com/quartiq/booster): Firmware for an RF power amplifier, including telemetry via MQTT and run-time configuration - [Thermostat EEM](https://github.com/quartiq/thermostat-eem): Firmware for a multi-channel temperature controller used in physics experiments - [Card/IO ECG](https://github.com/card-io-ecg/card-io-fw): Firmware for a business-card sized ECG device with Wifi connectivity - +- [BillMcok](https://github.com/pmnxis/billmock-app-rs): Firmware for credit card terminal add-on hardware to install on Korean arcade machines ## Old books, blogs and training materials From 1729142421ba444cf720a93eb0d597ce39bfe697 Mon Sep 17 00:00:00 2001 From: Jinwoo Park Date: Wed, 6 Sep 2023 00:29:07 +0900 Subject: [PATCH 091/178] Update README.md typo issue on billmock --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1493cf09..e76a228d 100644 --- a/README.md +++ b/README.md @@ -1279,7 +1279,7 @@ Work in progress crates. Help the authors make these crates awesome! - [Booster](https://github.com/quartiq/booster): Firmware for an RF power amplifier, including telemetry via MQTT and run-time configuration - [Thermostat EEM](https://github.com/quartiq/thermostat-eem): Firmware for a multi-channel temperature controller used in physics experiments - [Card/IO ECG](https://github.com/card-io-ecg/card-io-fw): Firmware for a business-card sized ECG device with Wifi connectivity -- [BillMcok](https://github.com/pmnxis/billmock-app-rs): Firmware for credit card terminal add-on hardware to install on Korean arcade machines +- [BillMock](https://github.com/pmnxis/billmock-app-rs): Firmware for credit card terminal add-on hardware to install on Korean arcade machines ## Old books, blogs and training materials From 4fd4c9175697d261b75501527ccbfdb222804b8f Mon Sep 17 00:00:00 2001 From: rmsyn Date: Fri, 29 Sep 2023 02:19:26 +0000 Subject: [PATCH 092/178] pac: add StarFive JH71xx PAC Adds information for the [`jh71xx-pac`](https://github.com/rmsyn/jh71xx-pac) that supports the JH71xx SoCs from StarFive. --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 1493cf09..7daa1f57 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ This project is developed and maintained by the [Resources team][team]. - [Raspberry Pi Silicon](#raspberry-pi-silicon) - [SiFive](#sifive) - [Silicon Labs](#silicon-labs) + - [StarFive](#starfive) - [STMicroelectronics](#stmicroelectronics) - [Texas Instruments](#texas-instruments) - [MSP430](#msp430) @@ -272,6 +273,15 @@ The [`efm32-rs`](https://github.com/efm32-rs) project has peripheral access APIs - [`efm32wg-pac`](https://crates.io/crates/efm32wg-pac) - ![crates.io](https://img.shields.io/crates/v/efm32wg-pac) - [`efm32zg-pac`](https://crates.io/crates/efm32zg-pac) - ![crates.io](https://img.shields.io/crates/v/efm32zg-pac) +### StarFive + +- [`j71xx-pac`](https://github.com/rmsyn/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) + +Currently, the two VisionFive2 board revisions (v1.2a and v1.3b) are supported: + +- [`jh7110-vf2-12a-pac`](https://crates.io/crates/jh7110-vf2-12a-pac) - ![crates.io](https://img.shields.io/crates/v/jh7110-vf2-12a-pac) +- [`jh7110-vf2-13b-pac`](https://crates.io/crates/jh7110-vf2-13b-pac) - ![crates.io](https://img.shields.io/crates/v/jh7110-vf2-13b-pac) + ### STMicroelectronics The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral access APIs for most STM32 microcontrollers (generated using svd2rust): From 80e8406c9c9d4b6a29a5ddb77f166b42a12e35a7 Mon Sep 17 00:00:00 2001 From: James Waples Date: Tue, 10 Oct 2023 22:20:28 +0100 Subject: [PATCH 093/178] Add EtherCrab chat room and crate links EtherCrab is a Rust implementation of EtherCAT and supports both std and `no_std`. --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 7daa1f57..20752370 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [#rust-embedded-graphics:matrix.org] - For discussion of the [`embedded-graphics`] crate and ecosystem - [#stm32-rs:matrix.org] - For discussion of using Embedded Rust on STM32 based devices - [#atsamd-rs:gitter.im] - For discussions of using Embedded Rust on ATSAMD devices +- [#ethercrab:matrix.org] - For discussion of general EtherCAT and the Rust implementation, EtherCrab [#rust-embedded-graphics:matrix.org]: https://matrix.to/#/#rust-embedded-graphics:matrix.org [#esp-rs:matrix.org]: https://matrix.to/#/#esp-rs:matrix.org @@ -125,6 +126,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt [#avr-rust:gitter.im]: https://matrix.to/#/#avr-rust_Lobby:gitter.im [#rp-rs:matrix.org]: https://matrix.to/#/#rp-rs:matrix.org [#atsamd-rs:gitter.im]: https://matrix.to/#/#atsamd-rs_community:gitter.im +[#ethercrab:matrix.org]: https://matrix.to/#/#ethercrab:matrix.org ## Books, blogs and training materials @@ -1208,6 +1210,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [embedded-tls](https://github.com/drogue-iot/embedded-tls): A TLS 1.3 implementation that runs in a no-std environment. 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) 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) +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) 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) 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) 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) From 25319746b48b350a19366dc89f4b49cb9ed8f669 Mon Sep 17 00:00:00 2001 From: HaoboGu Date: Tue, 17 Oct 2023 07:20:52 -0500 Subject: [PATCH 094/178] Add rmk firmware --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 20752370..195a9e05 100644 --- a/README.md +++ b/README.md @@ -1285,6 +1285,7 @@ Work in progress crates. Help the authors make these crates awesome! ## Firmware projects +- [rmk](https://github.com/HaoboGu/rmk): Mechanical keyboard firmware for stm32/rp2040, with dynamic keymap/vial/eeprom support, written in Rust - [anne-key](https://github.com/ah-/anne-key): Alternate keyboard firmware for the Obins ANNE Pro - [μLA](https://github.com/dotcypress/ula): Micro Logic Analyzer for RP2040 - [air-gradient-pro-rs](https://github.com/jonlamb-gh/air-gradient-pro-rs): Bootloader, firmware and CLI tools for the AirGradient PRO From 73a7a27cc562330054ce70cb4447a2cbe440ef27 Mon Sep 17 00:00:00 2001 From: HaoboGu Date: Tue, 17 Oct 2023 07:28:22 -0500 Subject: [PATCH 095/178] Update rmk description --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 195a9e05..b6cc18b0 100644 --- a/README.md +++ b/README.md @@ -1285,7 +1285,7 @@ Work in progress crates. Help the authors make these crates awesome! ## Firmware projects -- [rmk](https://github.com/HaoboGu/rmk): Mechanical keyboard firmware for stm32/rp2040, with dynamic keymap/vial/eeprom support, written in Rust +- [rmk](https://github.com/HaoboGu/rmk): Mechanical keyboard firmware for stm32/rp2040, supports vial/dynamic keymap/eeprom, written in Rust - [anne-key](https://github.com/ah-/anne-key): Alternate keyboard firmware for the Obins ANNE Pro - [μLA](https://github.com/dotcypress/ula): Micro Logic Analyzer for RP2040 - [air-gradient-pro-rs](https://github.com/jonlamb-gh/air-gradient-pro-rs): Bootloader, firmware and CLI tools for the AirGradient PRO From 3039597d56fbd05a4cd4c2180266bf90ba75f7fb Mon Sep 17 00:00:00 2001 From: Niklas Cathor Date: Sun, 29 Oct 2023 12:01:50 +0100 Subject: [PATCH 096/178] Add ad9850 crate to WIP drivers --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b6cc18b0..75c0eb1d 100644 --- a/README.md +++ b/README.md @@ -992,6 +992,7 @@ keyword on crates.io! Work in progress drivers. Help the authors make these crates awesome! +1. [AD9850] - Embedded driver for the AD9850 DDS synthesizer chip - ![crates.io](https://img.shields.io/crates/v/ad9850.svg) 1. [AFE4400] - SPI - Pulse oximeter 1. [APDS9960] - I2C - Proximity, ambient light, RGB and gesture sensor - ![crates.io](https://img.shields.io/crates/v/apds9960.svg) 1. [AS5048A] - SPI - AMS AS5048A Magnetic Rotary Encoder @@ -1085,6 +1086,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [ublox-cellular-rs] - Serial - Cellular driver for the full Ublox cellular serial based family 1. [atwinc1500-rs] - SPI - A host driver for the Atwinc1500 network controller +[AD9850]: https://crates.io/crates/ad9850 [AFE4400]: https://github.com/ReeceStevens/afe4400 [APDS9960]: https://crates.io/crates/apds9960 [AS5048A]: https://github.com/uwearzt/as5048a From 0143f745377f3bc27bfbc3d8d20da6c64c9a51a8 Mon Sep 17 00:00:00 2001 From: Dion Dokter Date: Tue, 31 Oct 2023 13:53:36 +0100 Subject: [PATCH 097/178] Add tweede golf workshop --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 75c0eb1d..eb386177 100644 --- a/README.md +++ b/README.md @@ -147,6 +147,8 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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. - [Embedded Rust programming playlist](https://www.youtube.com/playlist?list=PLP_X41VhYn5X6Wwjnm0bRwI3n2pdaszxU) Various livestreams with Embedded Rust live coding - [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. +- [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)) + [Ferrous Systems]: https://ferrous-systems.com ## Tools From 440bf7d33036c7ba3112caf9e33ba8bb3cc5e9d7 Mon Sep 17 00:00:00 2001 From: Gray Olson Date: Thu, 16 Nov 2023 14:24:54 +0100 Subject: [PATCH 098/178] Add `luluu` firmware --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index eb386177..48cacb91 100644 --- a/README.md +++ b/README.md @@ -1298,6 +1298,7 @@ Work in progress crates. Help the authors make these crates awesome! - [Thermostat EEM](https://github.com/quartiq/thermostat-eem): Firmware for a multi-channel temperature controller used in physics experiments - [Card/IO ECG](https://github.com/card-io-ecg/card-io-fw): Firmware for a business-card sized ECG device with Wifi connectivity - [BillMcok](https://github.com/pmnxis/billmock-app-rs): Firmware for credit card terminal add-on hardware to install on Korean arcade machines +- [LuLuu](https://github.com/fu5ha/luluu): Firmware for a custom RP2040-based display controller which streams animated images from a microSD card to a small LCD display. ## Old books, blogs and training materials From 3cd26584a17ecd1c6fd4a827242b430558f611c4 Mon Sep 17 00:00:00 2001 From: andber1 <82754113+andber1@users.noreply.github.com> Date: Fri, 1 Dec 2023 16:06:12 +0100 Subject: [PATCH 099/178] Add atsamx7x --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 48cacb91..6631cbd1 100644 --- a/README.md +++ b/README.md @@ -220,6 +220,7 @@ Peripheral Access Crates were also called Device Crates. - [`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. - [`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. - [`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. +- [`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. - [`avr-device`](https://github.com/Rahix/avr-device) Peripheral access API for Microchip (formerly Atmel) AVR microcontroller family. - [`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) - [`pic32-pac`](https://crates.io/crates/pic32mx2xx) Peripheral access API for PIC32MX1/2xx - ![crates.io](https://img.shields.io/crates/v/pic32mx2xx) @@ -408,6 +409,7 @@ Implementations of [`embedded-hal`] for microcontroller families and systems run - [`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) - [`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) +- [`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) - [`avr-hal`](https://github.com/Rahix/avr-hal) - HAL for AVR microcontroller family and AVR-based boards - [`pic32-hal`](https://crates.io/crates/pic32-hal) - HAL for PIC32MX - ![crates.io](https://img.shields.io/crates/v/pic32-hal.svg) From c0be8630cafac97941eeee94cf2bc555d5f6b77c Mon Sep 17 00:00:00 2001 From: DaneSlattery Date: Tue, 3 Oct 2023 23:59:27 +0200 Subject: [PATCH 100/178] Add HX711 to readme I am building a library for the sparkfun load cell amplifier, and would love more eyes on it from this awesome community! --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 6631cbd1..747c2819 100644 --- a/README.md +++ b/README.md @@ -1089,6 +1089,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [xCA9548A] - I2C - I2C switches/multiplexers: TCA9548A, PCA9548A - ![crates.io](https://img.shields.io/crates/v/xca9548a.svg) 1. [ublox-cellular-rs] - Serial - Cellular driver for the full Ublox cellular serial based family 1. [atwinc1500-rs] - SPI - A host driver for the Atwinc1500 network controller +1. [HX711] - GPIO - An interrupt-based driver for the HX711 Load Cell Amplifer IC. no-std. [AD9850]: https://crates.io/crates/ad9850 [AFE4400]: https://github.com/ReeceStevens/afe4400 @@ -1185,6 +1186,7 @@ Work in progress drivers. Help the authors make these crates awesome! [xCA9548A]: https://crates.io/crates/xca9548a [ublox-cellular-rs]: https://github.com/BlackbirdHQ/ublox-cellular-rs [atwinc1500-rs]: https://crates.io/crates/atwinc1500 +[HX711]: https://github.com/DaneSlattery/hx711 ## no-std crates From 236821200b25e0bd78340fd0ffc51174362f7324 Mon Sep 17 00:00:00 2001 From: Barrett Date: Tue, 19 Dec 2023 23:33:18 -0600 Subject: [PATCH 101/178] drivers: Add MAX6675 thermocouple digitizer This commit adds my new MAX6675 thermocouple digitizer driver to the list. You can find it on GitHub below: https://github.com/onkoe/max6675-hal --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 747c2819..230af0c7 100644 --- a/README.md +++ b/README.md @@ -787,6 +787,7 @@ Otherwise please add it to the [WIP section](#WIP) below. 1. [KXCJ9] - I2C - KXCJ9/KXCJB 3-axis accelerometers - [Intro blog post][24] - ![crates.io](https://img.shields.io/crates/v/kxcj9.svg) 1. [L3GD20] - SPI - Gyroscope - [Intro blog post][1&2] - ![crates.io](https://img.shields.io/crates/v/l3gd20.svg) 1. [LSM303DLHC] - I2C - Accelerometer + compass (magnetometer) - [Intro blog post][1&2] - ![crates.io](https://img.shields.io/crates/v/lsm303dlhc.svg) +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) 1. [MAX6955] - I2C - Driver for Alphanumeric LED display driver - [Intro blog post][46] - ![crates.io](https://img.shields.io/crates/v/max6955.svg) 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) 1. [MCP25LCXX] - SPI - Driver for Microchip's 25LC series of EEPROMs - ![crates.io](https://img.shields.io/crates/v/microchip-eeprom-25lcxx.svg) @@ -906,6 +907,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [70]: https://github.com/cfrenette/bma400-rs [71]: https://github.com/FloppyDisck/i2c-multiplexer [72]: https://github.com/FloppyDisck/SHT31-rs +[73]: https://barretts.club/posts/max6675-hal/ [AD983x]: https://crates.io/crates/ad983x [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 @@ -938,6 +940,7 @@ Otherwise please add it to the [WIP section](#WIP) below. [KXCJ9]: https://crates.io/crates/kxcj9 [L3GD20]: https://crates.io/crates/l3gd20 [LSM303DLHC]: https://crates.io/crates/lsm303dlhc +[MAX6675]: https://crates.io/crates/max6675-hal [MAX6955]: https://crates.io/crates/max6955 [MAX116xx-10bit]: https://crates.io/crates/max116xx-10bit [MCP25LCXX]: https://crates.io/crates/microchip-eeprom-25lcxx From c689c6657d1dc5ae534ca3d5b9782f480a886879 Mon Sep 17 00:00:00 2001 From: Barrett Date: Tue, 19 Dec 2023 23:59:47 -0600 Subject: [PATCH 102/178] fix: Various grammar/spelling errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I have a Grammarly extension in my IDE, making most things here errors. However, it caught some hard-to-find issues that look a lot better fixed! Please feel free to refuse this commit if you're uninterested in the changes. ☺️ --- README.md | 84 +++++++++++++++++++++++++++---------------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index 230af0c7..cd57c788 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Awesome](https://awesome.re/badge.svg)](https://awesome.re) -This is a curated list of resources related to embedded and low-level programming in the programming language Rust, including a list of useful crates. +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. [](http://www.rust-embedded.org) @@ -16,7 +16,7 @@ This project is developed and maintained by the [Resources team][team]. - [Table of contents](#table-of-contents) - [Community](#community) - [Community Chat Rooms](#community-chat-rooms) - - [Books, blogs and training materials](#books-blogs-and-training-materials) + - [Books, blogs, and training materials](#books-blogs-and-training-materials) - [Tools](#tools) - [Real-time](#real-time) - [Real-time Operating System (RTOS)](#real-time-operating-system-rtos) @@ -91,7 +91,7 @@ This project is developed and maintained by the [Resources team][team]. ## Community -In 2018 the Rust community created an embedded working group to help drive adoption in the Rust ecosystem. +In 2018, the Rust community created an embedded working group to help drive adoption in the Rust ecosystem. - [Embedded WG](https://github.com/rust-embedded/wg/), including newsletters with progress updates. @@ -128,13 +128,13 @@ In 2018 the Rust community created an embedded working group to help drive adopt [#atsamd-rs:gitter.im]: https://matrix.to/#/#atsamd-rs_community:gitter.im [#ethercrab:matrix.org]: https://matrix.to/#/#ethercrab:matrix.org -## Books, blogs and training materials +## Books, blogs, and training materials - [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. -- [The Rust on ESP Book](https://esp-rs.github.io/book/) - The goal of this book is to provide a comprehensive guide on using the Rust programming language with Espressif SoCs and modules. +- [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. - [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 -- [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 to embedded development but new to embedded Rust. -- [Writing an OS in rust](https://os.phil-opp.com/) A blog series creating a small operating system in Rust +- [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. +- [Writing an OS in Rust](https://os.phil-opp.com/) A blog series creating a small operating system in Rust - [MicroRust](https://droogmic.github.io/microrust/) Introductory book for embedded development in Rust on the micro:bit. - [Physical Computing With Rust](https://rahul-thakoor.github.io/physical-computing-rust/) A (WIP) guide to physical computing with Rust on the Raspberry Pi. - [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. @@ -143,7 +143,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [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. - [Ferrous Systems' Embedded Rust on Espressif](https://esp-rs.github.io/std-training) - Training Material for learning to use Embedded Rust with the Espressif ESP32-C3. - [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. -- [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. +- [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. - [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. - [Embedded Rust programming playlist](https://www.youtube.com/playlist?list=PLP_X41VhYn5X6Wwjnm0bRwI3n2pdaszxU) Various livestreams with Embedded Rust live coding - [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. @@ -153,8 +153,8 @@ In 2018 the Rust community created an embedded working group to help drive adopt ## Tools -- [xargo](https://github.com/japaric/xargo) Rust package manager with support for non-default std libraries — build rust runtime for your own embedded system. - - xargo is great but it's in maintenance mode, [cargo-xbuild](https://github.com/rust-osdev/cargo-xbuild) is catching up as intended replacement. +- [xargo](https://github.com/japaric/xargo) Rust package manager with support for non-default std libraries — build Rust runtime for your embedded system. + - 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. - [svd2rust](https://github.com/japaric/svd2rust) Generate Rust structs with register mappings from SVD files. - [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) - [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) @@ -163,7 +163,7 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [bobbin-cli](https://github.com/bobbin-rs/bobbin-cli) A Rust command line tool to simplify embedded development and deployment. - [ferros](https://github.com/auxoncorp/ferros) A Rust-based userland which also adds compile-time assurances to seL4 development. - [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) -- [cargo-embed](https://probe.rs/docs/tools/cargo-embed/) A superset of cargo-flash with additional useful features like configuration file support, a RTT terminal or a GDB server. - ![crates.io](https://img.shields.io/crates/v/cargo-embed.svg) +- [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) - [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) - [cargo-bloat](https://github.com/RazrFalcon/cargo-bloat) Find out what takes most of the space in your executable. - [cargo-call-stack](https://crates.io/crates/cargo-call-stack) Static, whole program stack usage analyzer. @@ -192,11 +192,11 @@ In 2018 the Rust community created an embedded working group to help drive adopt - [FreeRTOS-rust](https://github.com/lobaro/FreeRTOS-rust) Rust interface for FreeRTOS with Rust entry point and build support crate. - [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. - [Tock](https://www.tockos.org) An embedded operating system designed for running multiple concurrent, mutually distrustful applications on low-memory and low-power microcontrollers -- [Hubris](https://github.com/oxidecomputer/hubris) A real-time operating systems built by Oxide Computer to run the Service Controller processor in the mainboards of their rack-mount servers. +- [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. ### Real-time tools -- [RTIC v1.0](https://rtic.rs/1/book/en/) Real-Time Interrupt-driven Concurrency — A concurrency framework for building real time systems: +- [RTIC v1.0](https://rtic.rs/1/book/en/) Real-Time Interrupt-driven Concurrency — A concurrency framework for building real-time systems: - [cortex-m rtic](https://github.com/rtic-rs/cortex-m-rtic) RTIC framework for ARM Cortex-M microcontrollers - [msp430 rtfm](https://github.com/japaric/msp430-rtfm) RTFM framework for MSP430 MCUs @@ -454,7 +454,7 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! [Nucleo-F042K6]: http://www.st.com/en/evaluation-tools/nucleo-f042k6.html - [`stm32f1xx-hal`](https://github.com/stm32-rs/stm32f1xx-hal) - ![crates.io](https://img.shields.io/crates/v/stm32f1xx-hal.svg) - - Can be run on boards like the [Blue pill], [Nucleo-F103RB] and similar boards + - Can be run on boards like the [Blue pill], [Nucleo-F103RB], and similar boards [Blue pill]: https://stm32duinoforum.com/forum/wiki_subdomain/index_title_Blue_Pill.html [Nucleo-F103RB]: http://www.st.com/en/evaluation-tools/nucleo-f103rb.html @@ -499,7 +499,7 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! ### Silicon Labs - [`tomu-hal`](https://github.com/fudanchii/imtomu-rs) - - HAL implementation targeted for [Tomu] USB board with EFM32HG309F64 ARMv6-M core. Has support to configure [tomu bootloader] directly from application via `toboot_config` macro. + - 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. [Tomu]: https://tomu.im/ [tomu bootloader]: https://github.com/im-tomu/tomu-bootloader @@ -532,17 +532,17 @@ Crates tailored for general CPU architectures. ### ARM -- [`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) -- [`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) +- [`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) +- [`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) ### RISC-V -- [`riscv`](https://github.com/rust-embedded/riscv) Low level access to RISC-V processors - ![crates.io](https://img.shields.io/crates/v/riscv.svg) +- [`riscv`](https://github.com/rust-embedded/riscv) Low-level access to RISC-V processors - ![crates.io](https://img.shields.io/crates/v/riscv.svg) ### MIPS -- [`mips`](https://github.com/Harry-Chen/rust-mips) Low level access to MIPS32 processors - ![crates.io](https://img.shields.io/crates/v/mips.svg) -- [`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) +- [`mips`](https://github.com/Harry-Chen/rust-mips) Low-level access to MIPS32 processors - ![crates.io](https://img.shields.io/crates/v/mips.svg) +- [`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) ## Board support crates @@ -649,7 +649,7 @@ Crates tailored for specific boards. ### Raspberry Pi -- [`rp-pico`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the RP2040 based Raspberry Pi Pico. +- [`rp-pico`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the RP2040-based Raspberry Pi Pico. ### Sparkfun @@ -697,7 +697,7 @@ Crates tailored for specific boards. [Nucleo-F401RE]: https://www.st.com/en/evaluation-tools/nucleo-f401re.html ### Teensy -- [`teensy4-rs`](https://github.com/mciantyre/teensy4-rs) Board Support create for the [Teensy 4.0] +- [`teensy4-rs`](https://github.com/mciantyre/teensy4-rs) Board Support crate for the [Teensy 4.0] ### Vorago @@ -727,14 +727,14 @@ Crates tailored for specific boards. ## Component abstraction crates The following crates provide HAL-like abstractions for subcomponents of embedded -devices which go beyond what is available in [`embedded-hal`]: +devices that go beyond what is available in [`embedded-hal`]: - [`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) - [`embedded-graphics`]: 2D drawing library for any size display - ![crates.io](https://img.shields.io/crates/v/embedded-graphics.svg) - [`radio`](https://github.com/ryankurte/rust-radio) - Generic radio transceiver traits, mocks, and helpers - ![crates.io](https://img.shields.io/crates/v/radio.svg) - [`smart-leds`](https://github.com/smart-leds-rs): Support for addressable LEDs including WS2812 and APA102 - [`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) -- [`atat`](https://github.com/BlackbirdHQ/atat): Abstraction crate to ease writting AT based driver crates - ![crates.io](https://img.shields.io/crates/v/atat.svg) +- [`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) - [`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) - [`embedded-storage`](https://github.com/rust-embedded-community/embedded-storage): An Embedded Storage Abstraction Layer - [`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) @@ -748,11 +748,11 @@ traits][hal-impl]. [hal-impl]: #hal-implementation-crates -The list below contains drivers that have achieved the "released" status. In order to add a driver -to this list, please ensure that your driver has a short blog post, article or sufficiently -explanatory README showing an example of its use. Ideally this post would demonstrate using the +The list below contains drivers that have achieved the "released" status. To add a driver +to this list, please ensure that your driver has a short blog post, article, or sufficiently +explanatory README showing an example of its use. Ideally, this post would demonstrate using the device in a small project so that a Rust and/or embedded newcomer can also understand it. -Otherwise please add it to the [WIP section](#WIP) below. +Otherwise, please add it to the [WIP section](#WIP) below. 1. [AD983x] - SPI - AD9833/AD9837 waveform generators / DDS - [Intro blog post][25] - ![crates.io](https://img.shields.io/crates/v/ad983x.svg) 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) @@ -1001,7 +1001,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [AD9850] - Embedded driver for the AD9850 DDS synthesizer chip - ![crates.io](https://img.shields.io/crates/v/ad9850.svg) 1. [AFE4400] - SPI - Pulse oximeter -1. [APDS9960] - I2C - Proximity, ambient light, RGB and gesture sensor - ![crates.io](https://img.shields.io/crates/v/apds9960.svg) +1. [APDS9960] - I2C - Proximity, ambient light, RGB, and gesture sensor - ![crates.io](https://img.shields.io/crates/v/apds9960.svg) 1. [AS5048A] - SPI - AMS AS5048A Magnetic Rotary Encoder 1. [AXP209] - I2C - Power management unit 1. [BH1750] - I2C - ambient light sensor (lux meter) @@ -1010,8 +1010,8 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [BMI160] - I2C / SPI - Inertial Measurement Unit - ![crates.io](https://img.shields.io/crates/v/bmi160.svg) 1. [BMP280] - A platform agnostic driver to interface with the BMP280 pressure sensor ![crates.io](https://img.shields.io/crates/v/bmp280-ehal.svg) 1. [CC1101] - SPI - Sub-1GHz RF Transceiver - ![crates.io](https://img.shields.io/crates/v/cc1101.svg) -1. [DS3231] - I2C - real time clock -1. [DS3234] - SPI - Real time clock +1. [DS3231] - I2C - real-time clock +1. [DS3234] - SPI - Real-time clock 1. [DS323x] - I2C/SPI - Real-time clocks (RTC): DS3231, DS3232 and DS3234 - ![crates.io](https://img.shields.io/crates/v/ds323x.svg) 1. [epd-waveshare] - SPI - driver for E-Paper Modules from Waveshare ![crates.io](https://img.shields.io/crates/v/epd-waveshare.svg) 1. [embedded-morse] - Output morse messages - ![crates.io](https://img.shields.io/crates/v/embedded-morse.svg) @@ -1069,7 +1069,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [SHT3x] - I2C - Temperature / humidity sensors 1. [SI5351] - I2C - clock generator 1. [SI7021] - I2C - Humidity and temperature sensor -1. [SPL06-007] - I2C - Pressure and temerature sensor - ![crates.io](https://img.shields.io/crates/v/spl06-007.svg) +1. [SPL06-007] - I2C - Pressure and temperature sensor - ![crates.io](https://img.shields.io/crates/v/spl06-007.svg) 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) 1. [SSD1320] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1320.svg) 1. [SSD1322] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1322.svg) @@ -1092,7 +1092,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [xCA9548A] - I2C - I2C switches/multiplexers: TCA9548A, PCA9548A - ![crates.io](https://img.shields.io/crates/v/xca9548a.svg) 1. [ublox-cellular-rs] - Serial - Cellular driver for the full Ublox cellular serial based family 1. [atwinc1500-rs] - SPI - A host driver for the Atwinc1500 network controller -1. [HX711] - GPIO - An interrupt-based driver for the HX711 Load Cell Amplifer IC. no-std. +1. [HX711] - GPIO - An interrupt-based driver for the HX711 Load Cell Amplifier IC. no-std. [AD9850]: https://crates.io/crates/ad9850 [AFE4400]: https://github.com/ReeceStevens/afe4400 @@ -1193,13 +1193,13 @@ Work in progress drivers. Help the authors make these crates awesome! ## no-std crates -[`#![no_std]` crates][no-std-category] designed to run on resource constrained devices. +[`#![no_std]` crates][no-std-category] designed to run on resource-constrained devices. 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) 1. [atomic](https://crates.io/crates/atomic): Generic Atomic wrapper type. ![crates.io](https://img.shields.io/crates/v/atomic.svg) 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) 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) -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) +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) 1. [bit_field](https://crates.io/crates/bit_field): manipulating bitfields and bitarrays - ![crates.io](https://img.shields.io/crates/v/bit_field.svg) 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) 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) @@ -1233,7 +1233,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 1. [lorawan-encoding](https://github.com/ivajloip/rust-lorawan/tree/master/encoding): A LoRaWAN packet codec. -1. [lorawan-device](https://github.com/ivajloip/rust-lorawan/tree/master/device): A LoRaWAN MAC implementation supporting both event driven and async mode. +1. [lorawan-device](https://github.com/ivajloip/rust-lorawan/tree/master/device): A LoRaWAN MAC implementation supporting both event-driven and async mode. 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) 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) 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) @@ -1247,7 +1247,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 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) -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) +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) 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) 1. [RampMaker](https://crates.io/crates/ramp-maker): Stepper Motor Acceleration Ramp Generator - ![crates.io](https://img.shields.io/crates/v/ramp-maker.svg) 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) @@ -1299,17 +1299,17 @@ Work in progress crates. Help the authors make these crates awesome! - [rmk](https://github.com/HaoboGu/rmk): Mechanical keyboard firmware for stm32/rp2040, supports vial/dynamic keymap/eeprom, written in Rust - [anne-key](https://github.com/ah-/anne-key): Alternate keyboard firmware for the Obins ANNE Pro - [μLA](https://github.com/dotcypress/ula): Micro Logic Analyzer for RP2040 -- [air-gradient-pro-rs](https://github.com/jonlamb-gh/air-gradient-pro-rs): Bootloader, firmware and CLI tools for the AirGradient PRO +- [air-gradient-pro-rs](https://github.com/jonlamb-gh/air-gradient-pro-rs): Bootloader, firmware, and CLI tools for the AirGradient PRO - [Stabilizer](https://github.com/quartiq/stabilizer): Firmware for a DSP tool used in quantum physics experimentation, includes telemetry via MQTT and run-time configuration - [Booster](https://github.com/quartiq/booster): Firmware for an RF power amplifier, including telemetry via MQTT and run-time configuration - [Thermostat EEM](https://github.com/quartiq/thermostat-eem): Firmware for a multi-channel temperature controller used in physics experiments -- [Card/IO ECG](https://github.com/card-io-ecg/card-io-fw): Firmware for a business-card sized ECG device with Wifi connectivity +- [Card/IO ECG](https://github.com/card-io-ecg/card-io-fw): Firmware for a business-card-sized ECG device with Wifi connectivity - [BillMcok](https://github.com/pmnxis/billmock-app-rs): Firmware for credit card terminal add-on hardware to install on Korean arcade machines -- [LuLuu](https://github.com/fu5ha/luluu): Firmware for a custom RP2040-based display controller which streams animated images from a microSD card to a small LCD display. +- [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. -## Old books, blogs and training materials +## Old books, blogs, and training materials -These materials may be outdated and reflect earlier practices, but might still be useful for reference. +These materials may be outdated and reflect earlier practices, but they might still be helpful for reference. - [Exploring Rust on Teensy](https://branan.github.io/teensy/) by @branan — Beginner set of articles on getting into embedded dev in Rust. - [Pragmatic Bare Metal Rust](http://www.hashmismatch.net/pragmatic-bare-metal-rust/) A starter article about starting Rust development on STM32 microcontrollers (cubeMX + FFI). From 8d98beb5469083de0fa4cf4a7df78aca9c40d873 Mon Sep 17 00:00:00 2001 From: decryphe <12104091+decryphe@users.noreply.github.com> Date: Tue, 19 Dec 2023 14:31:01 +0100 Subject: [PATCH 103/178] Add MS5637 temperature and pressure sensor --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index cd57c788..540ca4b9 100644 --- a/README.md +++ b/README.md @@ -1056,6 +1056,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [motor-driver] - Motor drivers: L298N, TB6612FNG, etc. 1. [MPU6050] - I2C - no_std driver for the MPU6050 ![crates.io](https://img.shields.io/crates/v/mpu6050.svg) 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) +1. [MS5637] - no_std I2C driver for the MS5637 temperature and pressure sensor ![crates.io](https://img.shields.io/crates/v/ms5637.svg) 1. [NRF24L01] - SPI - 2.4 GHz wireless communication 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) 1. [PCD8544] - SPI - 48x84 pixels matrix LCD controller @@ -1153,6 +1154,7 @@ Work in progress drivers. Help the authors make these crates awesome! [motor-driver]: https://github.com/japaric/motor-driver [MPU6050]: https://crates.io/crates/mpu6050 [MPU9250]: https://crates.io/crates/mpu9250 +[MS5637]: https://crates.io/crates/ms5637 [NRF24L01]: https://github.com/maikelwever/nrf24l01 [OneWire]: https://crates.io/crates/onewire [PCD8544]: https://github.com/pcein/pcd8544 From f9b57e7e16606c9128cea4a769ae1f77c17d9d6f Mon Sep 17 00:00:00 2001 From: Emanuele Panzeri Date: Fri, 12 Jan 2024 08:57:06 +0100 Subject: [PATCH 104/178] Fix link to "Arduino Nano 33 IoT" product --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 92bd330d..ecf23f96 100644 --- a/README.md +++ b/README.md @@ -617,7 +617,7 @@ Crates tailored for specific boards. - [`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) - [`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) - [`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) -- [`arduino_nano33iot`](https://crates.io/crates/arduino_nano33iot) - Board support for the [Arduino Nano 33 IoT](https://store.arduino.cc/usa/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) +- [`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) ### Nordic From 380cddd368f245bd49feb04c45518171aaec98aa Mon Sep 17 00:00:00 2001 From: rmsyn Date: Sun, 21 Jan 2024 23:17:14 +0000 Subject: [PATCH 105/178] fixup: jh71xx-pac: remove VisionFive2 board info Board versions have been removed from the `jh71xx-pac` library, since this level of support is better suited for BSP packages. --- README.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/README.md b/README.md index ecf23f96..95dd03b1 100644 --- a/README.md +++ b/README.md @@ -280,12 +280,7 @@ The [`efm32-rs`](https://github.com/efm32-rs) project has peripheral access APIs ### StarFive -- [`j71xx-pac`](https://github.com/rmsyn/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) - -Currently, the two VisionFive2 board revisions (v1.2a and v1.3b) are supported: - -- [`jh7110-vf2-12a-pac`](https://crates.io/crates/jh7110-vf2-12a-pac) - ![crates.io](https://img.shields.io/crates/v/jh7110-vf2-12a-pac) -- [`jh7110-vf2-13b-pac`](https://crates.io/crates/jh7110-vf2-13b-pac) - ![crates.io](https://img.shields.io/crates/v/jh7110-vf2-13b-pac) +- [`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) ### STMicroelectronics From f05c760a1fb3206c5fdbe2452c5da51d50059e2e Mon Sep 17 00:00:00 2001 From: rmsyn Date: Sun, 21 Jan 2024 23:23:17 +0000 Subject: [PATCH 106/178] jh71xx-hal: add a link to the `jh71xx-hal` crate Adds an entry for the `jh71xx-hal` HAL crate for StarFive JH71xx MCUs. --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 95dd03b1..5bf9d230 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,7 @@ This project is developed and maintained by the [Resources team][team]. - [GigaDevice](#gigadevice-1) - [Vorago](#vorago-1) - [Renesas](#renesas-1) + - [StarFive](#starfive-1) - [Architecture support crates](#architecture-support-crates) - [ARM](#arm) - [RISC-V](#risc-v) @@ -521,6 +522,10 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! ### Renesas - [`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) +### StarFive + +- [`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) + ## Architecture support crates Crates tailored for general CPU architectures. From 9b3f0305b4b69e39d3e235a8836d4f97b8ba7260 Mon Sep 17 00:00:00 2001 From: Caleb Jamison Date: Wed, 24 Jan 2024 08:45:06 -0500 Subject: [PATCH 107/178] Fix links to lorawan-device and lorawan-encoding. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5bf9d230..70a3beee 100644 --- a/README.md +++ b/README.md @@ -1234,8 +1234,8 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 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) -1. [lorawan-encoding](https://github.com/ivajloip/rust-lorawan/tree/master/encoding): A LoRaWAN packet codec. -1. [lorawan-device](https://github.com/ivajloip/rust-lorawan/tree/master/device): A LoRaWAN MAC implementation supporting both event-driven and async mode. +1. [lorawan-encoding](https://github.com/lora-rs/lora-rs/tree/main/lorawan-device): A LoRaWAN packet codec. +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. 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) 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) 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) From 14cd3eb30f8e8461473bd94a311b668071bd8879 Mon Sep 17 00:00:00 2001 From: Sviatoslav Kokurin Date: Thu, 8 Feb 2024 11:48:28 +0300 Subject: [PATCH 108/178] Add embedded-cli --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 70a3beee..71354047 100644 --- a/README.md +++ b/README.md @@ -1218,6 +1218,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [crossbus](https://github.com/hominee/crossbus): A Platform-Less, Runtime-Less Actor Computing Model. 1. [ector](https://github.com/drogue-iot/ector): An async actor framework for embedded, based on embassy. 1. [embassy]: A set of embedded async tools to make async/await a first-class option for embedded development +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) 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) 1. [embedded-update](https://github.com/drogue-iot/embedded-update): Pluggable firmware update protocol for embedded devices. 1. [embedded-tls](https://github.com/drogue-iot/embedded-tls): A TLS 1.3 implementation that runs in a no-std environment. From 857a64838f9b25adda4afeaaa21cf5f34a6d4e1f Mon Sep 17 00:00:00 2001 From: rmsyn Date: Sat, 10 Feb 2024 00:27:39 +0000 Subject: [PATCH 109/178] tool: add svd-generator --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 71354047..e26f5cc8 100644 --- a/README.md +++ b/README.md @@ -180,6 +180,7 @@ In 2018, the Rust community created an embedded working group to help drive adop - [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 - [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 - [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. +- [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) [embedded-hal-mock]: https://crates.io/crates/embedded-hal-mock From d0baac3884ebffbeb8db8fbdb546c95091368e31 Mon Sep 17 00:00:00 2001 From: Douwe <80849143+deltronix@users.noreply.github.com> Date: Sun, 18 Feb 2024 14:16:34 +0100 Subject: [PATCH 110/178] Add ad57xx WIP Driver --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e26f5cc8..b76b0673 100644 --- a/README.md +++ b/README.md @@ -1005,6 +1005,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [APDS9960] - I2C - Proximity, ambient light, RGB, and gesture sensor - ![crates.io](https://img.shields.io/crates/v/apds9960.svg) 1. [AS5048A] - SPI - AMS AS5048A Magnetic Rotary Encoder 1. [AXP209] - I2C - Power management unit +1. [ad57xx] - SPI - Quad and dual channel DAC - ![crates.io](https://img.shields.io/crates/v/ad57xx.svg) 1. [BH1750] - I2C - ambient light sensor (lux meter) 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) 1. [bme680] - I2C - Temperature / humidity / gas / pressure sensor - ![crates.io](https://img.shields.io/crates/v/bme680.svg) @@ -1101,6 +1102,7 @@ Work in progress drivers. Help the authors make these crates awesome! [APDS9960]: https://crates.io/crates/apds9960 [AS5048A]: https://github.com/uwearzt/as5048a [AXP209]: https://github.com/RandomInsano/axp209-rs +[ad57xx]: https://github.com/deltronix/ad57xx [BH1750]: https://github.com/wose/bh1750 [BME280]: https://crates.io/crates/bme280 [bme680]: https://github.com/marcelbuesing/bme680 From ac5bf1b7c89b0a9f18d71d921061ebe4a5729538 Mon Sep 17 00:00:00 2001 From: DeflateAwning <11021263+DeflateAwning@users.noreply.github.com> Date: Wed, 6 Mar 2024 14:01:32 -0700 Subject: [PATCH 111/178] Add compatibility list for LM75 (fixes #442) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b76b0673..f9ae874d 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ This project is developed and maintained by the [Resources team][team]. **Don't see something you want or need here?** Add it to the [Not Yet Awesome Embedded Rust](https://github.com/rust-embedded/not-yet-awesome-embedded-rust) list! -## Table of contents +## Table of Contents - [Embedded Rust](#embedded-rust) - [Table of contents](#table-of-contents) @@ -1034,7 +1034,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [INA260] - I2C - power monitor - ![crates.io](https://img.shields.io/crates/v/ina260.svg) 1. [ISL29125] - I2C - RGB Color Light Sensor with IR Blocking Filter - ![crates.io](https://img.shields.io/crates/v/isl29125.svg) 1. [IST7920] - SPI monochrome LCD display - ![crates.io](https://img.shields.io/crates/v/ist7920.svg) -1. [LM75] - I2C - Temperature sensor and thermal watchdog - ![crates.io](https://img.shields.io/crates/v/lm75.svg) +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) 1. [LS010B7DH01] - SPI - Memory LCD 1. [LSM303C] - A platform agnostic driver to interface with the LSM303C (accelerometer + compass) ![crates.io](https://img.shields.io/crates/v/lsm303c.svg) 1. [LSM9DS1] - I2C/SPI - 9-axis motion sensor module ![crates.io](https://img.shields.io/crates/v/lsm9ds1.svg) From 3834b7f1389a43345aa70fb6a729bed0fd7a0921 Mon Sep 17 00:00:00 2001 From: Geovane Fedrecheski Date: Tue, 19 Mar 2024 14:23:52 +0100 Subject: [PATCH 112/178] Add lakers: implementation of EDHOC Repo: https://github.com/openwsn-berkeley/lakers --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f9ae874d..8dbff299 100644 --- a/README.md +++ b/README.md @@ -1238,6 +1238,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 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) +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) 1. [lorawan-encoding](https://github.com/lora-rs/lora-rs/tree/main/lorawan-device): A LoRaWAN packet codec. 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. 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) From e29a94d5878214ab8d348bf96a82abe89878ce77 Mon Sep 17 00:00:00 2001 From: Markus Kasten Date: Wed, 10 Apr 2024 21:13:45 +0200 Subject: [PATCH 113/178] add lp586x to WIP driver crates --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 8dbff299..1b79b8c5 100644 --- a/README.md +++ b/README.md @@ -1035,6 +1035,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [ISL29125] - I2C - RGB Color Light Sensor with IR Blocking Filter - ![crates.io](https://img.shields.io/crates/v/isl29125.svg) 1. [IST7920] - SPI monochrome LCD display - ![crates.io](https://img.shields.io/crates/v/ist7920.svg) 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) +1. [lp586x] - I2C/SPI - LED matrix driver ![crates.io](https://img.shields.io/crates/v/lp586x.svg) 1. [LS010B7DH01] - SPI - Memory LCD 1. [LSM303C] - A platform agnostic driver to interface with the LSM303C (accelerometer + compass) ![crates.io](https://img.shields.io/crates/v/lsm303c.svg) 1. [LSM9DS1] - I2C/SPI - 9-axis motion sensor module ![crates.io](https://img.shields.io/crates/v/lsm9ds1.svg) @@ -1134,6 +1135,7 @@ Work in progress drivers. Help the authors make these crates awesome! [ISL29125]: https://crates.io/crates/isl29125 [IST7920]: https://crates.io/crates/ist7920 [LM75]: https://crates.io/crates/lm75 +[lp586x]: https://crates.io/crates/lp586x [LS010B7DH01]: https://github.com/byronwasti/ls010b7dh01 [LSM303C]: https://crates.io/crates/lsm303c [LSM9DS1]: https://crates.io/crates/lsm9ds1 From a8a282eea6cb245a8193794361826c5ee61196e5 Mon Sep 17 00:00:00 2001 From: HaoboGu Date: Mon, 15 Apr 2024 10:24:30 +0800 Subject: [PATCH 114/178] Add Chinese community --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1b79b8c5..2ce6ae9b 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,7 @@ In 2018, the Rust community created an embedded working group to help drive adop - [#stm32-rs:matrix.org] - For discussion of using Embedded Rust on STM32 based devices - [#atsamd-rs:gitter.im] - For discussions of using Embedded Rust on ATSAMD devices - [#ethercrab:matrix.org] - For discussion of general EtherCAT and the Rust implementation, EtherCrab +- [rust-embedded:QQ group] - Chinese community for Rust embedded [#rust-embedded-graphics:matrix.org]: https://matrix.to/#/#rust-embedded-graphics:matrix.org [#esp-rs:matrix.org]: https://matrix.to/#/#esp-rs:matrix.org @@ -128,6 +129,7 @@ In 2018, the Rust community created an embedded working group to help drive adop [#rp-rs:matrix.org]: https://matrix.to/#/#rp-rs:matrix.org [#atsamd-rs:gitter.im]: https://matrix.to/#/#atsamd-rs_community:gitter.im [#ethercrab:matrix.org]: https://matrix.to/#/#ethercrab:matrix.org +[Rust-embedded:QQ group]: https://qm.qq.com/q/A8Hl57xR1C ## Books, blogs, and training materials From ae4d3f10bdcf8a119ad98a4fe1342f8be7167932 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20J=C3=B6rdens?= Date: Mon, 22 Apr 2024 16:41:56 +0200 Subject: [PATCH 115/178] Add miniconf crate --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2ce6ae9b..fb3fc9de 100644 --- a/README.md +++ b/README.md @@ -1250,6 +1250,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 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) +1. [miniconf](https://crates.io/crates/miniconf): Serialize/deserialize nodes in nested heterogeneous structs/arrays by path/key - ![crates.io](https://img.shields.io/crates/v/miniconf.svg) 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) 1. [moonboot](https://github.com/jhbruhn/moonboot): OTA Bootloader Construction Framework for Rust no_std environments, especially embedded devices without an OS 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) From 6de97552b062db8837810ff938a6cefdcdcfb8d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20J=C3=B6rdens?= Date: Mon, 22 Apr 2024 16:44:08 +0200 Subject: [PATCH 116/178] miniconf: update description --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fb3fc9de..b944993d 100644 --- a/README.md +++ b/README.md @@ -1250,7 +1250,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 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) -1. [miniconf](https://crates.io/crates/miniconf): Serialize/deserialize nodes in nested heterogeneous structs/arrays by path/key - ![crates.io](https://img.shields.io/crates/v/miniconf.svg) +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) 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) 1. [moonboot](https://github.com/jhbruhn/moonboot): OTA Bootloader Construction Framework for Rust no_std environments, especially embedded devices without an OS 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) From 437fbcf717018599c50cb8d4554f2b33a8619bfa Mon Sep 17 00:00:00 2001 From: Carlos Barrales Ruiz Date: Fri, 3 May 2024 16:08:22 +0200 Subject: [PATCH 117/178] Add [prinThor] firmware --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b944993d..a88683d8 100644 --- a/README.md +++ b/README.md @@ -1318,6 +1318,8 @@ Work in progress crates. Help the authors make these crates awesome! - [Card/IO ECG](https://github.com/card-io-ecg/card-io-fw): Firmware for a business-card-sized ECG device with Wifi connectivity - [BillMock](https://github.com/pmnxis/billmock-app-rs): Firmware for credit card terminal add-on hardware to install on Korean arcade machines - [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. +- [prinThor](https://github.com/cbruiz/printhor): 3DPrinter/CNC/Engraver firmware framework powered by rust embassy for stm32 families and rp2040. + ## Old books, blogs, and training materials From e38d100c97de239ac65ca65587917fbb78c36134 Mon Sep 17 00:00:00 2001 From: Carlos Barrales Ruiz Date: Fri, 3 May 2024 16:15:11 +0200 Subject: [PATCH 118/178] Add [prinThor] firmware --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index a88683d8..529ce6ca 100644 --- a/README.md +++ b/README.md @@ -1320,7 +1320,6 @@ Work in progress crates. Help the authors make these crates awesome! - [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. - [prinThor](https://github.com/cbruiz/printhor): 3DPrinter/CNC/Engraver firmware framework powered by rust embassy for stm32 families and rp2040. - ## Old books, blogs, and training materials These materials may be outdated and reflect earlier practices, but they might still be helpful for reference. From 8f2eddf570a4794663dd6ddef9f968d0f1e8962d Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Fri, 17 May 2024 09:33:06 +0200 Subject: [PATCH 119/178] docs: Update espressif content --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 529ce6ca..265b3a31 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ This project is developed and maintained by the [Resources team][team]. ## Table of Contents - [Embedded Rust](#embedded-rust) - - [Table of contents](#table-of-contents) + - [Table of Contents](#table-of-contents) - [Community](#community) - [Community Chat Rooms](#community-chat-rooms) - [Books, blogs, and training materials](#books-blogs-and-training-materials) @@ -86,7 +86,7 @@ This project is developed and maintained by the [Resources team][team]. - [no-std crates](#no-std-crates) - [WIP](#wip-1) - [Firmware projects](#firmware-projects) - - [Old books, blogs and training materials](#old-books-blogs-and-training-materials) + - [Old books, blogs, and training materials](#old-books-blogs-and-training-materials) - [License](#license) - [Code of Conduct](#code-of-conduct) @@ -135,6 +135,8 @@ In 2018, the Rust community created an embedded working group to help drive adop - [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. - [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. +- [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. +- [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. - [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 - [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. - [Writing an OS in Rust](https://os.phil-opp.com/) A blog series creating a small operating system in Rust @@ -144,7 +146,6 @@ In 2018, the Rust community created an embedded working group to help drive adop - [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/) - [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. - [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. -- [Ferrous Systems' Embedded Rust on Espressif](https://esp-rs.github.io/std-training) - Training Material for learning to use Embedded Rust with the Espressif ESP32-C3. - [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. - [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. - [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. @@ -321,6 +322,7 @@ The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral ac - [`esp32c2`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c2) - ![crates.io](https://img.shields.io/crates/v/esp32c2.svg) - [`esp32c3`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c3) - ![crates.io](https://img.shields.io/crates/v/esp32c3.svg) - [`esp32c6`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c6) - ![crates.io](https://img.shields.io/crates/v/esp32c6.svg) +- [`esp32h2`](https://github.com/esp-rs/esp-pacs/tree/main/esp32h2) - ![crates.io](https://img.shields.io/crates/v/esp32h2.svg) - [`esp32s2`](https://github.com/esp-rs/esp-pacs/tree/main/esp32s2) - ![crates.io](https://img.shields.io/crates/v/esp32s2.svg) - [`esp32s3`](https://github.com/esp-rs/esp-pacs/tree/main/esp32s3) - ![crates.io](https://img.shields.io/crates/v/esp32s3.svg) - [`esp8266`](https://github.com/esp-rs/esp-pacs/tree/main/esp8266) - ![crates.io](https://img.shields.io/crates/v/esp8266.svg) @@ -1317,7 +1319,7 @@ Work in progress crates. Help the authors make these crates awesome! - [Thermostat EEM](https://github.com/quartiq/thermostat-eem): Firmware for a multi-channel temperature controller used in physics experiments - [Card/IO ECG](https://github.com/card-io-ecg/card-io-fw): Firmware for a business-card-sized ECG device with Wifi connectivity - [BillMock](https://github.com/pmnxis/billmock-app-rs): Firmware for credit card terminal add-on hardware to install on Korean arcade machines -- [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. +- [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. - [prinThor](https://github.com/cbruiz/printhor): 3DPrinter/CNC/Engraver firmware framework powered by rust embassy for stm32 families and rp2040. ## Old books, blogs, and training materials From 0c25daa47329cedc81ea7a19c39393d31e5ad6d1 Mon Sep 17 00:00:00 2001 From: Louis Thiery Date: Tue, 28 May 2024 18:11:34 -0700 Subject: [PATCH 120/178] Fix link for lorawan-encoding --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 265b3a31..030f76f8 100644 --- a/README.md +++ b/README.md @@ -1245,7 +1245,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 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) -1. [lorawan-encoding](https://github.com/lora-rs/lora-rs/tree/main/lorawan-device): A LoRaWAN packet codec. +1. [lorawan-encoding](https://github.com/lora-rs/lora-rs/tree/main/lorawan-encoding): A LoRaWAN packet codec. 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. 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) 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) From 4becdf0ca0a8c66664d13a9973220ffe4e7fc227 Mon Sep 17 00:00:00 2001 From: Diego Barrios Romero Date: Mon, 24 Jun 2024 09:23:17 +0200 Subject: [PATCH 121/178] Add some drivers --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 030f76f8..e58977a8 100644 --- a/README.md +++ b/README.md @@ -1041,6 +1041,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 1. [lp586x] - I2C/SPI - LED matrix driver ![crates.io](https://img.shields.io/crates/v/lp586x.svg) 1. [LS010B7DH01] - SPI - Memory LCD +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) 1. [LSM303C] - A platform agnostic driver to interface with the LSM303C (accelerometer + compass) ![crates.io](https://img.shields.io/crates/v/lsm303c.svg) 1. [LSM9DS1] - I2C/SPI - 9-axis motion sensor module ![crates.io](https://img.shields.io/crates/v/lsm9ds1.svg) 1. [ltr-559] - I2C - Ambient Light Sensor and Proximity sensor ![crates.io](https://img.shields.io/crates/v/ltr-559.svg) @@ -1048,8 +1049,8 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [M95320] - SPI - STMicroelectronics Serial flash EEPROM - ![crates.io](https://img.shields.io/crates/v/m95320.svg) 1. [MAG3110] - I2C - Magnetometer 1. [MAX17048/9] - I2C - LiPo Fuel gauge, battery monitoring IC - ![crates.io](https://img.shields.io/crates/v/max17048.svg) -1. [MAX170xx] - I2C - LiPo Fuel gauge, battery monitoring ICs compatible with MAX17043/4, MAX17048/9, MAX17058/9. -1. [MAX3010x] - I2C - Pulse oximeter and heart-rate sensor. ATM Compatible with MAX30102. -![crates.io](https://img.shields.io/crates/v/max3010x.svg) +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) +1. [MAX3010x] - I2C - Pulse oximeter and heart-rate sensor. ATM Compatible with MAX30102. - ![crates.io](https://img.shields.io/crates/v/max3010x.svg) 1. [MAX31855] - SPI - Thermocouple digital converter -![crates.io](https://img.shields.io/crates/v/max31855.svg) 1. [MAX31865] - SPI - RTD to Digital converter - ![crates.io](https://img.shields.io/crates/v/max31865.svg) 1. [MAX44009] - I2C - Ambient light sensor - ![crates.io](https://img.shields.io/crates/v/max44009.svg) @@ -1057,9 +1058,11 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [MCP4725] - I2C - 12-bit DAC - ![crates.io](https://img.shields.io/crates/v/mcp4725) 1. [MCP49xx] - SPI - 8/10/12-bit DACs like MCP4921, MCP4922, MCP4801, etc. - ![crates.io](https://img.shields.io/crates/v/mcp49xx.svg) 1. [MCP9808] - I2C - Temperature sensor - ![crates.io](https://img.shields.io/crates/v/mcp9808.svg) +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) 1. [MFRC522] - SPI - RFID tag reader/writer 1. [midi-port] - UART - MIDI input - ![crates.io](https://img.shields.io/crates/v/midi-port.svg) 1. [MLX9061x] - I2C - MLX90614/MLX90615 Contact-less infrared (IR) temperature sensor driver. - ![crates.io](https://img.shields.io/crates/v/mlx9061x.svg) +1. [MMA8x5x] - I2C - Tri-axis accelerometers like MMA8451Q, MMA8452Q, MMA8453Q, MMA8652FC and MMA8653FC. - ![crates.io](https://img.shields.io/crates/v/mma8x5x.svg) 1. [motor-driver] - Motor drivers: L298N, TB6612FNG, etc. 1. [MPU6050] - I2C - no_std driver for the MPU6050 ![crates.io](https://img.shields.io/crates/v/mpu6050.svg) 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) @@ -1141,6 +1144,7 @@ Work in progress drivers. Help the authors make these crates awesome! [LM75]: https://crates.io/crates/lm75 [lp586x]: https://crates.io/crates/lp586x [LS010B7DH01]: https://github.com/byronwasti/ls010b7dh01 +[Lsm303agr]: https://crates.io/crates/lsm303agr [LSM303C]: https://crates.io/crates/lsm303c [LSM9DS1]: https://crates.io/crates/lsm9ds1 [ltr-559]: https://crates.io/crates/ltr-559 @@ -1156,10 +1160,12 @@ Work in progress drivers. Help the authors make these crates awesome! [MAX7219]: https://github.com/almindor/max7219 [MCP4725]: https://crates.io/crates/mcp4725 [MCP49xx]: https://crates.io/crates/mcp49xx +[MCP4x]: https://crates.io/crates/mcp4x [MCP9808]: https://crates.io/crates/mcp9808 [MFRC522]: https://github.com/japaric/mfrc522 [midi-port]: https://crates.io/crates/midi-port [MLX9061x]: https://crates.io/crates/mlx9061x +[MMA8x5x]: https://crates.io/crates/mma8x5x [motor-driver]: https://github.com/japaric/motor-driver [MPU6050]: https://crates.io/crates/mpu6050 [MPU9250]: https://crates.io/crates/mpu9250 From 1003b2a09968d11a90c1c1460491428f7e316a8e Mon Sep 17 00:00:00 2001 From: James Munns Date: Mon, 24 Jun 2024 11:38:10 +0200 Subject: [PATCH 122/178] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e58977a8..8d203267 100644 --- a/README.md +++ b/README.md @@ -1144,7 +1144,7 @@ Work in progress drivers. Help the authors make these crates awesome! [LM75]: https://crates.io/crates/lm75 [lp586x]: https://crates.io/crates/lp586x [LS010B7DH01]: https://github.com/byronwasti/ls010b7dh01 -[Lsm303agr]: https://crates.io/crates/lsm303agr +[LSM303AGR]: https://crates.io/crates/lsm303agr [LSM303C]: https://crates.io/crates/lsm303c [LSM9DS1]: https://crates.io/crates/lsm9ds1 [ltr-559]: https://crates.io/crates/ltr-559 From d09a62bf171b176cd7bc6134c677b22b359b725b Mon Sep 17 00:00:00 2001 From: apollolabsdev <104051566+apollolabsdev@users.noreply.github.com> Date: Wed, 26 Jun 2024 22:44:12 +0300 Subject: [PATCH 123/178] Add Simplified Embedded Rust Book Links The update entails adding links to both editions of the Simplified Embedded Rust book as an additional resource. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 8d203267..71afc6b7 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,8 @@ In 2018, the Rust community created an embedded working group to help drive adop - [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. - [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 - [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. +- [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. +- [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. - [Writing an OS in Rust](https://os.phil-opp.com/) A blog series creating a small operating system in Rust - [MicroRust](https://droogmic.github.io/microrust/) Introductory book for embedded development in Rust on the micro:bit. - [Physical Computing With Rust](https://rahul-thakoor.github.io/physical-computing-rust/) A (WIP) guide to physical computing with Rust on the Raspberry Pi. From 0cf54c3c3139bc9c4d6f2f0054f2c1015760ec0d Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 26 Jun 2024 22:49:51 +0200 Subject: [PATCH 124/178] update links for Vorago support --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8d203267..324bbf89 100644 --- a/README.md +++ b/README.md @@ -355,8 +355,8 @@ Peripheral access crates for the different XMC4xxx families of microcontrollers ### Vorago -- [`va108xx`](https://egit.irs.uni-stuttgart.de/rust/va108xx) - ![crates.io](https://img.shields.io/crates/v/va108xx.svg) -- [`va416xx`](https://egit.irs.uni-stuttgart.de/rust/va416xx) - ![crates.io](https://img.shields.io/crates/v/va416xx.svg) +- [`va108xx`](https://egit.irs.uni-stuttgart.de/rust/va108xx-rs) - ![crates.io](https://img.shields.io/crates/v/va108xx.svg) +- [`va416xx`](https://egit.irs.uni-stuttgart.de/rust/va416xx-rs) - ![crates.io](https://img.shields.io/crates/v/va416xx.svg) ### Wiznet @@ -521,7 +521,7 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! ### Vorago -- [`va108xx-hal`](https://egit.irs.uni-stuttgart.de/rust/va108xx-hal) - ![crates.io](https://img.shields.io/crates/v/va108xx-hal.svg) +- [`va108xx-hal`](https://egit.irs.uni-stuttgart.de/rust/va108xx-rs) - ![crates.io](https://img.shields.io/crates/v/va108xx-hal.svg) - [Blogpost](https://robamu.github.io/post/rust-ecosystem/) ### Renesas @@ -706,7 +706,7 @@ Crates tailored for specific boards. ### Vorago -- [`vorago-reb1`](https://egit.irs.uni-stuttgart.de/rust/vorago-reb1) - ![crates.io](https://img.shields.io/crates/v/vorago-reb1.svg) +- [`vorago-reb1`](https://egit.irs.uni-stuttgart.de/rust/va108xx-rs) - ![crates.io](https://img.shields.io/crates/v/vorago-reb1.svg) - [Blogpost](https://robamu.github.io/post/rust-ecosystem/) ### Texas Instruments From 797c8169ac2667e5e4a1af4bd6d9c4c84ebb4e7f Mon Sep 17 00:00:00 2001 From: James Munns Date: Wed, 3 Jul 2024 09:30:54 +0200 Subject: [PATCH 125/178] Fix indentation and add separate paid and free material sections --- README.md | 123 +++++++++++++++++++++++++++++------------------------- 1 file changed, 66 insertions(+), 57 deletions(-) diff --git a/README.md b/README.md index 324bbf89..c4694aee 100644 --- a/README.md +++ b/README.md @@ -133,49 +133,58 @@ In 2018, the Rust community created an embedded working group to help drive adop ## Books, blogs, and training materials -- [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. -- [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. -- [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. -- [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. -- [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 -- [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. +### Free and public materials + +These materials are available publicly, typically under permissive licenses. + +- [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. +- [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. +- [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. +- [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. +- [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 +- [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. - [Writing an OS in Rust](https://os.phil-opp.com/) A blog series creating a small operating system in Rust -- [MicroRust](https://droogmic.github.io/microrust/) Introductory book for embedded development in Rust on the micro:bit. -- [Physical Computing With Rust](https://rahul-thakoor.github.io/physical-computing-rust/) A (WIP) guide to physical computing with Rust on the Raspberry Pi. -- [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. -- [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/) -- [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. -- [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. -- [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. -- [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. -- [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. -- [Embedded Rust programming playlist](https://www.youtube.com/playlist?list=PLP_X41VhYn5X6Wwjnm0bRwI3n2pdaszxU) Various livestreams with Embedded Rust live coding -- [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. -- [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)) +- [MicroRust](https://droogmic.github.io/microrust/) Introductory book for embedded development in Rust on the micro:bit. +- [Physical Computing With Rust](https://rahul-thakoor.github.io/physical-computing-rust/) A (WIP) guide to physical computing with Rust on the Raspberry Pi. +- [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. +- [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/) +- [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. +- [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. +- [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. +- [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. +- [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. +- [Embedded Rust programming playlist](https://www.youtube.com/playlist?list=PLP_X41VhYn5X6Wwjnm0bRwI3n2pdaszxU) Various livestreams with Embedded Rust live coding +- [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. +- [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)) [Ferrous Systems]: https://ferrous-systems.com +### Paid and commercially available materials + +These materials are available for purchase. They have been reviewed for relevancy, but are not +specifically endorsed or reviewed for accuracy or quality by the Embedded Working Group. + ## Tools -- [xargo](https://github.com/japaric/xargo) Rust package manager with support for non-default std libraries — build Rust runtime for your embedded system. +- [xargo](https://github.com/japaric/xargo) Rust package manager with support for non-default std libraries — build Rust runtime for your embedded system. - 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. -- [svd2rust](https://github.com/japaric/svd2rust) Generate Rust structs with register mappings from SVD files. -- [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) -- [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) -- [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) -- [cortex-m semihosting](https://github.com/japaric/cortex-m-semihosting) Semihosting for ARM Cortex-M processors -- [bobbin-cli](https://github.com/bobbin-rs/bobbin-cli) A Rust command line tool to simplify embedded development and deployment. -- [ferros](https://github.com/auxoncorp/ferros) A Rust-based userland which also adds compile-time assurances to seL4 development. -- [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) -- [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) -- [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) -- [cargo-bloat](https://github.com/RazrFalcon/cargo-bloat) Find out what takes most of the space in your executable. -- [cargo-call-stack](https://crates.io/crates/cargo-call-stack) Static, whole program stack usage analyzer. -- [cargo-dfu](https://crates.io/crates/cargo-dfu) Cargo extension for flashing embedded rust programs via DFU. -- [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) -- [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) -- [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) -- [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: +- [svd2rust](https://github.com/japaric/svd2rust) Generate Rust structs with register mappings from SVD files. +- [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) +- [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) +- [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) +- [cortex-m semihosting](https://github.com/japaric/cortex-m-semihosting) Semihosting for ARM Cortex-M processors +- [bobbin-cli](https://github.com/bobbin-rs/bobbin-cli) A Rust command line tool to simplify embedded development and deployment. +- [ferros](https://github.com/auxoncorp/ferros) A Rust-based userland which also adds compile-time assurances to seL4 development. +- [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) +- [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) +- [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) +- [cargo-bloat](https://github.com/RazrFalcon/cargo-bloat) Find out what takes most of the space in your executable. +- [cargo-call-stack](https://crates.io/crates/cargo-call-stack) Static, whole program stack usage analyzer. +- [cargo-dfu](https://crates.io/crates/cargo-dfu) Cargo extension for flashing embedded rust programs via DFU. +- [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) +- [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) +- [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) +- [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: - [Probe Run](https://github.com/knurling-rs/probe-run): a cargo runner to flash and run embedded applications just like you would native applications, including backtraces and panicking behavior - [defmt](https://github.com/knurling-rs/defmt): a highly efficient logging framework that targets resource-constrained devices, like microcontrollers. - [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 @@ -192,18 +201,18 @@ In 2018, the Rust community created an embedded working group to help drive adop ### Real-time Operating System (RTOS) -- [Drone OS](https://drone-os.github.io) An Embedded Operating System for writing real-time applications in Rust. -- [FreeRTOS.rs](https://github.com/hashmismatch/freertos.rs) Rust interface for the FreeRTOS API -- [FreeRTOS-rust](https://github.com/lobaro/FreeRTOS-rust) Rust interface for FreeRTOS with Rust entry point and build support crate. -- [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. -- [Tock](https://www.tockos.org) An embedded operating system designed for running multiple concurrent, mutually distrustful applications on low-memory and low-power microcontrollers -- [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. +- [Drone OS](https://drone-os.github.io) An Embedded Operating System for writing real-time applications in Rust. +- [FreeRTOS.rs](https://github.com/hashmismatch/freertos.rs) Rust interface for the FreeRTOS API +- [FreeRTOS-rust](https://github.com/lobaro/FreeRTOS-rust) Rust interface for FreeRTOS with Rust entry point and build support crate. +- [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. +- [Tock](https://www.tockos.org) An embedded operating system designed for running multiple concurrent, mutually distrustful applications on low-memory and low-power microcontrollers +- [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. ### Real-time tools -- [RTIC v1.0](https://rtic.rs/1/book/en/) Real-Time Interrupt-driven Concurrency — A concurrency framework for building real-time systems: - - [cortex-m rtic](https://github.com/rtic-rs/cortex-m-rtic) RTIC framework for ARM Cortex-M microcontrollers - - [msp430 rtfm](https://github.com/japaric/msp430-rtfm) RTFM framework for MSP430 MCUs +- [RTIC v1.0](https://rtic.rs/1/book/en/) Real-Time Interrupt-driven Concurrency — A concurrency framework for building real-time systems: + - [cortex-m rtic](https://github.com/rtic-rs/cortex-m-rtic) RTIC framework for ARM Cortex-M microcontrollers + - [msp430 rtfm](https://github.com/japaric/msp430-rtfm) RTFM framework for MSP430 MCUs ## Peripheral Access Crates @@ -306,14 +315,14 @@ The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral ac ### Texas Instruments -- [`tm4c123x`](https://crates.io/crates/tm4c123x) Peripheral access API for TM4C123x microcontrollers (generated using svd2rust) -- [`tm4c129x`](https://crates.io/crates/tm4c129x) Peripheral access API for TM4C129x microcontrollers (generated using svd2rust) +- [`tm4c123x`](https://crates.io/crates/tm4c123x) Peripheral access API for TM4C123x microcontrollers (generated using svd2rust) +- [`tm4c129x`](https://crates.io/crates/tm4c129x) Peripheral access API for TM4C129x microcontrollers (generated using svd2rust) ### MSP430 -- [`msp430g2553`](https://github.com/japaric/msp430g2553) Peripheral access API for MSP430G2553 microcontrollers (generated using svd2rust) +- [`msp430g2553`](https://github.com/japaric/msp430g2553) Peripheral access API for MSP430G2553 microcontrollers (generated using svd2rust) - [msp430 quickstart](https://github.com/rust-embedded/msp430-quickstart) some examples for msp430 -- [`msp430fr2355`](https://crates.io/crates/msp430fr2355) Peripheral access API for MSP430FR2355 microcontrollers (generated using svd2rust) +- [`msp430fr2355`](https://crates.io/crates/msp430fr2355) Peripheral access API for MSP430FR2355 microcontrollers (generated using svd2rust) - [`msp430fr6972`](https://crates.io/crates/msp430fr6972) - ![Crates.io](https://img.shields.io/crates/v/msp430fr6972) ### Espressif @@ -1332,14 +1341,14 @@ Work in progress crates. Help the authors make these crates awesome! These materials may be outdated and reflect earlier practices, but they might still be helpful for reference. -- [Exploring Rust on Teensy](https://branan.github.io/teensy/) by @branan — Beginner set of articles on getting into embedded dev in Rust. -- [Pragmatic Bare Metal Rust](http://www.hashmismatch.net/pragmatic-bare-metal-rust/) A starter article about starting Rust development on STM32 microcontrollers (cubeMX + FFI). -- [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. -- [Robigalia](https://robigalia.org) general purpose robust operating system in Rust running on secure seL4 microkernel. -- [intermezzOS](http://intermezzos.github.io) A small teaching operating system in Rust. A book with some explanations is also included. -- [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. -- [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 -- [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. +- [Exploring Rust on Teensy](https://branan.github.io/teensy/) by @branan — Beginner set of articles on getting into embedded dev in Rust. +- [Pragmatic Bare Metal Rust](http://www.hashmismatch.net/pragmatic-bare-metal-rust/) A starter article about starting Rust development on STM32 microcontrollers (cubeMX + FFI). +- [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. +- [Robigalia](https://robigalia.org) general purpose robust operating system in Rust running on secure seL4 microkernel. +- [intermezzOS](http://intermezzos.github.io) A small teaching operating system in Rust. A book with some explanations is also included. +- [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. +- [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 +- [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. [@jamesmunns]: https://github.com/jamesmunns From ecb599a42f55e04e68246bce6184027b4cf135ed Mon Sep 17 00:00:00 2001 From: YuhanLiin Date: Sun, 14 Jul 2024 14:53:02 -0400 Subject: [PATCH 126/178] Add micropb crate --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a5bad913..3d7fb255 100644 --- a/README.md +++ b/README.md @@ -1267,6 +1267,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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. 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) 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) +1. [micropb](https://github.com/YuhanLiin/micropb): Rust Protobuf library targetting embedded systems and no_std environments without an allocator. 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) 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) 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) From 80864add54f16acd950a02be30ff809afda15767 Mon Sep 17 00:00:00 2001 From: Diego Barrios Romero Date: Mon, 15 Jul 2024 13:47:40 +0200 Subject: [PATCH 127/178] Update URL --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3d7fb255..2e5ef314 100644 --- a/README.md +++ b/README.md @@ -1267,7 +1267,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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. 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) 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) -1. [micropb](https://github.com/YuhanLiin/micropb): Rust Protobuf library targetting embedded systems and no_std environments without an allocator. +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) 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) 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) 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) From 0dee318168fc8d8bc2de1ab9bf8fe4506e52db15 Mon Sep 17 00:00:00 2001 From: birdistheword96 <53791523+birdistheword96@users.noreply.github.com> Date: Fri, 2 Aug 2024 16:34:23 +0100 Subject: [PATCH 128/178] Add ssd1322_rs async driver to the list This pull request links the new async ssd1322 rust driver to the list --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 2e5ef314..cbe60e0c 100644 --- a/README.md +++ b/README.md @@ -1096,6 +1096,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 1. [SSD1320] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1320.svg) 1. [SSD1322] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1322.svg) +1. [SSD1322_rs] - SPI - Async Gaphcis driver for SSD1322 screen - ![crates.io](https://img.shields.io/crates/v/ssd1322.svg) 1. [SSD1351] - SPI - 16bit colour OLED display driver - ![crates.io](https://img.shields.io/crates/v/ssd1351.svg) 1. [SSD1675] - SPI - Tri-color ePaper display controller - ![crates.io](https://img.shields.io/crates/v/ssd1675.svg) 1. [st7032i] - I2C - Dot Matrix LCD Controller driver (Sitronix ST7032i or similar). - ![crates.io](https://img.shields.io/crates/v/st7032i.svg) @@ -1199,6 +1200,7 @@ Work in progress drivers. Help the authors make these crates awesome! [spi-memory]: https://github.com/jonas-schievink/spi-memory/ [SSD1320]: https://crates.io/crates/ssd1320 [SSD1322]: https://crates.io/crates/ssd1322 +[SSD1322_rs]: https://crates.io/crates/ssd1322_rs [SSD1351]: https://crates.io/crates/ssd1351 [SSD1675]: https://crates.io/crates/ssd1675 [st7032i]: https://github.com/dotcypress/st7032i From 4ba0002d6ec20b3902c2e81e678dc65d51808584 Mon Sep 17 00:00:00 2001 From: birdistheword96 <53791523+birdistheword96@users.noreply.github.com> Date: Fri, 2 Aug 2024 16:37:45 +0100 Subject: [PATCH 129/178] Fix spelling and shield --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cbe60e0c..8a90981c 100644 --- a/README.md +++ b/README.md @@ -1096,7 +1096,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 1. [SSD1320] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1320.svg) 1. [SSD1322] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1322.svg) -1. [SSD1322_rs] - SPI - Async Gaphcis driver for SSD1322 screen - ![crates.io](https://img.shields.io/crates/v/ssd1322.svg) +1. [SSD1322_rs] - SPI - Async Graphcis driver for SSD1322 screen - ![crates.io](https://img.shields.io/crates/v/ssd1322_rs.svg) 1. [SSD1351] - SPI - 16bit colour OLED display driver - ![crates.io](https://img.shields.io/crates/v/ssd1351.svg) 1. [SSD1675] - SPI - Tri-color ePaper display controller - ![crates.io](https://img.shields.io/crates/v/ssd1675.svg) 1. [st7032i] - I2C - Dot Matrix LCD Controller driver (Sitronix ST7032i or similar). - ![crates.io](https://img.shields.io/crates/v/st7032i.svg) From d9a13e9e9535ffd9b75c4a8b116cfd998417f0cf Mon Sep 17 00:00:00 2001 From: birdistheword96 <53791523+birdistheword96@users.noreply.github.com> Date: Sat, 3 Aug 2024 11:40:48 +0100 Subject: [PATCH 130/178] Fixed spelling again Fixed the the last spelling fix! --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8a90981c..38b6e5e5 100644 --- a/README.md +++ b/README.md @@ -1096,7 +1096,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 1. [SSD1320] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1320.svg) 1. [SSD1322] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1322.svg) -1. [SSD1322_rs] - SPI - Async Graphcis driver for SSD1322 screen - ![crates.io](https://img.shields.io/crates/v/ssd1322_rs.svg) +1. [SSD1322_rs] - SPI - Async graphics driver for SSD1322 screen - ![crates.io](https://img.shields.io/crates/v/ssd1322_rs.svg) 1. [SSD1351] - SPI - 16bit colour OLED display driver - ![crates.io](https://img.shields.io/crates/v/ssd1351.svg) 1. [SSD1675] - SPI - Tri-color ePaper display controller - ![crates.io](https://img.shields.io/crates/v/ssd1675.svg) 1. [st7032i] - I2C - Dot Matrix LCD Controller driver (Sitronix ST7032i or similar). - ![crates.io](https://img.shields.io/crates/v/st7032i.svg) From 1282fefde6071d8cf85b0da8a9437e065d22f86b Mon Sep 17 00:00:00 2001 From: Caio Date: Sat, 10 Aug 2024 18:03:45 -0300 Subject: [PATCH 131/178] Add wtx --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 38b6e5e5..8ec7b744 100644 --- a/README.md +++ b/README.md @@ -1299,6 +1299,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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. 1. [wyhash]: A fast, simple and portable hashing algorithm and random number generator. - ![crates.io](https://img.shields.io/crates/v/wyhash.svg) 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) +1. [wtx](https://github.com/c410-f3r/wtx): Among other things, provides implementations to interact with HTTP, WebSockets and Databases. [`cmim`]: https://crates.io/crates/cmim [`panic-persist`]: https://crates.io/crates/panic-persist From ff7ae2fe7a28a56aaba3322ba96dae54165042b1 Mon Sep 17 00:00:00 2001 From: YuhanLiin Date: Sat, 17 Aug 2024 18:45:53 -0400 Subject: [PATCH 132/178] Add sized-dst crate --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8ec7b744..c057f24c 100644 --- a/README.md +++ b/README.md @@ -1288,6 +1288,7 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 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) +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) 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) 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) 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) From 07b59bc99897422d85bbcbc1833321bd2b999740 Mon Sep 17 00:00:00 2001 From: alexveecle Date: Wed, 11 Sep 2024 12:58:15 +0200 Subject: [PATCH 133/178] Update "Probe Run" to probe-rs --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c057f24c..37b02dd9 100644 --- a/README.md +++ b/README.md @@ -187,8 +187,8 @@ specifically endorsed or reviewed for accuracy or quality by the Embedded Workin - [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) - [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) - [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) +- [probe-rs](https://github.com/probe-rs/probe-rs): a modern, embedded debugging toolkit, written in Rust - [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: - - [Probe Run](https://github.com/knurling-rs/probe-run): a cargo runner to flash and run embedded applications just like you would native applications, including backtraces and panicking behavior - [defmt](https://github.com/knurling-rs/defmt): a highly efficient logging framework that targets resource-constrained devices, like microcontrollers. - [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 - [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. From 8cb86c85e3e4e0cff46ba02efbf55931f389bf1c Mon Sep 17 00:00:00 2001 From: Daniel Zelei Date: Sat, 12 Oct 2024 17:39:41 +0200 Subject: [PATCH 134/178] Add embedded-dht-rs to the list --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 37b02dd9..070f8260 100644 --- a/README.md +++ b/README.md @@ -788,6 +788,7 @@ Otherwise, please add it to the [WIP section](#WIP) below. 1. [BNO055] - I2C - Bosch Sensortec BNO055 9-axis IMU driver - [Intro post][18] ![crates.io](https://img.shields.io/crates/v/bno055.svg) 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) 1. [dht-sensor] - 1-Wire - DHT11/DHT22 temperature/humidity sensor driver - [github][48] - ![crates.io](https://img.shields.io/crates/v/dht-sensor.svg) +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) 1. [DRV8825] - DRV8825 Stepper Motor Driver (based on [Stepper]) - [Intro blog post][52] - ![crates.io](https://img.shields.io/crates/v/drv8825.svg) 1. [DS1307] - I2C - Real-time clock driver - [Intro blog post][13] - ![crates.io](https://img.shields.io/crates/v/ds1307.svg) 1. [ebyte-e32] - SERIAL - Ebyte E32 LoRa module driver - [Intro blog post][67] - ![crates.io](https://img.shields.io/crates/v/ebyte-e32.svg) @@ -925,6 +926,7 @@ Otherwise, please add it to the [WIP section](#WIP) below. [71]: https://github.com/FloppyDisck/i2c-multiplexer [72]: https://github.com/FloppyDisck/SHT31-rs [73]: https://barretts.club/posts/max6675-hal/ +[74]: https://github.com/rust-dd/embedded-dht-rs [AD983x]: https://crates.io/crates/ad983x [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 From f846cad943cf9ca96fae1ff6c7cab91b601e9ba7 Mon Sep 17 00:00:00 2001 From: Jan Niehusmann Date: Sun, 13 Oct 2024 13:13:38 +0000 Subject: [PATCH 135/178] Fix link to embedded-dht-rs crate --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 070f8260..35af60cb 100644 --- a/README.md +++ b/README.md @@ -948,6 +948,7 @@ Otherwise, please add it to the [WIP section](#WIP) below. [DS1307]: https://crates.io/crates/ds1307 [ebyte-e32]: https://crates.io/crates/ebyte-e32 [EEPROM24x]: https://crates.io/crates/eeprom24x +[embedded-dht-rs]: https://crates.io/crates/embedded-dht-rs [embedded-ccs811]: https://crates.io/crates/embedded-ccs811 [embedded-sdmmc]: https://crates.io/crates/embedded-sdmmc [ENC28J60]: https://crates.io/crates/enc28j60 From ad4a2c10cc45e7949ea196e79ad2cd90efa14f29 Mon Sep 17 00:00:00 2001 From: Jan Niehusmann Date: Sun, 13 Oct 2024 16:17:06 +0000 Subject: [PATCH 136/178] Make crates.io badges links --- README.md | 778 +++++++++++++++++++++++++++--------------------------- 1 file changed, 389 insertions(+), 389 deletions(-) diff --git a/README.md b/README.md index 35af60cb..580e5c29 100644 --- a/README.md +++ b/README.md @@ -172,21 +172,21 @@ specifically endorsed or reviewed for accuracy or quality by the Embedded Workin - [xargo](https://github.com/japaric/xargo) Rust package manager with support for non-default std libraries — build Rust runtime for your embedded system. - 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. - [svd2rust](https://github.com/japaric/svd2rust) Generate Rust structs with register mappings from SVD files. -- [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) -- [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) -- [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) +- [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) +- [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) +- [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) - [cortex-m semihosting](https://github.com/japaric/cortex-m-semihosting) Semihosting for ARM Cortex-M processors - [bobbin-cli](https://github.com/bobbin-rs/bobbin-cli) A Rust command line tool to simplify embedded development and deployment. - [ferros](https://github.com/auxoncorp/ferros) A Rust-based userland which also adds compile-time assurances to seL4 development. -- [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) -- [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) -- [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) +- [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) +- [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) +- [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) - [cargo-bloat](https://github.com/RazrFalcon/cargo-bloat) Find out what takes most of the space in your executable. - [cargo-call-stack](https://crates.io/crates/cargo-call-stack) Static, whole program stack usage analyzer. - [cargo-dfu](https://crates.io/crates/cargo-dfu) Cargo extension for flashing embedded rust programs via DFU. -- [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) -- [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) -- [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) +- [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) +- [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) +- [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) - [probe-rs](https://github.com/probe-rs/probe-rs): a modern, embedded debugging toolkit, written in Rust - [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: - [defmt](https://github.com/knurling-rs/defmt): a highly efficient logging framework that targets resource-constrained devices, like microcontrollers. @@ -195,7 +195,7 @@ specifically endorsed or reviewed for accuracy or quality by the Embedded Workin - [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 - [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 - [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. -- [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) +- [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) [embedded-hal-mock]: https://crates.io/crates/embedded-hal-mock @@ -219,7 +219,7 @@ specifically endorsed or reviewed for accuracy or quality by the Embedded Workin ## Peripheral Access Crates -Register definition for microcontroller families. Usually generated using [`svd2rust`]. - ![crates.io](https://img.shields.io/crates/v/svd2rust.svg) +Register definition for microcontroller families. Usually generated using [`svd2rust`]. - [![crates.io](https://img.shields.io/crates/v/svd2rust.svg)](https://crates.io/crates/svd2rust) Peripheral Access Crates were also called Device Crates. @@ -239,39 +239,39 @@ Peripheral Access Crates were also called Device Crates. - [`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. - [`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. - [`avr-device`](https://github.com/Rahix/avr-device) Peripheral access API for Microchip (formerly Atmel) AVR microcontroller family. -- [`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) +- [`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) - [`pic32-pac`](https://crates.io/crates/pic32mx2xx) Peripheral access API for PIC32MX1/2xx - ![crates.io](https://img.shields.io/crates/v/pic32mx2xx) ### Nordic -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) ### NXP -- [`k64`](https://crates.io/crates/k64) - ![crates.io](https://img.shields.io/crates/v/k64.svg) -- [`lpc11uxx`](https://crates.io/crates/lpc11uxx) - ![crates.io](https://img.shields.io/crates/v/lpc11uxx.svg) -- [`lpc55s6x-pac`](https://crates.io/crates/lpc55s6x-pac) - ![crates.io](https://img.shields.io/crates/v/lpc55s6x-pac.svg) -- [`lpc82x-pac`](https://crates.io/crates/lpc82x-pac) - ![crates.io](https://img.shields.io/crates/v/lpc82x-pac.svg) -- [`lpc845-pac`](https://crates.io/crates/lpc845-pac) - ![crates.io](https://img.shields.io/crates/v/lpc845-pac.svg) -- [`mkw41z`](https://crates.io/crates/mkw41z) - ![crates.io](https://img.shields.io/crates/v/mkw41z.svg) -- [`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) -- [`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) +- [`k64`](https://crates.io/crates/k64) - [![crates.io](https://img.shields.io/crates/v/k64.svg)](https://crates.io/crates/k64) +- [`lpc11uxx`](https://crates.io/crates/lpc11uxx) - [![crates.io](https://img.shields.io/crates/v/lpc11uxx.svg)](https://crates.io/crates/lpc11uxx) +- [`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) +- [`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) +- [`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) +- [`mkw41z`](https://crates.io/crates/mkw41z) - [![crates.io](https://img.shields.io/crates/v/mkw41z.svg)](https://crates.io/crates/mkw41z) +- [`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) +- [`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) ### Raspberry Pi Silicon -- [`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) +- [`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) ### SiFive -- [`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) +- [`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) ### Silicon Labs @@ -297,24 +297,24 @@ The [`efm32-rs`](https://github.com/efm32-rs) project has peripheral access APIs ### StarFive -- [`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) +- [`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) ### STMicroelectronics The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral access APIs for most STM32 microcontrollers (generated using svd2rust): -- [`stm32f0`](https://crates.io/crates/stm32f0) - ![crates.io](https://img.shields.io/crates/v/stm32f0.svg) -- [`stm32f1`](https://crates.io/crates/stm32f1) - ![crates.io](https://img.shields.io/crates/v/stm32f1.svg) -- [`stm32f2`](https://crates.io/crates/stm32f2) - ![crates.io](https://img.shields.io/crates/v/stm32f2.svg) -- [`stm32f3`](https://crates.io/crates/stm32f3) - ![crates.io](https://img.shields.io/crates/v/stm32f3.svg) -- [`stm32f4`](https://crates.io/crates/stm32f4) - ![crates.io](https://img.shields.io/crates/v/stm32f4.svg) -- [`stm32f7`](https://crates.io/crates/stm32f7) - ![crates.io](https://img.shields.io/crates/v/stm32f7.svg) -- [`stm32g0`](https://crates.io/crates/stm32g0) - ![crates.io](https://img.shields.io/crates/v/stm32g0.svg) -- [`stm32g4`](https://crates.io/crates/stm32g4) - ![crates.io](https://img.shields.io/crates/v/stm32g4.svg) -- [`stm32h7`](https://crates.io/crates/stm32h7) - ![crates.io](https://img.shields.io/crates/v/stm32h7.svg) -- [`stm32l0`](https://crates.io/crates/stm32l0) - ![crates.io](https://img.shields.io/crates/v/stm32l0.svg) -- [`stm32l1`](https://crates.io/crates/stm32l1) - ![crates.io](https://img.shields.io/crates/v/stm32l1.svg) -- [`stm32l4`](https://crates.io/crates/stm32l4) - ![crates.io](https://img.shields.io/crates/v/stm32l4.svg) +- [`stm32f0`](https://crates.io/crates/stm32f0) - [![crates.io](https://img.shields.io/crates/v/stm32f0.svg)](https://crates.io/crates/stm32f0) +- [`stm32f1`](https://crates.io/crates/stm32f1) - [![crates.io](https://img.shields.io/crates/v/stm32f1.svg)](https://crates.io/crates/stm32f1) +- [`stm32f2`](https://crates.io/crates/stm32f2) - [![crates.io](https://img.shields.io/crates/v/stm32f2.svg)](https://crates.io/crates/stm32f2) +- [`stm32f3`](https://crates.io/crates/stm32f3) - [![crates.io](https://img.shields.io/crates/v/stm32f3.svg)](https://crates.io/crates/stm32f3) +- [`stm32f4`](https://crates.io/crates/stm32f4) - [![crates.io](https://img.shields.io/crates/v/stm32f4.svg)](https://crates.io/crates/stm32f4) +- [`stm32f7`](https://crates.io/crates/stm32f7) - [![crates.io](https://img.shields.io/crates/v/stm32f7.svg)](https://crates.io/crates/stm32f7) +- [`stm32g0`](https://crates.io/crates/stm32g0) - [![crates.io](https://img.shields.io/crates/v/stm32g0.svg)](https://crates.io/crates/stm32g0) +- [`stm32g4`](https://crates.io/crates/stm32g4) - [![crates.io](https://img.shields.io/crates/v/stm32g4.svg)](https://crates.io/crates/stm32g4) +- [`stm32h7`](https://crates.io/crates/stm32h7) - [![crates.io](https://img.shields.io/crates/v/stm32h7.svg)](https://crates.io/crates/stm32h7) +- [`stm32l0`](https://crates.io/crates/stm32l0) - [![crates.io](https://img.shields.io/crates/v/stm32l0.svg)](https://crates.io/crates/stm32l0) +- [`stm32l1`](https://crates.io/crates/stm32l1) - [![crates.io](https://img.shields.io/crates/v/stm32l1.svg)](https://crates.io/crates/stm32l1) +- [`stm32l4`](https://crates.io/crates/stm32l4) - [![crates.io](https://img.shields.io/crates/v/stm32l4.svg)](https://crates.io/crates/stm32l4) ### Texas Instruments @@ -330,14 +330,14 @@ The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral ac ### Espressif -- [`esp32`](https://github.com/esp-rs/esp-pacs/tree/main/esp32) - ![crates.io](https://img.shields.io/crates/v/esp32.svg) -- [`esp32c2`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c2) - ![crates.io](https://img.shields.io/crates/v/esp32c2.svg) -- [`esp32c3`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c3) - ![crates.io](https://img.shields.io/crates/v/esp32c3.svg) -- [`esp32c6`](https://github.com/esp-rs/esp-pacs/tree/main/esp32c6) - ![crates.io](https://img.shields.io/crates/v/esp32c6.svg) -- [`esp32h2`](https://github.com/esp-rs/esp-pacs/tree/main/esp32h2) - ![crates.io](https://img.shields.io/crates/v/esp32h2.svg) -- [`esp32s2`](https://github.com/esp-rs/esp-pacs/tree/main/esp32s2) - ![crates.io](https://img.shields.io/crates/v/esp32s2.svg) -- [`esp32s3`](https://github.com/esp-rs/esp-pacs/tree/main/esp32s3) - ![crates.io](https://img.shields.io/crates/v/esp32s3.svg) -- [`esp8266`](https://github.com/esp-rs/esp-pacs/tree/main/esp8266) - ![crates.io](https://img.shields.io/crates/v/esp8266.svg) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`esp8266`](https://github.com/esp-rs/esp-pacs/tree/main/esp8266) - [![crates.io](https://img.shields.io/crates/v/esp8266.svg)](https://crates.io/crates/esp8266) ### Ambiq Micro @@ -348,55 +348,55 @@ The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral ac ### GigaDevice -- [`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) -- [`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) -- [`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) -- [`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) +- [`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) +- [`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) +- [`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) +- [`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) ### XMC Peripheral access crates for the different XMC4xxx families of microcontrollers -- [`xmc4100`](https://github.com/xmc-rs/xmc4100) - ![crates.io](https://img.shields.io/crates/v/xmc4100.svg) -- [`xmc4200`](https://github.com/xmc-rs/xmc4200) - ![crates.io](https://img.shields.io/crates/v/xmc4200.svg) -- [`xmc4300`](https://github.com/xmc-rs/xmc4300) - ![crates.io](https://img.shields.io/crates/v/xmc4300.svg) -- [`xmc4400`](https://github.com/xmc-rs/xmc4400) - ![crates.io](https://img.shields.io/crates/v/xmc4400.svg) -- [`xmc4500`](https://github.com/xmc-rs/xmc4500) - ![crates.io](https://img.shields.io/crates/v/xmc4500.svg) -- [`xmc4700`](https://github.com/xmc-rs/xmc4700) - ![crates.io](https://img.shields.io/crates/v/xmc4700.svg) -- [`xmc4800`](https://github.com/xmc-rs/xmc4800) - ![crates.io](https://img.shields.io/crates/v/xmc4800.svg) +- [`xmc4100`](https://github.com/xmc-rs/xmc4100) - [![crates.io](https://img.shields.io/crates/v/xmc4100.svg)](https://crates.io/crates/xmc4100) +- [`xmc4200`](https://github.com/xmc-rs/xmc4200) - [![crates.io](https://img.shields.io/crates/v/xmc4200.svg)](https://crates.io/crates/xmc4200) +- [`xmc4300`](https://github.com/xmc-rs/xmc4300) - [![crates.io](https://img.shields.io/crates/v/xmc4300.svg)](https://crates.io/crates/xmc4300) +- [`xmc4400`](https://github.com/xmc-rs/xmc4400) - [![crates.io](https://img.shields.io/crates/v/xmc4400.svg)](https://crates.io/crates/xmc4400) +- [`xmc4500`](https://github.com/xmc-rs/xmc4500) - [![crates.io](https://img.shields.io/crates/v/xmc4500.svg)](https://crates.io/crates/xmc4500) +- [`xmc4700`](https://github.com/xmc-rs/xmc4700) - [![crates.io](https://img.shields.io/crates/v/xmc4700.svg)](https://crates.io/crates/xmc4700) +- [`xmc4800`](https://github.com/xmc-rs/xmc4800) - [![crates.io](https://img.shields.io/crates/v/xmc4800.svg)](https://crates.io/crates/xmc4800) ### Vorago -- [`va108xx`](https://egit.irs.uni-stuttgart.de/rust/va108xx-rs) - ![crates.io](https://img.shields.io/crates/v/va108xx.svg) -- [`va416xx`](https://egit.irs.uni-stuttgart.de/rust/va416xx-rs) - ![crates.io](https://img.shields.io/crates/v/va416xx.svg) +- [`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) +- [`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) ### Wiznet -- [`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) +- [`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) ### Renesas -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) ## HAL implementation crates -Implementations of [`embedded-hal`] for microcontroller families and systems running some OS. - ![crates.io](https://img.shields.io/crates/v/embedded-hal.svg) +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) [`embedded-hal`]: https://crates.io/crates/embedded-hal @@ -410,8 +410,8 @@ Implementations of [`embedded-hal`] for microcontroller families and systems run - [`bitbang-hal`] software protocol implementations for microcontrollers with digital::OutputPin and digital::InputPin - [`ftdi-embedded-hal`] for FTDI FTx232H chips connected to Linux systems via USB -- [`linux-embedded-hal`] for embedded Linux systems like the Raspberry Pi. - ![crates.io](https://img.shields.io/crates/v/linux-embedded-hal.svg) -- [`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) +- [`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) +- [`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) [`bitbang-hal`]: https://crates.io/crates/bitbang-hal [`ftdi-embedded-hal`]: https://crates.io/crates/ftdi-embedded-hal @@ -420,21 +420,21 @@ Implementations of [`embedded-hal`] for microcontroller families and systems run ### Microchip -- [`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) -- [`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) -- [`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) +- [`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) +- [`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) +- [`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) - [`avr-hal`](https://github.com/Rahix/avr-hal) - HAL for AVR microcontroller family and AVR-based boards -- [`pic32-hal`](https://crates.io/crates/pic32-hal) - HAL for PIC32MX - ![crates.io](https://img.shields.io/crates/v/pic32-hal.svg) +- [`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) ### Nordic -- [`nrf51-hal`](https://crates.io/crates/nrf51-hal) - ![crates.io](https://img.shields.io/crates/v/nrf51-hal.svg) -- [`nrf52810-hal`](https://crates.io/crates/nrf52810-hal) - ![crates.io](https://img.shields.io/crates/v/nrf52810-hal.svg) -- [`nrf52811-hal`](https://crates.io/crates/nrf52811-hal) - ![crates.io](https://img.shields.io/crates/v/nrf52811-hal.svg) -- [`nrf52832-hal`](https://crates.io/crates/nrf52832-hal) - ![crates.io](https://img.shields.io/crates/v/nrf52832-hal.svg) -- [`nrf52833-hal`](https://crates.io/crates/nrf52833-hal) - ![crates.io](https://img.shields.io/crates/v/nrf52833-hal.svg) -- [`nrf52840-hal`](https://crates.io/crates/nrf52840-hal) - ![crates.io](https://img.shields.io/crates/v/nrf52840-hal.svg) -- [`nrf9160-hal`](https://crates.io/crates/nrf9160-hal) - ![crates.io](https://img.shields.io/crates/v/nrf9160-hal.svg) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) ### NXP @@ -444,16 +444,16 @@ Also check the list of [NXP board support crates][nxp-bsc]! - [`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) - [`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) -- [`mkw41z-hal`](https://crates.io/crates/mkw41z-hal) - ![crates.io](https://img.shields.io/crates/v/mkw41z-hal.svg) -- [`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) +- [`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) +- [`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) ### Raspberry Pi Silicon -- [`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) +- [`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) ### SiFive -- [`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) +- [`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) ### STMicroelectronics @@ -461,32 +461,32 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! [stm-bsc]: #stmicroelectronics-2 -- [`stm32f0xx-hal`](https://crates.io/crates/stm32f0xx-hal) - ![crates.io](https://img.shields.io/crates/v/stm32f0xx-hal.svg) +- [`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) - Has examples that can run on boards like the [Nucleo-F042K6] and similar boards [Nucleo-F042K6]: http://www.st.com/en/evaluation-tools/nucleo-f042k6.html -- [`stm32f1xx-hal`](https://github.com/stm32-rs/stm32f1xx-hal) - ![crates.io](https://img.shields.io/crates/v/stm32f1xx-hal.svg) +- [`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) - Can be run on boards like the [Blue pill], [Nucleo-F103RB], and similar boards [Blue pill]: https://stm32duinoforum.com/forum/wiki_subdomain/index_title_Blue_Pill.html [Nucleo-F103RB]: http://www.st.com/en/evaluation-tools/nucleo-f103rb.html -- [`stm32f3xx-hal`](https://crates.io/crates/stm32f3xx-hal) - ![crates.io](https://img.shields.io/crates/v/stm32f3xx-hal.svg) -- [`stm32f4xx-hal`](https://crates.io/crates/stm32f4xx-hal) - ![crates.io](https://img.shields.io/crates/v/stm32f4xx-hal.svg) +- [`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) +- [`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) - Generic HAL implementation for all MCUs of the stm32f4 series -- [`stm32f7xx-hal`](https://crates.io/crates/stm32f7xx-hal) - ![crates.io](https://img.shields.io/crates/v/stm32f7xx-hal.svg) +- [`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) - Generic HAL implementation for all MCUs of the stm32f7 series -- [`stm32g0xx-hal`](https://crates.io/crates/stm32g0xx-hal) - ![crates.io](https://img.shields.io/crates/v/stm32g0xx-hal.svg) -- [`stm32h7xx-hal`](https://crates.io/crates/stm32h7xx-hal) - ![crates.io](https://img.shields.io/crates/v/stm32h7xx-hal.svg) +- [`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) +- [`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) - HAL implementation for the STMicro STM32H7xx family of microcontrollers -- [`stm32l0xx-hal`](https://crates.io/crates/stm32l0xx-hal) - ![crates.io](https://img.shields.io/crates/v/stm32l0xx-hal.svg) +- [`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) - HAL implementation for the the STMicro STM32L0xx family of microcontrollers -- [`stm32l1xx-hal`](https://crates.io/crates/stm32l1xx-hal) - ![crates.io](https://img.shields.io/crates/v/stm32l1xx-hal.svg) -- [`stm32l151-hal`](https://crates.io/crates/stm32l151-hal) - ![crates.io](https://img.shields.io/crates/v/stm32l151-hal.svg) -- [`stm32l4xx-hal`](https://crates.io/crates/stm32l4xx-hal) - ![crates.io](https://img.shields.io/crates/v/stm32l4xx-hal.svg) +- [`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) +- [`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) +- [`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) - Generic hal support for stm32l4 devices, has examples that can run on boards like the [Nucleo-L432KC], [Solo], and similar boards -- [`stm32-hal`](https://crates.io/crates/stm32-hal2) - ![crates.io](https://img.shields.io/crates/v/stm32-hal2.svg) +- [`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) - HAL implementation for STM32 devices across multiple families, with a focus on newer ones like L4, L5, and H7. [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 @@ -519,29 +519,29 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! ### XMC -- [`xmc1100-hal`](https://github.com/david-sawatzke/xmc1100-hal) - ![crates.io](https://img.shields.io/crates/v/xmc1100-hal.svg) -- [`xmc4-hal`](https://github.com/xmc-rs/xmc4-hal) - ![crates.io](https://img.shields.io/crates/v/xmc4-hal.svg) +- [`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) +- [`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) ### GigaDevice -- [`gd32vf103xx-hal`](https://github.com/riscv-rust/gd32vf103xx-hal) - ![crates.io](https://img.shields.io/crates/v/gd32vf103xx-hal.svg) +- [`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) - HAL for GD32VF103xx microcontrollers -- [`gd32vf103-hal`](https://github.com/luojia65/gd32vf103-hal) - ![crates.io](https://img.shields.io/crates/v/gd32vf103-hal.svg) +- [`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) - (WIP) Hardware abstract layer (HAL) for the GD32VF103 RISC-V microcontroller -- [`gd32f1x0-hal`](https://crates.io/crates/gd32f1x0-hal) - ![crates.io](https://img.shields.io/crates/v/gd32f1x0-hal.svg) +- [`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) - HAL implementation for GD32F1x0 microcontrollers ### Vorago -- [`va108xx-hal`](https://egit.irs.uni-stuttgart.de/rust/va108xx-rs) - ![crates.io](https://img.shields.io/crates/v/va108xx-hal.svg) +- [`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) - [Blogpost](https://robamu.github.io/post/rust-ecosystem/) ### Renesas -- [`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) +- [`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) ### StarFive -- [`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) +- [`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) ## Architecture support crates @@ -549,17 +549,17 @@ Crates tailored for general CPU architectures. ### ARM -- [`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) -- [`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) +- [`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) +- [`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) ### RISC-V -- [`riscv`](https://github.com/rust-embedded/riscv) Low-level access to RISC-V processors - ![crates.io](https://img.shields.io/crates/v/riscv.svg) +- [`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) ### MIPS -- [`mips`](https://github.com/Harry-Chen/rust-mips) Low-level access to MIPS32 processors - ![crates.io](https://img.shields.io/crates/v/mips.svg) -- [`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) +- [`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) +- [`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) ## Board support crates @@ -574,35 +574,35 @@ Crates tailored for specific boards. ### 1BitSquared -- [`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) +- [`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) [1bitsy]: https://1bitsy.org/ ### Adafruit -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`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) -- [`adafruit-feather-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit Feather RP2040] ![crates.io](https://img.shields.io/crates/v/adafruit-feather-rp2040.svg) -- [`adafruit-itsy-bitsy-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit ItsyBitsy RP2040] ![crates.io](https://img.shields.io/crates/v/adafruit-itsy-bitsy-rp2040.svg) -- [`adafruit-kb2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit KB2040] ![crates.io](https://img.shields.io/crates/v/adafruit-kb2040.svg) -- [`adafruit-macropad`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit Macropad] ![crates.io](https://img.shields.io/crates/v/adafruit-macropad.svg) -- [`adafruit-qt-py-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit QT Py RP2040] ![crates.io](https://img.shields.io/crates/v/adafruit-qt-py-rp2040.svg) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`adafruit-feather-rp2040`](https://github.com/rp-rs/rp-hal) - 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) +- [`adafruit-itsy-bitsy-rp2040`](https://github.com/rp-rs/rp-hal) - 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) +- [`adafruit-kb2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit KB2040] [![crates.io](https://img.shields.io/crates/v/adafruit-kb2040.svg)](https://crates.io/crates/adafruit-kb2040) +- [`adafruit-macropad`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit Macropad] [![crates.io](https://img.shields.io/crates/v/adafruit-macropad.svg)](https://crates.io/crates/adafruit-macropad) +- [`adafruit-qt-py-rp2040`](https://github.com/rp-rs/rp-hal) - 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) [Metro M0 board]: https://www.adafruit.com/product/3505 [Metro M4 board]: https://www.adafruit.com/product/3382 @@ -631,17 +631,17 @@ Crates tailored for specific boards. ### Arduino - [`avr-hal`](https://github.com/Rahix/avr-hal) - Board support crate for several AVR-based boards including the Arduino Uno and the Arduino Leonardo -- [`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) -- [`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) -- [`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) -- [`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) +- [`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) +- [`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) +- [`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) +- [`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) ### Nordic -- [`dwm1001`](https://crates.io/crates/dwm1001) - [Decawave DWM1001-DEV] - ![crates.io](https://img.shields.io/crates/v/dwm1001.svg) -- [`microbit`](https://crates.io/crates/microbit) - [micro:bit] - ![crates.io](https://img.shields.io/crates/v/microbit.svg) -- [`nrf52840-dk-bsp`](https://crates.io/crates/nrf52840-dk-bsp) - [nrf52840-dk] - ![crates.io](https://img.shields.io/crates/v/nrf52840-dk-bsp.svg) -- [`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) +- [`dwm1001`](https://crates.io/crates/dwm1001) - [Decawave DWM1001-DEV] - [![crates.io](https://img.shields.io/crates/v/dwm1001.svg)](https://crates.io/crates/dwm1001) +- [`microbit`](https://crates.io/crates/microbit) - [micro:bit] - [![crates.io](https://img.shields.io/crates/v/microbit.svg)](https://crates.io/crates/microbit) +- [`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) +- [`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) [Decawave DWM1001-DEV]: https://www.decawave.com/product/dwm1001-development-board/ [micro:bit]: http://microbit.org/ @@ -650,7 +650,7 @@ Crates tailored for specific boards. ### NXP -- [`frdm-kw41z`](https://crates.io/crates/frdm-kw41z) - [FRDM-KW41Z] - ![crates.io](https://img.shields.io/crates/v/frdm-kw41z.svg) +- [`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) [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 @@ -670,27 +670,27 @@ Crates tailored for specific boards. ### Sparkfun -- [`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) +- [`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) - [`sparkfun-pro-micro-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the RP2040 based Sparkfun Pro Micro. ### SeeedStudio - [`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) - ![crates.io](https://img.shields.io/crates/v/seedstudio-gd32v.svg) + [![crates.io](https://img.shields.io/crates/v/seedstudio-gd32v.svg)](https://crates.io/crates/seedstudio-gd32v) - Contains runnable examples for this board -- [`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) +- [`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) - [`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) - [`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) - [`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) ### SiFive -- [`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) +- [`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) ### Sipeed - [`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) - ![crates.io](https://img.shields.io/crates/v/longan-nano.svg) + [![crates.io](https://img.shields.io/crates/v/longan-nano.svg)](https://crates.io/crates/longan-nano) - Contains runnable examples for this board ### Sony @@ -699,15 +699,15 @@ Crates tailored for specific boards. ### STMicroelectronics -- [`f3`](https://crates.io/crates/f3) Board Support Crate for the [STM32F3DISCOVERY] - ![crates.io](https://img.shields.io/crates/v/f3.svg) +- [`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) - [`nucleo-f042k6`](https://github.com/therealprof/nucleo-f042k6.git) - [Nucleo-F042K6] - [`nucleo-f103rb`](https://github.com/therealprof/nucleo-f103rb.git) - [Nucleo-F103RB] -- [`nucleo-f401re`](https://github.com/jkristell/nucleo-f401re.git) - [Nucleo-F401RE] ![crates.io](https://img.shields.io/crates/v/nucleo-f401re.svg) +- [`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) - [`nucleo-h743zi`](https://github.com/astraw/nucleo-h743zi) Beginner-oriented support crate for the Nucleo H743ZI and Nucleo H743ZI2 - [`nucleo-h723zg`](https://github.com/jlogan03/nucleo-h723zg) Board support crate for the Nucleo H723ZG -- [`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) -- [`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) -- [`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) +- [`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) +- [`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) +- [`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) - [`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) @@ -718,13 +718,13 @@ Crates tailored for specific boards. ### Vorago -- [`vorago-reb1`](https://egit.irs.uni-stuttgart.de/rust/va108xx-rs) - ![crates.io](https://img.shields.io/crates/v/vorago-reb1.svg) +- [`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) - [Blogpost](https://robamu.github.io/post/rust-ecosystem/) ### Texas Instruments - [`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]. -- [`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) +- [`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) - [`tm4c129-launchpad`](https://github.com/jlogan03/tm4c129-launchpad) - For the Texas Instruments TM4C129-XL Launchpad board ### Special Purpose @@ -733,28 +733,28 @@ Crates tailored for specific boards. ### Sodaq -- [`sodaq_one`](https://crates.io/crates/sodaq_one) - Board support for the [Sodaq one board](https://shop.sodaq.com/sodaq-one-eu-rn2483-v3.html) 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) -- [`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) +- [`sodaq_one`](https://crates.io/crates/sodaq_one) - Board support for the [Sodaq one board](https://shop.sodaq.com/sodaq-one-eu-rn2483-v3.html) 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) +- [`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) ### Other -- [`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) -- [`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) +- [`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) +- [`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) ## Component abstraction crates The following crates provide HAL-like abstractions for subcomponents of embedded devices that go beyond what is available in [`embedded-hal`]: -- [`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) -- [`embedded-graphics`]: 2D drawing library for any size display - ![crates.io](https://img.shields.io/crates/v/embedded-graphics.svg) -- [`radio`](https://github.com/ryankurte/rust-radio) - Generic radio transceiver traits, mocks, and helpers - ![crates.io](https://img.shields.io/crates/v/radio.svg) +- [`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) +- [`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) +- [`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) - [`smart-leds`](https://github.com/smart-leds-rs): Support for addressable LEDs including WS2812 and APA102 -- [`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) -- [`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) -- [`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) +- [`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) +- [`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) +- [`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) - [`embedded-storage`](https://github.com/rust-embedded-community/embedded-storage): An Embedded Storage Abstraction Layer -- [`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) +- [`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) ## Driver crates @@ -771,89 +771,89 @@ explanatory README showing an example of its use. Ideally, this post would demon device in a small project so that a Rust and/or embedded newcomer can also understand it. Otherwise, please add it to the [WIP section](#WIP) below. -1. [AD983x] - SPI - AD9833/AD9837 waveform generators / DDS - [Intro blog post][25] - ![crates.io](https://img.shields.io/crates/v/ad983x.svg) -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) -1. [ADE791x] - SPI - ADE7912/ADE7913 3-Channel, Isolated, Sigma-Delta ADC - [github][66] - ![crates.io](https://img.shields.io/crates/v/ade791x.svg) -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) -1. [ADXL313] - SPI - 3-axis accelerometer - ![crates.io](https://img.shields.io/crates/v/adxl313.svg) -1. [ADXL343] - I2C - 3-axis accelerometer - ![crates.io](https://img.shields.io/crates/v/adxl343.svg) -1. [ADXL355] - SPI - 3-axis accelerometer - [Intro blog post][43] - ![crates.io](https://img.shields.io/crates/v/adxl355.svg) -1. [AFE4404] - I2C - Pulse oximeter - ![crates.io](https://img.shields.io/crates/v/afe4404.svg) -1. [AHT20] - I2C - Humidity and temperature sensor - [github](https://github.com/chocol4te/aht20) - ![crates.io](https://img.shields.io/crates/v/aht20.svg) -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) -1. [AnyLeaf] - I2C - pH sensor module - [github](https://github.com/AnyLeaf/ph-rust) - ![crates.io](https://img.shields.io/crates/v/anyleaf.svg) -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) -1. [BlueNRG] - SPI - driver for BlueNRG-MS Bluetooth module - [Intro post][15] ![crates.io](https://img.shields.io/crates/v/bluenrg.svg) -1. [BMA400] - I2C/SPI - Bosch 12-bit 3-axis accelerometer - [github][70] ![crates.io](https://img.shields.io/crates/v/bma400.svg) -1. [BNO055] - I2C - Bosch Sensortec BNO055 9-axis IMU driver - [Intro post][18] ![crates.io](https://img.shields.io/crates/v/bno055.svg) -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) -1. [dht-sensor] - 1-Wire - DHT11/DHT22 temperature/humidity sensor driver - [github][48] - ![crates.io](https://img.shields.io/crates/v/dht-sensor.svg) -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) -1. [DRV8825] - DRV8825 Stepper Motor Driver (based on [Stepper]) - [Intro blog post][52] - ![crates.io](https://img.shields.io/crates/v/drv8825.svg) -1. [DS1307] - I2C - Real-time clock driver - [Intro blog post][13] - ![crates.io](https://img.shields.io/crates/v/ds1307.svg) -1. [ebyte-e32] - SERIAL - Ebyte E32 LoRa module driver - [Intro blog post][67] - ![crates.io](https://img.shields.io/crates/v/ebyte-e32.svg) -1. [EEPROM24x] - I2C - 24x series serial EEPROM driver - [Intro blog post][12] - ![crates.io](https://img.shields.io/crates/v/eeprom24x.svg) -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) -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) -1. [ENC28J60] - SPI - Ethernet controller - [Intro blog post][4] - ![crates.io](https://img.shields.io/crates/v/enc28j60.svg) +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) +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) +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) +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) +1. [ADXL313] - SPI - 3-axis accelerometer - [![crates.io](https://img.shields.io/crates/v/adxl313.svg)](https://crates.io/crates/adxl313) +1. [ADXL343] - I2C - 3-axis accelerometer - [![crates.io](https://img.shields.io/crates/v/adxl343.svg)](https://crates.io/crates/adxl343) +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) +1. [AFE4404] - I2C - Pulse oximeter - [![crates.io](https://img.shields.io/crates/v/afe4404.svg)](https://crates.io/crates/afe4404) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +1. [ENC28J60] - SPI - Ethernet controller - [Intro blog post][4] - [![crates.io](https://img.shields.io/crates/v/enc28j60.svg)](https://crates.io/crates/enc28j60) 1. [FUSB302B] - I2C - Programmable USB Type‐C Controller with USB Power Delivery - [github][69] -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) -1. [HTS221] - I2C - Humidity and temperature sensor - [Intro blog post][7] - ![crates.io](https://img.shields.io/crates/v/hts221.svg) -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) -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) -1. [keypad] - GPIO - Keypad matrix circuits - [Intro post][14] - ![crates.io](https://img.shields.io/crates/v/keypad.svg) -1. [KXCJ9] - I2C - KXCJ9/KXCJB 3-axis accelerometers - [Intro blog post][24] - ![crates.io](https://img.shields.io/crates/v/kxcj9.svg) -1. [L3GD20] - SPI - Gyroscope - [Intro blog post][1&2] - ![crates.io](https://img.shields.io/crates/v/l3gd20.svg) -1. [LSM303DLHC] - I2C - Accelerometer + compass (magnetometer) - [Intro blog post][1&2] - ![crates.io](https://img.shields.io/crates/v/lsm303dlhc.svg) -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) -1. [MAX6955] - I2C - Driver for Alphanumeric LED display driver - [Intro blog post][46] - ![crates.io](https://img.shields.io/crates/v/max6955.svg) -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) -1. [MCP25LCXX] - SPI - Driver for Microchip's 25LC series of EEPROMs - ![crates.io](https://img.shields.io/crates/v/microchip-eeprom-25lcxx.svg) -1. [MCP3008] - SPI - 8 channel 10-bit ADC - [Intro blog post][3] - ![crates.io](https://img.shields.io/crates/v/adc-mcp3008.svg) -1. [MCP3425] - I2C - 16-bit ADC - [Intro blog post][5] - ![crates.io](https://img.shields.io/crates/v/mcp3425.svg) -1. [MCP794xx] - I2C - Real-time clock / calendar driver - [Intro blog post][26] - ![crates.io](https://img.shields.io/crates/v/mcp794xx.svg) +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) +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) +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) +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) +1. [keypad] - GPIO - Keypad matrix circuits - [Intro post][14] - [![crates.io](https://img.shields.io/crates/v/keypad.svg)](https://crates.io/crates/keypad) +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) +1. [L3GD20] - SPI - Gyroscope - [Intro blog post][1&2] - [![crates.io](https://img.shields.io/crates/v/l3gd20.svg)](https://crates.io/crates/l3gd20) +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) +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) +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) +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) +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) +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) +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) +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) 1. [MMA7660FC] - I2C - 3-axis accelerometer - [Intro blog post][9] -1. [OPT300x] - I2C - Ambient light sensor family driver - [Intro blog post][30] - ![crates.io](https://img.shields.io/crates/v/opt300x.svg) +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) 1. [PAC194X] - I2C - Single/multi channel power monitor - [Intro blog post][63] - ![crates.io](https://img.shields.io/crates/v/pac194x) -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) -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) -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) -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) -1. [sega-controller] - GPIO - Sega controller input - [github][68] - ![crates.io](https://img.shields.io/crates/v/sega-controller.svg) -1. [SGP30] - I2C - Gas sensor - [Intro blog post][6] - ![crates.io](https://img.shields.io/crates/v/sgp30.svg) -1. [SH1106] - I2C - Monochrome OLED display controller - [Intro post][19] ![crates.io](https://img.shields.io/crates/v/sh1106.svg) -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) -1. [shift-register-driver] - GPIO - Shift register - [Intro blog post][10] - ![crates.io](https://img.shields.io/crates/v/shift-register-driver.svg) -1. [Si4703] - I2C - FM radio turner (receiver) driver - [Intro blog post][31] - ![crates.io](https://img.shields.io/crates/v/si4703.svg) -1. [SRAM23x] - SPI - Microchip 23x series serial SRAM/NVSRAM driver - [Intro blog post][51] - ![crates.io](https://img.shields.io/crates/v/sram23x.svg) -1. [SSD1306] - I2C/SPI - OLED display controller - [Intro blog post][8] - ![crates.io](https://img.shields.io/crates/v/ssd1306.svg) -1. [SSD1309] - I2C/SPI - OLED display controller - [Intro blog post][60] - ![crates.io](https://img.shields.io/crates/v/ssd1309.svg) -1. [STSPIN220] - STSPIN220 Stepper Motor Driver (based on [Stepper]) - [Intro blog post][52] - ![crates.io](https://img.shields.io/crates/v/stspin220.svg) -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) -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) -1. [TC72] - SPI - Microchip TC72 temperature sensor - ![crates.io](https://img.shields.io/crates/v/microchip-tc72r-rs.svg) -1. [TCN75A] - I2C - Microchip TCN75A temperature sensor - ![crates.io](https://img.shields.io/crates/v/tcn75a.svg) -1. [TMP006] - I2C - Contact-less infrared (IR) thermopile temperature sensor driver - [Intro post][17] ![crates.io](https://img.shields.io/crates/v/tmp006.svg) -1. [TMP1x2] - I2C - TMP102 and TMP112x temperature sensor driver - [Intro blog post][22] ![crates.io](https://img.shields.io/crates/v/tmp1x2.svg) -1. [TSIC] - GPIO - TSIC 306 temperature sensor driver - [Intro blog post][50] ![crates.io](https://img.shields.io/crates/v/tsic.svg) -1. [TSL256X] - I2C - Light Intensity Sensor - [Intro blog post][11] - ![crates.io](https://img.shields.io/crates/v/tsl256x.svg) -1. [VEML6030/VEML7700] - I2C - Ambient light sensors - [Intro blog post][33] - ![crates.io](https://img.shields.io/crates/v/veml6030.svg) -1. [VEML6075] - I2C - UVA and UVB light sensor - [Intro blog post][27] - ![crates.io](https://img.shields.io/crates/v/veml6075.svg) -1. [usbd-serial] - USB CDC-ACM class (serial) implementation - [github][37] - ![crates.io](https://img.shields.io/crates/v/usbd-serial.svg) -1. [usbd-hid] - USB HID class implementation - [github][38] - ![crates.io](https://img.shields.io/crates/v/usbd-hid.svg) -1. [usbd-hid-device] - USB HID class implementation without `unsafe` - [github][40] - ![crates.io](https://img.shields.io/crates/v/usbd-hid-device.svg) -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) -1. [usbd-midi] - USB MIDI class implementation - [github][41] - ![crates.io](https://img.shields.io/crates/v/usbd-midi.svg) -1. [usbd-webusb] - USB webUSB class implementation - [github][39] - ![crates.io](https://img.shields.io/crates/v/usbd-webusb.svg) -1. [SHTCx] - I2C - Temperature / humidity sensors - [github][42] - ![crates.io](https://img.shields.io/crates/v/shtcx.svg) -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) -1. [DW1000] - SPI - Radio transceiver (IEEE 802.15.4 and position tracking) - [Article][45] - ![crates.io](https://img.shields.io/crates/v/dw1000.svg) -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) -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) +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) +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) +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) +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) +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) +1. [SGP30] - I2C - Gas sensor - [Intro blog post][6] - [![crates.io](https://img.shields.io/crates/v/sgp30.svg)](https://crates.io/crates/sgp30) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +1. [TCN75A] - I2C - Microchip TCN75A temperature sensor - [![crates.io](https://img.shields.io/crates/v/tcn75a.svg)](https://crates.io/crates/tcn75a) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +1. [SHTCx] - I2C - Temperature / humidity sensors - [github][42] - [![crates.io](https://img.shields.io/crates/v/shtcx.svg)](https://crates.io/crates/shtcx) +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) +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) +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) +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) 1. [tb6612fng] - A `no_std` driver for the TB6612FNG motor driver - ![Crates.io](https://img.shields.io/crates/v/tb6612fng.svg) -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) -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) -1. [SHT31-rs] - I2C - Fully supported SHT temperature / humidity sensors - [github][72] - ![crates.io](https://img.shields.io/crates/v/sht31.svg) +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) +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) +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) [1&2]: http://blog.japaric.io/wd-1-2-l3gd20-lsm303dlhc-madgwick/ [3]: http://pramode.in/2018/02/24/an-introduction-to-writing-embedded-hal-based-drivers-in-rust/ @@ -1019,104 +1019,104 @@ keyword on crates.io! Work in progress drivers. Help the authors make these crates awesome! -1. [AD9850] - Embedded driver for the AD9850 DDS synthesizer chip - ![crates.io](https://img.shields.io/crates/v/ad9850.svg) +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) 1. [AFE4400] - SPI - Pulse oximeter -1. [APDS9960] - I2C - Proximity, ambient light, RGB, and gesture sensor - ![crates.io](https://img.shields.io/crates/v/apds9960.svg) +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) 1. [AS5048A] - SPI - AMS AS5048A Magnetic Rotary Encoder 1. [AXP209] - I2C - Power management unit -1. [ad57xx] - SPI - Quad and dual channel DAC - ![crates.io](https://img.shields.io/crates/v/ad57xx.svg) +1. [ad57xx] - SPI - Quad and dual channel DAC - [![crates.io](https://img.shields.io/crates/v/ad57xx.svg)](https://crates.io/crates/ad57xx) 1. [BH1750] - I2C - ambient light sensor (lux meter) -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) -1. [bme680] - I2C - Temperature / humidity / gas / pressure sensor - ![crates.io](https://img.shields.io/crates/v/bme680.svg) -1. [BMI160] - I2C / SPI - Inertial Measurement Unit - ![crates.io](https://img.shields.io/crates/v/bmi160.svg) -1. [BMP280] - A platform agnostic driver to interface with the BMP280 pressure sensor ![crates.io](https://img.shields.io/crates/v/bmp280-ehal.svg) -1. [CC1101] - SPI - Sub-1GHz RF Transceiver - ![crates.io](https://img.shields.io/crates/v/cc1101.svg) +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) +1. [bme680] - I2C - Temperature / humidity / gas / pressure sensor - [![crates.io](https://img.shields.io/crates/v/bme680.svg)](https://crates.io/crates/bme680) +1. [BMI160] - I2C / SPI - Inertial Measurement Unit - [![crates.io](https://img.shields.io/crates/v/bmi160.svg)](https://crates.io/crates/bmi160) +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) +1. [CC1101] - SPI - Sub-1GHz RF Transceiver - [![crates.io](https://img.shields.io/crates/v/cc1101.svg)](https://crates.io/crates/cc1101) 1. [DS3231] - I2C - real-time clock 1. [DS3234] - SPI - Real-time clock -1. [DS323x] - I2C/SPI - Real-time clocks (RTC): DS3231, DS3232 and DS3234 - ![crates.io](https://img.shields.io/crates/v/ds323x.svg) -1. [epd-waveshare] - SPI - driver for E-Paper Modules from Waveshare ![crates.io](https://img.shields.io/crates/v/epd-waveshare.svg) -1. [embedded-morse] - Output morse messages - ![crates.io](https://img.shields.io/crates/v/embedded-morse.svg) +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) +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) +1. [embedded-morse] - Output morse messages - [![crates.io](https://img.shields.io/crates/v/embedded-morse.svg)](https://crates.io/crates/embedded-morse) 1. [embedded-nrf24l01] - SPI+GPIO - 2.4 GHz radio -1. [Ft6x36] - I2C - Rust driver for focal tech touch screen FT6236, FT6336 - ![crates.io](https://img.shields.io/crates/v/ft6x36.svg) -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) -1. [GridEYE] - I2C - Rust driver for Grid-EYE / Panasonic AMG88(33) - ![crates.io](https://img.shields.io/crates/v/GridEYE.svg) +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) +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) +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) 1. [HC-SR04] - DIO - Ultrasound sensor -1. [HD44780-driver] - GPIO - LCD controller - ![crates.io](https://img.shields.io/crates/v/hd44780-driver.svg) +1. [HD44780-driver] - GPIO - LCD controller - [![crates.io](https://img.shields.io/crates/v/hd44780-driver.svg)](https://crates.io/crates/hd44780-driver) 1. [HD44780] - Parallel port - LCD controller -1. [HM11] - USART - HM-11 bluetooth module AT configuration crate - ![crates.io](https://img.shields.io/crates/v/hm11.svg) -1. [HRS3300] - I2C - Heart rate sensor / monitor used in the PineTime smartwatch, for example. - ![crates.io](https://img.shields.io/crates/v/hrs3300.svg) -1. [HDC20xx] - I2C - Temperature and humidity sensor compatible with HDC2080, HDC2021 and HDC2010. - ![crates.io](https://img.shields.io/crates/v/hdc20xx.svg) -1. [hub75] - A driver for rgb led matrices with the hub75 interface - ![crates.io](https://img.shields.io/crates/v/hub75.svg) -1. [hzgrow-r502] - UART capacitive fingerprint reader - ![crates.io](https://img.shields.io/crates/v/hzgrow-r502.svg) +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) +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) +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) +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) +1. [hzgrow-r502] - UART capacitive fingerprint reader - [![crates.io](https://img.shields.io/crates/v/hzgrow-r502.svg)](https://crates.io/crates/hzgrow-r502) 1. [iAQ-Core] - I2C - iAQ-Core-C/iAQ-Core-P Gas and VOC sensor driver for monitoring indoor air quality. 1. [ILI9341] - SPI - TFT LCD display -1. [INA260] - I2C - power monitor - ![crates.io](https://img.shields.io/crates/v/ina260.svg) -1. [ISL29125] - I2C - RGB Color Light Sensor with IR Blocking Filter - ![crates.io](https://img.shields.io/crates/v/isl29125.svg) -1. [IST7920] - SPI monochrome LCD display - ![crates.io](https://img.shields.io/crates/v/ist7920.svg) -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) -1. [lp586x] - I2C/SPI - LED matrix driver ![crates.io](https://img.shields.io/crates/v/lp586x.svg) +1. [INA260] - I2C - power monitor - [![crates.io](https://img.shields.io/crates/v/ina260.svg)](https://crates.io/crates/ina260) +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) +1. [IST7920] - SPI monochrome LCD display - [![crates.io](https://img.shields.io/crates/v/ist7920.svg)](https://crates.io/crates/ist7920) +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) +1. [lp586x] - I2C/SPI - LED matrix driver [![crates.io](https://img.shields.io/crates/v/lp586x.svg)](https://crates.io/crates/lp586x) 1. [LS010B7DH01] - SPI - Memory LCD -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) -1. [LSM303C] - A platform agnostic driver to interface with the LSM303C (accelerometer + compass) ![crates.io](https://img.shields.io/crates/v/lsm303c.svg) -1. [LSM9DS1] - I2C/SPI - 9-axis motion sensor module ![crates.io](https://img.shields.io/crates/v/lsm9ds1.svg) -1. [ltr-559] - I2C - Ambient Light Sensor and Proximity sensor ![crates.io](https://img.shields.io/crates/v/ltr-559.svg) -1. [lvgl] - no_std [LittleVGL](https://github.com/littlevgl/lvgl) port - ![crates.io](https://img.shields.io/crates/v/lvgl.svg) -1. [M95320] - SPI - STMicroelectronics Serial flash EEPROM - ![crates.io](https://img.shields.io/crates/v/m95320.svg) +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) +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) +1. [LSM9DS1] - I2C/SPI - 9-axis motion sensor module [![crates.io](https://img.shields.io/crates/v/lsm9ds1.svg)](https://crates.io/crates/lsm9ds1) +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) +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) +1. [M95320] - SPI - STMicroelectronics Serial flash EEPROM - [![crates.io](https://img.shields.io/crates/v/m95320.svg)](https://crates.io/crates/m95320) 1. [MAG3110] - I2C - Magnetometer -1. [MAX17048/9] - I2C - LiPo Fuel gauge, battery monitoring IC - ![crates.io](https://img.shields.io/crates/v/max17048.svg) -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) -1. [MAX3010x] - I2C - Pulse oximeter and heart-rate sensor. ATM Compatible with MAX30102. - ![crates.io](https://img.shields.io/crates/v/max3010x.svg) -1. [MAX31855] - SPI - Thermocouple digital converter -![crates.io](https://img.shields.io/crates/v/max31855.svg) -1. [MAX31865] - SPI - RTD to Digital converter - ![crates.io](https://img.shields.io/crates/v/max31865.svg) -1. [MAX44009] - I2C - Ambient light sensor - ![crates.io](https://img.shields.io/crates/v/max44009.svg) -1. [MAX7219] - SPI - LED display driver - ![crates.io](https://img.shields.io/crates/v/max7219.svg) +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) +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) +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) +1. [MAX31855] - SPI - Thermocouple digital converter -[![crates.io](https://img.shields.io/crates/v/max31855.svg)](https://crates.io/crates/max31855) +1. [MAX31865] - SPI - RTD to Digital converter - [![crates.io](https://img.shields.io/crates/v/max31865.svg)](https://crates.io/crates/max31865) +1. [MAX44009] - I2C - Ambient light sensor - [![crates.io](https://img.shields.io/crates/v/max44009.svg)](https://crates.io/crates/max44009) +1. [MAX7219] - SPI - LED display driver - [![crates.io](https://img.shields.io/crates/v/max7219.svg)](https://crates.io/crates/max7219) 1. [MCP4725] - I2C - 12-bit DAC - ![crates.io](https://img.shields.io/crates/v/mcp4725) -1. [MCP49xx] - SPI - 8/10/12-bit DACs like MCP4921, MCP4922, MCP4801, etc. - ![crates.io](https://img.shields.io/crates/v/mcp49xx.svg) -1. [MCP9808] - I2C - Temperature sensor - ![crates.io](https://img.shields.io/crates/v/mcp9808.svg) -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) +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) +1. [MCP9808] - I2C - Temperature sensor - [![crates.io](https://img.shields.io/crates/v/mcp9808.svg)](https://crates.io/crates/mcp9808) +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) 1. [MFRC522] - SPI - RFID tag reader/writer -1. [midi-port] - UART - MIDI input - ![crates.io](https://img.shields.io/crates/v/midi-port.svg) -1. [MLX9061x] - I2C - MLX90614/MLX90615 Contact-less infrared (IR) temperature sensor driver. - ![crates.io](https://img.shields.io/crates/v/mlx9061x.svg) -1. [MMA8x5x] - I2C - Tri-axis accelerometers like MMA8451Q, MMA8452Q, MMA8453Q, MMA8652FC and MMA8653FC. - ![crates.io](https://img.shields.io/crates/v/mma8x5x.svg) +1. [midi-port] - UART - MIDI input - [![crates.io](https://img.shields.io/crates/v/midi-port.svg)](https://crates.io/crates/midi-port) +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) +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) 1. [motor-driver] - Motor drivers: L298N, TB6612FNG, etc. -1. [MPU6050] - I2C - no_std driver for the MPU6050 ![crates.io](https://img.shields.io/crates/v/mpu6050.svg) -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) -1. [MS5637] - no_std I2C driver for the MS5637 temperature and pressure sensor ![crates.io](https://img.shields.io/crates/v/ms5637.svg) +1. [MPU6050] - I2C - no_std driver for the MPU6050 [![crates.io](https://img.shields.io/crates/v/mpu6050.svg)](https://crates.io/crates/mpu6050) +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) +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) 1. [NRF24L01] - SPI - 2.4 GHz wireless communication -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) +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) 1. [PCD8544] - SPI - 48x84 pixels matrix LCD controller -1. [PCD8544_rich] - SPI - Rich driver for 48x84 pixels matrix LCD controller - ![crates.io](https://img.shields.io/crates/v/pcd8544.svg) -1. [PCF857x] - I2C - I/O expanders: PCF8574, PCF8574A, PCF8575 ![crates.io](https://img.shields.io/crates/v/pcf857x.svg) -1. [radio-at86rf212] - SPI - Sub GHz 802.15.4 radio transceiver ![crates.io](https://img.shields.io/crates/v/radio-at86rf212.svg) +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) +1. [PCF857x] - I2C - I/O expanders: PCF8574, PCF8574A, PCF8575 [![crates.io](https://img.shields.io/crates/v/pcf857x.svg)](https://crates.io/crates/pcf857x) +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) 1. [RFM69] - SPI - ISM radio transceiver 1. [RN2xx3] - Serial - A driver for the RN2483 / RN2903 LoRaWAN modems by Microchip -1. [SCD30] - I2C - CO₂ sensor - ![crates.io](https://img.shields.io/crates/v/scd30.svg) +1. [SCD30] - I2C - CO₂ sensor - [![crates.io](https://img.shields.io/crates/v/scd30.svg)](https://crates.io/crates/scd30) 1. [SHT2x] - I2C - temperature / humidity sensors 1. [SHT3x] - I2C - Temperature / humidity sensors 1. [SI5351] - I2C - clock generator 1. [SI7021] - I2C - Humidity and temperature sensor -1. [SPL06-007] - I2C - Pressure and temperature sensor - ![crates.io](https://img.shields.io/crates/v/spl06-007.svg) -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) -1. [SSD1320] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1320.svg) -1. [SSD1322] - SPI - Graphical OLED display controller - ![crates.io](https://img.shields.io/crates/v/ssd1322.svg) -1. [SSD1322_rs] - SPI - Async graphics driver for SSD1322 screen - ![crates.io](https://img.shields.io/crates/v/ssd1322_rs.svg) -1. [SSD1351] - SPI - 16bit colour OLED display driver - ![crates.io](https://img.shields.io/crates/v/ssd1351.svg) -1. [SSD1675] - SPI - Tri-color ePaper display controller - ![crates.io](https://img.shields.io/crates/v/ssd1675.svg) -1. [st7032i] - I2C - Dot Matrix LCD Controller driver (Sitronix ST7032i or similar). - ![crates.io](https://img.shields.io/crates/v/st7032i.svg) -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) -1. [ST7920] - SPI - LCD displays using the ST7920 controller ![crates.io](https://img.shields.io/crates/v/st7920.svg) +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) +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) +1. [SSD1320] - SPI - Graphical OLED display controller - [![crates.io](https://img.shields.io/crates/v/ssd1320.svg)](https://crates.io/crates/ssd1320) +1. [SSD1322] - SPI - Graphical OLED display controller - [![crates.io](https://img.shields.io/crates/v/ssd1322.svg)](https://crates.io/crates/ssd1322) +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) +1. [SSD1351] - SPI - 16bit colour OLED display driver - [![crates.io](https://img.shields.io/crates/v/ssd1351.svg)](https://crates.io/crates/ssd1351) +1. [SSD1675] - SPI - Tri-color ePaper display controller - [![crates.io](https://img.shields.io/crates/v/ssd1675.svg)](https://crates.io/crates/ssd1675) +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) +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) +1. [ST7920] - SPI - LCD displays using the ST7920 controller [![crates.io](https://img.shields.io/crates/v/st7920.svg)](https://crates.io/crates/st7920) 1. [stm32-eth] - MCU - Ethernet 1. [SX1278] - SPI - Long range (LoRa) transceiver 1. [SX1509] - I2C - IO Expander / Keypad driver -1. [TCS3472] - I2C - RGB color light sensor - ![crates.io](https://img.shields.io/crates/v/tcs3472.svg) -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) -1. [VEML6040] - I2C - RGBW color light sensor - ![crates.io](https://img.shields.io/crates/v/veml6040.svg) -1. [VEML6070] - I2C - UVA light sensor - ![crates.io](https://img.shields.io/crates/v/veml6070.svg) -1. [VEML7700] - I2C - Ambient light sensors - ![crates.io](https://img.shields.io/crates/v/veml7700.svg) -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) -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) -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) -1. [xCA9548A] - I2C - I2C switches/multiplexers: TCA9548A, PCA9548A - ![crates.io](https://img.shields.io/crates/v/xca9548a.svg) +1. [TCS3472] - I2C - RGB color light sensor - [![crates.io](https://img.shields.io/crates/v/tcs3472.svg)](https://crates.io/crates/tcs3472) +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) +1. [VEML6040] - I2C - RGBW color light sensor - [![crates.io](https://img.shields.io/crates/v/veml6040.svg)](https://crates.io/crates/veml6040) +1. [VEML6070] - I2C - UVA light sensor - [![crates.io](https://img.shields.io/crates/v/veml6070.svg)](https://crates.io/crates/veml6070) +1. [VEML7700] - I2C - Ambient light sensors - [![crates.io](https://img.shields.io/crates/v/veml7700.svg)](https://crates.io/crates/veml7700) +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) +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) +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) +1. [xCA9548A] - I2C - I2C switches/multiplexers: TCA9548A, PCA9548A - [![crates.io](https://img.shields.io/crates/v/xca9548a.svg)](https://crates.io/crates/xca9548a) 1. [ublox-cellular-rs] - Serial - Cellular driver for the full Ublox cellular serial based family 1. [atwinc1500-rs] - SPI - A host driver for the Atwinc1500 network controller 1. [HX711] - GPIO - An interrupt-based driver for the HX711 Load Cell Amplifier IC. no-std. @@ -1229,79 +1229,79 @@ Work in progress drivers. Help the authors make these crates awesome! [`#![no_std]` crates][no-std-category] designed to run on resource-constrained devices. -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) -1. [atomic](https://crates.io/crates/atomic): Generic Atomic wrapper type. ![crates.io](https://img.shields.io/crates/v/atomic.svg) -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) -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) -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) -1. [bit_field](https://crates.io/crates/bit_field): manipulating bitfields and bitarrays - ![crates.io](https://img.shields.io/crates/v/bit_field.svg) -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) -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) -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) -1. [combine](https://crates.io/crates/combine): parser combinator library - ![crates.io](https://img.shields.io/crates/v/combine.svg) -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) -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) -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) -1. [dcmimu]: An algorithm for fusing low-cost triaxial MEMS gyroscope and accelerometer measurements ![crates.io](https://img.shields.io/crates/v/dcmimu.svg) -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) -1. [device-driver]: A toolkit to write better device drivers, faster. ![crates.io](https://img.shields.io/crates/v/device-driver.svg) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) 1. [drogue-device](https://github.com/drogue-iot/drogue-device): A distribution of tools and examples for building embedded applications in Rust. -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) +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) 1. [crossbus](https://github.com/hominee/crossbus): A Platform-Less, Runtime-Less Actor Computing Model. 1. [ector](https://github.com/drogue-iot/ector): An async actor framework for embedded, based on embassy. 1. [embassy]: A set of embedded async tools to make async/await a first-class option for embedded development -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) -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) +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) +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) 1. [embedded-update](https://github.com/drogue-iot/embedded-update): Pluggable firmware update protocol for embedded devices. 1. [embedded-tls](https://github.com/drogue-iot/embedded-tls): A TLS 1.3 implementation that runs in a no-std environment. -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) +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) 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) -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) +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) 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) 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) 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) -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) -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) -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) -1. [infrared](https://crates.io/crates/infrared): infrared remote control library for embedded rust - ![crates.io](https://img.shields.io/crates/v/infrared.svg) -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) -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) -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) -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) +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) +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) +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) +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) +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) +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) +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) +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) 1. [lorawan-encoding](https://github.com/lora-rs/lora-rs/tree/main/lorawan-encoding): A LoRaWAN packet codec. 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. -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) -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) -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) -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) -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) -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) -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) -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) +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) +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) +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) +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) +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) +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) +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) +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) 1. [moonboot](https://github.com/jhbruhn/moonboot): OTA Bootloader Construction Framework for Rust no_std environments, especially embedded devices without an OS -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) -1. [nom](https://crates.io/crates/nom): parser combinator framework - ![crates.io](https://img.shields.io/crates/v/nom.svg) -1. [null-terminated](https://crates.io/crates/null-terminated): generic null-terminated arrays - ![crates.io](https://img.shields.io/crates/v/null-terminated.svg) -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) -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) -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) -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) -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) -1. [RampMaker](https://crates.io/crates/ramp-maker): Stepper Motor Acceleration Ramp Generator - ![crates.io](https://img.shields.io/crates/v/ramp-maker.svg) -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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) 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) -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) -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) +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) +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) 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) -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) -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) +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) +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) 1. [sntpc]: Rust SNTP client to get a timestamp from NTP servers. - ![crates.io](https://img.shields.io/crates/v/sntpc) 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) -1. [Stepper]: Universal Stepper Motor Interface - ![crates.io](https://img.shields.io/crates/v/stepper.svg) -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) -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) +1. [Stepper]: Universal Stepper Motor Interface - [![crates.io](https://img.shields.io/crates/v/stepper.svg)](https://crates.io/crates/stepper) +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) +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) 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. -1. [wyhash]: A fast, simple and portable hashing algorithm and random number generator. - ![crates.io](https://img.shields.io/crates/v/wyhash.svg) +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) 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) 1. [wtx](https://github.com/c410-f3r/wtx): Among other things, provides implementations to interact with HTTP, WebSockets and Databases. @@ -1328,9 +1328,9 @@ Work in progress drivers. Help the authors make these crates awesome! Work in progress crates. Help the authors make these crates awesome! -- [light-cli](https://github.com/rudihorn/light-cli): a lightweight heapless cli interface ![crates.io](https://img.shields.io/crates/v/light_cli.svg) +- [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) - [OxCC](https://github.com/jonlamb-gh/oxcc): A port of Open Source Car Control written in Rust -- [Rubble](https://github.com/jonas-schievink/rubble): A pure-Rust embedded BLE stack ![crates.io](https://img.shields.io/crates/v/rubble.svg) +- [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) [no-std-category]: https://crates.io/categories/no-std From fc5847a1481eb8de56c2594f4144e01219b554cc Mon Sep 17 00:00:00 2001 From: Jan Niehusmann Date: Sun, 13 Oct 2024 20:34:33 +0000 Subject: [PATCH 137/178] Fix a few more badge links --- README.md | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 580e5c29..146a9216 100644 --- a/README.md +++ b/README.md @@ -240,7 +240,7 @@ Peripheral Access Crates were also called Device Crates. - [`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. - [`avr-device`](https://github.com/Rahix/avr-device) Peripheral access API for Microchip (formerly Atmel) AVR microcontroller family. - [`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) -- [`pic32-pac`](https://crates.io/crates/pic32mx2xx) Peripheral access API for PIC32MX1/2xx - ![crates.io](https://img.shields.io/crates/v/pic32mx2xx) +- [`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) ### Nordic @@ -275,25 +275,25 @@ Peripheral Access Crates were also called Device Crates. ### Silicon Labs -- [`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) +- [`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) The [`efm32-rs`](https://github.com/efm32-rs) project has peripheral access APIs for most EFM32 microcontrollers (generated using svd2rust): -- [`efm32g-pac`](https://crates.io/crates/efm32g-pac) - ![crates.io](https://img.shields.io/crates/v/efm32g-pac) -- [`efm32gg-pac`](https://crates.io/crates/efm32gg-pac) - ![crates.io](https://img.shields.io/crates/v/efm32gg-pac) -- [`efm32gg11b-pac`](https://crates.io/crates/efm32gg11b-pac) - ![crates.io](https://img.shields.io/crates/v/efm32gg11b-pac) -- [`efm32gg12b-pac`](https://crates.io/crates/efm32gg12b-pac) - ![crates.io](https://img.shields.io/crates/v/efm32gg12b-pac) -- [`efm32hg-pac`](https://crates.io/crates/efm32hg-pac) - ![crates.io](https://img.shields.io/crates/v/efm32hg-pac) -- [`efm32jg1b-pac`](https://crates.io/crates/efm32jg1b-pac) - ![crates.io](https://img.shields.io/crates/v/efm32jg1b-pac) -- [`efm32jg12b-pac`](https://crates.io/crates/efm32jg12b-pac) - ![crates.io](https://img.shields.io/crates/v/efm32jg12b-pac) -- [`efm32lg-pac`](https://crates.io/crates/efm32lg-pac) - ![crates.io](https://img.shields.io/crates/v/efm32lg-pac) -- [`efm32pg-pac`](https://crates.io/crates/efm32pg-pac) - ![crates.io](https://img.shields.io/crates/v/efm32pg-pac) -- [`efm32pg22-pac`](https://crates.io/crates/efm32pg22-pac) - ![crates.io](https://img.shields.io/crates/v/efm32pg22-pac) -- [`efm32pg23-pac`](https://crates.io/crates/efm32pg23-pac) - ![crates.io](https://img.shields.io/crates/v/efm32pg23-pac) -- [`efm32tg-pac`](https://crates.io/crates/efm32tg-pac) - ![crates.io](https://img.shields.io/crates/v/efm32tg-pac) -- [`efm32tg11b-pac`](https://crates.io/crates/efm32tg11b-pac) - ![crates.io](https://img.shields.io/crates/v/efm32tg11b-pac) -- [`efm32wg-pac`](https://crates.io/crates/efm32wg-pac) - ![crates.io](https://img.shields.io/crates/v/efm32wg-pac) -- [`efm32zg-pac`](https://crates.io/crates/efm32zg-pac) - ![crates.io](https://img.shields.io/crates/v/efm32zg-pac) +- [`efm32g-pac`](https://crates.io/crates/efm32g-pac) - [![crates.io](https://img.shields.io/crates/v/efm32g-pac)](https://crates.io/crates/efm32g-pac) +- [`efm32gg-pac`](https://crates.io/crates/efm32gg-pac) - [![crates.io](https://img.shields.io/crates/v/efm32gg-pac)](https://crates.io/crates/efm32gg-pac) +- [`efm32gg11b-pac`](https://crates.io/crates/efm32gg11b-pac) - [![crates.io](https://img.shields.io/crates/v/efm32gg11b-pac)](https://crates.io/crates/efm32gg11b-pac) +- [`efm32gg12b-pac`](https://crates.io/crates/efm32gg12b-pac) - [![crates.io](https://img.shields.io/crates/v/efm32gg12b-pac)](https://crates.io/crates/efm32gg12b-pac) +- [`efm32hg-pac`](https://crates.io/crates/efm32hg-pac) - [![crates.io](https://img.shields.io/crates/v/efm32hg-pac)](https://crates.io/crates/efm32hg-pac) +- [`efm32jg1b-pac`](https://crates.io/crates/efm32jg1b-pac) - [![crates.io](https://img.shields.io/crates/v/efm32jg1b-pac)](https://crates.io/crates/efm32jg1b-pac) +- [`efm32jg12b-pac`](https://crates.io/crates/efm32jg12b-pac) - [![crates.io](https://img.shields.io/crates/v/efm32jg12b-pac)](https://crates.io/crates/efm32jg12b-pac) +- [`efm32lg-pac`](https://crates.io/crates/efm32lg-pac) - [![crates.io](https://img.shields.io/crates/v/efm32lg-pac)](https://crates.io/crates/efm32lg-pac) +- [`efm32pg-pac`](https://crates.io/crates/efm32pg-pac) - [![crates.io](https://img.shields.io/crates/v/efm32pg-pac)](https://crates.io/crates/efm32pg-pac) +- [`efm32pg22-pac`](https://crates.io/crates/efm32pg22-pac) - [![crates.io](https://img.shields.io/crates/v/efm32pg22-pac)](https://crates.io/crates/efm32pg22-pac) +- [`efm32pg23-pac`](https://crates.io/crates/efm32pg23-pac) - [![crates.io](https://img.shields.io/crates/v/efm32pg23-pac)](https://crates.io/crates/efm32pg23-pac) +- [`efm32tg-pac`](https://crates.io/crates/efm32tg-pac) - [![crates.io](https://img.shields.io/crates/v/efm32tg-pac)](https://crates.io/crates/efm32tg-pac) +- [`efm32tg11b-pac`](https://crates.io/crates/efm32tg11b-pac) - [![crates.io](https://img.shields.io/crates/v/efm32tg11b-pac)](https://crates.io/crates/efm32tg11b-pac) +- [`efm32wg-pac`](https://crates.io/crates/efm32wg-pac) - [![crates.io](https://img.shields.io/crates/v/efm32wg-pac)](https://crates.io/crates/efm32wg-pac) +- [`efm32zg-pac`](https://crates.io/crates/efm32zg-pac) - [![crates.io](https://img.shields.io/crates/v/efm32zg-pac)](https://crates.io/crates/efm32zg-pac) ### StarFive @@ -326,7 +326,7 @@ The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral ac - [`msp430g2553`](https://github.com/japaric/msp430g2553) Peripheral access API for MSP430G2553 microcontrollers (generated using svd2rust) - [msp430 quickstart](https://github.com/rust-embedded/msp430-quickstart) some examples for msp430 - [`msp430fr2355`](https://crates.io/crates/msp430fr2355) Peripheral access API for MSP430FR2355 microcontrollers (generated using svd2rust) -- [`msp430fr6972`](https://crates.io/crates/msp430fr6972) - ![Crates.io](https://img.shields.io/crates/v/msp430fr6972) +- [`msp430fr6972`](https://crates.io/crates/msp430fr6972) - [![crates.io](https://img.shields.io/crates/v/msp430fr6972)](https://crates.io/crates/msp430fr6972) ### Espressif @@ -679,9 +679,9 @@ Crates tailored for specific boards. [![crates.io](https://img.shields.io/crates/v/seedstudio-gd32v.svg)](https://crates.io/crates/seedstudio-gd32v) - Contains runnable examples for this board - [`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) -- [`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) -- [`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) -- [`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) +- [`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) +- [`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) +- [`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) ### SiFive @@ -708,7 +708,7 @@ Crates tailored for specific boards. - [`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) - [`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) - [`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) -- [`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) +- [`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) [Nucleo-F401RE]: https://www.st.com/en/evaluation-tools/nucleo-f401re.html @@ -814,7 +814,7 @@ Otherwise, please add it to the [WIP section](#WIP) below. 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) 1. [MMA7660FC] - I2C - 3-axis accelerometer - [Intro blog post][9] 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) -1. [PAC194X] - I2C - Single/multi channel power monitor - [Intro blog post][63] - ![crates.io](https://img.shields.io/crates/v/pac194x) +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) 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) 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) 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) @@ -850,7 +850,7 @@ Otherwise, please add it to the [WIP section](#WIP) below. 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) 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) 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) -1. [tb6612fng] - A `no_std` driver for the TB6612FNG motor driver - ![Crates.io](https://img.shields.io/crates/v/tb6612fng.svg) +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) 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) 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) 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) @@ -1070,7 +1070,7 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [MAX31865] - SPI - RTD to Digital converter - [![crates.io](https://img.shields.io/crates/v/max31865.svg)](https://crates.io/crates/max31865) 1. [MAX44009] - I2C - Ambient light sensor - [![crates.io](https://img.shields.io/crates/v/max44009.svg)](https://crates.io/crates/max44009) 1. [MAX7219] - SPI - LED display driver - [![crates.io](https://img.shields.io/crates/v/max7219.svg)](https://crates.io/crates/max7219) -1. [MCP4725] - I2C - 12-bit DAC - ![crates.io](https://img.shields.io/crates/v/mcp4725) +1. [MCP4725] - I2C - 12-bit DAC - [![crates.io](https://img.shields.io/crates/v/mcp4725)](https://crates.io/crates/mcp4725) 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) 1. [MCP9808] - I2C - Temperature sensor - [![crates.io](https://img.shields.io/crates/v/mcp9808.svg)](https://crates.io/crates/mcp9808) 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) @@ -1295,14 +1295,14 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 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) -1. [sntpc]: Rust SNTP client to get a timestamp from NTP servers. - ![crates.io](https://img.shields.io/crates/v/sntpc) +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) 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) 1. [Stepper]: Universal Stepper Motor Interface - [![crates.io](https://img.shields.io/crates/v/stepper.svg)](https://crates.io/crates/stepper) 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) 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) 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. 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) -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) +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) 1. [wtx](https://github.com/c410-f3r/wtx): Among other things, provides implementations to interact with HTTP, WebSockets and Databases. [`cmim`]: https://crates.io/crates/cmim From a414ce6b1d9e8e4e2704437a4c53c3d7793847f4 Mon Sep 17 00:00:00 2001 From: Tamme Dittrich Date: Fri, 1 Nov 2024 17:40:44 +0100 Subject: [PATCH 138/178] Add a link to drive-rs --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 146a9216..a2748e7e 100644 --- a/README.md +++ b/README.md @@ -759,6 +759,8 @@ devices that go beyond what is available in [`embedded-hal`]: ## Driver crates +For more drivers also refer to [drive-rs](https://tweedegolf.github.io/drive-rs/). + Platform agnostic crates to interface external components. These crates use the [`embedded-hal`] interface to support [all the devices and systems that implement the `embedded-hal` traits][hal-impl]. From 3724f442921fe943c15179e21f3cd84f1965b728 Mon Sep 17 00:00:00 2001 From: Tamme Dittrich Date: Tue, 5 Nov 2024 20:36:59 +0100 Subject: [PATCH 139/178] Reword mention of drive-rs --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a2748e7e..019718d6 100644 --- a/README.md +++ b/README.md @@ -759,7 +759,7 @@ devices that go beyond what is available in [`embedded-hal`]: ## Driver crates -For more drivers also refer to [drive-rs](https://tweedegolf.github.io/drive-rs/). +You can also find many of these drivers [here](https://tweedegolf.github.io/drive-rs/); please consider adding your driver there (https://github.com/tweedegolf/drive-rs) while we work to port everything across. Platform agnostic crates to interface external components. These crates use the [`embedded-hal`] interface to support [all the devices and systems that implement the `embedded-hal` From 88026a15d7780e848e8bbd2aebb1e5834a46faaf Mon Sep 17 00:00:00 2001 From: Tamme Dittrich Date: Wed, 6 Nov 2024 09:12:57 +0100 Subject: [PATCH 140/178] Update README.md Co-authored-by: Ralph Ursprung <39383228+rursprung@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 019718d6..959a5345 100644 --- a/README.md +++ b/README.md @@ -759,7 +759,7 @@ devices that go beyond what is available in [`embedded-hal`]: ## Driver crates -You can also find many of these drivers [here](https://tweedegolf.github.io/drive-rs/); please consider adding your driver there (https://github.com/tweedegolf/drive-rs) while we work to port everything across. +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. Platform agnostic crates to interface external components. These crates use the [`embedded-hal`] interface to support [all the devices and systems that implement the `embedded-hal` From 92c4af85e25483732c9804b5f3e489340755f089 Mon Sep 17 00:00:00 2001 From: Scott Gibb <44235263+ScottGibb@users.noreply.github.com> Date: Thu, 21 Nov 2024 23:59:44 +0000 Subject: [PATCH 141/178] Add Linting to the Project (#466) * Add markdown linting rules * Add linting badge * Updated Markdown to meet linter criteria Closes #156 --- .github/workflows/Linting.yml | 35 +++++ .markdownlint.yml | 277 ++++++++++++++++++++++++++++++++++ Code-of-Conduct.md | 2 +- README.md | 58 +++---- 4 files changed, 338 insertions(+), 34 deletions(-) create mode 100644 .github/workflows/Linting.yml create mode 100644 .markdownlint.yml diff --git a/.github/workflows/Linting.yml b/.github/workflows/Linting.yml new file mode 100644 index 00000000..8a161930 --- /dev/null +++ b/.github/workflows/Linting.yml @@ -0,0 +1,35 @@ +--- + name: Linting + + on: # yamllint disable-line rule:truthy + push: null + pull_request: null + + permissions: {} + + jobs: + Super_Linter: + name: Super Linter + runs-on: ubuntu-latest + + permissions: + contents: read + packages: read + # To report GitHub Actions status checks + statuses: write + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Super-linter + uses: super-linter/super-linter@v7.2.0 # x-release-please-version + env: + # Linters + VALIDATE_MARKDOWN: true + VALIDATE_YAML: true + LINTER_RULES_PATH: ./ + MARKDOWN_CONFIG_FILE: .markdownlint.yml + ENABLE_GITHUB_ACTIONS_STEP_SUMMARY: true + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.markdownlint.yml b/.markdownlint.yml new file mode 100644 index 00000000..99c54eaa --- /dev/null +++ b/.markdownlint.yml @@ -0,0 +1,277 @@ +# Example markdownlint configuration with all properties set to their default value + +# Default state for all rules +default: true + +# Path to configuration file to extend +extends: null + +# 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 +MD001: true + +# MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md003.md +MD003: + # Heading style + style: "consistent" + +# MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md004.md +MD004: + # List style + style: "consistent" + +# MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md005.md +MD005: true + +# MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md007.md +MD007: + # Spaces for indent + indent: 2 + # Whether to indent the first level of the list + start_indented: false + # Spaces for first level indent (when start_indented is set) + start_indent: 2 + +# MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md009.md +MD009: + # Spaces for line break + br_spaces: 2 + # Allow spaces for empty lines in list items + list_item_empty_lines: false + # Include unnecessary breaks + strict: false + +# MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md010.md +MD010: + # Include code blocks + code_blocks: true + # Fenced code languages to ignore + ignore_code_languages: [] + # Number of spaces for each hard tab + spaces_per_tab: 1 + +# MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md011.md +MD011: true + +# MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md012.md +MD012: + # Consecutive blank lines + maximum: 1 + +# MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md013.md +MD013: false +# # Number of characters +# line_length: 200 +# # Number of characters for headings +# heading_line_length: 80 +# # Number of characters for code blocks +# code_block_line_length: 200 +# # Include code blocks +# code_blocks: true +# # Include tables +# tables: true +# # Include headings +# headings: true +# # Strict length checking +# strict: false +# # Stern length checking +# stern: false + +# MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md014.md +MD014: true + +# 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 +MD018: true + +# 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 +MD019: true + +# 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 +MD020: true + +# 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 +MD021: true + +# MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md022.md +MD022: + # Blank lines above heading + lines_above: 1 + # Blank lines below heading + lines_below: 1 + +# 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 +MD023: true + +# MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md024.md +MD024: + # Only check sibling headings + siblings_only: true + +# 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 +MD025: + # Heading level + level: 1 + # RegExp for matching title in front matter + front_matter_title: "^\\s*title\\s*[:=]" + +# MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md026.md +MD026: + # Punctuation characters + punctuation: ".,;:!。,;:!" + +# MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md027.md +MD027: true + +# MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md028.md +MD028: true + +# MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md029.md +MD029: + # List style + style: "one_or_ordered" + +# MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md030.md +MD030: + # Spaces for single-line unordered list items + ul_single: 1 + # Spaces for single-line ordered list items + ol_single: 1 + # Spaces for multi-line unordered list items + ul_multi: 1 + # Spaces for multi-line ordered list items + ol_multi: 1 + +# 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 +MD031: + # Include list items + list_items: true + +# MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md032.md +MD032: true + +# MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md033.md +MD033: false +# # Allowed elements +# allowed_elements: [] + +# MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md034.md +MD034: false + +# MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md035.md +MD035: + # Horizontal rule style + style: "consistent" + +# MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md036.md +MD036: + # Punctuation characters + punctuation: ".,;:!?。,;:!?" + +# MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md037.md +MD037: true + +# MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md038.md +MD038: true + +# MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md039.md +MD039: true + +# MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md040.md +MD040: + # List of languages + allowed_languages: [] + # Require language only + language_only: false + +# 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 +MD041: + # Heading level + level: 1 + # RegExp for matching title in front matter + front_matter_title: "^\\s*title\\s*[:=]" + +# MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md042.md +MD042: true + +# MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md043.md +MD043: + # List of headings + headings: [ "*" ] + # Match case of headings + match_case: false + +# MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md044.md +MD044: + # List of proper names + names: [] + # Include code blocks + code_blocks: true + # Include HTML elements + html_elements: true + +# MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md045.md +MD045: true + +# MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md046.md +MD046: + # Block style + style: "consistent" + +# MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md047.md +MD047: true + +# MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md048.md +MD048: + # Code fence style + style: "consistent" + +# MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md049.md +MD049: + # Emphasis style + style: "consistent" + +# MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md050.md +MD050: + # Strong style + style: "consistent" + +# MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md051.md +MD051: + # Ignore case of fragments + ignore_case: false + +# 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 +MD052: + # Include shortcut syntax + shortcut_syntax: false + +# 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 +MD053: + # Ignored definitions + ignored_definitions: + - "//" + +# MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md054.md +MD054: + # Allow autolinks + autolink: true + # Allow inline links and images + inline: true + # Allow full reference links and images + full: true + # Allow collapsed reference links and images + collapsed: true + # Allow shortcut reference links and images + shortcut: true + # Allow URLs as inline links + url_inline: true + +# MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md055.md +MD055: + # Table pipe style + style: "consistent" + +# MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md056.md +MD056: true + +# MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md058.md +MD058: true \ No newline at end of file diff --git a/Code-of-Conduct.md b/Code-of-Conduct.md index f2e5bdc0..c92197d6 100644 --- a/Code-of-Conduct.md +++ b/Code-of-Conduct.md @@ -30,7 +30,7 @@ Project maintainers have the right and responsibility to remove, edit, or reject ## Scope -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. +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. ## Enforcement diff --git a/README.md b/README.md index 959a5345..f08b6aeb 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # Embedded Rust -[![Awesome](https://awesome.re/badge.svg)](https://awesome.re) +[![Awesome](https://awesome.re/badge.svg)](https://awesome.re) [![Linting](https://github.com/rust-embedded/awesome-embedded-rust/actions/workflows/Static%20Analysis.yml/badge.svg?branch=master)](https://github.com/rust-embedded/awesome-embedded-rust/actions/workflows/Static%20Analysis.yml) 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. -[](http://www.rust-embedded.org) +[Rust Embedded Logo](http://www.rust-embedded.org) This project is developed and maintained by the [Resources team][team]. @@ -170,7 +170,7 @@ specifically endorsed or reviewed for accuracy or quality by the Embedded Workin ## Tools - [xargo](https://github.com/japaric/xargo) Rust package manager with support for non-default std libraries — build Rust runtime for your embedded system. - - 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. + - 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. - [svd2rust](https://github.com/japaric/svd2rust) Generate Rust structs with register mappings from SVD files. - [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) - [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) @@ -189,15 +189,14 @@ specifically endorsed or reviewed for accuracy or quality by the Embedded Workin - [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) - [probe-rs](https://github.com/probe-rs/probe-rs): a modern, embedded debugging toolkit, written in Rust - [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: - - [defmt](https://github.com/knurling-rs/defmt): a highly efficient logging framework that targets resource-constrained devices, like microcontrollers. - - [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 - - [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. - - [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 + - [defmt](https://github.com/knurling-rs/defmt): a highly efficient logging framework that targets resource-constrained devices, like microcontrollers. + - [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 + - [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. + - [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 - [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 - [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. - [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) - [embedded-hal-mock]: https://crates.io/crates/embedded-hal-mock ## Real-time @@ -214,8 +213,8 @@ specifically endorsed or reviewed for accuracy or quality by the Embedded Workin ### Real-time tools - [RTIC v1.0](https://rtic.rs/1/book/en/) Real-Time Interrupt-driven Concurrency — A concurrency framework for building real-time systems: - - [cortex-m rtic](https://github.com/rtic-rs/cortex-m-rtic) RTIC framework for ARM Cortex-M microcontrollers - - [msp430 rtfm](https://github.com/japaric/msp430-rtfm) RTFM framework for MSP430 MCUs + - [cortex-m rtic](https://github.com/rtic-rs/cortex-m-rtic) RTIC framework for ARM Cortex-M microcontrollers + - [msp430 rtfm](https://github.com/japaric/msp430-rtfm) RTFM framework for MSP430 MCUs ## Peripheral Access Crates @@ -324,7 +323,7 @@ The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral ac ### MSP430 - [`msp430g2553`](https://github.com/japaric/msp430g2553) Peripheral access API for MSP430G2553 microcontrollers (generated using svd2rust) - - [msp430 quickstart](https://github.com/rust-embedded/msp430-quickstart) some examples for msp430 + - [msp430 quickstart](https://github.com/rust-embedded/msp430-quickstart) some examples for msp430 - [`msp430fr2355`](https://crates.io/crates/msp430fr2355) Peripheral access API for MSP430FR2355 microcontrollers (generated using svd2rust) - [`msp430fr6972`](https://crates.io/crates/msp430fr6972) - [![crates.io](https://img.shields.io/crates/v/msp430fr6972)](https://crates.io/crates/msp430fr6972) @@ -375,6 +374,7 @@ Peripheral access crates for the different XMC4xxx families of microcontrollers - [`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) ### Renesas + - [`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) - [`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) - [`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) @@ -393,7 +393,6 @@ Peripheral access crates for the different XMC4xxx families of microcontrollers - [`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) - [`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) - ## HAL implementation crates 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) @@ -463,31 +462,27 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! - [`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) - Has examples that can run on boards like the [Nucleo-F042K6] and similar boards - -[Nucleo-F042K6]: http://www.st.com/en/evaluation-tools/nucleo-f042k6.html - +[Nucleo-F042K6]: - [`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) - Can be run on boards like the [Blue pill], [Nucleo-F103RB], and similar boards - -[Blue pill]: https://stm32duinoforum.com/forum/wiki_subdomain/index_title_Blue_Pill.html -[Nucleo-F103RB]: http://www.st.com/en/evaluation-tools/nucleo-f103rb.html - +[Blue pill]: +[Nucleo-F103RB]: - [`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) - [`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) - - Generic HAL implementation for all MCUs of the stm32f4 series + - Generic HAL implementation for all MCUs of the stm32f4 series - [`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) - - Generic HAL implementation for all MCUs of the stm32f7 series + - Generic HAL implementation for all MCUs of the stm32f7 series - [`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) - [`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) - - HAL implementation for the STMicro STM32H7xx family of microcontrollers + - HAL implementation for the STMicro STM32H7xx family of microcontrollers - [`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) - - HAL implementation for the the STMicro STM32L0xx family of microcontrollers + - HAL implementation for the the STMicro STM32L0xx family of microcontrollers - [`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) - [`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) - [`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) - - Generic hal support for stm32l4 devices, has examples that can run on boards like the [Nucleo-L432KC], [Solo], and similar boards + - Generic hal support for stm32l4 devices, has examples that can run on boards like the [Nucleo-L432KC], [Solo], and similar boards - [`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) - - HAL implementation for STM32 devices across multiple families, with a focus on newer ones like L4, L5, and H7. + - HAL implementation for STM32 devices across multiple families, with a focus on newer ones like L4, L5, and H7. [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 [Solo]: https://solokeys.com/ @@ -499,7 +494,7 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! ### MSP430 - [`msp430fr2x5x-hal`](https://crates.io/crates/msp430fr2x5x-hal) - - HAL implementation for the MSP430FR2x5x family of microcontrollers + - HAL implementation for the MSP430FR2x5x family of microcontrollers ### Espressif @@ -508,11 +503,10 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! - [`esp-hal`](https://github.com/esp-rs/esp-hal) - A `no_std` Hardware Abstraction Layers for ESP32 microcontrollers - ### Silicon Labs - [`tomu-hal`](https://github.com/fudanchii/imtomu-rs) - - 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. + - 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. [Tomu]: https://tomu.im/ [tomu bootloader]: https://github.com/im-tomu/tomu-bootloader @@ -537,6 +531,7 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! - [Blogpost](https://robamu.github.io/post/rust-ecosystem/) ### Renesas + - [`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) ### StarFive @@ -659,9 +654,7 @@ Crates tailored for specific boards. - [`pimoroni-pico-explorer`](https://github.com/rp-rs/rp-hal) - Board Support for the [Pimoroni Pico Explorer] - [`pimoroni-pico-lipo-16mb`](https://github.com/rp-rs/rp-hal) - Board Support for the [Pimoroni Pico Lipo 16MB] -[pimoroni-pico-explorer]: https://github.com/rp-rs/rp-hal/tree/main/boards/pimoroni-pico-explorer [Pimoroni Pico Explorer]: https://shop.pimoroni.com/products/pico-explorer-base -[pimoroni-pico-lipo-16mb]: https://github.com/rp-rs/rp-hal/tree/main/boards/pimoroni_pico_lipo_16mb [Pimoroni Pico Lipo 16MB]: https://shop.pimoroni.com/products/pimoroni-pico-lipo?variant=39335427080275 ### Raspberry Pi @@ -710,10 +703,10 @@ Crates tailored for specific boards. - [`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) - [`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) - [Nucleo-F401RE]: https://www.st.com/en/evaluation-tools/nucleo-f401re.html ### Teensy + - [`teensy4-rs`](https://github.com/mciantyre/teensy4-rs) Board Support crate for the [Teensy 4.0] ### Vorago @@ -756,7 +749,6 @@ devices that go beyond what is available in [`embedded-hal`]: - [`embedded-storage`](https://github.com/rust-embedded-community/embedded-storage): An Embedded Storage Abstraction Layer - [`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) - ## Driver crates 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. @@ -771,7 +763,7 @@ The list below contains drivers that have achieved the "released" status. To add to this list, please ensure that your driver has a short blog post, article, or sufficiently explanatory README showing an example of its use. Ideally, this post would demonstrate using the device in a small project so that a Rust and/or embedded newcomer can also understand it. -Otherwise, please add it to the [WIP section](#WIP) below. +Otherwise, please add it to the [WIP section](#wip) below. 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) 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) From 610751e96eca70dc6e9c1a387fbc6b6081a9256e Mon Sep 17 00:00:00 2001 From: Scott Gibb <44235263+ScottGibb@users.noreply.github.com> Date: Fri, 22 Nov 2024 10:33:46 +0000 Subject: [PATCH 142/178] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f08b6aeb..827355f6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Embedded Rust -[![Awesome](https://awesome.re/badge.svg)](https://awesome.re) [![Linting](https://github.com/rust-embedded/awesome-embedded-rust/actions/workflows/Static%20Analysis.yml/badge.svg?branch=master)](https://github.com/rust-embedded/awesome-embedded-rust/actions/workflows/Static%20Analysis.yml) +[![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) 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. From 3426e5434172a81449623d82c043ff74c0a05c32 Mon Sep 17 00:00:00 2001 From: Scott Gibb <44235263+ScottGibb@users.noreply.github.com> Date: Fri, 22 Nov 2024 12:46:34 +0000 Subject: [PATCH 143/178] Add Missing license --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 827355f6..3aef4ba7 100644 --- a/README.md +++ b/README.md @@ -1361,8 +1361,7 @@ These materials may be outdated and reflect earlier practices, but they might st This list is licensed under -- CC0 1.0 Universal License ([LICENSE-CC0](LICENSE-CC0) or - https://creativecommons.org/publicdomain/zero/1.0/legalcode) +- [CC0 1.0 Universal License](https://creativecommons.org/publicdomain/zero/1.0/legalcode) aka [LICENSE-CC0](LICENSE-CC0) ## Code of Conduct From f6f5e53b31a00bf1826f050cd18e1b1e8c3ae925 Mon Sep 17 00:00:00 2001 From: Berkus Decker Date: Fri, 22 Nov 2024 16:34:37 +0200 Subject: [PATCH 144/178] =?UTF-8?q?feat:=20=E2=9C=A8=20Add=20panic=20handl?= =?UTF-8?q?ing=20section?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3aef4ba7..25b6fdc7 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,7 @@ This project is developed and maintained by the [Resources team][team]. - [WIP](#wip) - [no-std crates](#no-std-crates) - [WIP](#wip-1) + - [Panic handling](#panic-handling) - [Firmware projects](#firmware-projects) - [Old books, blogs, and training materials](#old-books-blogs-and-training-materials) - [License](#license) @@ -1277,7 +1278,6 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 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) 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) -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) 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) 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) 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) @@ -1299,8 +1299,8 @@ Work in progress drivers. Help the authors make these crates awesome! 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) 1. [wtx](https://github.com/c410-f3r/wtx): Among other things, provides implementations to interact with HTTP, WebSockets and Databases. +[no-std-category]: https://crates.io/categories/no-std [`cmim`]: https://crates.io/crates/cmim -[`panic-persist`]: https://crates.io/crates/panic-persist [bitmatch]: https://crates.io/crates/bitmatch [biquad]: https://crates.io/crates/biquad [embassy]: https://github.com/akiles/embassy @@ -1326,7 +1326,36 @@ Work in progress crates. Help the authors make these crates awesome! - [OxCC](https://github.com/jonlamb-gh/oxcc): A port of Open Source Car Control written in Rust - [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) -[no-std-category]: https://crates.io/categories/no-std +## Panic handling + +There are many ways to handle panics in embedded devices, these crates provide helpful variants. + +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) +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) +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) +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) +1. [`panic-itm`]: Prints the panic through the chip's ITM to a debugger attached to the SWO pin (Cortex-M with ITM only) +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) +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) +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) +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) +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) +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) +1. [`panic-semihosting`]: Prints the panic message via semihosting to an attached debugger (Cortex-M only) + +[`dont_panic_slice`]: https://crates.io/crates/dont_panic_slice +[`dont_panic`]: https://crates.io/crates/dont_panic +[`no-panic`]: https://crates.io/crates/no-panic +[`panic-abort`]: https://crates.io/crates/panic-abort +[`panic-halt`]: https://crates.io/crates/panic-halt +[`panic-itm`]: https://github.com/rust-embedded/cortex-m/tree/master/panic-itm +[`panic-never`]: https://crates.io/crates/panic-never +[`panic-persist`]: https://crates.io/crates/panic-persist +[`panic-probe`]: https://crates.io/crates/panic-probe +[`panic-ramdump`]: https://crates.io/crates/panic-ramdump +[`panic-rtt`]: https://crates.io/crates/panic_rtt +[`panic-rtt-target`]: https://crates.io/crates/panic-rtt-target +[`panic-semihosting`]: https://github.com/rust-embedded/panic-semihosting ## Firmware projects From f5031ef01c5e39d5eeb478d8596b61a0d5c5aa57 Mon Sep 17 00:00:00 2001 From: trembel Date: Wed, 4 Dec 2024 09:04:19 +0100 Subject: [PATCH 145/178] [ADD] AEM10900 Driver This commit adds the AEM10900 energy harvester to the driver's list --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 25b6fdc7..e9ca6345 100644 --- a/README.md +++ b/README.md @@ -773,6 +773,7 @@ Otherwise, please add it to the [WIP section](#wip) below. 1. [ADXL313] - SPI - 3-axis accelerometer - [![crates.io](https://img.shields.io/crates/v/adxl313.svg)](https://crates.io/crates/adxl313) 1. [ADXL343] - I2C - 3-axis accelerometer - [![crates.io](https://img.shields.io/crates/v/adxl343.svg)](https://crates.io/crates/adxl343) 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) +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) 1. [AFE4404] - I2C - Pulse oximeter - [![crates.io](https://img.shields.io/crates/v/afe4404.svg)](https://crates.io/crates/afe4404) 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) 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) @@ -930,6 +931,7 @@ Otherwise, please add it to the [WIP section](#wip) below. [ADXL313]: https://crates.io/crates/adxl313 [ADXL343]: https://crates.io/crates/adxl343 [ADXL355]: https://crates.io/crates/adxl355 +[AEM10900]: https://crates.io/crates/aem10900 [AFE4404]: https://github.com/pulse-loop/afe4404 [AHT20]: https://crates.io/crates/aht20 [AHT20-driver]: https://crates.io/crates/aht20-driver From 67ac7c59e1e924414c45b68a269eac6a16e7a89d Mon Sep 17 00:00:00 2001 From: trembel Date: Wed, 4 Dec 2024 09:07:45 +0100 Subject: [PATCH 146/178] [ADD] FH101RF Driver This commit adds the FH101RF wake-up radio to the driver's list --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e9ca6345..c61ebc3b 100644 --- a/README.md +++ b/README.md @@ -792,6 +792,7 @@ Otherwise, please add it to the [WIP section](#wip) below. 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) 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) 1. [ENC28J60] - SPI - Ethernet controller - [Intro blog post][4] - [![crates.io](https://img.shields.io/crates/v/enc28j60.svg)](https://crates.io/crates/enc28j60) +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) 1. [FUSB302B] - I2C - Programmable USB Type‐C Controller with USB Power Delivery - [github][69] 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) 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) @@ -949,6 +950,7 @@ Otherwise, please add it to the [WIP section](#wip) below. [embedded-ccs811]: https://crates.io/crates/embedded-ccs811 [embedded-sdmmc]: https://crates.io/crates/embedded-sdmmc [ENC28J60]: https://crates.io/crates/enc28j60 +[FH101RF]: https://crates.io/crates/fh101rf [FUSB302B]: https://github.com/fmckeogh/usb-pd-rs [HTS221]: https://crates.io/crates/hts221 [IIS2MDC]: https://crates.io/crates/iis2mdc From 05b4710899ec95c3523a827142c90e8aaea3133c Mon Sep 17 00:00:00 2001 From: Berkus Decker Date: Wed, 18 Dec 2024 16:16:56 +0200 Subject: [PATCH 147/178] Add rp2040-panic-usb-boot crate --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index c61ebc3b..9c93c1fe 100644 --- a/README.md +++ b/README.md @@ -1346,6 +1346,7 @@ There are many ways to handle panics in embedded devices, these crates provide h 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) 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) 1. [`panic-semihosting`]: Prints the panic message via semihosting to an attached debugger (Cortex-M only) +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) [`dont_panic_slice`]: https://crates.io/crates/dont_panic_slice [`dont_panic`]: https://crates.io/crates/dont_panic @@ -1360,6 +1361,7 @@ There are many ways to handle panics in embedded devices, these crates provide h [`panic-rtt`]: https://crates.io/crates/panic_rtt [`panic-rtt-target`]: https://crates.io/crates/panic-rtt-target [`panic-semihosting`]: https://github.com/rust-embedded/panic-semihosting +[`rp2040-panic-usb-boot`]: https://crates.io/crates/rp2040-panic-usb-boot ## Firmware projects From 140ff2fc6d041e41cba63e6e2d4c62dcfd320671 Mon Sep 17 00:00:00 2001 From: Logiase Date: Fri, 27 Dec 2024 17:32:08 +0800 Subject: [PATCH 148/178] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9c93c1fe..cb7cd480 100644 --- a/README.md +++ b/README.md @@ -264,6 +264,7 @@ Peripheral Access Crates were also called Device Crates. - [`mkw41z`](https://crates.io/crates/mkw41z) - [![crates.io](https://img.shields.io/crates/v/mkw41z.svg)](https://crates.io/crates/mkw41z) - [`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) - [`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) +- [`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) ### Raspberry Pi Silicon From bd4151eaf9437069f7b01fdeb85c3fe1b8f88ad0 Mon Sep 17 00:00:00 2001 From: impl Ferris <167990244+ImplFerris@users.noreply.github.com> Date: Mon, 13 Jan 2025 04:44:32 -0600 Subject: [PATCH 149/178] impl Rust on ESP32 and Pico Pico Books (#473) --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index cb7cd480..daefb803 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,8 @@ These materials are available publicly, typically under permissive licenses. - [Embedded Rust programming playlist](https://www.youtube.com/playlist?list=PLP_X41VhYn5X6Wwjnm0bRwI3n2pdaszxU) Various livestreams with Embedded Rust live coding - [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. - [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)) +- [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)) +- [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)) [Ferrous Systems]: https://ferrous-systems.com From 8fd5a9d1c1002940d749f2c626e269376adc4898 Mon Sep 17 00:00:00 2001 From: Tim Small Date: Fri, 24 Jan 2025 09:49:18 +0000 Subject: [PATCH 150/178] Add RP2350 family HAL and PAC crates. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index daefb803..a76ea20e 100644 --- a/README.md +++ b/README.md @@ -271,6 +271,7 @@ Peripheral Access Crates were also called Device Crates. ### Raspberry Pi Silicon - [`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) +- [`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) ### SiFive @@ -453,6 +454,7 @@ Also check the list of [NXP board support crates][nxp-bsc]! ### Raspberry Pi Silicon - [`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) +- [`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) ### SiFive From b2332641a707f3ba3771f70eb3cafe6818afe321 Mon Sep 17 00:00:00 2001 From: Tim Small Date: Fri, 24 Jan 2025 10:16:27 +0000 Subject: [PATCH 151/178] Reflect source repo change for RP2040 board support crates. --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index a76ea20e..7cf76af4 100644 --- a/README.md +++ b/README.md @@ -599,11 +599,11 @@ Crates tailored for specific boards. - [`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) - [`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) - [`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) -- [`adafruit-feather-rp2040`](https://github.com/rp-rs/rp-hal) - 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) -- [`adafruit-itsy-bitsy-rp2040`](https://github.com/rp-rs/rp-hal) - 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) -- [`adafruit-kb2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit KB2040] [![crates.io](https://img.shields.io/crates/v/adafruit-kb2040.svg)](https://crates.io/crates/adafruit-kb2040) -- [`adafruit-macropad`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the [Adafruit Macropad] [![crates.io](https://img.shields.io/crates/v/adafruit-macropad.svg)](https://crates.io/crates/adafruit-macropad) -- [`adafruit-qt-py-rp2040`](https://github.com/rp-rs/rp-hal) - 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) +- [`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) +- [`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) +- [`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) +- [`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) +- [`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) [Metro M0 board]: https://www.adafruit.com/product/3505 [Metro M4 board]: https://www.adafruit.com/product/3382 @@ -657,20 +657,20 @@ Crates tailored for specific boards. ### Pimoroni -- [`pimoroni-pico-explorer`](https://github.com/rp-rs/rp-hal) - Board Support for the [Pimoroni Pico Explorer] -- [`pimoroni-pico-lipo-16mb`](https://github.com/rp-rs/rp-hal) - Board Support for the [Pimoroni Pico Lipo 16MB] +- [`pimoroni-pico-explorer`](https://github.com/rp-rs/rp-hal-boards) - Board Support for the [Pimoroni Pico Explorer] +- [`pimoroni-pico-lipo-16mb`](https://github.com/rp-rs/rp-hal-boards) - Board Support for the [Pimoroni Pico Lipo 16MB] [Pimoroni Pico Explorer]: https://shop.pimoroni.com/products/pico-explorer-base [Pimoroni Pico Lipo 16MB]: https://shop.pimoroni.com/products/pimoroni-pico-lipo?variant=39335427080275 ### Raspberry Pi -- [`rp-pico`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the RP2040-based Raspberry Pi Pico. +- [`rp-pico`](https://github.com/rp-rs/rp-hal-boards) - Board Support Crate for the RP2040-based Raspberry Pi Pico. ### Sparkfun - [`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) -- [`sparkfun-pro-micro-rp2040`](https://github.com/rp-rs/rp-hal) - Board Support Crate for the RP2040 based Sparkfun Pro Micro. +- [`sparkfun-pro-micro-rp2040`](https://github.com/rp-rs/rp-hal-boards) - Board Support Crate for the RP2040 based Sparkfun Pro Micro. ### SeeedStudio From 6a96a5043296def2ece60a1296bb25f984d9aa3a Mon Sep 17 00:00:00 2001 From: Tim Small Date: Fri, 24 Jan 2025 10:17:36 +0000 Subject: [PATCH 152/178] Add link to RP2040 board support crates full list. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 7cf76af4..a9f89076 100644 --- a/README.md +++ b/README.md @@ -667,6 +667,8 @@ Crates tailored for specific boards. - [`rp-pico`](https://github.com/rp-rs/rp-hal-boards) - Board Support Crate for the RP2040-based Raspberry Pi Pico. +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). + ### Sparkfun - [`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) From dc3190c7ab5fb10d4eb5e9df9f40d5f3b1c8c211 Mon Sep 17 00:00:00 2001 From: Tim Small Date: Fri, 24 Jan 2025 10:29:37 +0000 Subject: [PATCH 153/178] Add note re unlisted Pimoronoi rp2040 boards. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a9f89076..5f86c896 100644 --- a/README.md +++ b/README.md @@ -663,6 +663,8 @@ Crates tailored for specific boards. [Pimoroni Pico Explorer]: https://shop.pimoroni.com/products/pico-explorer-base [Pimoroni Pico Lipo 16MB]: https://shop.pimoroni.com/products/pimoroni-pico-lipo?variant=39335427080275 +For unlisted Pimoroni microcontroller boards, check [this up-to-date list](https://github.com/rp-rs/rp-hal-boards/blob/main/README.md#packages). + ### Raspberry Pi - [`rp-pico`](https://github.com/rp-rs/rp-hal-boards) - Board Support Crate for the RP2040-based Raspberry Pi Pico. From 5be01adfda8f85d2c93c990211962ebbf2bfbcbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacob=20K=C3=B6nig-Otto?= Date: Sat, 1 Feb 2025 23:44:44 +0100 Subject: [PATCH 154/178] Update README.md Added lcd_parallel_bus https://crates.io/crates/lcd_parallel_bus --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 5f86c896..65a9a863 100644 --- a/README.md +++ b/README.md @@ -810,6 +810,7 @@ Otherwise, please add it to the [WIP section](#wip) below. 1. [keypad] - GPIO - Keypad matrix circuits - [Intro post][14] - [![crates.io](https://img.shields.io/crates/v/keypad.svg)](https://crates.io/crates/keypad) 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) 1. [L3GD20] - SPI - Gyroscope - [Intro blog post][1&2] - [![crates.io](https://img.shields.io/crates/v/l3gd20.svg)](https://crates.io/crates/l3gd20) +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) 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) 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) 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) @@ -967,6 +968,7 @@ Otherwise, please add it to the [WIP section](#wip) below. [keypad]: https://crates.io/crates/keypad [KXCJ9]: https://crates.io/crates/kxcj9 [L3GD20]: https://crates.io/crates/l3gd20 +[lcd_parallel_bus]: https://crates.io/crates/lcd_parallel_bus [LSM303DLHC]: https://crates.io/crates/lsm303dlhc [MAX6675]: https://crates.io/crates/max6675-hal [MAX6955]: https://crates.io/crates/max6955 From 459d47f6a6d08bc58eb16b09185ff7a21f8c7277 Mon Sep 17 00:00:00 2001 From: Alex Eden Date: Fri, 7 Feb 2025 12:28:50 -0600 Subject: [PATCH 155/178] Add adafruit-seesaw --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 65a9a863..6e2f903a 100644 --- a/README.md +++ b/README.md @@ -777,6 +777,7 @@ Otherwise, please add it to the [WIP section](#wip) below. 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) 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) +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) 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) 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) 1. [ADXL313] - SPI - 3-axis accelerometer - [![crates.io](https://img.shields.io/crates/v/adxl313.svg)](https://crates.io/crates/adxl313) @@ -934,9 +935,11 @@ Otherwise, please add it to the [WIP section](#wip) below. [72]: https://github.com/FloppyDisck/SHT31-rs [73]: https://barretts.club/posts/max6675-hal/ [74]: https://github.com/rust-dd/embedded-dht-rs +[75]: https://learn.adafruit.com/adafruit-seesaw-atsamd09-breakout/overview [AD983x]: https://crates.io/crates/ad983x [adafruit-alphanum4]: https://crates.io/crates/adafruit-alphanum4 +[adafruit-seesaw]: https://crates.io/crates/adafruit-seesaw [ADE791x]: https://crates.io/crates/ade791x [ADS1x1x]: https://crates.io/crates/ads1x1x [ADXL313]: https://crates.io/crates/adxl313 From 3513e1161950ab3947a286d1ee13041ff98645cb Mon Sep 17 00:00:00 2001 From: Leonid Vygovskiy Date: Sun, 9 Feb 2025 11:50:10 +0300 Subject: [PATCH 156/178] Add driver is31fl3728-rs --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 65a9a863..781c8947 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,8 @@ This project is developed and maintained by the [Resources team][team]. - [Community](#community) - [Community Chat Rooms](#community-chat-rooms) - [Books, blogs, and training materials](#books-blogs-and-training-materials) + - [Free and public materials](#free-and-public-materials) + - [Paid and commercially available materials](#paid-and-commercially-available-materials) - [Tools](#tools) - [Real-time](#real-time) - [Real-time Operating System (RTOS)](#real-time-operating-system-rtos) @@ -805,6 +807,7 @@ Otherwise, please add it to the [WIP section](#wip) below. 1. [FUSB302B] - I2C - Programmable USB Type‐C Controller with USB Power Delivery - [github][69] 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) 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) +1. [is31fl3728-rs] - I2C - a platform-agnostic driver for the IS31FL3728 LED Matrix - [gihub](https://github.com/leonidv/is31fl3728-rs) -![Crates.io Version](https://img.shields.io/crates/v/is31fl3728-rs) 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) 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) 1. [keypad] - GPIO - Keypad matrix circuits - [Intro post][14] - [![crates.io](https://img.shields.io/crates/v/keypad.svg)](https://crates.io/crates/keypad) From 5c407e12dade66182e56f51ce8aab24c58379e5d Mon Sep 17 00:00:00 2001 From: Leonid Vygovskiy Date: Sun, 9 Feb 2025 11:53:42 +0300 Subject: [PATCH 157/178] Add driver is31fl3728-rs --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 781c8947..0f4a2176 100644 --- a/README.md +++ b/README.md @@ -807,7 +807,7 @@ Otherwise, please add it to the [WIP section](#wip) below. 1. [FUSB302B] - I2C - Programmable USB Type‐C Controller with USB Power Delivery - [github][69] 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) 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) -1. [is31fl3728-rs] - I2C - a platform-agnostic driver for the IS31FL3728 LED Matrix - [gihub](https://github.com/leonidv/is31fl3728-rs) -![Crates.io Version](https://img.shields.io/crates/v/is31fl3728-rs) +1. [IS31FL3728-rs] - I2C - a platform-agnostic driver for the IS31FL3728 LED Matrix - [gihub](https://github.com/leonidv/is31fl3728-rs) -![Crates.io Version](https://img.shields.io/crates/v/is31fl3728-rs) 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) 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) 1. [keypad] - GPIO - Keypad matrix circuits - [Intro post][14] - [![crates.io](https://img.shields.io/crates/v/keypad.svg)](https://crates.io/crates/keypad) From 43130b2648c50f3df88fb36f90bcd2d2fb242952 Mon Sep 17 00:00:00 2001 From: Leonid Vygovskiy Date: Sun, 9 Feb 2025 12:00:16 +0300 Subject: [PATCH 158/178] Fix typos --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0f4a2176..a8d8d8ad 100644 --- a/README.md +++ b/README.md @@ -807,7 +807,7 @@ Otherwise, please add it to the [WIP section](#wip) below. 1. [FUSB302B] - I2C - Programmable USB Type‐C Controller with USB Power Delivery - [github][69] 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) 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) -1. [IS31FL3728-rs] - I2C - a platform-agnostic driver for the IS31FL3728 LED Matrix - [gihub](https://github.com/leonidv/is31fl3728-rs) -![Crates.io Version](https://img.shields.io/crates/v/is31fl3728-rs) +1. [IS31FL3728] - I2C - LED dot matrix display mode (8×8, 5x11, 6x10,7x9) - [gihub](https://github.com/leonidv/is31fl3728-rs) -[![crates.io](https://img.shields.io/crates/v/is31fl3728-rs)](https://crates.io/crates/is31fl3728-rs) 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) 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) 1. [keypad] - GPIO - Keypad matrix circuits - [Intro post][14] - [![crates.io](https://img.shields.io/crates/v/keypad.svg)](https://crates.io/crates/keypad) @@ -966,6 +966,7 @@ Otherwise, please add it to the [WIP section](#wip) below. [FH101RF]: https://crates.io/crates/fh101rf [FUSB302B]: https://github.com/fmckeogh/usb-pd-rs [HTS221]: https://crates.io/crates/hts221 +[IS31FL3728]: https://crates.io/crates/is31fl3728-rs [IIS2MDC]: https://crates.io/crates/iis2mdc [ISM330DHCX]: https://crates.io/crates/ism330dhcx [keypad]: https://crates.io/crates/keypad From 80b673d9d674baf304500651a7dc6d980236c14f Mon Sep 17 00:00:00 2001 From: Leonid Vygovskiy Date: Sun, 9 Feb 2025 12:02:53 +0300 Subject: [PATCH 159/178] Fix typos --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a8d8d8ad..41180562 100644 --- a/README.md +++ b/README.md @@ -807,7 +807,7 @@ Otherwise, please add it to the [WIP section](#wip) below. 1. [FUSB302B] - I2C - Programmable USB Type‐C Controller with USB Power Delivery - [github][69] 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) 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) -1. [IS31FL3728] - I2C - LED dot matrix display mode (8×8, 5x11, 6x10,7x9) - [gihub](https://github.com/leonidv/is31fl3728-rs) -[![crates.io](https://img.shields.io/crates/v/is31fl3728-rs)](https://crates.io/crates/is31fl3728-rs) +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) 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) 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) 1. [keypad] - GPIO - Keypad matrix circuits - [Intro post][14] - [![crates.io](https://img.shields.io/crates/v/keypad.svg)](https://crates.io/crates/keypad) From 3506539288c533a9b2f90d0f628e2f8279ffb33a Mon Sep 17 00:00:00 2001 From: 9names <60134748+9names@users.noreply.github.com> Date: Sun, 23 Feb 2025 17:01:56 +1100 Subject: [PATCH 160/178] Update link for msp430g2553 PAC. Closes #260 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f29540ba..3eea6160 100644 --- a/README.md +++ b/README.md @@ -329,7 +329,7 @@ The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral ac ### MSP430 -- [`msp430g2553`](https://github.com/japaric/msp430g2553) Peripheral access API for MSP430G2553 microcontrollers (generated using svd2rust) +- [`msp430g2553`](https://github.com/pftbest/msp430g2553) Peripheral access API for MSP430G2553 microcontrollers (generated using svd2rust) - [msp430 quickstart](https://github.com/rust-embedded/msp430-quickstart) some examples for msp430 - [`msp430fr2355`](https://crates.io/crates/msp430fr2355) Peripheral access API for MSP430FR2355 microcontrollers (generated using svd2rust) - [`msp430fr6972`](https://crates.io/crates/msp430fr6972) - [![crates.io](https://img.shields.io/crates/v/msp430fr6972)](https://crates.io/crates/msp430fr6972) From 367e9abdf8619ae486f92be1f3df189c9a918069 Mon Sep 17 00:00:00 2001 From: 9names <60134748+9names@users.noreply.github.com> Date: Sun, 23 Feb 2025 17:07:06 +1100 Subject: [PATCH 161/178] Update link and add archive notice for esp8266 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3eea6160..712e060b 100644 --- a/README.md +++ b/README.md @@ -343,7 +343,7 @@ The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral ac - [`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) - [`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) - [`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) -- [`esp8266`](https://github.com/esp-rs/esp-pacs/tree/main/esp8266) - [![crates.io](https://img.shields.io/crates/v/esp8266.svg)](https://crates.io/crates/esp8266) +- [`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_ ### Ambiq Micro From fd92fae7eab94be53e1735607c19d2bc50166348 Mon Sep 17 00:00:00 2001 From: 9names <60134748+9names@users.noreply.github.com> Date: Sun, 23 Feb 2025 17:10:34 +1100 Subject: [PATCH 162/178] Replace Sodaq One product page link with support page link The store page on the website no longer exists, but a support page does - updated the link to point to something that might help someone understand what this product is. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 712e060b..94cb05e9 100644 --- a/README.md +++ b/README.md @@ -738,7 +738,7 @@ The same repository includes support for numerous other development boards which ### Sodaq -- [`sodaq_one`](https://crates.io/crates/sodaq_one) - Board support for the [Sodaq one board](https://shop.sodaq.com/sodaq-one-eu-rn2483-v3.html) 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) +- [`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) - [`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) ### Other From a41a49a3cba1fdb2db7d69e0ceaf92fc42d6715f Mon Sep 17 00:00:00 2001 From: 9names <60134748+9names@users.noreply.github.com> Date: Sun, 23 Feb 2025 17:29:36 +1100 Subject: [PATCH 163/178] Use archive.org links for dead blog posts --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 94cb05e9..1b806c21 100644 --- a/README.md +++ b/README.md @@ -897,9 +897,9 @@ Otherwise, please add it to the [WIP section](#wip) below. [31]: https://blog.eldruin.com/si4703-fm-radio-receiver-driver-in-rust/ [32]: https://blog.eldruin.com/pca9685-pwm-led-servo-controller-driver-in-rust/ [33]: https://blog.eldruin.com/veml6030-ambient-light-sensor-driver-in-rust/ -[34]: https://ryan.kurte.nz/notes/2020-01-05-rust-radio -[35]: https://ryan.kurte.nz/notes/2020-01-05-rust-radio -[36]: https://ryan.kurte.nz/notes/2020-01-05-rust-radio +[34]: http://web.archive.org/web/20230328083333/https://ryan.kurte.nz/notes/2020-01-05-rust-radio +[35]: http://web.archive.org/web/20230328083333/https://ryan.kurte.nz/notes/2020-01-05-rust-radio +[36]: http://web.archive.org/web/20230328083333/https://ryan.kurte.nz/notes/2020-01-05-rust-radio [37]: https://github.com/mvirkkunen/usbd-serial [38]: https://github.com/twitchyliquid64/usbd-hid [39]: https://github.com/redpfire/usbd-webusb @@ -915,7 +915,7 @@ Otherwise, please add it to the [WIP section](#wip) below. [49]: https://blog.eldruin.com/ccs811-indoor-air-quality-sensor-driver-in-rust/ [50]: https://nitschinger.at/Rusty-PID-Porting-the-TSic-sensor-from-C-to-Rust/ [51]: https://blog.a1w.ca/p/rust-embedded-driver-microchip-23x-sram -[52]: https://flott-motion.org/news/announcing-step-dir/ +[52]: http://web.archive.org/web/20210129151911/https://flott-motion.org/news/announcing-step-dir/ [53]: https://github.com/barafael/hc12-at-rs [54]: https://github.com/barafael/cd74hc4067-rs [55]: https://barafael.github.io/A-Platform-Agnostic-Driver-for-the-CD74HC4067 From f5207a1e8b933ed262fba9af5d9ddbaf1158a9cd Mon Sep 17 00:00:00 2001 From: 9names <60134748+9names@users.noreply.github.com> Date: Sun, 23 Feb 2025 17:33:39 +1100 Subject: [PATCH 164/178] Fix broken blue-pill & Nucleo links --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1b806c21..dfae5135 100644 --- a/README.md +++ b/README.md @@ -470,11 +470,8 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! - [`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) - Has examples that can run on boards like the [Nucleo-F042K6] and similar boards -[Nucleo-F042K6]: - [`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) - - Can be run on boards like the [Blue pill], [Nucleo-F103RB], and similar boards -[Blue pill]: -[Nucleo-F103RB]: + - Can be run on boards like the [Blue-pill], [Nucleo-F103RB], and similar boards - [`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) - [`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) - Generic HAL implementation for all MCUs of the stm32f4 series @@ -494,6 +491,9 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! [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 [Solo]: https://solokeys.com/ +[Blue-pill]: http://web.archive.org/web/20230317010201/https://stm32duinoforum.com/forum/wiki_subdomain/index_title_Blue_Pill.html +[Nucleo-F103RB]: http://www.st.com/en/evaluation-tools/nucleo-f103rb.html +[Nucleo-F042K6]: http://www.st.com/en/evaluation-tools/nucleo-f042k6.html ### Texas Instruments From 6b1c10a29b0fe677b8ac181f9be74b4d17a8388d Mon Sep 17 00:00:00 2001 From: James Munns Date: Sun, 23 Feb 2025 14:52:44 +0100 Subject: [PATCH 165/178] Apply suggestions from code review Fix linter complaint --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dfae5135..c376297b 100644 --- a/README.md +++ b/README.md @@ -343,7 +343,7 @@ The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral ac - [`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) - [`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) - [`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) -- [`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_ +- [`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* ### Ambiq Micro From 1a497269403ccc50bec06c5a251f980fa41f1115 Mon Sep 17 00:00:00 2001 From: David Brown Date: Thu, 27 Feb 2025 08:12:29 -0700 Subject: [PATCH 166/178] Add information about Rust on Zephyr As of Zephyr 4.1, The Zephyr RTOS includes Rust support directly. The Zephyr project: https://zephyrproject.org/ Rust support repo: https://github.com/zephyrproject-rtos/zephyr-lang-rust/ --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c376297b..ce644eaf 100644 --- a/README.md +++ b/README.md @@ -214,6 +214,7 @@ specifically endorsed or reviewed for accuracy or quality by the Embedded Workin - [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. - [Tock](https://www.tockos.org) An embedded operating system designed for running multiple concurrent, mutually distrustful applications on low-memory and low-power microcontrollers - [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. +- [Zephyr](https://docs.zephyrproject.org/latest/develop/languages/rust/index.html) An embedded RTOS, written in C, with support for writing applications in Rust. ### Real-time tools From 92bfee1854481f1f908a107cc643a6ac62836368 Mon Sep 17 00:00:00 2001 From: chrysn Date: Thu, 3 Apr 2025 11:28:47 +0200 Subject: [PATCH 167/178] Add ArielOS --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ce644eaf..b25c086c 100644 --- a/README.md +++ b/README.md @@ -215,6 +215,7 @@ specifically endorsed or reviewed for accuracy or quality by the Embedded Workin - [Tock](https://www.tockos.org) An embedded operating system designed for running multiple concurrent, mutually distrustful applications on low-memory and low-power microcontrollers - [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. - [Zephyr](https://docs.zephyrproject.org/latest/develop/languages/rust/index.html) An embedded RTOS, written in C, with support for writing applications in Rust. +- [Ariel OS](https://ariel-os.org/) A modular operating system written in Rust, providing multicore preemptive scheduling and application portability on top of Embassy. ### Real-time tools From c5143e76efc593deb247916fea69cdc301edea7e Mon Sep 17 00:00:00 2001 From: Christian Krenslehner Date: Thu, 10 Apr 2025 08:42:23 +0200 Subject: [PATCH 168/178] Add bitfield crates --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index b25c086c..f3cb115c 100644 --- a/README.md +++ b/README.md @@ -1249,11 +1249,14 @@ Work in progress drivers. Help the authors make these crates awesome! [`#![no_std]` crates][no-std-category] designed to run on resource-constrained devices. 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) +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` 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) 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) 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) 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) 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) +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) +1. [bitfield-struct](https://crates.io/crates/bitfield-struct): Procedural macro for bitfields that allows specifying bitfields as structs 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) 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) 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) From 3a98fe1cb4957e770d5a1096767f6435ba0b9cb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Czapli=C5=84ski?= Date: Sun, 20 Apr 2025 13:16:42 +0200 Subject: [PATCH 169/178] Add rumbac --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f3cb115c..e7ec9aed 100644 --- a/README.md +++ b/README.md @@ -201,6 +201,7 @@ specifically endorsed or reviewed for accuracy or quality by the Embedded Workin - [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 - [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. - [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) +- [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 [embedded-hal-mock]: https://crates.io/crates/embedded-hal-mock From e0ec776a3c3b02cceb7745b1cb703ba1275c7367 Mon Sep 17 00:00:00 2001 From: Diego Barrios Romero Date: Wed, 23 Apr 2025 09:05:03 +0200 Subject: [PATCH 170/178] Fix formatting --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e7ec9aed..3ee67f69 100644 --- a/README.md +++ b/README.md @@ -201,7 +201,7 @@ specifically endorsed or reviewed for accuracy or quality by the Embedded Workin - [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 - [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. - [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) -- [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 +- [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 [embedded-hal-mock]: https://crates.io/crates/embedded-hal-mock From 2039fd7df8656f6f947f18c459f47cfe922599a6 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Sun, 4 May 2025 20:14:48 +0200 Subject: [PATCH 171/178] Add derive-mmio --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3ee67f69..746ac6da 100644 --- a/README.md +++ b/README.md @@ -195,6 +195,7 @@ specifically endorsed or reviewed for accuracy or quality by the Embedded Workin - [probe-rs](https://github.com/probe-rs/probe-rs): a modern, embedded debugging toolkit, written in Rust - [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: - [defmt](https://github.com/knurling-rs/defmt): a highly efficient logging framework that targets resource-constrained devices, like microcontrollers. + - [derive-mmio](https://github.com/knurling-rs/derive-mmio): Creating MMIO-friendly APIs for embedded peripherals. - [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 - [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. - [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 From d9e9ab2ed82d8feef100dce4d17348a136878e99 Mon Sep 17 00:00:00 2001 From: i509VCB Date: Fri, 2 May 2025 21:12:29 -0500 Subject: [PATCH 172/178] Add mspm0-rs projects --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 746ac6da..c24d01b8 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,7 @@ In 2018, the Rust community created an embedded working group to help drive adop - [#stm32-rs:matrix.org] - For discussion of using Embedded Rust on STM32 based devices - [#atsamd-rs:gitter.im] - For discussions of using Embedded Rust on ATSAMD devices - [#ethercrab:matrix.org] - For discussion of general EtherCAT and the Rust implementation, EtherCrab +- [#mspm0-rs:matrix.org] - For discussion of using Embedded Rust on Texas Instruments MSPM0 (and MSPS003) devices. - [rust-embedded:QQ group] - Chinese community for Rust embedded [#rust-embedded-graphics:matrix.org]: https://matrix.to/#/#rust-embedded-graphics:matrix.org @@ -132,6 +133,7 @@ In 2018, the Rust community created an embedded working group to help drive adop [#rp-rs:matrix.org]: https://matrix.to/#/#rp-rs:matrix.org [#atsamd-rs:gitter.im]: https://matrix.to/#/#atsamd-rs_community:gitter.im [#ethercrab:matrix.org]: https://matrix.to/#/#ethercrab:matrix.org +[#mspm0-rs:matrix.org]: https://matrix.to/#/#mspm0-rs:matrix.org [Rust-embedded:QQ group]: https://qm.qq.com/q/A8Hl57xR1C ## Books, blogs, and training materials @@ -330,6 +332,8 @@ The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral ac - [`tm4c123x`](https://crates.io/crates/tm4c123x) Peripheral access API for TM4C123x microcontrollers (generated using svd2rust) - [`tm4c129x`](https://crates.io/crates/tm4c129x) Peripheral access API for TM4C129x microcontrollers (generated using svd2rust) +- [`mspm0-metapac`](https://github.com/mspm0-rs/mspm0-data) + - PAC for all MSPM0 (and MSPS003) microcontrollers. (generated using chiptool) ### MSP430 @@ -502,6 +506,8 @@ Also check the list of [STMicroelectronics board support crates][stm-bsc]! ### Texas Instruments - [`tm4c123x-hal`](https://github.com/rust-embedded-community/tm4c-hal/) +- [`embassy-mspm0`](https://github.com/embassy-rs/embassy/tree/main/embassy-mspm0) + - Embassy HAL implementation for all MSPM0 (and MSPS003) microcontrollers. ### MSP430 From f17d656208623740f5167e2bab3b0e6edbd39409 Mon Sep 17 00:00:00 2001 From: Kyle Lawson Date: Wed, 30 Apr 2025 21:58:03 +0100 Subject: [PATCH 173/178] Adding Commitment Issues Link --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c24d01b8..8a067c29 100644 --- a/README.md +++ b/README.md @@ -205,6 +205,7 @@ specifically endorsed or reviewed for accuracy or quality by the Embedded Workin - [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. - [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) - [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 +- [commitment-issues](https://github.com/dysonltd/commitment-issues) Compile git metadata into your binary. [embedded-hal-mock]: https://crates.io/crates/embedded-hal-mock From fc4519a70e4e43f51265edbbc1e3a95e5d959129 Mon Sep 17 00:00:00 2001 From: Kyle Lawson Date: Wed, 30 Apr 2025 22:04:34 +0100 Subject: [PATCH 174/178] Adding Dyson Drivers and tools --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8a067c29..405fb140 100644 --- a/README.md +++ b/README.md @@ -1148,6 +1148,8 @@ Work in progress drivers. Help the authors make these crates awesome! 1. [ublox-cellular-rs] - Serial - Cellular driver for the full Ublox cellular serial based family 1. [atwinc1500-rs] - SPI - A host driver for the Atwinc1500 network controller 1. [HX711] - GPIO - An interrupt-based driver for the HX711 Load Cell Amplifier IC. no-std. +1. [tmag5273] - Cross-platform no_std compatible i2c library for 3-axis Hall Effect sensor. +1. [paa5100je-pwm3901] - Cross platform no-std compatible spi async library for an Optical Flow Sensor. [AD9850]: https://crates.io/crates/ad9850 [AFE4400]: https://github.com/ReeceStevens/afe4400 @@ -1252,7 +1254,8 @@ Work in progress drivers. Help the authors make these crates awesome! [ublox-cellular-rs]: https://github.com/BlackbirdHQ/ublox-cellular-rs [atwinc1500-rs]: https://crates.io/crates/atwinc1500 [HX711]: https://github.com/DaneSlattery/hx711 - +[tmag5273]: https://github.com/dysonltd/tmag5273 +[paa5100je-pwm3901]: https://github.com/dysonltd/paa5100je-pwm3901 ## no-std crates [`#![no_std]` crates][no-std-category] designed to run on resource-constrained devices. From 9fe2f268ed7679520f1c5d9e3054c557b30e1941 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mitja=20Je=C5=BE?= Date: Fri, 16 May 2025 21:32:43 +0200 Subject: [PATCH 175/178] Update README.md Added link to STM32H5 crate --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 405fb140..be020591 100644 --- a/README.md +++ b/README.md @@ -324,6 +324,7 @@ The [`stm32-rs`](https://github.com/stm32-rs/stm32-rs) project has peripheral ac - [`stm32f7`](https://crates.io/crates/stm32f7) - [![crates.io](https://img.shields.io/crates/v/stm32f7.svg)](https://crates.io/crates/stm32f7) - [`stm32g0`](https://crates.io/crates/stm32g0) - [![crates.io](https://img.shields.io/crates/v/stm32g0.svg)](https://crates.io/crates/stm32g0) - [`stm32g4`](https://crates.io/crates/stm32g4) - [![crates.io](https://img.shields.io/crates/v/stm32g4.svg)](https://crates.io/crates/stm32g4) +- [`stm32h7`](https://crates.io/crates/stm32h5) - [![crates.io](https://img.shields.io/crates/v/stm32h5.svg)](https://crates.io/crates/stm32h5) - [`stm32h7`](https://crates.io/crates/stm32h7) - [![crates.io](https://img.shields.io/crates/v/stm32h7.svg)](https://crates.io/crates/stm32h7) - [`stm32l0`](https://crates.io/crates/stm32l0) - [![crates.io](https://img.shields.io/crates/v/stm32l0.svg)](https://crates.io/crates/stm32l0) - [`stm32l1`](https://crates.io/crates/stm32l1) - [![crates.io](https://img.shields.io/crates/v/stm32l1.svg)](https://crates.io/crates/stm32l1) From 06fd39bea33633088167e2ae58c9d64c85e6f54d Mon Sep 17 00:00:00 2001 From: Diego Barrios Romero Date: Sat, 17 May 2025 21:21:43 +0200 Subject: [PATCH 176/178] Fix syntax --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index be020591..79f12235 100644 --- a/README.md +++ b/README.md @@ -1257,6 +1257,7 @@ Work in progress drivers. Help the authors make these crates awesome! [HX711]: https://github.com/DaneSlattery/hx711 [tmag5273]: https://github.com/dysonltd/tmag5273 [paa5100je-pwm3901]: https://github.com/dysonltd/paa5100je-pwm3901 + ## no-std crates [`#![no_std]` crates][no-std-category] designed to run on resource-constrained devices. From 2840f482d75e103af86219a26b5c339b10bd5de6 Mon Sep 17 00:00:00 2001 From: Ralph Ursprung Date: Wed, 2 Jul 2025 18:28:04 +0200 Subject: [PATCH 177/178] add links to runtime crates some of them i knew before, others i found via crates.io. i am not familiar with the quality or reliability of these crates (though at least the ones owned by the WG should be good). adding these based on a [discussion on matrix]. [discussion on matrix]: https://matrix.to/#/!BHcierreUuwCMxVqOf:matrix.org/$QcEsUU8_lHnzzmzI_AvKI4r9VyivyZVp7LhEUBsL0mw?via=matrix.org&via=catircservices.org&via=mozilla.org --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index 79f12235..9051284e 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ This project is developed and maintained by the [Resources team][team]. - [Real-time](#real-time) - [Real-time Operating System (RTOS)](#real-time-operating-system-rtos) - [Real-time tools](#real-time-tools) + - [Runtime Crates](#runtime-crates) - [Peripheral Access Crates](#peripheral-access-crates) - [Microchip](#microchip) - [Nordic](#nordic) @@ -228,6 +229,19 @@ specifically endorsed or reviewed for accuracy or quality by the Embedded Workin - [cortex-m rtic](https://github.com/rtic-rs/cortex-m-rtic) RTIC framework for ARM Cortex-M microcontrollers - [msp430 rtfm](https://github.com/japaric/msp430-rtfm) RTFM framework for MSP430 MCUs +## Runtime Crates + +Basic runtimes for CPUs & MCUs which are needed to run software on them. + +- [`cortex-m-rt`](https://crates.io/crates/cortex-m-rt) Support for Cortex-M +- [`cortex-a-rt`](https://crates.io/crates/cortex-a-rt) Support for Cortex-A +- [`cortex-r-rt`](https://crates.io/crates/cortex-r-rt) Support for Cortex-R +- [`riscv-rt`](https://crates.io/crates/riscv-rt) Support for RISC-V +- [`esp-riscv-rt`](https://crates.io/crates/esp-riscv-rt) Support for RISC-V devices from Espressif (ESP32) +- [`xtensa-lx-rt`](https://crates.io/crates/xtensa-lx-rt) Support for Xtensa LX (ESP32) +- [`mips-rt`](https://crates.io/crates/mips-rt) Support for MIPS +- [`msp430-rt`](https://crates.io/crates/msp430-rt) Support for MSP430 + ## Peripheral Access Crates Register definition for microcontroller families. Usually generated using [`svd2rust`]. - [![crates.io](https://img.shields.io/crates/v/svd2rust.svg)](https://crates.io/crates/svd2rust) From e89af439140c4f3586eb1935a20189f6cc631c12 Mon Sep 17 00:00:00 2001 From: James Munns Date: Wed, 17 Sep 2025 13:42:26 +0530 Subject: [PATCH 178/178] Add Embassy matrix room to list Embassy had been listed under crates, but never added to the list of active chats. I also made the chats consistent wrt periods at the end of the sentence --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9051284e..a2bc8a7a 100644 --- a/README.md +++ b/README.md @@ -102,10 +102,10 @@ In 2018, the Rust community created an embedded working group to help drive adop ### Community Chat Rooms -- You can usually find community members (including embedded WG members) in the official [`#rust-embedded:matrix.org` Matrix room]. +- You can usually find community members (including embedded WG members) in the official [`#rust-embedded:matrix.org` Matrix room] - [#rust-embedded-space:matrix.org] Most Embedded Rust related Matrix rooms are in the Rust Embedded Space - [embedded.rs-wasm-iot] - English Telegram chat about Rust and WASM for microcontrollers and IoT -- [embedded.rs] - Telegram chat about Rust for microcontrollers in the Russian language. +- [embedded.rs] - Telegram chat about Rust for microcontrollers in the Russian language - [#avr-rust:gitter.im] - For discussion of using Embedded Rust on AVR devices - [#esp-rs:matrix.org] - For discussion of using Embedded Rust on Espressif devices - [#nrf-rs:matrix.org] - For discussion of using Embedded Rust on Nordic Semiconductor devices @@ -116,8 +116,9 @@ In 2018, the Rust community created an embedded working group to help drive adop - [#stm32-rs:matrix.org] - For discussion of using Embedded Rust on STM32 based devices - [#atsamd-rs:gitter.im] - For discussions of using Embedded Rust on ATSAMD devices - [#ethercrab:matrix.org] - For discussion of general EtherCAT and the Rust implementation, EtherCrab -- [#mspm0-rs:matrix.org] - For discussion of using Embedded Rust on Texas Instruments MSPM0 (and MSPS003) devices. +- [#mspm0-rs:matrix.org] - For discussion of using Embedded Rust on Texas Instruments MSPM0 (and MSPS003) devices - [rust-embedded:QQ group] - Chinese community for Rust embedded +- [#embassy-rs:matrix.org] - For discussion of using async on Embedded Rust using the Embassy ecosystem of crates [#rust-embedded-graphics:matrix.org]: https://matrix.to/#/#rust-embedded-graphics:matrix.org [#esp-rs:matrix.org]: https://matrix.to/#/#esp-rs:matrix.org @@ -136,6 +137,7 @@ In 2018, the Rust community created an embedded working group to help drive adop [#ethercrab:matrix.org]: https://matrix.to/#/#ethercrab:matrix.org [#mspm0-rs:matrix.org]: https://matrix.to/#/#mspm0-rs:matrix.org [Rust-embedded:QQ group]: https://qm.qq.com/q/A8Hl57xR1C +[#embassy-rs:matrix.org]: https://matrix.to/#/#embassy-rs:matrix.org ## Books, blogs, and training materials