This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] SK-AM62B-P1:从 Linux 读取/设置 u-boot 环境变量

Guru**** 2470720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1427381/sk-am62b-p1-read-set-u-boot-environment-variables-from-linux

器件型号:SK-AM62B-P1

工具与软件:

嗨、团队:

我将尝试在基于 SDK 的目标板中实现双映像的功能  09.02.01.09。我在 SD 卡中创建了两个分区作为 rootfs、并能够在 u-boot 提示符中手动切换这两个分区。

因此、下一个我想在运行期间在环境文件(uEnv.txt 或 uboot.env)中添加一些可以由 u-boot 识别的变量、然后根据该文件中的变量执行类似的恢复操作。 我使用 u-boot 提示符中的命令将环境文件保存在/boot 中:

——

存储到 SD 卡的写入环境
  => env export -t $loadaddr
  =>写入 MMC ${mmcdev}${loadaddr}${bootenvfile}${fileSize}

——

我已通过在 build/local.conf 中添加"image_install:append =" u-boot-FW-utils"、将"FW_printenv"和"FW_setenv"安装到 rootfs、并生成了一个 u-boot 配置片段以启用以下选项:

——

CONFIG_ENV_SIZE=0x20000
CONFIG_ENV_OFFSET=0x680000
CONFIG_CMD_ASKENV=y
CONFIG_CMD_NVEDIT_INFO=y
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_MMC_ENV_DEV=1
CONFIG_SYS_MMC_ENV_PART=1

——

然后、创建了一个包含内容的纯文件"FW_ENV.config"(我不确定偏移和大小是否正确...):

——

/dev/mmcblk0boot0    0x680000     0x20000

——

但仍然无法在 Linux 中读取环境文件。

root@ti-am62xx:/# fw_printenv
无法读取环境、使用默认值
无法从文件读取默认环境

实际上、我一直在 TI E2E 论坛上关注多个主题、但仍然不知道问题出在哪里。 欢迎使用任何提示! 提前感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

      是否配置了/etc/fw_env.config 文件?

    请分享。

    设置固件 printenv 以修改 u-boot 环境变量- RidgeRun Developer Wiki

    此致、
    Aparna

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Aparna:

    感谢您的答复。

    目前我正在使用 SD 卡进行测试、这样 /etc/fw_env.config 文件 I 配置为:

    root@ti-am62xx:/# cat /etc/fw_env.config
    #块器件示例
    /dev/mmcblk1 0x680000 0x20000

    并执行 FW_printenv:

    root@ti-am62xx:/# fw_printenv
    无法读取环境、使用默认值
    无法从文件读取默认环境

    下面是我的块信息:

    root@ti-am62xx:/# lsblk
    名称 MAJ:Min RM Size RO 类型安装点
    mmcblk1 179:0 29.7G 0磁盘
    |-mmcblk1p1 179:1 0 128M 0 part /boot
    |-mmcblk1p2 179:2 0 2.4G 0部分/
    `-mmcblk1p3 179:3 0 2.4G 0部件
    mmcblk0 179:32 0 29.6G 0磁盘
    |-mmcblk0p1 179:33 0 128M 0 part
    `-mmcblk0p2 179:34 0 384.8M 0部件
    mmcblk0boot0 179:64 0 31.5M 1磁盘
    mmcblk0boot1 179:96 0 31.5M 1磁盘

    mmcblk0是 eMMC、但我想在继续 eMMC 设置之前验证设置。

    此致、

    Dicky

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    此问题是否仍然存在?

    抱歉未发表回复。 我错过了这一个。

    此致、
    Aparna

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Aparna:

    否、我仍然无法正确读取环境变量:

    root@ti-am62xx:/# fw_printenv
    警告:CRC 错误、使用默认环境
    bootcmd=运行 envboot;运行 distro_bootcmd;
    引导延迟=2
    波特率=115200
    loadaddr=0x82000000
    ARCH=臂
    CPU=ARMv8
    电路板=am62x

    以下是我的 fw_env.config 设置:

    #块器件示例
    /dev/mmcblk1 0x680000 0x20000

    我不知道可以在哪里确认 offset 和 size 的值是正确的、因为 u-boot 代码中没有引用。

    此致、

    Dicky

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是否仍然看到此问题?

    此致、
    Aparna