设备树和设备树blob究竟是什么?在哪里可以获得特定linux版本的源代码?我在xilinx芯片上运行linux时发现了这样的名称(有ARM 9),例如:这里
发布于 2014-03-08 06:54:04
你试过咨询Xilinx吗?
看上去它有你想要的一切。有指向包含代码的git存储库的链接,以及关于如何构建它的说明。下面是下载设备树源的命令。
$ git clone git://github.com/Xilinx/device-tree.gitXilinx网站还提供了一个优秀的快速入门资源,如果您是他们的工具链工作流程新手。下面是一个图表,它显示了设备树的位置:

鉴于这些细节对于Xilinx平台的Linux差异非常特殊,我不打算在U&L上包含上述细节以外的任何细节,因为这个wiki是由硬件供应商Xilinx维护的,Xilinx支持内核的那个版本,供他们的硬件产品使用。
发布于 2014-03-08 06:39:02
谷歌指的是维基百科,它指的是www.devicetree.org,它将您的“设备树”描述为:
设备树是一种用于描述硬件的数据结构。硬件的许多方面可以用在启动时传递给操作系统的数据结构来描述,而不是将设备的每一个细节硬编码到操作系统中。开放固件和独立扁平设备树(FDT)形式都使用设备树。
看起来这是一个与/dev/下的“设备树”完全不同的“设备树”。
发布于 2017-07-22 05:46:30
reg + interrupt虚拟设备实例
正如其他人所说,设备树是由硬件供应商提供的,它告诉Linux内核如何与设备对话。
也许Linux内核需要的两个最显著的信息是:
我们的示例将向versatilepb设备树中添加以下设备树节点,QEMU将使用该树的原因是-M versatilepb:
lkmc_platform_device@101e9000 {
compatible = "lkmc_platform_device";
reg = <0x101e9000 0x1000>;
interrupts = <18>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&pclk>;
clock-names = "apb_pclk";
lkmc-asdf = <0x12345678>;
};然后,通过使用Linux内核模块与设备交互,我们将测试以下DTS特性:
这些是本示例的主要组成部分:
.dtsLinux分叉上的修补程序 reg和interrupt匹配在QEMU通用机器(表示SoC)中硬编码的数字。compatible与内核模块中的platform_driver.name匹配,并通知内核哪个模块将处理此设备。lkmc-asdf = <0x12345678>;,它是用of_property_read_u32读取的-dtb参数将设备树传递给QEMU的固件-M versatilepb设备树有许多我们还没有讨论过的特性,但是这个例子应该让您开始学习,并且可以轻松地使用任何新的特性。
进一步资源:
dtc一起玩纯粹的句法问题。例如,它展示了节点如何简单地被路径合并:https://unix.stackexchange.com/a/375923/32558https://unix.stackexchange.com/questions/118683
复制相似问题