Menu Close

内核启动过程中解析设备树

此文章介绍了如何在 Linux 内核启动时解析设备树。

相关参考文章:SOC 教学教案

 

Linux内核解析DTB文件的过程如下:

start_kernel()

setup_arch()

unflatten_device_tree()

_unflatten_device_tree()

unflatten_dt_node()

解析DTB文件中的每个节点

我们可以看到start_kernel函数用于处理设备树节点的解析,并且实际进行解析的函数是unflatten_dt_node()。Linux内核启动时它将解析每个节点的信息,并在根目录下的 /proc/device-tree中创建不同文件夹。如下所示。

%title插图%num

注意每个文件夹都是根节点的一个子节点,例如“aliases”,“cpus”,“chosen”,以及“amba”。我们可以看到根节点属性表示为个别独立文件,例如“#address-cells”,“#size-cells”,“compatible”,和“name”。我们可以使用cat指令查看它的内容。作为例子我们将查看“compatible”。

%title插图%num

我们可以看到它的内容是“xlnx,zynq-7000”。这与zynq-7000.dtsi中根节点的compatible属性值相符。如前所述,/proc/device-tree目录是根文件系统下设备树的体现,并且根据树状结构组织。我们可以在 /proc/device-tree/amba中看到amba的子节点。

%title插图%num

Posted in 教材与教案

发表评论

相关链接