【问题标题】:Configuring custom recipe options from machine in yocto在 yocto 中从机器配置自定义配方选项
【发布时间】:2020-05-08 06:50:14
【问题描述】:

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

我希望能够为每台机器配置这些引脚,this question 的答案基本上可以回答。

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

# /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 ..."

等等

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

【问题讨论】:

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

标签: yocto bitbake openembedded


【解决方案1】:

.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 解释问题。

【讨论】:

    猜你喜欢
    • 2018-11-17
    • 2018-10-06
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    相关资源
    最近更新 更多