yocto-第39篇-beaglebone-yocto.conf配置分析之MACHINE_EXTRA_RRECOMMENDS变量

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文件。