android底层驱动学习之设备树驱动及设备匹配过程

本文探讨了Linux内核2.6.x版本中设备树的引入原因,以解决平台和硬件特定适配代码的问题。介绍了设备树的基本数据格式,以及在ARM Linux中的保存和启动方式。在设备匹配过程中,通过i2c_driver的compatible值与设备树节点值匹配来完成注册。

问题一:为什么需要设备树?

在目前广泛使用的Linux kernel 2.6.x版本中,对于不同平台、不同硬件,往往存在着大量的不同的、移植性差的板级描述代码,以达到对这些不同平台和不同硬件特殊适配的

需求。但是过多的平台、过的的不同硬件导致了这样的代码越来越多,比如arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码, platform设备、resource、

i2c_board_info、spi_board_info以及各种硬件的platform_data。在一些常见的芯片如s3c2410、s3c6410等板级目录,代码量在数万行。最终引发了Linux创始人Linus的不满,以

及强烈呼吁改变。


Devicetree基本数据格式:

Devicetree是一个树状结构,由节点(node)和属性(properties)构成,而属性就是成对出现的名字(key)和值(value),每个节点除了属性还可能有若干子节点如:

/ {
                node1 {
                        a-string-property = "A string";
                        a-string-list-property = "first string", "second string";
                        a-byte-data-property = [0x01 0x23 0x34 0x56];
     &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值