【问题标题】:Quick rebuild of device tree only with Yocto/bitbake?仅使用 Yocto/bitbake 快速重建设备树?
【发布时间】:2016-12-19 10:55:07
【问题描述】:

因此,每次我修改设备树时,我通常都会更改自定义配方中的 dts 并重建映像。重建需要很长时间,因为它重建了整个内核,然后需要构建映像并最终部署到目标设备。

我是否缺少任何仅重建设备树的技巧?

更新:

我已将 g0hl1n 的答案标记为正确答案,因为它是我问题的答案。但是,我发现在 Yocto 中使用内核非常麻烦:奇怪、长路径和每次重建时文件被覆盖的风险,内核源在 tmp/work-shared 中,而内核在 tmp/work 中构建.

相反,我已将内核开发移出 Yocto。 Yocto 具有用于创建 SDK 的良好工具(请参阅 populate_sdk 任务),并且通过快速重建和手动(或脚本化)部署,可以轻松设置内核开发环境。工作完成后,可以使用 git diff 将更改移动到配方中。

下一页的说明非常有帮助:http://jumpnowtek.com/beaglebone/Working-on-the-BeagleBone-kernel.html

【问题讨论】:

  • 我认为正确的答案是“不,没有正确的方法。请发送补丁”。

标签: linux-kernel yocto bitbake device-tree


【解决方案1】:

AFAIK 有两种不同的方法。

  1. 内核方式:使用内核提供的脚本
  • 切换到您的内核源代码目录 (<build dir>/tmp/work/<machine>/<kernel-name>/<kernel-version>/git/)
  • 执行设备树编译器:./scripts/dtc/dtc -I dts -O dtb -o ./devicetree.dtb path/to/devicetree.dts
  1. bitbake 方式:使用内核的部署作业
  • 致电$ bitbake <kernel-name> -f -c deploy
  • 然后可以在<build dir>/tmp/work/<machine>/<kernel-name>/<kernel-version>/build/arch/arm/boot/dts/中找到生成的device-tree-blob)

至少对我来说,两个版本都在快速测试中工作。

更新: 我刚刚在网上看到了用 yocto 构建 dtb 的第三个版本。 那个使用内核构建的 yocto 的devshell。 有关更多信息,请参阅https://splefty.blogspot.co.at/2015/09/compiling-device-tree-using-yocto.html 的原始作者页面。

【讨论】:

  • 谢谢。三个不错的选择。我更喜欢第二种方法,因为它最能保证与正常构建一样。而且我不能轻易使用 devshell,因为我想自动化它。现在,为了使其完美,我想运行两个任务:“bitbake -f -c unpack”从配方中复制所有 dts 和 dtsi,然后是 'bitbake -f -c deploy' 来构建 dtb。但不幸的是,“解包”命令使“部署”命令重建了整个内核。如果可以强制运行不重建内核的“部署”,那将是完美的!
  • 不能考虑从$TMPDIR 修改文件。
  • 对我来说,bitbake <kernel-name> -f -c deploy 总是会导致它重建整个内核,这与 bitbake <kernel-name> 的效果相同。我正在使用飞思卡尔内核 linux-fslc。 meta-xilinx 层非常棒,因为它提供了一个单独的方法来构建设备树:github.com/Xilinx/meta-xilinx/tree/master/meta-xilinx-bsp/…
  • 或运行bitbake virtual/kernel -f -c deploy
【解决方案2】:

对我来说,使用 bitbake 重新生成设备树的工作方式如下:

命令:$ bitbake <kernel-name> -f -c compile

示例:$ bitbake linux-fslc -f -c compile

使用 yocto sumo 测试。

【讨论】:

  • 如果我错了,请纠正我,但这会重建整个内核。问题是如何快速编译设备树。
  • 不,它会触发内核makefile,但是如果源树没有改变(设备树除外),那么内核二进制文件就不会重新生成。
猜你喜欢
  • 2019-01-26
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 2021-09-14
  • 2015-01-01
  • 1970-01-01
相关资源
最近更新 更多