{"id":24706867,"url":"https://github.com/rp-rs/rp-hal-boards","last_synced_at":"2025-10-09T09:31:14.236Z","repository":{"id":64631864,"uuid":"576669181","full_name":"rp-rs/rp-hal-boards","owner":"rp-rs","description":"Board Support Packages for RP2040 based PCBs","archived":false,"fork":false,"pushed_at":"2025-04-18T22:52:17.000Z","size":1343,"stargazers_count":253,"open_issues_count":29,"forks_count":110,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-10-09T07:58:34.178Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rp-rs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-10T15:41:28.000Z","updated_at":"2025-10-07T15:42:06.000Z","dependencies_parsed_at":"2023-10-02T06:30:07.238Z","dependency_job_id":"a410b4bb-bfd8-496b-abd2-57e9686fc4ee","html_url":"https://github.com/rp-rs/rp-hal-boards","commit_stats":{"total_commits":619,"total_committers":80,"mean_commits":7.7375,"dds":0.8190630048465266,"last_synced_commit":"2f8d0f4404c32cf8877c57812dd3649a80431380"},"previous_names":[],"tags_count":70,"template":false,"template_full_name":null,"purl":"pkg:github/rp-rs/rp-hal-boards","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rp-rs%2Frp-hal-boards","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rp-rs%2Frp-hal-boards/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rp-rs%2Frp-hal-boards/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rp-rs%2Frp-hal-boards/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rp-rs","download_url":"https://codeload.github.com/rp-rs/rp-hal-boards/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rp-rs%2Frp-hal-boards/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001135,"owners_count":26083022,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-27T06:02:23.955Z","updated_at":"2025-10-09T09:31:13.843Z","avatar_url":"https://github.com/rp-rs.png","language":"Rust","funding_links":[],"categories":["Recently Updated","Board support crates"],"sub_categories":["[Jan 30, 2025](/content/2025/01/30/README.md)","Sparkfun"],"readme":"\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/rp-rs/rp-hal-boards\"\u003e\n    \u003cimg src=\"https://www.svgrepo.com/show/281119/microchip.svg\" alt=\"Logo\" width=\"140\" height=\"140\"\u003e\n  \u003c/a\u003e\n\n   \u003ch3 align=\"center\"\u003erp-hal-boards\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    Rust support for boards based on the \"Raspberry Silicon\" family of microcontrollers\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/rp-rs/rp-hal/\"\u003erp2040-hal\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/rp-rs/rp-hal/issues\"\u003eReport a Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://matrix.to/#/#rp-rs:matrix.org\"\u003eChat on Matrix\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails open=\"open\"\u003e\n  \u003csummary\u003e\u003ch2 style=\"display: inline-block\"\u003eTable of Contents\u003c/h2\u003e\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\u003ca href=\"#gettting_started\"\u003eGetting Started\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#programming\"\u003eProgramming\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgements\"\u003eAcknowledgements\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n\n## Getting Started\n\nSo, you want to program your new Raspberry Silicon microcontroller, using the\nRust programming language. You've come to the right place!\n\nThese board support packages are based on\n[`rp-hal`](https://github.com/rp-rs/rp-hal) - a collection of high-level\ndrivers for the Raspberry Silicon RP2040 microcontroller and various\nassociated boards, like the Raspberry Pi Pico and the Adafruit Feather\nRP2040.\n\nIf you want to write an application for Raspberry Silicon, check out our\n[RP2040 Project Template](https://github.com/rp-rs/rp2040-project-template).\n\nIf you want to try out some examples on one of our supported boards, check out\nthe list of *Board Support Packages* below, and click through to see the various\nexamples for each board.\n\nBefore trying any of the examples, please ensure you have the latest stable\nversion of Rust installed, along with the right target support:\n\n```sh\nrustup self update\nrustup update stable\nrustup target add thumbv6m-none-eabi\n```\n\nYou may also want to install these helpful tools:\n\n```sh\n# Useful to creating UF2 images for the RP2040 USB Bootloader\ncargo install --locked elf2uf2-rs\n# Useful for flashing over the SWD pins using a supported JTAG probe\ncargo install --locked probe-rs-tools\n```\n\n## Packages\n\nThis git repository is organised as a [Cargo Workspace].\n\nIf you are writing code that should work on any RP2040 device, use\nthe [HAL crate]. If you are running code on a specific board, use\nthe appropriate _BSP_ crate (which will include the _HAL_ crate for\nyou). Please note, you cannot depend on multiple _BSP_ crates; you have\nto pick one, or use [Cargo Features] to select one at build time.\n\nEach BSP includes some examples to show off the features of that particular board.\n\n[HAL crate]: https://github.com/rp-rs/rp-hal\n[Cargo Workspace]: https://doc.rust-lang.org/cargo/reference/workspaces.html\n[Embedded HAL]: https://github.com/rust-embedded/embedded-hal\n[Cargo Features]: https://doc.rust-lang.org/cargo/reference/features.html\n[rp2040-hal]: https://crates.io/crates/rp2040-hal\n\n### [rp-pico] - Board Support for the [Raspberry Pi Pico]\n\nYou should include this crate if you are writing code that you want to run on\na [Raspberry Pi Pico] - the original launch PCB for the RP2040 chip.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the Pico.\n\n[Raspberry Pi Pico]: https://www.raspberrypi.org/products/raspberry-pi-pico/\n[rp-pico]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/rp-pico\n\n### [adafruit-feather-rp2040] - Board Support for the [Adafruit Feather RP2040]\n\nYou should include this crate if you are writing code that you want to run on\nan [Adafruit Feather RP2040] - a Feather form-factor RP2040 board from Adafruit.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the Feather RP2040.\n\n[Adafruit Feather RP2040]: https://www.adafruit.com/product/4884\n[adafruit-feather-rp2040]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/adafruit-feather-rp2040\n\n### [adafruit-itsy-bitsy-rp2040] - Board Support for the [Adafruit ItsyBitsy RP2040]\n\nYou should include this crate if you are writing code that you want to run on\nan [Adafruit ItsyBitsy RP2040] - an RP2040 board in the ItsyBitsy family.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the ItsyBitsy RP2040.\n\n[Adafruit ItsyBitsy RP2040]: https://www.adafruit.com/product/4888\n[adafruit-itsy-bitsy-rp2040]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/adafruit-itsy-bitsy-rp2040\n\n### [adafruit-kb2040] - Board Support for the [Adafruit KB2040]\n\nYou should include this crate if you are writing code that you want to run on\nan [Adafruit KB2040] - an Arduino Pro Micro-shaped board for keyboards.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the KB2040.\n\n[Adafruit KB2040]: https://www.adafruit.com/product/5302\n[adafruit-kb2040]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/adafruit-kb2040\n\n### [adafruit-macropad] - Board Support for the [Adafruit Macropad]\n\nYou should include this crate if you are writing code that you want to run on\nan [Adafruit Macropad] - a 3x4 keyboard and OLED combo board from Adafruit.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the Macropad.\n\n[adafruit-macropad]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/adafruit-macropad\n[Adafruit Macropad]: https://www.adafruit.com/product/5128\n\n### [adafruit-metro-rp2040] - Board Support for the [Adafruit Metro RP2040]\n\nYou should include this crate if you are writing code that you want to run on\nan [Adafruit Metro RP2040] - an RP2040 board in the Metro family.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the Metro RP2040.\n\n[Adafruit Metro RP2040]: https://www.adafruit.com/product/5786\n[adafruit-metro-rp2040]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/adafruit-metro-rp2040\n\n### [adafruit-qt-py-rp2040] - Board Support for the [Adafruit QT Py RP2040]\n\nYou should include this crate if you are writing code that you want to run on\nan [Adafruit QT Py RP2040] - an extremely small form-factor RP2040 board from Adafruit.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the Feather RP2040.\n\n[Adafruit QT Py RP2040]: https://www.adafruit.com/product/4900\n[adafruit-qt-py-rp2040]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/adafruit-qt-py-rp2040\n\n### [adafruit-trinkey-qt2040] - Board Support for the [Adafruit Trinkey QT2040]\n\nYou should include this crate if you are writing code that you want to run on\nan [Adafruit Trinkey QT2040] - a 3x4 keyboard and OLED combo board from Adafruit.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the Trinkey.\n\n[Adafruit-Trinkey-QT2040]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/adafruit-trinkey-qt2040\n[adafruit trinkey qt2040]: https://www.adafruit.com/product/5056\n\n### [boardsource-blok] - Board Support for the [Blok]\n\nYou should include this crate if you are writing code that you want to run on\na [Blok] - an RP2040 based controller, made by [Boardsource],\nbuilt for the keyboard community.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the Blok.\n\n[Blok]: https://boardsource.xyz/store/628b95b494dfa308a6581622\n[boardsource-blok]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/boardsource-blok\n[Boardsource]: https://boardsource.xyz/\n\n### [pimoroni_badger2040] - Board Support for the [Pimoroni Badger2040]\n\nYou should include this crate if you are writing code that you want to run on\na [Pimoroni Badger2040] - a conference-style badge built around an e-paper\ndisplay and an rp2040\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the Badger2040.\n\n[Pimoroni Badger2040]: https://shop.pimoroni.com/products/badger-2040\n[pimoroni_badger2040]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/pimoroni_badger2040\n\n### [pimoroni-pico-explorer] - Board Support for the [Pimoroni Pico Explorer]\n\nYou should include this crate if you are writing code that you want to run on\na [Pimoroni Pico Explorer] - a breakout board for the [Raspberry Pi Pico] featuring a small LCD screen, a\nbreadboard and some breakout headers.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the Pico Explorer.\n\n[Pimoroni Pico Explorer]: https://shop.pimoroni.com/products/pimoroni-pico-explorer-base\n[pimoroni-pico-explorer]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/pimoroni-pico-explorer\n\n### [pimoroni-pico-lipo-16mb] - Board Support for the [Pimoroni Pico Lipo 16MB]\n\nYou should include this crate if you are writing code that you want to run on\na [Pimoroni Pico Lipo 16MB] - a board with USB-C, STEMMA QT/Qwiic connectors,\nplus a Li-Po battery charging circuit.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the Pico Lipo.\n\nNote that if you use this crate the compiler will expect the full 16MB flash\nspace, and so it may not work if you only have the 4MB variant.\n\n[Pimoroni Pico Lipo 16MB]: https://shop.pimoroni.com/products/pimoroni-pico-lipo?variant=39335427080275\n[pimoroni-pico-lipo-16mb]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/pimoroni-pico-lipo-16mb\n\n### [pimoroni-plasma-2040] - Board Support for the [Pimoroni Plasma 2040]\n\nYou should include this crate if you are writing code that you want to run on\na [Pimoroni Plasma 2040] - Swathe everything in rainbows with this all-in-one, USB-C powered controller\nfor WS2812/Neopixel and APA102/Dotstar addressable LED strip.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the Pimoroni Plasma 2040.\n\n[Pimoroni Plasma 2040]: https://shop.pimoroni.com/products/plasma-2040\n[pimoroni-plasma-2040]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/pimoroni-plasma-2040\n\n### [pimoroni-servo2040] - Board Support for the [Pimoroni Servo2040]\n\nYou should include this crate if you are writing code that you want to run on\na [Pimoroni Servo2040] - a standalone servo motor controller for up to 18 servos\nand 6 sensors.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the Servo2040.\n\n[Pimoroni Servo2040]: https://shop.pimoroni.com/products/servo-2040\n[pimoroni-servo2040]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/pimoroni-servo2040\n\n### [pimoroni-tiny2040] - Board Support for the [Pimoroni Tiny2040]\n\nYou should include this crate if you are writing code that you want to run on\na [Pimoroni Tiny2040] - one of the first third party RP2040 boards available, with 8MB flash and a 3 colour LED.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the Tiny2040.\n\n[Pimoroni Tiny2040]: https://shop.pimoroni.com/products/tiny-2040\n[pimoroni-tiny2040]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/pimoroni-tiny2040\n\n### [solderparty-rp2040-stamp] - Board Support for the [SolderParty RP2040 Stamp]\n\nYou should include this crate if you are writing code that you want to run on\na [SolderParty RP2040 Stamp] - a square RP2040 board with castellated edges.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the Stamp.\n\n[SolderParty RP2040 Stamp]: https://www.solder.party/docs/rp2040-stamp/\n[solderparty-rp2040-stamp]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/solderparty-rp2040-stamp\n\n### [sparkfun-micromod-rp2040] - Board Support for the [SparkFun MicroMod RP2040]\n\nYou should include this crate if you are writing code that you want to run on\na [SparkFun MicroMod RP2040] - the RP2040 processor board for the [SparkFun MicroMod] ecosystem.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the MicroMod RP2040.\n\n[SparkFun MicroMod RP2040]: https://www.sparkfun.com/products/17720\n[SparkFun MicroMod]: https://www.sparkfun.com/micromod\n[sparkfun-micromod-rp2040]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/sparkfun-micromod-rp2040\n\n### [sparkfun-pro-micro-rp2040] - Board Support for the [Sparkfun Pro Micro RP2040]\n\nYou should include this crate if you are writing code that you want to run on\na [Sparkfun Pro Micro RP2040] - a smaller RP2040 board with USB-C and a WS2812B addressable LED.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the Pro Micro RP2040.\n\n[Sparkfun Pro Micro RP2040]: https://www.sparkfun.com/products/18288\n[sparkfun-pro-micro-rp2040]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/sparkfun-pro-micro-rp2040\n\n### [sparkfun-thing-plus-rp2040] - Board Support for the [Sparkfun Thing Plus RP2040]\n\nYou should include this crate if you are writing code that you want to run on\na [Sparkfun Thing Plus RP2040] - an RP2040 board with a Feather form factor, USB-C, and a WS2812B addressable LED.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the Thing Plus RP2040.\n\n[Sparkfun Thing Plus RP2040]: https://www.sparkfun.com/products/17745\n[sparkfun-thing-plus-rp2040]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/sparkfun-thing-plus-rp2040\n\n### [arduino_nano_connect] - Board Support for the [Arduino Nano RP2040 Connect]\n\nYou should include this crate if you are writing code that you want to run on\nan [Arduino Nano RP2040 Connect] - a development pcb with shortwave communication, IMU, and BLE package.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the nano connect.\n\n[Arduino Nano RP2040 Connect]: https://store-usa.arduino.cc/collections/boards/products/arduino-nano-rp2040-connect\n[arduino_nano_connect]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/arduino_nano_connect\n\n### [seeeduino-xiao-rp2040] - Board Support for the [Seeeduino XIAO RP2040]\n\nYou should include this crate if you are writing code that you want to run on\na [Seeeduino XIAO RP2040] - a tiny board for wearable devices and small\nprojects.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the XIAO RP2040.\n\n[Seeeduino XIAO RP2040]: https://www.seeedstudio.com/XIAO-RP2040-v1-0-p-5026.html\n[seeeduino-xiao-rp2040]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/seeeduino-xiao-rp2040\n\n### [vcc-gnd-yd-rp2040] - Board Support for the [VCC-GND Studio YD-RP2040]\n\nYou should include this crate if you are writing code that you want to run on\na [VCC-GND Studio YD-RP2040] - a PCB for the RP2040 chip with USB-C port, WS2812 RGB LED on GPIO23, user key on GPIO24 and built-in blue LED.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the YD-RP2040.\n\n[VCC-GND Studio YD-RP2040]: http://152.32.187.208:8080/yd-data/YD-RP2040/\n[vcc-gnd-yd-rp2040]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/vcc-gnd-yd-rp2040\n\n### [waveshare-rp2040-zero] - Board Support for the [Waveshare RP2040 Zero]\n\nYou should include this crate if you are writing code that you want to run on\nan [Waveshare RP2040 Zero] - a very small RP2040 breakout board with USB-C and a RGB led from Waveshare.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the board.\n\n[Waveshare RP2040 Zero]: https://www.waveshare.com/wiki/RP2040-Zero\n[waveshare-rp2040-zero]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/waveshare-rp2040-zero\n\n### [waveshare-rp2040-lcd-0_96] - Board Support for the [Waveshare RP2040 LCD 0.96\"]\n\nYou should include this crate if you are writing code that you want to run on\nan [Waveshare RP2040 LCD 0.96\"] - a very small RP2040 breakout board with USB-C,\na 65K IPS LCD 160x80, 16MBit Flash and 1A battery charger from Waveshare.\n\nThis crate includes the [rp2040-hal], but also configures each pin of the\nRP2040 chip according to how it is connected up on the board.\n\n[Waveshare RP2040 LCD 0.96\"]: https://www.waveshare.com/wiki/RP2040-LCD-0.96\n[waveshare-rp2040-lcd-0_96]: https://github.com/rp-rs/rp-hal-boards/tree/main/boards/waveshare-rp2040-lcd-0-96\n\n\u003c!-- PROGRAMMING --\u003e\n## Programming\n\nRust generates standard Arm ELF files, which you can load onto your Raspberry Pi\nSilicon device with your favourite Arm flashing/debugging tool. In addition, the\nRP2040 contains a ROM bootloader which appears as a Mass Storage Device over USB\nthat accepts UF2 format images. You can use the `elf2uf2-rs` package to convert\nthe Arm ELF file to a UF2 format image.\n\nFor boards with USB Device support like the Raspberry Pi Pico, we recommend you\nuse the UF2 process.\n\nThe RP2040 contains two Cortex-M0+ processors, which execute Thumb-2 encoded\nARMv6-M instructions. There are no operating-specific features in the binaries\nproduced - they are for 'bare-metal' systems. For compatibilty with other Arm\ncode (e.g. as produced by GCC), Rust uses the *Arm Embedded-Application Binary\nInterface* standard or EABI. Therefore, any Rust code for the RP2040 should be\ncompiled with the target *`thumbv6m-none-eabi`*.\n\nMore details can be found in the [Project Template](https://github.com/rp-rs/rp2040-project-template).\n\n### Loading a UF2 over USB\n\n*Step 1* - Install [`elf2uf2-rs`](https://github.com/JoNil/elf2uf2-rs):\n\n```console\n$ cargo install elf2uf2-rs --locked\n```\n\n*Step 2* - Make sure your .cargo/config.toml contains the following (it should by\ndefault if you are working in this repository):\n\n```toml\n[target.thumbv6m-none-eabi]\nrunner = \"elf2uf2-rs -d\"\n```\n\nThe `thumbv6m-none-eabi` target may be replaced by the all-Arm wildcard\n`'cfg(all(target_arch = \"arm\", target_os = \"none\"))'`.\n\n*Step 3* - Boot your RP2040 into \"USB Bootloader mode\", typically by rebooting\nwhilst holding some kind of \"Boot Select\" button. On Linux, you will also need\nto 'mount' the device, like you would a USB Thumb Drive.\n\n*Step 4* - Use `cargo run`, which will compile the code and started the\nspecified 'runner'. As the 'runner' is the elf2uf2-rs tool, it will build a UF2\nfile and copy it to your RP2040.\n\n```console\n$ cargo run --release --example pico_pwm_blink\n```\n\n### Loading with probe-rs\n[probe-rs](https://github.com/probe-rs/probe-rs) is a library and a\ncommand-line tool which can flash a wide variety of microcontrollers\nusing a wide variety of debug/JTAG probes. Unlike using, say, OpenOCD,\nprobe-rs can autodetect your debug probe, which can make it easier to use.\n\n*Step 1* - Install `probe-rs`:\n\n```console\n$ cargo install --locked probe-rs-tools\n```\n\nAlternatively, follow the installation instructions on https://probe.rs/.\n\n*Step 2* - Make sure your .cargo/config.toml contains the following:\n\n```toml\n[target.thumbv6m-none-eabi]\nrunner = \"probe-rs run --chip RP2040\"\n```\n\n*Step 3* - Connect your USB JTAG/debug probe (such as a Raspberry Pi Pico\nrunning [this firmware](https://github.com/majbthrd/DapperMime)) to the SWD\nprogramming pins on your RP2040 board. Check the probe has been found by\nrunning:\n\n```console\n$ probe-rs list\nThe following debug probes were found:\n[0]: J-Link (J-Link) (VID: 1366, PID: 0101, Serial: 000099999999, JLink)\n```\n\nThere is a SEGGER J-Link connected in the example above - the mesage you see\nwill reflect the probe you have connected.\n\n*Step 4* - Use `cargo run`, which will compile the code and start the specified\n'runner'. As the 'runner' is the `probe-rs` tool, it will connect to the\nRP2040 via the first probe it finds, and install your firmware into the Flash\nconnected to the RP2040.\n\n```console\n$ cargo run --release --example pico_pwm_blink\n```\n\n### Loading with picotool\n\nAs ELF files produced by compiling Rust code are completely compatible with ELF\nfiles produced by compiling C or C++ code, you can also use the Raspberry Pi\ntool [picotool](https://github.com/raspberrypi/picotool). The only thing to be\naware of is that picotool expects your ELF files to have a `.elf` extension, and\nby default Rust does not give the ELF files any extension. You can fix this by\nsimply renaming the file.\n\nAlso of note is that the special\n[pico-sdk](https://github.com/raspberrypi/pico-sdk) macros which hide\ninformation in the ELF file in a way that `picotool info` can read it out, are\nnot supported in Rust. An alternative is TBC.\n\n\u003c!-- ROADMAP --\u003e\n## Roadmap\n\nNOTE These packages are under active development. As such, it is likely to\nremain volatile until a 1.0.0 release.\n\nSee the [open issues](https://github.com/rp-rs/rp-hal/issues) for a list of\nproposed features (and known issues).\n\n\u003c!-- CONTRIBUTING --\u003e\n## Contributing\n\nContributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\nThe steps are:\n\n1. Fork the Project by clicking the 'Fork' button at the top of the page.\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Make some changes to the code or documentation.\n4. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n5. Push to the Feature Branch (`git push origin feature/AmazingFeature`)\n6. Create a [New Pull Request](https://github.com/rp-rs/rp-hal-boards/pulls)\n7. An admin will review the Pull Request and discuss any changes that may be required.\n8. Once everyone is happy, the Pull Request can be merged by an admin, and your work is part of our project!\n\n\u003c!-- CODE OF CONDUCT --\u003e\n## Code of Conduct\n\nContribution to this crate is organized under the terms of the [Rust Code of\nConduct][CoC], and the maintainer of this crate, the [rp-rs team], promises\nto intervene to uphold that code of conduct.\n\n[CoC]: CODE_OF_CONDUCT.md\n[rp-rs team]: https://github.com/orgs/rp-rs/teams/rp-rs\n\n\u003c!-- LICENSE --\u003e\n## License\n\nThe contents of this repository are dual-licensed under the _MIT OR Apache\n2.0_ License. That means you can choose either the MIT license or the\nApache-2.0 license when you re-use this code. See `MIT` or `APACHE2.0` for more\ninformation on each specific license.\n\nAny submissions to this project (e.g. as Pull Requests) must be made available\nunder these terms.\n\n\u003c!-- CONTACT --\u003e\n## Contact\n\nRaise an issue: [https://github.com/rp-rs/rp-hal-boards/issues](https://github.com/rp-rs/rp-hal-boards/issues)\nChat to us on Matrix: [#rp-rs:matrix.org](https://matrix.to/#/#rp-rs:matrix.org)\n\n\u003c!-- ACKNOWLEDGEMENTS --\u003e\n## Acknowledgements\n\n* [Othneil Drew's README template](https://github.com/othneildrew)\n* [Rust Embedded Working Group](https://github.com/rust-embedded)\n* [Raspberry Pi](https://raspberrypi.org) and the [Pico SDK](https://github.com/raspberrypi/pico-sdk)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frp-rs%2Frp-hal-boards","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frp-rs%2Frp-hal-boards","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frp-rs%2Frp-hal-boards/lists"}