因此,每次修改设备树时,我通常会更改自定义配方中的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
AFAIK有两种不同的方法可以做到这一点。
<build dir>/tmp/work/<machine>/<kernel-name>/<kernel-version>/git/
)
执行device-tree-compiler:./scripts/dtc/dtc -I dts -O dtb -o ./devicetree.dtb path/to/devicetree.dts
$ 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的原作者页面。
对于我使用bitbake重新生成设备树,工作方式如下:
命令:$ bitbake <kernel-name> -f -c compile
示例:$ bitbake linux-fslc -f -c compile
使用yocto相扑测试。