示例内容 示例: a. Arrays of cells : cell就是一个32位的数据interrupts = <17 0xc>;b. 64bit数据使用2个cell来表示:clock-frequency = <0x00000001 0x00000000>;c. A null-terminated string (有结束符的字符串):compatible = “simple-bus”;d. A bytestring(字节序列) :local-mac-address = [00 ...
在.dts 设备树文件中,可以通过“#include”来引用.h、 .dtsi 和.dts 文件。 一般.dtsi 文件用于描述 SOC 的内部外设信息,比如 CPU 架构、主频、外设寄存器地址范围,比如 UART、 IIC 等等。比如 imx6ull.dtsi 就是描述 I.MX6ULL 这颗 SOC 内部外设情况信息的,内容如下: #include #include #include #...
至此,系统平台上的所有已配置的总线和设备将被注册到系统中。 注意:不是dtsi文件中所有的节点都会被注册,在注册总线和设备时,会对dts节点的状态作一个判断,如果节点里面的status属性没有被定义, 或者status属性被定义了并且值被设为“ok”或者“okay”,其他情况则不被注册到系统中。 (2)使用DTS注册总线设备的过...
Arm系统启动,硬件设备可以通过DTS(devicetree)或ACPI引导初始化,这里只讲DTS方式,ACPI是由BIOS配置。 如上图,一般来说,arm内核通过dts引导启动,需要内核Image、dtb和filesystem,其中dtb是由dts通过dtc工具生成,里面包括初始化设备的硬件信息。内核Image启动过程中会解析dtb中内容,并根据信息初始化设备平台。这里提一句,...
假设有如下重复定义的DTS片段: 代码语言:txt 复制 &cpu0 { compatible = "arm,cortex-a72"; }; &cpu0 { // 重复定义 clock-frequency = <1500000000>; }; 解决方法是将相关属性合并到单一节点中: 代码语言:txt 复制 &cpu0 { compatible = "arm,cortex-a72"; clock-frequency = <1500000000>; }; ...
总结起来就是根据dts配置和linux运行模式,来选择注册对应中断和选择寄存器,来初始化arch_timer的一些功能函数指针,并最终向系统注册ClockEvent device。从开机0s的log中看到arch_timer的初始化情况,初始化了cp15和mmio 2种定时器,时钟频率都是19.2MHz,都是虚拟的timer。系统启动早期只初始化cpu0的arch_timer,然后通过...
设备树文件(Device Tree),描述设备树的文件叫做DTS((Device Tree Source),这个DTS文件采用树形结构描述板级设备,也就是开发板上的设备信息。 设备树结构示意图: DTS、DTB和DTC DTS是设备树源码文件,扩展名为.dts。 DTB是将DTS文件编译以后得到的二进制文件,将.dts文件编译成为.dtb需要用到DTC工具。
clock-frequency = <19200000>; }; i2c_0: i2c@f9967000 {/* BLSP#11 */ cell-index = <0>; compatible ="qcom,i2c-qup"; reg = <0xf9967000 0x1000="">; #address-cells = <1>; #size-cells = <0>; reg-names ="qup_phys_addr"; ...
b. 64bit数据使用2个cell来表示:clock-frequency = <0x00000001 0x00000000>; c. A null-terminated string (有结束符的字符串):compatible = “simple-bus”; d. A bytestring(字节序列) :local-mac-address = [00 00 12 34 56 78];每个byte使用2个16进制数来表示 ...
clock-frequency = <19200000>; }; i2c_0: i2c@f9967000 { /* BLSP#11 */ cell-index = <0>; compatible = "qcom,i2c-qup"; reg = <0xf9967000 0x1000="">; #address-cells = <1>; #size-cells = <0>; reg-names = "qup_phys_addr"; ...