linux5.10 DTB兼容ATAG传参实现

海思 uboot传参kernel
在较新的kernel版本有两种方法可以实现uboot传参给kernel:
① :相关的参数保存在DTB文件中的节点,kernel通过读取节点的方式获取参数。(比如chosen节点,这种方式只适应静态的传参)
② :为了兼容老版本kernel的ATAG传参的方式,较新版本的kernel提供了兼容的模式。
下面就讲解兼容模式的使用流程:(这里开始是kernel源码的流程)

① :需要开下面这几个宏:

CONFIG_ARM_APPENDED_DTB=y
CONFIG_ARM_ATAG_DTB_CONPAT=y
CONFIG_ARM_ATAG_DTB_COMPAT_CMDLIEN_EXTEND=y
在这里插入图片描述

第一个宏表示编译生成的DTB文件的是紧跟着kernel 的。
第二个宏表示DTB传参方式兼容ATAG传参方式
第三宏的作用是表示DTB文件中的参数和atag的参数时兼容的。

② 三个宏在代码中的位置

在这里插入图片描述

前面两个宏在文件arch/arm/boot/compressed/head.S文件中,其中第二个宏包含在第一个宏内。
这两个宏都打开就会运行下面的流程:核心是atags_to_fdt函数。
在这里插入图片描述

③ atags_to_fdt函数(atag_to_fdt.c文件)

在这里插入图片描述

判断到atag_list内有ATAG_CMDLINE后就会跑两个分支:由do_extend_cmdline宏决定
① merge_fdt_bootargs //合并atag中bootargs和dtb文件中bootargs参数
② setprop_string //用atag中bootargs参数覆盖dtb文件中的bootarts参数。

④ do_extend_cmdline宏实现

在这里插入图片描述
由上面的第三个宏决定

⑤ :ATAG的构建(这里是kernel源码的流程结束,uboot源码开始)

实现:
在这里插入图片描述

调用:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用:为了修改使用的设备树文件 nuc980-dev-v1.0.dts,您可以使用以下步骤: 1. 进入 nuc980-sdk/NUC980-linux-5.10.y/ 目录 2. 打开 nuc980-dev-v1.0.dts 文件,您可以使用 gedit 或其他文本编辑器进行编辑 引用[2]:修改完成后,您需要进行编译和拷贝操作: 1. 设置编译工具链,可以使用以下命令设置环境变量: ``` export ARCH=arm export CROSS_COMPILE=arm-buildroot-linux-gnueabi- export PATH=$PATH:/home/nx/nuc980-sdk/buildroot-2023.02/output/host/bin ``` 2. 编译生成设备树文件,可以使用以下命令: ``` make dtbs ``` 3. 编译完成后,将生成的设备树文件拷贝到电脑上,再拷贝到 SD 卡中。例如,可以使用以下命令将设备树文件拷贝到共享文件夹: ``` sudo cp arch/arm/boot/dts/nuc980-dev-v1.0.dtb /media/sf_common/ ``` 4. 如果您的开发环境和开发板在同一局域网中,您可以直接通过网络将设备树文件拷贝到开发板上。具体操作可以参考以下步骤: - 在开发板中挂载 boot 分区: ``` mount /dev/mmcblk0p1 /mnt/ ``` - 在 Ubuntu 中使用 scp 命令拷贝设备树文件到开发板上。假设开发板的 IP 地址是 192.168.31.142,可以使用以下命令: ``` scp arch/arm/boot/dts/nuc980-dev-v1.0.dtb [email protected]:/mnt/ ``` 5. 拷贝完成后,重新启动开发板进行测试: ``` reboot ``` 引用:这篇文章是在以下文章的基础上进行的:《新唐NUC980使用记录(5.10.y内核):访问以太网(LAN8720A) & 启用SSH 使用参考与演示 使用参考》。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值