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.

[参考译文] TMDS64EVM:AM64x:如何在 A/B SD 卡布局中确定活动引导 (FAT) 分区?

Guru**** 2899250 points

Other Parts Discussed in Thread: TMDS64EVM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1640664/tmds64evm-am64x-how-is-active-boot-fat-partition-determined-in-a-b-sd-card-layout

器件型号: TMDS64EVM

尊敬的 TI 团队:

我正在 AM64x 平台 (TMDS64EVM) 上使用 meta-swupdate 处理 OTA 更新、在该平台上实现了 A/B 分区方案、  

分区布局:
mmcblk1p1 - FAT(活动启动)
mmcblk1p2 - ext4(活动 rootfs)

mmcblk1p3 - FAT(待机启动)
mmcblk1p4 - ext4(待机 rootfs)  

 

目前、通过 SWUpdate 成功处理了 rootfs A/B 切换。 但是、我在处理以下问题时面临挑战:

完整的操作系统升级
引导加载程序升级


问题:
1.) 在 printenv 输出中、提到 bootpart=1:2、即 u-boot 显式使用分区 2 (ext4 rootfs)
  要加载内核和 dtb、u-boot 如何决定要使用哪个 FAT 分区 (P1 或 P3)?

2.) 环境中没有对 FAT 分区索引的明确引用、它是否隐式假定为分区 1?

3.) 如果存在多个 FAT 分区 (A/B)、切换引导分区的正确机制是什么?  

4.) 对于 OTA 用例、建议采用什么方法来实现引导分区切换?

要求:
1.) 识别当前活动的 FAT 分区(引导)分区
2.) 更新非活动的 FAT 分区
3.) 成功更新后、将引导切换到更新后的 FAT 分区

我已在此处附上 printenv 的输出以供您参考:
printenv_file.txt 

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

    您好:

    那么 u-boot 如何决定使用哪个 FAT 分区 (P1 或 P3)?

    您是问哪个 FAT 分区将用于引导 U-Boot 映像 (tispl.bin & u-boot.img)、因为内核和 DTB 始终从器件以及分区集“mmcdev“和“bootpart“环境变量引导?

    对于“tiboot3.bin“、ROM 从 具有可引导标志的 FAT 分区引导“tiboot3.bin“。

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

    你好 Prashant Shivhare ,

    感谢有关 ROM 行为和 FAT 分区选择的说明。

    在使用 SWUpdate 的 OTA 实现中、我们将扩展 A/B 方案、以涵盖 rootfs 和引导加载程序。 SD 卡布局为:

    mmcblk1p1→FAT(引导 A)
    mmcblk1p2→ext4 (Rootfs A)
    mmcblk1p3→FAT(引导 B)
    mmcblk1p4→ext4 (Rootfs B)

    对于引导加载程序更新、我们当前的方法是:

    将更新后的引导二进制文件 (Image、tiboot3.bin、tispl.bin、u-boot.img 和 uEnv.txt) 写入非活动的 FAT 分区
    通过切换引导标志切换活动引导分区:

    parted /dev/mmcblk1 set $CURRENT_FAT boot off
    parted /dev/mmcblk1 set $UPDATE_FAT boot on

    问题:
    1.) 通过 OTA 更新在 FAT 分区之间多次切换可引导标志是否存在任何风险或限制?

    2.) 是否有任何其他建议的机制来实现 A/B 引导加载程序切换?

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

    尊敬的 Devansh:

    1.) 通过 OTA 更新在 FAT 分区之间多次切换可引导标志是否存在任何风险或限制?

    我没有看到任何问题。 您是否已测试切换 U-Boot 映像的 FAT 分区上的可引导标志并确认工作正常?

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

    你好 Prashant Shivhare ,

    您是否测试过在 U-Boot 映像的 FAT 分区上切换可引导标志并确认工作正常?

    是的、我已经测试了切换包含引导二进制文件的 FAT 分区的可引导标志、它在我们的设置中工作正常。

    您能否确认这是否是在 AM64x 上进行 A/B 引导加载程序切换的建议机制、或者是否有任何其他首选方法来进行 OTA 更新?

    此致、
    Devansh

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

    您好:

    ]您能否确认这是否是在 AM64x 上切换 A/B 引导加载程序的推荐机制、或者是否有任何其他优选 OTA 更新方法?

    对于 SD 卡、这是唯一的方法。 您必须具有不同的 FAT 分区、并通过根据需要设置可引导标志来在它们之间保持切换。

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

    你好 Prashant Shivhare ,

    对于 SD 卡、这是唯一的方法。 您必须具有不同的 FAT 分区、并通过根据需要设置可引导标志来保持它们之间的切换。

    感谢对 SD 卡盒的说明。 我知道,对于 SD 引导,通过切换两个 FAT 分区之间的可引导标志来选择活动 FAT 分区。

    在我们的最终设置中、eMMC 将是主引导介质。 在这种情况下、您能否确认在 AM64x 上实施 A/B 引导分区切换以进行 OTA 更新的建议方法? 具体来说、我们是否应该在 eMMC 用户区域中使用两个 FAT 分区并切换可引导标志、或者 eMMC 引导模式是否有不同的推荐机制?

    此致、
    Devansh

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

    您好:

    具体而言、我们应该在 eMMC 用户区中使用两个 FAT 分区并切换可引导标志

    这是一个选项。 另一个是利用 eMMC 的两个硬件启动分区。 ROM 和 U-Boot 都支持从这些硬件引导分区进行引导。 可通过修改 EXTCSD 寄存器来设置活动可引导分区。

    https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/12_00_00_07_04/exports/docs/linux/How_to_Guides/Target/How_to_emmc_boot.html