• I.MX6U-驱动开发-4-linux设备树


    1.什么是设备树

    1.像树形结果的设备。树干是iic,spi,树尖是各类传感器

    2.在单片机裸机开发中,例如spi这种,各类信息如速度,引脚都是在.c文件里面写死的。这样就会导致linux内核中存在很多.c文件,因此为了减少这么多内容,把这些东西分离出来写到设备树中。

    2.DTS,DTB,DTC的关系

    .dts相当于.c,就是DTS源码文件。 

    DTC工具相当于gcc编译器,将dts编译为dtb。

    执行命令(先编译内核生成DTC):

    make dtbs       编译所有    

    make all         编译内核的时候默认编译方式

    make imx6ull_emmc_alientke.dtb    编译指定的dtb文件

    dtb相当于bin文件,也叫可执行文件

    3.DTS基本语法

    1.设备树也有头文件,扩展名为.dtsi

    对于头文件,存放的是通用的一些设备放在头文件中,如果是独有的需要单独追加放在dts中

    2.DTS也是从   开始,从 / 根节点开始描述设备信息

    3.在根节点信息外有 &cpu0这样的语句是追加

    4.node-name@unit-address,其中unit-address是设备地址,但也有可能不是

    5.对于 分开的两部分,前面是标签,后面是名字,引入标签是通过标签可以直接访问名字简化因为名字过长问题

    4.设备树在系统中的体现

    系统启动以后可以在根文件系统里面看到设备树的节点信息。

    4.1特殊节点

    aliases

    定义别名,但是一般使用&label标签进行别名设置

    chosen

    chosen 节点主要是为了 uboot 向 Linux 内核传递数据,重点是 bootargs 参数

    4.2特殊属性

    compatible:值是字符串,用来兼容性属性

    model:值是字符串,用来描述模块

    status:值是字符串,用来描述设备状态

    address-cells:值是无符号整型,用来描述拥有子节点设备中,子节点的的地址信息

    size-cells:值是无符号整型,用来描述拥有子节点设备中,子节点的的长度信息

    注意事项:这两个影响的是子节点。

    reg:值一般是(address,length),用于描 述设备地址空间资源信息,一般都是某个外设的寄存器地址范围信息

    rangges:值可以为空或者按照(child-bus-address,parent-bus-address,length)格式编写的数字矩阵

     name:字符串,被淘汰了

    device_type:字符串,此属性只能用于 cpu 节点或者 memory 节点

    根节点下的compatible:通过根节点的 compoatible 属性查看是否支持此设备,如果支持的话设备就会启动 Linux 内核

    5.OF操作函数

    1.驱动通过OF函数获取设备树属性内容。

    2.驱动要想获取设备树的节点内容,需要先找到节点

  • 相关阅读:
    软件安装攻略:EmEditor编辑器下载安装与使用
    顺序表第一部分(介绍篇),三部曲后面分别是实现和介绍
    S-Clustr(影子集群)僵尸网络@Мартин.
    Windows下自动云备份思源笔记到Gitee
    【消息队列】MQ02——Kafka
    自动化早已不是那个自动化了,谈一谈自动化测试现状和自我感受……
    WinForm TextBox默认中英文输入法设置
    【Linux】第十八站:进程等待
    python小知识——format函数的使用方法
    统计redis中key的数量
  • 原文地址:https://blog.csdn.net/m0_60524373/article/details/126056352