Ezi*_*zio 15 linux linux-kernel device-tree
我将在我的开发板上启动Linux,我需要一个dts文件(设备树文件)来描述整个硬件.但是我对这个文件的语法知之甚少,这还不足以在主板上正确运行Linux.
我现在知道的只是如何描述一个单元的中断号,频率,地址,父单元及其兼容的驱动程序类型(如下所述):
ps7_scuwdt_0: ps7-scuwdt@f8f00620 {
compatible = "xlnx,ps7-scuwdt-1.00.a";
device_type = "watchdog";
interrupt-parent = <&ps7_scugic_0>;
interrupts = < 1 14 769 >;
reg = < 0xf8f00620 0xe0 >;
} ;
Run Code Online (Sandbox Code Playgroud)
其他高级用法或语法对我来说并不熟悉.
带有 QEMU 虚拟设备的最小reg+interrupt示例
我们的示例将以下设备树节点添加到versatilepbQEMU 将使用的设备树中-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>;
};
Run Code Online (Sandbox Code Playgroud)
然后,通过使用 Linux 内核模块与设备交互,我们将测试以下 DTS 功能:
这些是示例的主要组件:
.dtsLinux fork 上的 Linux多功能补丁
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/32558