A converter tool that converts Atmel's atdf files into svd. The primary usecase for this is to then use the svd files with svd2rust
to create safe abstractions for register access.
USAGE:
atdf2svd <atdf_path> [svd_path]
Install atdf2svd using
$ cargo install -f atdf2svd
There are two "post-processors" running after the conversion (patch.rs
):
signals_to_port_fields
: Patches the registers for allPORTx
peripherals to contain fields for each existing pin. Pin IDs are taken from the<signals />
tag of the port instance.remove_unsafe_cpu_regs
: Removes theSREG
(Status Register) andSP
(Stack Pointer) registers as they should not be safely accessible.
Unfortunately, the provided atdf files are often not completely correct or contain undescriptive names. One big issue is that enumerated values are often just named VAL_0xXX
. I recommend patching the generated svd files using the patch tool written by the stm32-rs project.
atdf2svd
is licensed under the GPL v3
license. See LICENSE or https://www.gnu.org/licenses/gpl-3.0.en.html for more info.