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.

[参考译文] Linux/AM3358:冗余 MLO 和 U-boot

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/656432/linux-am3358-redundant-mlo-and-u-boot

器件型号:AM3358

工具/软件:Linux

您好!

我正在尝试创建冗余引导系统以实现更新功能、我想在 eMMC (MMC1)中复制 U-Boot 和 SPL 数据。

我已经阅读过以下主题: e2e.ti.com/.../505682

分区表:

-分区1:引导加载程序 A (MLO + uboot.img)

-分区2:引导加载程序 B (MLO + uboot.img)

-分区3:Linux/应用程序

-分区4:引导加载程序更新的标志

如何在引导加载程序 A 和 B 之间切换?

谢谢!

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

    关于 MLO、您无法自行选择要启动的 MLO。 这由 ROM 代码完成。 根据我的理解、您可以拥有4个 MLO 映像、ROM 代码将启动第一个有效的映像。

    MMC/SD 卡和 NAND 器件最多可容纳四个启动映像副本。 因此、ROM 代码会通过在大容量存储空间的前四个块上行走、在四个块中搜索一个有效的映像(如果存在)。

    有关更多信息、请参阅 AM335x TRM 第26章初始化。

    另请检查以下指针:

    e2e.ti.com/.../334778

    e2e.ti.com/.../654763

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

    您好、Pavel、

    谢谢! 这起作用了。

    输出:"U-Boot SPL
    正在尝试从 MMC1"

    我需要两个 u-boot 映像。
    MLO 不启动 u-boot:
    -我将 u-boot.img/u-boot.bin 作为原始分区写入 eMMC (起始地址:0x80000)
    -我添加了一个带有引导标志的1MB FAT 分区,并将 u-boot.img 写入此分区
    两个选项都失败。
    未显示错误。

    BR、
    Stefan

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

    有关如何刷写 eMMC 并从 eMMC 引导、请参阅以下 e2e 文章:

    e2e.ti.com/.../2404955

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

    我知道如何闪存 eMMC 等等

    但这在原始模式(RM 26.1.7.5.5)下不起作用。
    MLO 和 u-boot 不在同一分区中。

    当前原始分区:
    0x20000…… 0x3FFFF:MLO 1
    0x40000…… 0x5FFFF:MLO 2

    我不知道如何添加 u-boot。 我测试了两个选项(请参阅我的上次答复)。 两者都不起作用。

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

    根据我的理解、当 eMMC 中只有一个 u-boot 映像(u-boot-1)时、您可以刷写 eMMC 并从 eMMC (原始模式、而非 FAT 模式)成功引导。 现在、您需要在 eMMC 中再添加一个 u-boot 映像(u-boot-2)、并控制两个 u-boot 映像的选择。

    默认情况下、TI u-boot 代码库不支持此用例、您需要修改 SPL 源代码、因为 SPL 会将 u-boot 映像加载到 DRAM 中并执行它。 但在放大 SPL 功能时应小心谨慎、因为 SPL 图像位于 SRAM (而非外部 DRAM)中、因此具有大小限制。

    如果设置了某个标志、您可以告诉 SPL 从地址 B 引导、否则从地址 A 引导、则可以在引导和升级过程中设置/清除该标志。 include/configs/am335x_evm.h 文件控制很多这些地址(A 和 B)。

    您可能可以修改.h 文件并在 u-boot 后添加 u-boot 备份、并在 eMMC 中将 u-boot 环境/kernel/rootfs 移动得更高。 您还必须修改 SPL 代码以执行某种类型的 CRC、如果出现问题、则使用备份副本。 您的内核中的 MTD 表也必须进行修改。

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Pavel,非常感谢!