我们正在构建一个基于pokyoe的系统,以在几个不同版本的板子上运行,这些板子有一些小的差异。其中一个例子是不同板子的SWDJTAG IO引脚不同。
我希望能够对每台机器的这些引脚进行配置,这就是我们的答案。这个问题 基本上都能回答。
但是,我更希望能够设置这些选项。从机 而不是在配方中对每台机器进行配置。即,我希望能够做这样的事情。
# /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对这个问题的解释。