#svd2rust #arm #cortex-m

app stm32

Unified device support crate for all STM32 microcontrollers (WIP)

2 releases

Uses old Rust 2015

0.0.1 Mar 16, 2018
0.0.0 Mar 2, 2018

#200 in #svd2rust

Custom license

50K SLoC

GLSL 50K SLoC Rust 117 SLoC // 0.0% comments

Unified STM32 device support crate

The goal of this project is to unify support for all STM32 parts into one crate rather than a huge number of separate crates. In order to try to achieve this, the original ST SVD files have been split up so that each peripheral is in its own independent fragment file. These can then be mixed-and-matched and reused across all product families. Unfortunately, it isn't possible for svd2rust to actually generate a single crate supporting all devices, nor is it possible to create a mega-crate that combines multiple svd2rust crates together. Issues arise with things such as the global vector table. Therefore, currently this crate is effectively a "meta-crate" that produces a tool that outputs a new crate when it is run.

For example, to generate a crate for the STM32F405 device, use

./target/debug/stm32 stm32f405 >lib.rs

Note that "the point" of this repository is the maintenance of the files under svd/ and not the actual tool itself (which is just a thin wrapper around svd2rust).

Currently supported devices

  • STM32F405/415/407/417
  • STM32F427/437
  • STM32F429/439

Big thanks to

  • svd2rust
  • libopencm3 for giving hints as to how peripherals are shared across product lines