#svd #device-tree #generate

无需 std bin+lib svd-generator

将设备信息从扁平化的设备树转换为 SVD 描述

10 个版本 (5 个重大变更)

0.6.0 2024 年 4 月 28 日
0.5.0 2024 年 4 月 17 日
0.4.4 2024 年 4 月 11 日
0.4.2 2024 年 3 月 22 日
0.1.0 2024 年 1 月 28 日

嵌入式开发 中排名第 360

每月下载量 26

MIT 许可证 MIT

1MB
33K SLoC

svd-generator

用于从扁平化的设备树文件解析设备信息并生成 CMSIS-SVD 描述的转换工具。

构建

使用标准的 Rust 工作流程进行构建

$ cargo build [--release]

运行

svd-generator 生成 CLI 二进制文件,您可以使用以下命令运行

# Using `cargo-run`
$ cargo run -- -f <flatted-device-tree.dtb> [-o <output.svd>]

# Running directly using the binary file
$ svd-generator -f <flattened-device-tree.dtb> [-o <output.svd>]

默认输出文件是 out.svd

帮助信息

$ svd-generator -h

添加已知外设

只有已知外设才会添加 SVD 条目。

这是因为设备树文件中不包含寄存器定义。

寄存器定义通常从供应商提供的手册、固件/内核源代码和/或硬件定义(VHDL、Verilog 等)中解析。

目前,支持的已知外设数量有限。它们可以用作添加新外设的示例。

外设定义应放在 svd/peripheral 目录下作为模块。

例如,Synsopsys DesignWare APB I2C 外设定义:dw_apb_i2c

新外设应遵循传统的 Rust 模块命名模式

  • 外设模块:src/svd/peripheral/<peripheral-model-name>.rs
  • 外设子模块:src/svd/peripheral/<peripheral-model-name>/
  • 外设寄存器子模块:src/svd/peripheral/<peripheral-model-name>/registers.rs
  • 外设寄存器定义:src/svd/peripheral/<peripheral-model-name>/registers/{<reg0-name>.rs, <reg1-name>.rs}

以这种方式定义外设应允许在不同 SoC/板之间具有高度的复用性。

新条目也应添加到兼容枚举中:tree/compatible

进行中

目前,仅支持二进制编码的扁平化设备树(.dtb)。

正在努力支持源编码的设备树(.dts)。

依赖项

~4–14MB
~150K SLoC