linux dts 设备树的理解与使用

文档:Documentation/devicetree/bindings 目录下

以前是platform的C语言使用,现在改为用dts的命令交互式的文件指定方式。

采用dts的方式进行替换platfrom,避免代码的冗余处理, 硬件的表现是采用主芯片-总线-控制器的这种方式,dts描述也是这样描述方法

 

1、dts的分类及具体命令使用

   a、   根节点兼容性

           根节点是采用compatible="", 

          兼容属性一般包括两个或两个以上的兼容性字符串,首个兼容性字符串是板子级别,后面一个兼容性字符串是芯片级别。 

          譬如板子arch/arm/boot/dts/vexpress-v2p-ca9.dts,

         .compatible="arm, vexpress, v2p-ca9","arm,vexpress"。

   b、 设备节点兼容性

         用于驱动和设备的绑定,兼容属性是一个字符串列表,列表中的第一个字符串表征了节点设备的确切设备,形式为:<manufacturer>,<model>,其后的字符串的表征可以兼容其它设备

           

   c、设备节点及label命名

            设备节点:遵循的组织形式为<name>[@<unit-address>],也可以为一个设备节点添加label, 之后可以通过&label的形式进行访问,这种引用是通过phandle进行。例:

           gpio:gpio@48000000 {

           }

    d、地址编码

          address-cells, size-cells, 这个暂时不太清楚使用,后面进行优化处理,size-cells 理解为地址长度, address-cells为地址, 比如 address-cells=1,  表示只用一个地址表示开始地址, address-cells, 需要两个reg<0,0,12>, 这两个0作为才能做起始地址

    e、中断连接

          

    f、GPIO、时钟、pinmux连接

2、常用的函数

   a、寻找节点

         of_find_compatible_node();

    b、读取属性

    c、内存映射

    d、解析中断   irq_of_parse_and_map();

 

3、dts从uboot到传递及编译方式

     a、.

     

posted @ 2021-11-08 10:46  cogitoergosum  阅读(672)  评论(0编辑  收藏  举报