dts-设备树(Device Tree)
2018-03-24 23:20
218 查看
1. 什么是dts?
在Linux3.x版本后,arch/arm/plat-xxx和arch/arm/mach-xxx中,描述板级细节的代码(比如platform_device、i2c_board_info等)被大量取消,取而代之的是设备树,其目录位于arch/arm/boot/dts
设备树就是由一些属性和节点组成的一种数据结构,属性一般会赋予一些属性值,而节点则可能是是由属性跟其下的子节点构成。
2 . 设备树的格式
kernel/Documentation/devicetree/bindings/mmc 具体的某个子系统的填充格式在内核中都会有对应的说明。
3. 在没有设备树的内核中我们是怎么在进行驱动移植的
例: 移植一个dm9000网卡到s3c2440平台,我们需要做的事情有哪些呢?
首先我们要做的事情是构建一个平台设备 platform_device s3c_device_dm9k 的结构体 ,在结构体中有与驱动匹配的.name ,id, resource,platform_data等,然后平台设备添加到设备的结构提中,再将结构体注册到内核中去。
构建resource :里面是配置的寄存器资源,这里的配置与我们的硬件是相关的。
platform_data: 配置的是网卡的一些特有特性。
添加头文件,控制宏,进入图形化界面配置device。
最后编译检查报错,烧写到开发板中测试功能
4. 在linux3.x以上的内核中使用了设备树后,我们的驱动移植就变得简单多了。
通过内核中的说明文档提供的demo格式,添加我们的硬件参数即可,
添加的目录是在arch/arm/boot/下面,在这个目录下面会有两种文件dts和dtsi,dtsi后缀的文件是把平台的共有特性抽象出来的的文件,dts中则是具体的某个产品文件,我们的修改是在dts中。
Example:
ethernet-phy@0 {
compatible = = "dm9k"; //匹配内核中Platform_driver
linux,phandle = <2452000> //起始地址
interrupt-parent = <40000>; //地址长度
interrupts = <35 1>; //中断
reg = <0>; //寄存器
device_type = "ethernet-phy"; //设备type
};
在Linux3.x版本后,arch/arm/plat-xxx和arch/arm/mach-xxx中,描述板级细节的代码(比如platform_device、i2c_board_info等)被大量取消,取而代之的是设备树,其目录位于arch/arm/boot/dts
设备树就是由一些属性和节点组成的一种数据结构,属性一般会赋予一些属性值,而节点则可能是是由属性跟其下的子节点构成。
2 . 设备树的格式
kernel/Documentation/devicetree/bindings/mmc 具体的某个子系统的填充格式在内核中都会有对应的说明。
3. 在没有设备树的内核中我们是怎么在进行驱动移植的
例: 移植一个dm9000网卡到s3c2440平台,我们需要做的事情有哪些呢?
首先我们要做的事情是构建一个平台设备 platform_device s3c_device_dm9k 的结构体 ,在结构体中有与驱动匹配的.name ,id, resource,platform_data等,然后平台设备添加到设备的结构提中,再将结构体注册到内核中去。
构建resource :里面是配置的寄存器资源,这里的配置与我们的硬件是相关的。
platform_data: 配置的是网卡的一些特有特性。
添加头文件,控制宏,进入图形化界面配置device。
最后编译检查报错,烧写到开发板中测试功能
4. 在linux3.x以上的内核中使用了设备树后,我们的驱动移植就变得简单多了。
通过内核中的说明文档提供的demo格式,添加我们的硬件参数即可,
添加的目录是在arch/arm/boot/下面,在这个目录下面会有两种文件dts和dtsi,dtsi后缀的文件是把平台的共有特性抽象出来的的文件,dts中则是具体的某个产品文件,我们的修改是在dts中。
Example:
ethernet-phy@0 {
compatible = = "dm9k"; //匹配内核中Platform_driver
linux,phandle = <2452000> //起始地址
interrupt-parent = <40000>; //地址长度
interrupts = <35 1>; //中断
reg = <0>; //寄存器
device_type = "ethernet-phy"; //设备type
};
相关文章推荐
- [ZedBoard移植嵌入式Linux教程(4)]创建设备树(Device-Tree)文件dts
- 内核3.x版本之后设备树(device tree)机制
- Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇)
- linux Linux 3.x的设备树(Device Tree) dts 介绍
- Device Tree Usage(理解DTS文件语法)
- 设备树(device tree)学习笔记一
- Linux 设备树(Device Tree)简介
- 在Linux DeviceTree增添dtsi文件并在驱动中读取节点信息写入sys文件系统
- ARM Linux 3.x 的设备树(Device Tree)之DTB、DTS
- 内核3.x版本之后设备树(device tree)机制
- 内核3.x版本之后设备树(device tree)机制
- 设备树(Device Tree)
- 在Linux DeviceTree增添dtsi文件并在驱动中读取节点信息写入sys文件系统
- 设备树(Device Tree)(完整设备路径名(Full Device Pathnames))
- 设备树(Device Tree)
- compile devicetree.dts error: Unable to parse input tree
- Device Tree Usage( DTS文件语法)
- Device Tree Usage(理解DTS文件语法)
- ARM Linux 3.x 的设备树(Device Tree)之DTB、DTS
- 在Linux DeviceTree添加dtsi文件并在驱动中读取节点信息写入sys文件系统