Python中的嵌入式Linux设备树解析器?

7 投票
3 回答
4187 浏览
提问于 2025-04-16 00:48

我想做一个工具,用来验证嵌入式Linux的*.dts(设备树源文件)或*.dtb(二进制文件)是否符合另一个工具的XML配置文件。所以,我需要解析这些dts或dtb文件。我希望用Python来实现这个功能。有没有人知道有什么Python库或者工具可以解析dts或dtb文件?如果能找到一个Python版本的设备树编译器(dtc)就太好了,但我还没见过这样的东西。

3 个回答

0

libfdt是用来解析dtb文件的,而不是设备树文件(dts/dtsi),所以看libfdt可能对你没有帮助。而且你不能简单地用SWIG来为现有的设备解析器创建一个Python绑定。因为dtc使用lex/yacc作为解析工具,它的语法定义在内核中可以找到,所以我建议你可以在Python中使用lex/yacc([PLY]:http://www.dabeaz.com/ply/)来自己编写一个设备树解析器。

1

目前还没有针对libfdt(一个用于处理设备树的库,和dtc一起提供)的Python绑定,但其实创建一个并不复杂。

如果你有兴趣做这个,Python的文档里有关于如何用C语言模块扩展Python的一些内容:http://docs.python.org/release/2.6/extending/extending.html。你可以使用swig这个工具,它可以自动生成Python和C之间的接口,这样你只需要写一个小的swig配置文件就可以了。

如果你真的去做了这件事,记得给devicetree-discuss@lists.ozlabs.org发个邮件,我们很想知道你的进展!

2

看起来,Zephyr项目(一个使用设备树的实时操作系统)有一个比较通用的Python模块叫做dtlib,用于解析设备树源文件。这个模块是Zephyr源代码的一部分,存放在scripts/dts/dtlib.py

更新于2021年12月

似乎这个模块已经被分离到一个独立的仓库,地址是https://github.com/zephyrproject-rtos/python-devicetree

撰写回答