免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 17442 | 回复: 4
打印 上一主题 下一主题

[内核入门] 请教linux启动过程中dtb的作用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-05 11:10 |只看该作者 |倒序浏览
各位大侠,
       dtb文件作用的描述是,使用dtb可以减少linux内核版本的数量。同一份linux 内核代码可以在多个板卡上运行,每个板卡可以使用自己的dtb文件。
关于dtb,我有以下疑问
1,是如何使用dtb文件的? 我的理解是,在linux内核启动过程中会解析dtb文件,根据dtb文件中设备列表进行加注各个外设的驱动模块。不知这样理解是否正确?
2,dtb文件中外设列表,和在linux内核中使能各个外设驱动模块(设置*或M)有什么关系? 是否可以这么理解,要想一份linux kernel可以运行在多块板卡上,必须在linux kernel配置中包括所有这些板卡的driver 模块,这样在linux启动过程中才能根据dtb 中的列表进行加载模块。
3,是否可以这么理解?PC机在启动时会自动扫描外设,而在嵌入式中,linux内核启动过程中只是解析dtb文件,从而加载对应的模块。
4,是否可以这么理解?编译linux内核时必须选择某外设模块,并且dtb中包括该外设的信息。在linux内核启动过程中才能自动加载该模块。




论坛徽章:
0
2 [报告]
发表于 2014-06-05 12:44 |只看该作者

1,是如何使用dtb文件的? 我的理解是,在linux内核启动过程中会解析dtb文件,根据dtb文件中设备列表进行加注各个外设的驱动模块。不知这样理解是否正确?

正确,解析dtb并创建platform device 过程请参见of_platform_populate和of_platform_bus_probe。

dtb文件中外设列表,和在linux内核中使能各个外设驱动模块(设置*或M)有什么关系? 是否可以这么理解,要想一份linux kernel可以运行在多块板卡上,必须在linux kernel配置中包括所有这些板卡的driver 模块,这样在linux启动过程中才能根据dtb 中的列表进行加载模块。


dtb里面最后被kernel解析,并创建为platform device, 相应的 你也必须要有platform driver 才行。

是否可以这么理解?PC机在启动时会自动扫描外设,而在嵌入式中,linux内核启动过程中只是解析dtb文件,从而加载对应的模块。


因为PC机基本就是暗指X86,这样X86架构上外设都是基于PCI或者PCIE总线,这类总线可以在启动的时候,动态扫描。 嵌入式里面,ARM和PowerPC, SOC 主要的设备控制器都是基于soc总线,其不像pci/pcie总线可以动态的扫描。所以需要dtb。

是否可以这么理解?编译linux内核时必须选择某外设模块,并且dtb中包括该外设的信息。在linux内核启动过程中才能自动加载该模块。





论坛徽章:
0
3 [报告]
发表于 2014-06-05 13:18 |只看该作者
回复 2# xs3c
非常感谢。
另外,确认一下,是否必须在menuconfig中设置对应的驱动模块为*,而不是M。因为要是编译为M的话,不会自动加载该驱动模块,即使dtb中有设备信息,也会因找不到配对的driver而不能驱动起对应的设备。
是否可以这样理解?谢谢


   

论坛徽章:
0
4 [报告]
发表于 2014-06-05 13:23 |只看该作者
回复 3# harvey_perfect
对,如果你是平台设备的话。当然你可以先启动脚本里面去显示的Load module


   

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
5 [报告]
发表于 2014-06-05 13:48 |只看该作者
本帖最后由 arm-linux-gcc 于 2014-06-05 13:49 编辑

要使用dtb,需要uboot启动内核时,在bootm命令中指定dtb的位置,格式为:

bootm uImage_addr ramdisk_addr dtb_addr

如果没有ramdisk,就需要写成bootm uImage_addr - dtb_addr,用“-”表示没有ramdisk
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP