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 @   cogitoergosum  阅读(712)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2017-11-08 字库、 字体、 编码之间的关系
点击右上角即可分享
微信分享提示