芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 7924|回复: 0

【Zynq】【uboot应用】使用uEnv.txt导入uboot环境变量

[复制链接]

该用户从未签到

68

主题

85

帖子

937

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
937
发表于 2022-1-21 10:37:25 | 显示全部楼层 |阅读模式

使用uEnv.txt导入uboot环境变量

Zynq开发板在启动uboot后,一般需要修改uboot环境变量,然后加载bitstrteam、内核镜像等,最终进入linux系统,虽然uboot环境变量可以保存,但是在首次启动uboot或者擦除了uboot环境变量数据后,又需要重新配置,如果在uboot环境下使用setenv命令配置,需要输入大量命令,繁琐易出错,因此这里推荐另外一种方式,使用uEnv.txt导入uboot环境变量。

一、创建uEnv.txt文件

直接创建一个名为uEnv的txt文件,将要添加或修改的环境变量以“环境变量名=环境变量值”的格式写在文本里。如下图

image.png

然后把uEnv.txt文件放在sd卡的启动分区,和内核镜像放在一起

image.png

然后启动zynq开发板,进入uboot环境

二、加载uEnv.txt文件

1.在sd卡或emmc加载uEnv.txt文件

loadbootenv不用更改,保持默认值即可 loadbootenv=load mmc 0 ${loadbootenv_addr} ${bootenv} 需要确保mmc设备连接,然后使用run uenvboot命令 run uenvboot

2.在U盘或读卡器加载uEnv.txt文件

loadbootenv需修改为以下值 loadbootenv=usb start; load usb 0 ${loadbootenv_addr} ${bootenv} 这里使用setenv命令修改环境变量,然后使用run uenvboot命令加载用户环境 setenv loadbootenv 'usb start; load usb 0 ${loadbootenv_addr} ${bootenv}' run uenvboot 这里可以在uEnv.txt中添加一条环境变量 uenvcmd=saveenv 这条环境变量默认是不存在的,如果它被创建了,uenvcmd会在uenvboot的最后一步被执行,这里添加它的值为saveenv的目的,是在每次导入用户环境后,运行saveenv命令让系统自动保存当前环境变量。

三、流程分析

在uboot下查看uenvboot环境变量,除去打印信息的命令,可知它执行的主要命令有三个,分别为run loadbootenv、run importbootenv、run uenvcmd,最后一条如果不存在则不会执行。 由于第三个是用户自定义的环境变量,所以这里只分析前两个:

1.loadbootenv

这里查看一下它的值,可知run loadbootenv执行的是以下操作 load mmc 0 ${loadbootenv_addr} ${bootenv} 将环境变量的实际值代入,可得到最终的命令 load mmc 0 0x2000000 uEnv.txt 这一句就是将sd卡里的uEnv.txt文件拷贝到内存地址0x2000000里

2.importbootenv

查看它的值,这里省略掉echo打印命令 env import -t ${loadbootenv_addr} $filesize 代入环境变量,得到实际命令 env import -t 0x2000000 3a4 这句命令读取了加载入内存的uEnv.txt文件,将里面的用户环境变量导入了当前系统环境变量。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

GMT+8, 2024-11-21 16:37 , Processed in 0.126329 second(s), 35 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表