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.

[FAQ] [参考译文] [FAQ]从 AM62x 上的 eMMC 引导分区进行冗余引导

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1251330/faq-redundant-boot-from-emmc-boot-partitions-on-am62x

1.从 eMMC 引导分区引导与 UDA 分区引导
建议对用户的引导加载程序(BL)使用 eMMC 引导分区
- eMMC 引导分区专为引导加载程序用户案例而设计
-可以根据需要对 boot0/boot1进行写保护
- eMMC 引导分区(boot0/boot1)对于引导加载程序交换的软件更新过程很有用
-。。

ROM 支持 boot0/boot1冗余引导自动切换
在 eMMC 引导模式下、引导分区(boot0或 boot1)引导 eMMC 取决于 eMMC EXTCSD 寄存器[179]、这增加了 ROM 支持从 eMMC 引导分区进行冗余引导的外部依赖项、并且 AM62x ROM 当前不支持在 boot0/boot1之间自动切换。

常见问题解答讨论了在 eMMC 引导分区(boot0/boot1)之间切换的一种权变措施选项、该选项可支持添加备份引导介质(即 SPI)的冗余引导。

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

    常见问题解答讨论了一个 POC 想法、它通过主引导介质(+冗余)+辅助引导介质的组合支持强大的引导策略。
    通过 BOOTMODE 引脚进行引导介质配置
    -主引导介质:用于常规 BL 的 eMMC 引导分区(boot0/boot1)
    -辅助备份引导介质: SPI 作为故障恢复管理软件的示例

    用户场景:
    -闪存 eMMC 引导分区(boot0和 boot1)与常规 BL,并将 eMMC EXTCSD 寄存器[179]配置为从 boot0引导
    -闪存故障恢复软件到 SPI
    - ROM 从当前 eMMC 引导分区移至备份引导介质(即 SPI),以防对 BL 执行 ROM 完整性检查失败
    - SPI 引导上的恢复软件,并 重新配置 eMMC EXTCSD 寄存器[179]从 boot1引导,并发出 SoC WarmReset
    -从 eMMC boot1引导 BL


    AM62x-SK 上的 POC 测试日志:
    a/。 刷写模式
    - bootmode[15:0]=0243用于 SD 引导
    -从 SD 卡启动 u-boot
    -将 u-boot 从 SD 上的 SDK 8.6闪存到 eMMC boot0分区
    -通过运行"mmc partconf 0 1 1" cmd @u-boot、将 eMMC EXTCSD 寄存器[179]配置为从 boot0引导
    -将 u-boot 从 SD 上的 SDK 8.6闪存到 OSPI-NOR
    -将 u-boot 从 SD 上的 SDK 9.0刷写到 eMMC boot1分区

    B/. 从 eMMC 引导分区引导(boot0)
    -重新配置 bootmode[15:0]=0x18CB eMMC 引导分区+ SPI )@u-boot
    -重置@u-boot
    - u-boot 从 boot0引导
    -停止@u-boot
    -从 boot0 @u-boot 擦除 tiboot3.bin
    -重置

    c/. 从 SPI 重新启动
    -通过 eMMC boot0在 tiboot3.bin 上进行 ROM 检查完整性
    - ROM 通过执行从 SPI 引导
    - U-boot 从 SPI 引导
    -停止@u-boot
    -重新配置 eMMC EXTCSD 寄存器[179]通过运行"mmc partconf 0 1 2 1" cmd @u-boot 从 boot1启动
    -重置

    d/。 从 boot1重新引导
    - u-boot 从 eMMC boot1引导

    参考
    [1] [常见问题解答] ROM 引导 R5引导加载程序中的 AM64x/AM62x SoC 冗余/恢复引导支持
    e2e.ti.com/.../faq-am64x-am62x-soc-redundant-recovery-boot-support-in-rom-booting-r5-bootloader

    [2] 通过修改 SW 中的 CM 寄存器+ WarmReset、为 ROM 重新配置引导模式[15:0]以加载 R5-BL
    在"AM62x TRM 中的5.2.3引导过程流程"中
    "BOOTMODE[15:0]引脚的值由硬件锁存到器件状态寄存器 CTRLMMR_MAIN_DEVSTAT[15:0]中、因为器件退出全局冷复位、在 MCU_PORz 取消置位后进行采样。"
    下面列出了通过修改 SW 中的 CM 寄存器+ WarmReset 来重新配置引导模式[15:0]引脚的一个选项(请参见上述随附的日志)
    @u-boot
    -重新配置 CTRLMMR_MAIN_DEVSTAT 寄存器@0x43000030
    -发出"reset",即 SoC WARM_RESET
    =>从 WarmReset 中重新启动 SoC 时、ROM
    -将修改后的 CTRLMMR_MAIN_DEVSTAT 寄存器读取为 BOOTMODE[15:0]
    -从修改后的 CTRLMMR_MAIN_DEVSTAT 寄存器指定的引导介质加载 R5-BL。

    e2e.ti.com/.../am62x_5F00_eMMC_5F00_SPI_5F00_flash_5F00_boot.log