commit a6b61a8bec4a72f2b27084a28ed526e4eb960997 Author: Jorge Aparicio Date: Sun Apr 1 23:17:28 2018 +0200 initial commit diff --git a/LICENSE-CC0 b/LICENSE-CC0 new file mode 100644 index 0000000..0e259d4 --- /dev/null +++ b/LICENSE-CC0 @@ -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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..e8249f2 --- /dev/null +++ b/README.md @@ -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)