linux设备树
基本知识:
一、各个文件介绍
1、DTS:描述设备树的文件,即采用树形结构描述板级设备
2、DTB:DTS 编译以后得到的二进制文件
3、DTC:将DTS编译为DTB的工具,编译命令-make dtbs
4、dtsi :描述 SOC 级信息,而DTS描述的 是板级文件,DTS可以引用dtsi文件
二、常用的标准属性
属性由键值对的形式出现,值可以是字符串、32位无符号整数、一组值、字符串列表
1、compatible 属性 “兼容性”属性
例子:compatible = "fsl,imx6ul-evk-wm8960","fsl,imx-audio-wm8960";前一个值(fsl)为厂商名,后一个值("imx6ul-evk-wm8960")为驱动模块名字
2、 model 属性
用来描述模块信息 ,比如名字
3、status 属性 设备状态
4、 #address-cells 和#size-cells 属性 描述字长(32位)
5、reg 属性(与地址有关)
例子:reg = <0x02280000 0x4000>;分别是起始地址与地址长度
6、 ranges 属性
例子:ranges = <0x0 0xe0000000 0x00100000>;分别是子总线地址空间的物理地址,父总线地址空间的物理地址(由父节点的#address-cells),子地址空间的长度
三、查看设备树信息
proc称为proc文件系统。它不是一个真实存在于磁盘上的文件系统,而是内核提供的一个接口,允许用户空间程序访问内核以及运行中的进程的信息,里边有设备树信息,通过查看device_tree文件查看设备树信息
四、OF函数
Linux 内核给我们提供了一系列的函数来获取设备树中的节点或者属性信息
例如:of_iomap 函数
用于直接内存映射,以前我们会通过 ioremap 函数来完成物理地址到虚拟地
址的映射,采用设备树以后就可以直接通过 of_iomap 函数来获取内存地址所对应的虚拟地址
五、设备树的编译
将linux内核源码拷贝进入Ubuntu中
从源码linux.code-workspace文件中进入vscode
在终端中
通过make dtbs编译所有的dts文件。如果要编译指定的dtbs make imx6ull-alientek-emmc.dtb