参数有什么问题,是没有kernel_add_dts子命令。
每当我尝试运行时,都会出现以下错误$recipetool kernel_add_dts元本地/path/to/my.dts
recipetool: error: argument <subcommand>: invalid choice: 'kernel_add_dts' (choose from 'edit', 'create', 'newappend', 'appendfile', 'appendsrcfiles', 'appendsrcfile', 'setvar')
usage: recipetool [-d] [-q] [--color COLOR] [-h] <subcommand> ...
使用recipetool按照以下语法向自定义层添加新的设备树:
recipetool appendsrcfile -wm (MACHINE) (PATH/TO/LAYER) virtual/kernel (PATH/TO/DTS) 'arch/${ARCH}/boot/dts/(YOUR_DTS_NAME).dts'
详细信息:
- (MACHINE(:您的构建机器名称
- (PATH/TO/LAYER(:将创建带有新DTS的linux-xx_%.bbappend文件所在层的路径
- (PATH/TO/DTS(:新DTS文件的路径
- (YOUR_DTS_NAME(:DTS文件名
重要提示:
如果默认设备树名称与您要添加的名称相同,则这不是问题,如果不是,请确保将其添加到KERNEL_DEVICETREE变量中,以便将其与启动分区中的所有DTS文件一起提供。
KERNEL_DEVICETREE += "(NEW_DTS_NAME).dtb"
之后,您可以停止Uboot(如果您正在使用Uboot(,并使用指定新的DTS文件
setenv fdt_file (NEW_DTS_NAME).dtb
saveenv (If you want to save it for every boot)
请运行">printenv";以确保">fdt_file";变量的名称。
实际运行测试:
recipetool appendsrcfile -wm imx8mmddr3lval /home/talel/Desktop/final_git/meta-node virtual/kernel /home/talel/Desktop/example.dts 'arch/${ARCH}/boot/dts/example.dts'
...
NOTE: Writing append file /home/talel/Desktop/final_git/meta-node/recipes-kernel/linux/linux-imx_%.bbappend
NOTE: Copying /home/talel/Desktop/example.dts to /home/talel/Desktop/final_git/meta-node/recipes-kernel/linux/linux-imx/imx8mmddr3lval/example.dts
新的bbappend文件是:
$ cat /home/talel/Desktop/final_git/meta-node/recipes-kernel/linux/linux-imx_%.bbappend
SRC_URI += "file://example.dts;subdir=git/arch/${ARCH}/boot/dts" FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" PACKAGE_ARCH = "${MACHINE_ARCH}"
带";虚拟/内核";它将检测提供它的内容(linux-imx,linux-yocto,…(,并创建linux-imx_%.append文件。
-w标志将创建"_%"对于任何版本号。
避免对DTS文件进行任何修补的解决方案:
如果你的Linux内核有补丁,如果你用新的修改来更新DTS,这些修改会覆盖补丁所期望的一些行,那么它们就会失败,所以你可以用两种方法干净地完成:
bitbake virtual/kernel -c cleansstate
bitbake virtual/kernel -c patch
现在所有补丁都已应用,请转到tmp/work//linux-(提供者(//git和:
git add .
git commit -m "commiting old patches"
现在编辑DTS文件并:
git add arch/../boot/dts/../myplatform.dts
git commit -m "changes"
git format-patch -1 -o /path/to/meta-custom/recipes-kernel/linux/files
现在将其添加到/path/to/meta custom/recipes kernel/linux/linux-(PROVIDER(_%.bbappend:
SRC_URI_append = " file://patch_file.patch"
或者,另一种方法是在补丁完成后添加您的最终DTS:
SRC_URI_append = " file://myplatform.dts"
do_configure_append(){
cp ${WORKDIR}/myplatform.dts ${S}/arch/(ARCH)/boot/dts/....
}
并将您的myplatform.dts复制到/path/to/meta custom/recipes kernel/linux/文件中。
现在,这是您的最后一个DTS文件。
删除recipetool添加的内容:
事实上,recipetool中没有undo子命令,您只需要删除recipeool部署的文件,recipeool复制您指定的文件并创建一个bbappend文件,因此删除这两个文件。
示例:您使用recipetool添加Example.dts文件,recipeool将sample.dts制到:
meta-custom/recipes-kernel/linux/(MACHINE)/example.dts
并创建了bbappend文件,在该文件中向SRC_URI变量添加了example.dts。
如果你需要保留bbappend文件,因为你正在以其他方式使用它,只需修改它并删除recipetool添加的行,该行包含:
SRC_URI ... "file://example.dts ..."