#svd #patch #patch-file #file-format

nightly patch-svd

加载和修补 SVD 文件

5 个版本

0.1.0 2021 年 4 月 18 日
0.0.4 2021 年 4 月 7 日
0.0.3 2020 年 8 月 20 日
0.0.2 2020 年 7 月 22 日
0.0.1 2020 年 7 月 21 日

#1156嵌入式开发

MIT/Apache

155KB
648 代码行

Crates.io Docs Actions Status grcov

patch-svd 是一个库,用于从微控制器制造商读取和修补 SVD 文件。

该库的动机是消除由相应制造商提供的单个微控制器 SVD 文件中的错误。

技术上,该库执行以下三个步骤

  1. 读取 SVD 文件
  2. 使用 YAML 格式的通用修补程序修补已加载的 SVD 信息
  3. 将修补后的 SVD 信息传输到可以在其他 crate 中使用的专用结构

修补文件格式的语法在 crate patch-xml 中有文档说明。

如何使用 patch-svd

目前,由于使用了 external_doc-feature,patch-svd 将需要不稳定版本的 Rust 工具链。此功能的状态取决于 此拉取请求

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();

依赖关系

~5–6.5MB
~126K SLoC