工具与软件:
尊敬的 TI 专家:
我们使用 AM64x EVM 作为参考设计开发产品。 对于固件更新、我们使用 swupdate (恢复映像方法)。
引导时、u-boot 必须决定引导哪个映像(恢复/正常映像)、因此在启动/完成更新时必须修改 u-boot 环境。
为了提高稳健性、我们需要使用冗余环境、这两个环境均存储在 eMMC 的引导分区(mmcblk0 boot0)中。 因此、我修改了文件 configs/am64x_evm_a53_defconfig 和 configs/am64x_evm_r5_defconfig
作为参考、我使用了 TI 提供的信息: software-dl.ti.com/.../UG-Memory.html
构建和刷写映像(tisdk-default-image)后、R5-SPL (包含在 tiboot3.bin 中)在生成以下输出后挂起:
---
U-Boot SPL 2024.04-ti-g50481472c910 (2024年12月04日- 10:01:28 +0000)
在冷启动时复位以解决方法 ErrataID:i2331
如果是 UART/DFU 引导、请重新发送 tiboot3.bin
正在重置...
U-Boot SPL 2024.04-ti-g50481472c910 (2024年12月04日- 10:01:28 +0000)
SYSFW ABI:4.0 (固件版本0x000a '10.0.8--v10.00.08 (Fiery Fox)')
SPL 初始堆栈使用:13392字节
尝试从 MMC2引导
身份验证已通过
身份验证已通过
正在从 MMC 加载环境...
---
经过一些调试后、我意识到函数 static int env_mcu_load (void) env/mcu.c 存在不同变体、
其中选择标准是定义 CONFIG_SYS_REDAND_PROPERFORCE。
在冗余环境的变体中、调用函数 MMC_INITIALIZE (NULL)(第405行)、而加载程序似乎在那里崩溃。
在针对单个环境进行编译时、不调用此函数、这会导致以下输出:
---
U-Boot SPL 2024.04-ti-g50481472c910 (2024年12月04日- 10:01:28 +0000)
在冷启动时复位以解决方法 ErrataID:i2331
如果是 UART/DFU 引导、请重新发送 tiboot3.bin
正在重置...
U-Boot SPL 2024.04-ti-g50481472c910 (2024年12月04日- 10:01:28 +0000)
SYSFW ABI:4.0 (固件版本0x000a '10.0.8--v10.00.08 (Fiery Fox)')
SPL 初始堆栈使用:13392字节
尝试从 MMC2引导
身份验证已通过
身份验证已通过
正在从 MMC 加载环境... ***警告-未找到 MMC 卡、使用默认环境
---
也无法加载环境、但至少引导过程会继续。
我的问题是:
1.我的方法是否有效? 您是否建议在我的用例中使用第二个环境?
2.你能告诉为什么 MMC_INITIALIZE ()函数导致系统冻结吗? 我运行测试并注释行、系统引导时就像只有一个环境一样。