bootloader - 如何持久保存 U-Boot 环境变量?
问题描述
我有以下 U-Boot 环境变量:
nas220> printenv
autoload=no
autostart=no
baudrate=115200
bootargs=console=ttyS0,115200
bootargs_base=console=ttyS0,115200
bootcmd=run bootcmd_nand
bootcmd_nand=setenv bootargs console=ttyS0,115200 cmdlinepart.mtdparts=orion_nand:0xa0000@0x0(uboot),0x010000@0xa0000(env),0x500000@0xc0000(uimage),0x1a40000@0x5c0000(rootfs)
bootcmd_rescue=setenv bootargs_extra rescue/enable=true; run bootcmd_usb
bootcmd_usb=setenv bootargs ${bootargs_base} ${mtdparts} ${bootargs_extra}; usb start; fatload usb 0:1 0x40000 uImage-dtb; fatload usb 0:1 0x800000 uInitrd; bootm 0x40000 0x800000
bootdelay=3
ethact=egiga0
ethaddr=00:10:75:07:0D:8D
ethadr=00:10:75:07:0D:8D
mtdids=nand0=orion_nand
mtdparts=cmdlinepart.mtdparts=orion_nand:0xa0000@0x0(uboot),0x010000@0xa0000(env),0x500000@0xc0000(uimage),0x1a40000@0x5c0000(rootfs)
stderr=serial
stdin=serial
stdout=serial
Environment size: 876/65532 bytes
我需要bootcmd_nand
从以下位置更改变量:
setenv bootargs console=ttyS0,115200 cmdlinepart.mtdparts=orion_nand:0xa0000@0x0(uboot),0x010000@0xa0000(env),0x500000@0xc0000(uimage),0x1a40000@0x5c0000(rootfs)
至
setenv bootargs console=ttyS0,115200 cmdlinepart.mtdparts=orion_nand:0xa0000@0x0(uboot),0x010000@0xa0000(env),0x500000@0xc0000(uimage),0x1a30000@0x5c0000(rootfs)
但是,当我尝试运行时:
setenv bootcmd_nand setenv bootargs console=ttyS0,115200 cmdlinepart.mtdparts=orion_nand:0xa0000@0x0(uboot),0x010000@0xa0000(env),0x500000@0xc0000(uimage),0x1a30000@0x5c0000(rootfs)
系统从 nand 读取并启动,因此我无法运行saveenv
命令以持久保存更改。
如何在不启动系统的情况下进行更改?
解决方案
我发现了我的错误,但如果其他人遇到这个问题,请留下问题。要在setenv
不实际运行代码的情况下运行命令,只需将变量括在单引号中即可。比如跑步,
setenv bootcmd_nand setenv bootargs console=ttyS0,115200 cmdlinepart.mtdparts=orion_nand:0xa0000@0x0(uboot),0x010000@0xa0000(env),0x500000@0xc0000(uimage),0x1a30000@0x5c0000(rootfs)
将运行代码并从 nand 中读取,而不是永久保存变量。然而跑步,
setenv bootcmd_nand 'setenv bootargs console=ttyS0,115200 cmdlinepart.mtdparts=orion_nand:0xa0000@0x0(uboot),0x010000@0xa0000(env),0x500000@0xc0000(uimage),0x1a30000@0x5c0000(rootfs)'
在不运行代码的情况下设置变量,以便我可以运行saveenv
并永久保存。
推荐阅读
- swagger - 使用 Swagger 加载 API 定义 500 内部服务器错误失败
- c++ - 运算符一元重载函数
- batch-file - 批处理文件:如何在不关闭命令提示符的情况下执行 cmd 命令?
- android - 在 Android 中使用画布和路径创建自定义视图
- r - 如何从 R 的表格中计算百分比
- c# - 如何通过 cmake w/o 资源文件为 C# Windows Forms 应用程序设置图标?
- javascript - 如何在 jquery 对话框表中正确显示从 php 接收到的数据
- java - 请解释一下这行代码 a[s1.charAt(i) - 'a']++;
- matlab - 通过 MATLAB 调用 Tensorflow:CUDNN_STATUS_NOT_INITIALIZED。检索驱动程序版本时出错
- javascript - 在视图数据表和highcharts图表之间切换