您的位置:首页 > 其它

从设备树的引入,能去分析的一些事

2015-12-03 20:39 211 查看
Linux3.x后设备树的引入(背后是Linus大神一声吼:fucking code,详细可以参考下http://www.wowotech.net/device_model/why-dt.html),大家可以多看看www.wowotech.net/中的文章,很犀利。

Linux设备树的引入个人觉得其实为了就是实现下面三点:

1、减少了内核为支持新硬件而需要的改变

2、提高代码重用,加速了Linux支持包的开发

3、使得单个内核镜像能支持多个系统

从上面可以看出来,也就是Linux内核尽可能不需要修改,但是不同厂家或者开发者的板子

不可能都一样的。那么也就是说Linux内核对这些不同板子的支持,可以像平台设备那样,

把内存的大小,外设的接口,传给内核,内核进行接受处理从而启动内核。

问:那么什么时候传递这些信息就来?

答:启动Linux系统(毕竟板子使用的时钟,ddr,其他外设可能不一样)

问:谁来传递这些信息?

答:系统的启动也就是三个部分:bootloader kernel rootfs

那么也只能是bootloader中传递进来,简单的说也就是u-boot

问: u-boot传递这些信息进入,那么Linux内核如何知道?

答:首先u-boot肯定要把这些信息放入到某个地址,然后在把地址告诉Linnux内核。

问:这个地址有什么限制?(针对于u-boot)

答:没有,只要不覆盖掉u-boot运行代码和即将启动Linux内核所占用的空间即可

问: 如何把地址告诉内核?(针对于u-boot)

答:使用bootm命令,形式:bootm [kernel] [rootfs] [devicetree]

比如:bootm 40000000 - 4100000 (-表示无)

问:这些信息用什么来承载,最终需要变成二进制烧写到内存?

答:这些信息叫做使用.dts文件来承载,需要经过dtc编译生成.dtb才能烧写到内存

note: .dts文件代表就是一个board,不同的板子相同的CPU的话,将会有很多信息是一样的,那么使用.dtsi来描述

也就是说.dts包含.dtsi

知道上面这些东西,那么就可以来想象下,既然最终要给kernel,也就说这段信息传递过去后,

kernel得能够明白是什么东西。对于人类来说,就是约定。那么对于程序来说,一样可以约定好。

而这种约定,简单来说就是标准,协议,语法等等,所以接下来,来学习下设备树的语法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: