1,在linux内核启动过程中会解析dtb文件,根据dtb文件中设备列表进行加注各个外设的驱动模块。
2,PC机在启动时会自动扫描外设,而在嵌入式中,linux内核启动过程中只是解析dtb文件,从而加载对应的模块。
3,编译linux内核时必须选择某外设模块,并且dtb中包括该外设的信息。在linux内核启动过程中才能自动加载该模块。
要使用dtb,需要uboot启动内核时,在bootm命令中指定dtb的位置,格式为:
bootm uImage_addr ramdisk_addr dtb_addr
如果没有ramdisk,就需要写成bootm uImage_addr - dtb_addr,用“-”表示没有ramdisk
dtb是可以减少linux内核版本的数量的文件。同一份linux 内核代码可以在多个板卡上运行,每个板卡可以使用自己的dtb文件。
1,在linux内核启动过程中会解析dtb文件,根据dtb文件中设备列表进行加注各个外设的驱动模块。
2,PC机在启动时会自动扫描外设,而在嵌入式中,linux内核启动过程中只是解析dtb文件,从而加载对应的模块。
3,编译linux内核时必须选择某外设模块,并且dtb中包括该外设的信息。在linux内核启动过程中才能自动加载该模块。
dtb文件中外设列表,和在linux内核中使能各个外设驱动模块(设置*或M)有什么关系? 是否可以这么理解,要想一份linux kernel可以运行在多块板卡上,必须在linux kernel配置中包括所有这些板卡的driver 模块,这样在linux启动过程中才能根据dtb 中的列表进行加载模块。
因为PC机基本就是暗指X86,这样X86架构上外设都是基于PCI或者PCIE总线,这类总线可以在启动的时候,动态扫描。 嵌入式里面,ARM和PowerPC, SOC 主要的设备控制器都是基于soc总线,其不像pci/pcie总线可以动态的扫描。所以需要dtb。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)