2.1 KiB
Generating the PAC
Generate your own PAC from an SVD file.
In this exercise you will learn how to
- generate a PAC from an SVD file.
- format the generated code.
- split the single PAC file into one file per module.
Prerequisites
- usage of cargo install
- generating docs
Tasks
- Install
svd2rust
andform
via cargo. - Run
svd2rust
onnrf52.svd
using thecortex-m
target. - Split the file into its modules using
form
. - Format the generated file to make it readable.
- Check the documentation.
Step-by-Step Solution
✅ Install the necessary tools using the following commands:
cargo install svd2rust
cargo install form
✅ Go down-the-stack/dk-pac
. The folder contains the SVD file nrf52.svd
. We also provide a Cargo.toml
file, as it will not be generated by svd2rust.
✅ In the terminal, go to the SVD file's location. Run svd2rust
with the SVD file to generate a PAC using the cortex-m
target.
svd2rust --target cortex-m -i nrf52.svd
If you check the folder down-the-stack/dk-pac
now, you see three new files:
- lib.rs - the file that contains the generated code for the pac
- device.x - linker script that weakly aliases all the interrupt handlers to the default exception handler (DefaultHandler).
- build.rs - build script that places device.x somewhere the linker can find.
✅ Make an /src
and move the generated lib.rs
into it.
✅ Open the generated lib.rs
with an editor.
Notice how it's barely correctly formatted.
✅ Look at the PAC docs with the following command:
cargo doc --open
✅ Format the crate using cargo fmt
.
This does not change to the docs, but lib.rs
is a bit more readable.
✅ Use form to process the lib.rs
to split it into modules, so that each module in in it's own file.
form -i src/lib.rs -o src/
✅ Re-run cargo fmt
.
Troubleshooting
form
In case the form
command above causes problems, try this instead:
-
Move
lib.rs
out of/src
. -
Run the following command:
form -i ./lib.rs -o ./src