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 在 嵌入式开发
155KB
648 代码行
patch-svd 是一个库,用于从微控制器制造商读取和修补 SVD 文件。
该库的动机是消除由相应制造商提供的单个微控制器 SVD 文件中的错误。
技术上,该库执行以下三个步骤
- 读取 SVD 文件
- 使用 YAML 格式的通用修补程序修补已加载的 SVD 信息
- 将修补后的 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