mirror of
https://github.com/rust-embedded/awesome-embedded-rust.git
synced 2024-12-11 18:46:40 +00:00
initial commit
This commit is contained in:
commit
a6b61a8bec
2 changed files with 344 additions and 0 deletions
121
LICENSE-CC0
Normal file
121
LICENSE-CC0
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
Creative Commons Legal Code
|
||||||
|
|
||||||
|
CC0 1.0 Universal
|
||||||
|
|
||||||
|
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||||
|
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
|
||||||
|
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||||
|
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||||
|
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
|
||||||
|
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
|
||||||
|
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
|
||||||
|
HEREUNDER.
|
||||||
|
|
||||||
|
Statement of Purpose
|
||||||
|
|
||||||
|
The laws of most jurisdictions throughout the world automatically confer
|
||||||
|
exclusive Copyright and Related Rights (defined below) upon the creator
|
||||||
|
and subsequent owner(s) (each and all, an "owner") of an original work of
|
||||||
|
authorship and/or a database (each, a "Work").
|
||||||
|
|
||||||
|
Certain owners wish to permanently relinquish those rights to a Work for
|
||||||
|
the purpose of contributing to a commons of creative, cultural and
|
||||||
|
scientific works ("Commons") that the public can reliably and without fear
|
||||||
|
of later claims of infringement build upon, modify, incorporate in other
|
||||||
|
works, reuse and redistribute as freely as possible in any form whatsoever
|
||||||
|
and for any purposes, including without limitation commercial purposes.
|
||||||
|
These owners may contribute to the Commons to promote the ideal of a free
|
||||||
|
culture and the further production of creative, cultural and scientific
|
||||||
|
works, or to gain reputation or greater distribution for their Work in
|
||||||
|
part through the use and efforts of others.
|
||||||
|
|
||||||
|
For these and/or other purposes and motivations, and without any
|
||||||
|
expectation of additional consideration or compensation, the person
|
||||||
|
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
|
||||||
|
is an owner of Copyright and Related Rights in the Work, voluntarily
|
||||||
|
elects to apply CC0 to the Work and publicly distribute the Work under its
|
||||||
|
terms, with knowledge of his or her Copyright and Related Rights in the
|
||||||
|
Work and the meaning and intended legal effect of CC0 on those rights.
|
||||||
|
|
||||||
|
1. Copyright and Related Rights. A Work made available under CC0 may be
|
||||||
|
protected by copyright and related or neighboring rights ("Copyright and
|
||||||
|
Related Rights"). Copyright and Related Rights include, but are not
|
||||||
|
limited to, the following:
|
||||||
|
|
||||||
|
i. the right to reproduce, adapt, distribute, perform, display,
|
||||||
|
communicate, and translate a Work;
|
||||||
|
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||||
|
iii. publicity and privacy rights pertaining to a person's image or
|
||||||
|
likeness depicted in a Work;
|
||||||
|
iv. rights protecting against unfair competition in regards to a Work,
|
||||||
|
subject to the limitations in paragraph 4(a), below;
|
||||||
|
v. rights protecting the extraction, dissemination, use and reuse of data
|
||||||
|
in a Work;
|
||||||
|
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||||
|
European Parliament and of the Council of 11 March 1996 on the legal
|
||||||
|
protection of databases, and under any national implementation
|
||||||
|
thereof, including any amended or successor version of such
|
||||||
|
directive); and
|
||||||
|
vii. other similar, equivalent or corresponding rights throughout the
|
||||||
|
world based on applicable law or treaty, and any national
|
||||||
|
implementations thereof.
|
||||||
|
|
||||||
|
2. Waiver. To the greatest extent permitted by, but not in contravention
|
||||||
|
of, applicable law, Affirmer hereby overtly, fully, permanently,
|
||||||
|
irrevocably and unconditionally waives, abandons, and surrenders all of
|
||||||
|
Affirmer's Copyright and Related Rights and associated claims and causes
|
||||||
|
of action, whether now known or unknown (including existing as well as
|
||||||
|
future claims and causes of action), in the Work (i) in all territories
|
||||||
|
worldwide, (ii) for the maximum duration provided by applicable law or
|
||||||
|
treaty (including future time extensions), (iii) in any current or future
|
||||||
|
medium and for any number of copies, and (iv) for any purpose whatsoever,
|
||||||
|
including without limitation commercial, advertising or promotional
|
||||||
|
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
|
||||||
|
member of the public at large and to the detriment of Affirmer's heirs and
|
||||||
|
successors, fully intending that such Waiver shall not be subject to
|
||||||
|
revocation, rescission, cancellation, termination, or any other legal or
|
||||||
|
equitable action to disrupt the quiet enjoyment of the Work by the public
|
||||||
|
as contemplated by Affirmer's express Statement of Purpose.
|
||||||
|
|
||||||
|
3. Public License Fallback. Should any part of the Waiver for any reason
|
||||||
|
be judged legally invalid or ineffective under applicable law, then the
|
||||||
|
Waiver shall be preserved to the maximum extent permitted taking into
|
||||||
|
account Affirmer's express Statement of Purpose. In addition, to the
|
||||||
|
extent the Waiver is so judged Affirmer hereby grants to each affected
|
||||||
|
person a royalty-free, non transferable, non sublicensable, non exclusive,
|
||||||
|
irrevocable and unconditional license to exercise Affirmer's Copyright and
|
||||||
|
Related Rights in the Work (i) in all territories worldwide, (ii) for the
|
||||||
|
maximum duration provided by applicable law or treaty (including future
|
||||||
|
time extensions), (iii) in any current or future medium and for any number
|
||||||
|
of copies, and (iv) for any purpose whatsoever, including without
|
||||||
|
limitation commercial, advertising or promotional purposes (the
|
||||||
|
"License"). The License shall be deemed effective as of the date CC0 was
|
||||||
|
applied by Affirmer to the Work. Should any part of the License for any
|
||||||
|
reason be judged legally invalid or ineffective under applicable law, such
|
||||||
|
partial invalidity or ineffectiveness shall not invalidate the remainder
|
||||||
|
of the License, and in such case Affirmer hereby affirms that he or she
|
||||||
|
will not (i) exercise any of his or her remaining Copyright and Related
|
||||||
|
Rights in the Work or (ii) assert any associated claims and causes of
|
||||||
|
action with respect to the Work, in either case contrary to Affirmer's
|
||||||
|
express Statement of Purpose.
|
||||||
|
|
||||||
|
4. Limitations and Disclaimers.
|
||||||
|
|
||||||
|
a. No trademark or patent rights held by Affirmer are waived, abandoned,
|
||||||
|
surrendered, licensed or otherwise affected by this document.
|
||||||
|
b. Affirmer offers the Work as-is and makes no representations or
|
||||||
|
warranties of any kind concerning the Work, express, implied,
|
||||||
|
statutory or otherwise, including without limitation warranties of
|
||||||
|
title, merchantability, fitness for a particular purpose, non
|
||||||
|
infringement, or the absence of latent or other defects, accuracy, or
|
||||||
|
the present or absence of errors, whether or not discoverable, all to
|
||||||
|
the greatest extent permissible under applicable law.
|
||||||
|
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||||
|
that may apply to the Work or any use thereof, including without
|
||||||
|
limitation any person's Copyright and Related Rights in the Work.
|
||||||
|
Further, Affirmer disclaims responsibility for obtaining any necessary
|
||||||
|
consents, permissions or other rights required for any use of the
|
||||||
|
Work.
|
||||||
|
d. Affirmer understands and acknowledges that Creative Commons is not a
|
||||||
|
party to this document and has no duty or obligation with respect to
|
||||||
|
this CC0 or use of the Work.
|
223
README.md
Normal file
223
README.md
Normal file
|
@ -0,0 +1,223 @@
|
||||||
|
# `awesome-embedded-rust`
|
||||||
|
|
||||||
|
> A curated list of crates useful for embedded development.
|
||||||
|
|
||||||
|
## Table of contents
|
||||||
|
|
||||||
|
* [Device crates](#device-crates)
|
||||||
|
* [STMicroelectronics](#stmicroelectronics)
|
||||||
|
* [Nordic](#nordic)
|
||||||
|
* [HAL implementation crates](#hal-implementation-crates)
|
||||||
|
* [OS](#os)
|
||||||
|
* [Nordic](#nordic-1)
|
||||||
|
* [NXP](#nxp)
|
||||||
|
* [STMicroelectronics](#stmicroelectronics-1)
|
||||||
|
* [Texas Instruments](#texas-instruments)
|
||||||
|
* [Board support crates](#board-support-crates)
|
||||||
|
* [NXP](#nxp-1)
|
||||||
|
* [STMicroelectronics](#stmicroelectronics-2)
|
||||||
|
* [Driver crates](#driver-crates)
|
||||||
|
* [WIP](#wip)
|
||||||
|
* [no-std crates](#no-std-crates)
|
||||||
|
* [License](#license)
|
||||||
|
|
||||||
|
## Device crates
|
||||||
|
|
||||||
|
Register definition for microcontroller families. Usually generated using [`svd2rust`].
|
||||||
|
|
||||||
|
[`svd2rust`]: https://crates.io/crates/svd2rust
|
||||||
|
|
||||||
|
*NOTE* You may be able to find even more device crates by searching for the
|
||||||
|
[`svd2rust`][svd2rust-kw] keyword on crates.io!
|
||||||
|
|
||||||
|
[svd2rust-kw]: https://crates.io/keywords/svd2rust
|
||||||
|
|
||||||
|
### STMicroelectronics
|
||||||
|
|
||||||
|
- [`stm32f103xx`](https://crates.io/crates/stm32f103xx)
|
||||||
|
- [`stm32f30x`](https://crates.io/crates/stm32f30x)
|
||||||
|
|
||||||
|
### Nordic
|
||||||
|
|
||||||
|
- [`nrf51`](https://crates.io/crates/nrf51)
|
||||||
|
|
||||||
|
## HAL implementation crates
|
||||||
|
|
||||||
|
Implementations of [`embedded-hal`] for microcontroller families and systems running some OS.
|
||||||
|
|
||||||
|
[`embedded-hal`]: https://crates.io/crates/embedded-hal
|
||||||
|
|
||||||
|
*NOTE* You may be able to find even more HAL implementation crates by searching for the
|
||||||
|
[`embedded-hal-impl`] and [`embedded-hal`][embedded-hal-kw] keywords on crates.io!
|
||||||
|
|
||||||
|
[`embedded-hal-impl`]: https://crates.io/keywords/embedded-hal-impl
|
||||||
|
[embedded-hal-kw]: https://crates.io/keywords/embedded-hal
|
||||||
|
|
||||||
|
### OS
|
||||||
|
|
||||||
|
- [`linux-embedded-hal`] for embedded Linux systems like the Raspberry Pi.
|
||||||
|
|
||||||
|
[`linux-embedded-hal`]: https://crates.io/crates/linux-embedded-hal
|
||||||
|
|
||||||
|
### Nordic
|
||||||
|
|
||||||
|
- [`nrf51-hal`](https://crates.io/crates/nrf51-hal)
|
||||||
|
|
||||||
|
### NXP
|
||||||
|
|
||||||
|
Also check the list of [NXP board support crates][nxp-bsc]!
|
||||||
|
|
||||||
|
[nxp-bsc]: #nxp-1
|
||||||
|
|
||||||
|
- [`lpc82x-hal`](https://github.com/braun-robotics/rust-lpc82x-hal)
|
||||||
|
|
||||||
|
- [`mkw41z-hal`](https://crates.io/crates/mkw41z-hal)
|
||||||
|
|
||||||
|
### STMicroelectronics
|
||||||
|
|
||||||
|
Also check the list of [STMicroelectronics board support crates][stm-bsc]!
|
||||||
|
|
||||||
|
[stm-bsc]: #stmicroelectronics-2
|
||||||
|
|
||||||
|
- [`stm32f042-hal`](https://crates.io/crates/stm32f042-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
|
||||||
|
|
||||||
|
- [`stm32f103xx-hal`](https://github.com/japaric/stm32f103xx-hal)
|
||||||
|
- Has examples that can run on boards like the [Blue pill] and similar boards
|
||||||
|
|
||||||
|
- [`stm32f30x-hal`](https://crates.io/crates/stm32f30x-hal)
|
||||||
|
|
||||||
|
### Texas Instruments
|
||||||
|
|
||||||
|
- [`tm4c123x-hal`](https://github.com/thejpster/tm4c123x-hal)
|
||||||
|
|
||||||
|
[Blue pill]: http://wiki.stm32duino.com/index.php?title=Blue_Pill
|
||||||
|
|
||||||
|
## Board support crates
|
||||||
|
|
||||||
|
Crates tailored for specific development boards.
|
||||||
|
|
||||||
|
[STM32F3DISCOVERY]: http://www.st.com/en/evaluation-tools/stm32f3discovery.html
|
||||||
|
|
||||||
|
### NXP
|
||||||
|
|
||||||
|
- [`frdm-kw41z`](https://crates.io/crates/frdm-kw41z) - [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
|
||||||
|
|
||||||
|
### STMicroelectronics
|
||||||
|
|
||||||
|
- [`f3`](https://crates.io/crates/f3) - [STM32F3DISCOVERY]
|
||||||
|
|
||||||
|
## Driver crates
|
||||||
|
|
||||||
|
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].
|
||||||
|
|
||||||
|
[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-lang-nursery/embedded-wg/issues/39
|
||||||
|
|
||||||
|
1. [L3GD20] - SPI - Gyroscope - [Intro blog post][1&2]
|
||||||
|
2. [LSM303DLHC] - I2C - Accelerometer + compass (magnetometer) - [Intro blog post][1&2]
|
||||||
|
3. [MCP3008] - SPI - 8 channel 10-bit ADC - [Intro blog post][3]
|
||||||
|
4. [ENC28J60] - SPI - Ethernet controller - [Intro blog post][4]
|
||||||
|
5. [MCP3425] - I2C - 16-bit ADC - [Intro blog post][5]
|
||||||
|
6. [SGP30] - I2C - Gas sensor - [Intro blog post][6]
|
||||||
|
|
||||||
|
[L3GD20]: https://crates.io/crates/l3gd20
|
||||||
|
[LSM303DLHC]: https://crates.io/crates/lsm303dlhc
|
||||||
|
[1&2]: http://blog.japaric.io/wd-1-2-l3gd20-lsm303dlhc-madgwick/
|
||||||
|
|
||||||
|
[MCP3008]: https://crates.io/crates/adc-mcp3008
|
||||||
|
[3]: http://pramode.in/2018/02/24/an-introduction-to-writing-embedded-hal-based-drivers-in-rust/
|
||||||
|
|
||||||
|
[ENC28J60]: https://crates.io/crates/enc28j60
|
||||||
|
[4]: http://blog.japaric.io/wd-4-enc28j60/
|
||||||
|
|
||||||
|
[MCP3425]: https://crates.io/crates/mcp3425
|
||||||
|
[5]: https://blog.dbrgn.ch/2018/3/13/rust-mcp3425-driver/
|
||||||
|
[SGP30]: https://crates.io/crates/sgp30
|
||||||
|
[6]: https://blog.dbrgn.ch/2018/4/1/rust-sgp30-driver/
|
||||||
|
|
||||||
|
*NOTE* You may be able to find even more driver crates by searching for the [`embedded-hal-driver`]
|
||||||
|
keyword on crates.io!
|
||||||
|
|
||||||
|
[`embedded-hal-driver`]: https://crates.io/keywords/embedded-hal-driver
|
||||||
|
|
||||||
|
### WIP
|
||||||
|
|
||||||
|
Work in progress drivers. Help the authors make these crates awesome!
|
||||||
|
|
||||||
|
- [MFRC522] - SPI - RFID tag reader/writer
|
||||||
|
- [MPU9250] - SPI - Accelerometer + gyroscope + compass
|
||||||
|
- [motor-driver] - Motor drivers: L298N, TB6612FNG, etc.
|
||||||
|
- [MAG3110] - I2C - Magnetometer
|
||||||
|
- [SI5351] - I2C - clock generator
|
||||||
|
- [SI7021] - I2C - Humidity and temperature sensor
|
||||||
|
- [MAX7219] - SPI - LED display driver
|
||||||
|
- [DS3231] - I2C - real time clock
|
||||||
|
- [BH1750] - I2C - ambient light sensor (lux meter)
|
||||||
|
- [SHT2x] - I2C - temperature / humidity sensors
|
||||||
|
- [INA260] - I2C - power monitor
|
||||||
|
- [SSD1306] - I2C - OLED display driver
|
||||||
|
- [ILI9341] - SPI - TFT LCD display
|
||||||
|
- [HD44780] - Parallel port - LCD controller
|
||||||
|
- [HTS221] - I2C - Humidity and temperature sensor
|
||||||
|
- [MCP9808] - I2C - Temperature sensor
|
||||||
|
- [MMA7660FC] - I2C - 3-axis accelerometer
|
||||||
|
- [AXP209] - I2C - Power management unit
|
||||||
|
- [DS3234] - SPI - Real time clock
|
||||||
|
- [PCD8544] - SPI - 48x84 pixels matrix LCD controller
|
||||||
|
- [HC-SR04] - DIO - Ultrasound sensor
|
||||||
|
- [AFE4400] - SPI - Pulse oximeter
|
||||||
|
- [SX1278] - SPI - Low range (LoRa) transceiver
|
||||||
|
- [RFM69] - SPI - ISM radio transceiver
|
||||||
|
- [LS010B7DH01] - SPI - Memory LCD
|
||||||
|
|
||||||
|
[MFRC522]: https://github.com/japaric/mfrc522
|
||||||
|
[MPU9250]: https://github.com/japaric/mpu9250
|
||||||
|
[motor-driver]: https://github.com/japaric/motor-driver
|
||||||
|
[MAG3110]: https://github.com/therealprof/mag3110
|
||||||
|
[SI5351]: https://github.com/ilya-epifanov/si5351
|
||||||
|
[SI7021]: https://github.com/wose/si7021
|
||||||
|
[MAX7219]: https://github.com/maikelwever/max7219
|
||||||
|
[DS3231]: https://github.com/wose/ds3231
|
||||||
|
[BH1750]: https://github.com/wose/bh1750
|
||||||
|
[SHT2x]: https://github.com/dbrgn/sht2x-rs
|
||||||
|
[INA260]: https://crates.io/crates/ina260
|
||||||
|
[SSD1306]: https://github.com/EdgewaterDevelopment/rust-ssd1306
|
||||||
|
[ILI9341]: https://github.com/yuri91/ili9341-rs
|
||||||
|
[HD44780]: http://github.com/kunerd/clerk
|
||||||
|
[HTS221]: https://github.com/danielgallagher0/hts221
|
||||||
|
[MCP9808]: https://crates.io/crates/mcp9808
|
||||||
|
[MMA7660FC]: https://github.com/rahul-thakoor/mma7660fc
|
||||||
|
[PCD8544]: https://github.com/pcein/pcd8544
|
||||||
|
[AXP209]: https://github.com/RandomInsano/axp209-rs
|
||||||
|
[DS3234]: https://github.com/rust-lang-nursery/embedded-wg/issues/39#issuecomment-375262785
|
||||||
|
[HC-SR04]: https://github.com/nordmoen/hc-sr04
|
||||||
|
[AFE4400]: https://github.com/ReeceStevens/afe4400
|
||||||
|
[SX1278]: https://github.com/susu/sx1278
|
||||||
|
[RFM69]: https://github.com/lolzballs/rfm69
|
||||||
|
[LS010B7DH01]: https://github.com/byronwasti/ls010b7dh01
|
||||||
|
|
||||||
|
## no-std crates
|
||||||
|
|
||||||
|
`#![no_std]` crates designed to run on resource constrained devices.
|
||||||
|
|
||||||
|
*whoops* this list is currently empty. Want to help us write it? Leave a comment on issue [#2].
|
||||||
|
|
||||||
|
[#2]: https://github.com/rust-embedded/awesome-embedded-rust/issues/2
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This list is licensed under
|
||||||
|
|
||||||
|
- CC0 1.0 Universal License ([LICENSE-CC0](LICENSE-CC0) or
|
||||||
|
https://creativecommons.org/publicdomain/zero/1.0/legalcode)
|
Loading…
Reference in a new issue