By: fu linux
E-mail: fulinux@sina.com
Blog: https://blog.csdn.net/fulinus
喜欢的盆友欢迎点赞和订阅!
你的喜欢就是我写作的动力!
继续分析meta-yocto-bsp/conf/machine/beaglebone-yocto.conf配置文件的作用
MACHINE_EXTRA_RRECOMMENDS变量
beaglebone-yocto.conf中有这样一行:
MACHINE_EXTRA_RRECOMMENDS = "kernel-modules kernel-devicetree"
- 1
该变量表示在构建镜像时,可以不需要依赖变量列表中声明的外部包。如果变量列举的包不存在,构建镜像的整个过程也不会失败。但是对于完整功能的镜像(比如core-image-sato),这些包也是必须的。对于core-image-minimal或者core-image-full-cmdline镜像构建过程是可以不包含该变量声明的软件包。
例如,具有WiFi功能的机器,对于机器的内核镜像有没有wifi模块是不影响系统启动的。但是,如果需要构建功能更全面的图像,则需要启用WiFi。
在这种情况下,如果linux内核将WiFi驱动程序build-in进了镜像中,就不会生成内核之外的WiFi驱动模块(ko文件),此时不会因为找不到WiFi驱动模块而导致构建过程失败。
假设需要编译的WiFi的驱动模块名为kernel-module-examplewifi,那么久需要在${MACHINE}.conf文件中定义如下:
MACHINE_EXTRA_RRECOMMENDS += "kernel-module-examplewifi"
- 1
此变量仅影响基于packagegroup-base的images,不包括core-image-minimal或core-image-full-cmdline图像。
关于MACHINE_EXTRA_RRECOMMENDS变量的使用实例可以参考:
yocto-第29篇-源码树外添加Linux驱动模块(hello驱动实例)
参考如下:
kernel-devicetree设备树
之前的文章中有提到继承关系:
inherit kernel
- 1
对应的是meta/classes/kernel.bbclass文件,而kernel.bbclass类中又继承了devicetree类:
#meta/classes/kernel.bbclass
inherit kernel-devicetree
- 1
- 2
对应的是meta/classes/kernel-devicetree.bbclass文件。这个函数里面包含了生成设备树文件所需的函数或者说任务:
do_configure_append() {...}
do_compile_append() {...}
do_install_append() {...}
do_deploy_append() {...}
...
- 1
- 2
- 3
- 4
- 5
devicetree生成过程应当属于kernel recipe的一个子任务吧
这个过程可能有些复杂。但是只要使用下面的变量,声明需要输出的dtb文件即可:
KERNEL_DEVICETREE = "am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb"
- 1
yocto就会到
beaglebone/build/tmp/work-shared/beaglebone-yocto/kernel-source/arch/arm/boot/dts/
- 1
目录下找到:
am335x-bone.dts
am335x-boneblack.dts
am335x-bonegreen.dts
- 1
- 2
- 3
并生成相应的dtb文件。