从yocto中的计算机配置自定义配方选项

从yocto中的计算机配置自定义配方选项,yocto,bitbake,openembedded,Yocto,Bitbake,Openembedded,我们正在构建一个基于poky/oe的系统,以在几个不同版本的板上运行,这些版本有一些细微的差异。一个例子是各板之间不同的SWD/JTAG IO引脚 我希望能够在每台机器上配置这些引脚,答案基本上是正确的 然而,我宁愿能够从机器上设置这些选项,也不必在配方中进行每台机器的配置。也就是说,我希望能够做这样的事情: # /conf/machine/my_machine_v1.conf OPENOCD_SWCLK_PIN = "25" OPENOCD_SWDIO_PIN = "24" OPENOCD_S

我们正在构建一个基于poky/oe的系统,以在几个不同版本的板上运行,这些版本有一些细微的差异。一个例子是各板之间不同的SWD/JTAG 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\u SWCLK\u PIN}

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

do_install(){
#echo“$OPENOCD_SWCLK_PIN”>${D}/some_file.cfg#不起作用
echo“${OPENOCD_SWCLK_PIN}”>${D}/some_file.cfg#工作,
#OPENOCD_CWCLK_PIN可以在配方文件、distro.conf或machine.conf等中设置。
}

感谢irc上的paulbarker解释了这个问题。

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

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

do_install(){
#echo“$OPENOCD_SWCLK_PIN”>${D}/some_file.cfg#不起作用
echo“${OPENOCD_SWCLK_PIN}”>${D}/some_file.cfg#工作,
#OPENOCD_CWCLK_PIN可以在配方文件、distro.conf或machine.conf等中设置。
}

感谢irc上的paulbarker解释了这个问题。

引脚配置与内核相关。我不是内核方面的专家,但我认为pins配置是编译成内核文件的,我怀疑它们是否容易更改。无论如何,您可能应该添加内核标记。再想一想,也许您可以为每个管脚配置创建单独的dtb,然后在启动时更改dtb。我需要将管脚写入配置文件,还有更多类似的选项。一般来说,我是在问我是否能够从机器上配置食谱,而不是反过来。不管怎样,我认为设备树都不会帮我。你可以使用扩展SDK在硬件上重建Yocto映像,但这会增加映像的大小。我认为这不是您在生产中想要做的事情。不是从实际的硬件,而是从
machine/my machine.conf
文件。我认为最初的问题相当清楚…引脚配置与内核相关。我不是内核方面的专家,但我认为pins配置是编译成内核文件的,我怀疑它们是否容易更改。无论如何,您可能应该添加内核标记。再想一想,也许您可以为每个管脚配置创建单独的dtb,然后在启动时更改dtb。我需要将管脚写入配置文件,还有更多类似的选项。一般来说,我是在问我是否能够从机器上配置食谱,而不是反过来。不管怎样,我认为设备树都不会帮我。你可以使用扩展SDK在硬件上重建Yocto映像,但这会增加映像的大小。我认为这不是您在生产中想要做的事情。不是从实际的硬件,而是从
machine/my machine.conf
文件。我认为最初的问题相当清楚。。。