Linux kernel 仅使用Yocto/bitbake快速重建设备树?

Linux kernel 仅使用Yocto/bitbake快速重建设备树?,linux-kernel,yocto,bitbake,device-tree,Linux Kernel,Yocto,Bitbake,Device Tree,因此,每次修改设备树时,我通常会更改自定义配方中的dts并重建图像。重建需要很长时间,因为它会重建整个内核,然后需要构建映像并最终部署到目标设备 有没有什么我遗漏的技巧只重建设备树 更新: 我已将g0hl1n的答案标记为正确答案,因为它是我问题的答案。然而,我发现在Yocto中使用内核是非常麻烦的:奇怪的、很长的路径以及每次重建时文件被覆盖的风险,当内核在tmp/work中构建时,tmp/work中的内核源共享 相反,我将内核开发从Yocto中移出。Yocto有很好的工具来创建SDK(请参阅po

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

有没有什么我遗漏的技巧只重建设备树

更新:

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

相反,我将内核开发从Yocto中移出。Yocto有很好的工具来创建SDK(请参阅populate_SDK task),使用它可以轻松地为内核开发设置一个环境,并进行快速重建和手动(或脚本化)部署。工作完成后,可以使用git diff将更改移动到配方


下一页上的说明非常有用:

AFAIK有两种不同的方法

  • 内核方式:使用内核提供的脚本
    • 更改到内核源目录(
      /tmp/work///git/
    • 执行设备树编译器:
      /scripts/dtc/dtc-I dts-O dtb-O./devicetree.dtb path/to/devicetree.dts
  • 比特烘焙方式:使用内核的部署作业
    • 调用
      $bitbake-f-c部署
    • 生成的设备树blob可以在
      /tmp/work///build/arch/arm/boot/dts/
      中找到
    至少对我来说,两个版本都在快速测试中起作用

    更新: 我刚刚在网上看到了用yocto构建dtb的第三个版本。 它使用yocto的
    devshell
    内核构建。
    有关更多信息,请参阅位于的原始作者页面。

    了解我使用bitbake重新生成设备树的过程,其工作方式如下:

    命令:
    $bitbake-f-c compile

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


    使用yocto相扑进行测试。

    谢谢。三个好的选择。我更喜欢第二种方法,因为它最能保证与普通构建一样。我不能轻易地使用devshell,因为我想让它自动化。现在,为了使它更完美,我想运行两个任务:“bitbake-f-c unpack”来复制配方中的所有dts和dtsi,然后“bitbake-f-c deploy”来构建dtb。但不幸的是,“unpack”命令使“deploy”命令重建整个内核。如果可以强制运行不重建内核的“deploy”,那就太完美了!从
    $TMPDIR
    修改文件不能被视为一个选项。对我来说,
    bitbake-f-c deploy
    总是导致它重建整个内核,这与
    bitbake
    的效果相同。我使用的是飞思卡尔内核linux fslc。meta-xilinx层非常好,它提供了一个单独的方法来构建设备树:或者运行
    bitbake virtual/kernel-f-c deploy
    我认为正确的答案是“不,没有正确的方法。请发送一个补丁”。如果我错了,请纠正我,但这会重建整个内核。问题是如何快速编译设备树。不,它会触发内核生成文件,但是如果源树没有改变(设备树的execep),那么内核二进制文件就不会重新生成。