我正在寻找一个实用程序来验证嵌入式(PPC 或 ARM)Linux *.dts(设备树源)或 *.dtb(二进制)文件与来自另一个工具的 XML 配置文件。所以,我需要解析 dts 或 dtb 文件。我真的很想用 Python 来做这件事。有谁知道解析 dts 或 dtb 文件的 Python 库或工具?设备树编译器 (dtc) 的 Python 实现将是完美的,但我还没有看到。
3 回答
Zephyr 项目(一个使用设备树的 RTOS)似乎带有一个相当通用的 Python 模块dtlib
来解析设备树源文件。该模块是 Zephyr 源代码树的一部分,存储在scripts/dts/dtlib.py中。
2021 年 12 月更新
似乎这已分离到其自己的存储库中,可在https://github.com/zephyrproject-rtos/python-devicetree获得。
目前还没有针对 libfdt(dtc 附带的设备树操作库)的 python 绑定,但创建一个应该相当简单。
如果您对此感兴趣,Python 文档有一些关于使用 c 模块扩展 python 的内容:http: //docs.python.org/release/2.6/extending/extending.html。该swig
实用程序可用于自动创建 Python-to-C 接口,因此您最终只需编写一个小的 swig 配置文件。
如果您最终这样做了,请通过 devicetree-discuss@lists.ozlabs.org 向人们发送电子邮件 - 我们很想听听您的进展!
libfdt 用于解析 dtb 文件而不是设备树文件 (dts/dtsi),因此读取 libfdt 可能无济于事,而且您不能简单地使用 SWIG 创建现有设备解析器的 python 绑定。由于 dtc 使用 lex/yacc 作为解析工具,并且它的语法定义在内核中可用,我建议你可以在 python 中使用 lex/yacc ([PLY]: http://www.dabeaz.com/ply/ ) 来编写你的自己的设备树解析器。