在 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 对问题的解释。
我们正在构建一个基于 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 对问题的解释。