Crate patch_svd[][src]

Crates.io Docs Actions Status grcov

patch-svd is a library that reads and patches SVD files from microcontroller manufacturers.

The motivation of this library is to get rid of errors in SVD files of individual microcontrollers that are shipped by the corresponding manufacturers.

Technically, this library performs three steps:

  1. Read SVD-files
  2. patch the loaded SVD informations with a generic patch in YAML-format
  3. Transfer the patched SVD informations into a dedicated structure that can be used in other crates

The syntax of the patch file format is documented in the crate patch-xml.

How to use patch-svd

Currently, patch-svd will require the unstable Rust toolchain because the external_doc-feature is used. The current state of this feature depends on this pull request.

let svd = r#"
    <device>
        <schemaVersion>1.0.0</schemaVersion>
        <name>ucName</name>
        <version>1.0.0</version>
        <description>Some description</description>
        <cpu>
            <name>CM0</name>
            <revision>r4</revision>
            <endian>little</endian>
            <mpuPresent>true</mpuPresent>
            <fpuPresent>true</fpuPresent>
            <nvicPrioBits>8</nvicPrioBits>
            <vendorSystickConfig>true</vendorSystickConfig>
        </cpu>
        <addressUnitBits>32</addressUnitBits>
        <width>32</width>
        <peripherals>
            <peripheral>
                <name>PeripheralName</name>
                <baseAddress>77</baseAddress>
            </peripheral>
        </peripherals>
    </device>
    "#;
let patch = r#"
    device:
        $modify:
            description: "Some other description"
    "#;
// Load SVD content, patch it and return it as Device structure
let result : patch_svd::output::Device = 
    patch_svd::get_patched_svd(svd.to_string(), patch.to_string()).unwrap();

Modules

output

Module with generated SVD structure

Functions

get_patched_svd

Patches an SVD-file and returns an appropriate data structure that is conform to the SVD specification.