无效选择:yocto 构建中的“kernel_add_dts”

如何解决无效选择:yocto 构建中的“kernel_add_dts”

争论有什么问题, 是不是没有 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}"

使用“virtual/kernel”,它将检测提供它的内容(linux-imx、linux-yocto、...)并创建 linux-imx_%.append 文件。

-w 标志将为任何版本号创建“_%”。

避免对 DTS 文件进行任何修补的解决方案:

如果您的 Linux 内核有补丁,如果您使用新的修改来更新 DTS,这些补丁会覆盖补丁预期的某些行,那么它们将失败,因此您可以通过两种方式干净利落地做到:

bitbake virtual/kernel -c cleansstate
bitbake virtual/kernel -c patch

现在所有补丁都已应用,转到 tmp/work/../linux-(PROVIDER)/../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/files。

现在,这是您的最终 DTS 文件。

删除配方工具添加的内容:

其实recipetool中没有undo子命令,你只需要删除recipetool部署的文件,recipetool复制你指定的文件,创建一个bbappend文件,删除这两个文件。

示例:您使用 recipetool 添加 example.dts 文件,recipetool 将 example.dts 复制到:

meta-custom/recipes-kernel/linux/(MACHINE)/example.dts

并创建了 bbappend 文件,其中将 example.dts 添加到 SRC_URI 变量。

如果您需要保留 bbappend 文件,因为您正在以其他方式使用它,只需修改它并删除 recipetool 添加的行,其中包含:

SRC_URI ... "file://example.dts ..."

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-