dts-设备树(Device Tree)

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
};

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值