在 yocto 中从机器配置自定义配方选项

Configuring custom recipe options from machine in yocto

我们正在构建一个基于 poky/oe 的系统以 运行 在几个不同版本的主板上,它们有一些细微差别。一个例子是 SWD/JTAG IO 引脚因板而异。

我希望能够为每台机器配置这些引脚, 的答案基本上就是答案。

但是,我宁愿能够 从机器 设置这些选项,也不愿在配方中对每台机器进行配置。即,id 喜欢能够做这样的事情:

# /conf/machine/my_machine_v1.conf
OPENOCD_SWCLK_PIN = "25"
OPENOCD_SWDIO_PIN = "24"
OPENOCD_SRST_PIN  = "23"

然后在我的安装 openocd 配置文件的食谱中是这样的:

SWCLK_PIN = ".... get machine config SWCLK_PIN ..."

等等

这样我就不用为每台新机器修改配方了。可能吗?

.conf 文件中设置的任何变量都是全局变量,即在所有配方中都可用。因此可以使用 ${OPENOCD_SWCLK_PIN}

简单地从配方中读取变量

让我措手不及的是 bitbake 扩展了内联 shell 脚本中的变量而不是在环境中设置它们,并且 bitbake 需要 ${XXX}.

中的大括号
do_install() {
  # echo "$OPENOCD_SWCLK_PIN" >> ${D}/some_file.cfg # WONT WORK
  echo "${OPENOCD_SWCLK_PIN}" >> ${D}/some_file.cfg # Works,
  # OPENOCD_CWCLK_PIN can be set in the recipe file, distro.conf or machine.conf etc.
}

感谢 irc 上的 paulbarker 对问题的解释。