patch-svd

Crates.iopatch-svd
lib.rspatch-svd
version0.1.0
sourcesrc
created_at2020-07-21 21:06:29.361038
updated_at2021-04-18 20:26:43.820174
descriptionLoad and patch svd files.
homepage
repositoryhttps://github.com/VilNeo/patch-svd
max_upload_size
id267775
size1,975,318
(VilNeo)

documentation

README

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();
Commit count: 0

cargo fmt