Kernel[Device Tree] - 1. 设备树的由来

内核代码中,arch文件夹下,是各个架构相关的代码,arm也在里面。

arm子文件夹下,有mach-xxx的目录,就是针对各个芯片类型的,比如mach-imx就是imx系列的芯片。

再里面就是具体的芯片或SOC,比如mach-imx6ul.c,这就是使用iMX6UL或者iMX6uLL的芯片的内容。

最开始,内核里的这部分代码,在内核源码中,存在大量对板级细节信息描述的代码, board specific函数。

这些代码充斥在/arch/arm/plat-xxx和/arch/arm/mach-xxx目录,对内核而言这些platform设备、resource、i2c_board_info、spi_board_info以及各种硬件的platform_data绝大多数纯属垃圾冗余代码。

这样每款芯片,不同的板子,都要有相应的代码维护。

但这些代码和一些描述硬件信息的静态table,对内核来讲毫无意义,徒增臃肿,应该避免。

否则维护这些代码和merge这些改动,工作量大,容易冲突。

ARM也是个特例,不像Intel芯片架构固定和易于管理,ARM很多应用于嵌入式,而且使用了license IP的方式,让很多厂商加入ARM生态系统,但芯片厂商太多,就有越来越多的ARM平台的代码加入内核,每个厂商的周边硬件的设计又不同,就给内核代码维护带来麻烦。而这些代码中还会有大量重复。

在Linux kernel维护和release中,就出现了在merge windows中,对ARM相关部分的patch的merge,有一些conflicts要处理,虽然用邮件做了详细说明了改动内容和冲突如何结局,但这个pull request还是引起了争议。

2011年3月17日邮件中Linux原话:Gaah. Guys, this whole ARM thing is a f*cking pain in the ass.

https://lkml.org/lkml/2011/3/17/492

From  Linus Torvalds <>

Date  Thu, 17 Mar 2011 19:50:36 -0700

Subject  Re: [GIT PULL] omap changes for v2.6.39 merge window

On Thu, Mar 17, 2011 at 11:30 AM, Tony Lindgren <tony@atomide.com> wrote:

>

> Please pull omap changes for this merge wi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜流冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值