2882|4

6562

帖子

9

TA的资源

版主

楼主
 

《原子Linux驱动开发》基础阅读3:Linux设备树 [复制链接]

        一谈到linux就离不开设备树的概念,那么到底什么是设备树呢?可以说,掌握设备树是linux驱动开发人员必备的技能。在新版的linux中,arm相关的驱动全部采用设备树,包括咱们本次使用的stm32mp135的正点原子开发版,其开发都是基于设备树的。接下来,让我们一起来一起学习一下设备树的基本语法。
设备树顾名思义,一个就是设备,一个就是像树的形状描述设备,描述设备树的文件叫做dts,采用树形结构描述板级设备,也就是开发板上的设备信息,比如CPU数量,内存基地址,接口都接了哪些设备等等。
        树的主干就是系统总线,各种控制器连接到系统总线成为主线上的分支,dts文件的主要功能就是结构性的描述板子上的设备信息,当然其描述相应的是需要符合一些语法规则的。
        Dts文件是设备树源码文件,其编译形成后的二进制文件为dtb文件,就像c文件编译成o文件需要GCC编译器,Dts文件编译成dtb文件需要dtc工具,通过Mark all命令,可以将linux源码中的所有东西进行编译。
        Dts文件基本上不需要我们从头到尾重写,大多数都由soc厂商提供,我们可以在其上进行修改,我们需要掌握dts文件的语法才能顺利的修改相应文件,dts语法相当人性化,是一种ASCII文本文件。
        设备树同样也支持头文件,设备树的头文件扩展名为dtsi,同时dts文件也可以引用c语言中的h文件作为头文件。建议编写设备树头文件时候最好选择dtsi作为扩展名。一般头文件用于描述soc的内部外设信息,比如CPU架构、主频、外设寄存器地址范围等等
        设备节点就是设备树中采用树状结构描述的每一个设备信息,每一个设备就是一个节点,通过一些属性信息来描述节点信息。
        那么节点又是由什么组成的呢?节点就是具体的设备,不同的设备需要的属性不同,用户可以自定义属性,当然还有很多标准属性linux下的,很多外设驱动都会使用这些标准属性:
            compatible(兼容性):这是设备树中最重要的属性之一,用于指定设备的兼容性信息。通常以字符串数组的形式表示,包含设备的厂商名和设备型号。例如:compatible = "vendor,model"
            reg(地址和大小):reg属性用于指定设备的地址和大小。对于地址空间较大的设备,通常使用一个或多个reg属性来描述。例如:reg = <base-address size>
            status(状态):用于指定设备的状态,通常为"okay"或"disabled"。当设备处于"okay"状态时表示设备正常工作,而"disabled"状态表示设备被禁用。例如:status = "okay"
            name(设备名称):name属性用于指定设备树节点的名称,通常以字符串形式表示。这个属性提供了一个唯一标识符,有助于在设备树中识别和引用特定的设备节点。例如:name = "my_device"
            device_type(设备类型):device_type属性用于指定设备的类型,以字符串形式表示。这个属性有助于操作系统确定如何处理该设备节点。例如,对于一个SPI设备,可以指定device_type = "spi"。这有助于操作系统加载适当的驱动程序。

最新回复

在原厂提供的SDK或者BSP基础上开发自己的控制器时,根据实际电路设计修改设备树是非常关键的。   详情 回复 发表于 2024-3-22 09:26
点赞 关注
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引


回复
举报

7063

帖子

11

TA的资源

版主

沙发
 
设备树是linux驱动的最基本知识,看了一下就一些类似结构体的描述吧。
 
 

回复

308

帖子

0

TA的资源

纯净的硅(初级)

板凳
 

看了下,大概有了印象,可能还需要进一步的看代码。

点评

是的,哪些结构体还是很关键的    详情 回复 发表于 2024-3-12 15:35
 
 
 

回复

6562

帖子

9

TA的资源

版主

4
 
13620203064 发表于 2024-3-12 14:48 看了下,大概有了印象,可能还需要进一步的看代码。

是的,哪些结构体还是很关键的  

 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复

1286

帖子

4

TA的资源

版主

5
 

在原厂提供的SDK或者BSP基础上开发自己的控制器时,根据实际电路设计修改设备树是非常关键的。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表