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.

[参考译文] AM625:默认 WIC 映像不启动

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1494315/am625-default-wic-image-does-not-boot-up

器件型号:AM625

工具/软件:

尊敬的支持团队:


我使用的是 BSP 版本09.01.00.08。 我没有更改 Yocto 器件上的.wks 文件、即:

part /boot --source bootimg-partition --ondisk mmcblk0 --fstype=vfat --label boot --active --align 1024 --fixed-size 128 --use-uuid
part / --source rootfs --ondisk mmcblk0 --fstype=ext4 --label root --align 1024 --use-uuid



当我尝试将该 WIC 刷写到 eMMC 时、器件无法启动、但如果我使用 balenaEtcher 创建具有相同 WIC 映像的 SD 卡、我至少能够看到 u-boot 日志。


如何解决? 出现此问题的原因可能是什么?

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

    尊敬的 Veysel:

    请显示将 WIC 映像刷写到 eMMC 所需的确切命令和日志。

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

    尊敬的 Bin:

    我正在使用 Yocto 构建创建的 WIC 映像。 因此、我没有使用任何命令。 我已经与您共享了.wks 文件。 我将稍后向您转发刷写日志。

    我想问别的问题。 当我们使用 SD 卡刷写映像时、我们使用以下命令:

    Echo 0 >/sys/block/mmcblk0boot0/force_ro
    DD if=/run/media/boot-mmcblk1p1/tiboot3.bin of=/dev/mmcblk0boot0 seek=0
    DD if=/run/media/boot-mmcblk1p1/tispl.bin of=/dev/mmcblk0boot0 seek=1024
    DD if=/run/media/boot-mmcblk1p1/u-boot.img of=/dev/mmcblk0boot0 seek=5120

    这些操作会将引导加载程序映像写入引导分区的确切部分、此分区为/dev/mmcblk0boot0

    对于 WIC 映像、"mmcblk0"分区保留用于引导分区、我们不会在.wks 文件中为引导加载程序映像提供任何偏移量。

    这是什么原因? 这可能是我无法启动的原因吗?

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

    尊敬的 Veysel:

    我不熟悉 Yocto 或.wks 文件、但您似乎正在尝试使用 eMMC UDA 引导。 该引导模式不使用 eMMC boot0分区。

    您使用什么 SYSBOOT 引脚设置来引导此 eMMC WIC 映像?

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

    尊敬的 Bin:

    是的、我们使用 eMMC UDA 引导、即引导加载程序映像通过 dd 命令写入 mmcblk0boot0分区。

    我们更改了 sysboot 引脚以支持 eMMC 文件系统模式、并启动了默认的.wic 映像。 在本例中、引导加载程序分区为 mmcblk0p1

    在这种情况下,是否有任何方法可以在 eMMC RAW 模式下支持.wic 映像? 还是我们必须使用 eMMC 文件系统模式才能使用.wic 映像引导?

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

    尊敬的 Veysel:

    我对您所做的事情和希望实现的目标有点困惑、但这里对 AM62x 上 eMMC 引导方法进行了总结。

    TRM 表5-4显示了两种与 MMC 相关的主引导模式:

    第一个通常用于 SD 卡引导、但它也支持从 eMMC UDA 引导。 在这种情况下、不使用 eMMC boot0/1分区。 更确切地说、eMMC UDA 被划分为两个分区、方式与在 SD 卡引导模式下对 SD 卡的分区方式非常相似、而 U-Boot 二进制文件被放置在以 FAT 格式进行的第一个引导分区中。

    在第二个 MMC 引导模式"eMMC 引导"中、U-Boot 二进制文件放置在以原始格式运行的 eMMC boot0 (或 boot1)分区中。 在这种情况下、对于 Linux rootfs、eMMC UDA 通常被划分为一种具有 ext4格式的分区(但不限于原因)。

    因此、当您希望对 eMMC 使用.wic 映像时、不会使用第二种 MMC 引导模式、我知道有任何方法可以为 eMMC boot0和 UDA 创建.wic 映像。

    如果您有后续问题、敬请告知。

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

    尊敬的 Bin:

    感谢您的快速答复。

    因此、当您要对 eMMC 使用.wic 映像时、不会使用第二个 MMC 引导模式、我知道有任何方法可以为 eMMC boot0和 UDA 创建.wic 映像。

    这对我们来说现在是显而易见的。 我们必须将 MMCSD 与文件系统模式配合使用、才能使用.wic 映像。

    实际上、我们在主引导模式和备用引导模式方面存在问题。 我们需要使用如下引导模式:

    主引导模式:MMCSD 引导(SD 卡引导)
    备用引导模式:MMCSD 引导(eMMC 引导)

    以下是我们的全引导模式选择引脚配置:

    使用此引脚设置、我们在引导分区中使用文件系统模式创建了 SD 卡、并再次使用文件系统模式刷写了 eMMC。 我们能够从 SD 卡作为主引导进行引导、但当我们分离 SD 卡时、备份 eMMC 引导无法引导(没有引导加载程序日志)。

    开发应用 手册(修订版 B)。 链接。 490:

    "当 eMMC 引导用作备份引导选项时、仅支持文件系统模式下的用户数据区域(UDA)。
    不支持 RAW 模式。 此外、在备份引导期间、只会在1位模式下进行引导。"

    因此、我们期望它使用文件系统模式引导。

    我们是否可以使用 SD 卡作为带文件系统模式的主引导、并使用 eMMC 作为带文件系统模式的备份、以便当有 SD 卡插入电路板时、SD 卡中的映像将引导。 否则、eMMC 映像将在器件中引导?

    提前感谢、

     

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

    尊敬的 Veysel:

    我几乎没有使用任何备用引导模式、因此无法立即判断 eMMC UDA 备份引导是否有任何问题。

    刷写 eMMC 后、能否更改引导模式设置以将主引导设置为 eMMC UDA、看看它是否从 eMMC 引导? 这将表明 eMMC 是否刷写正确。

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

    尊敬的 Bin:

    下面是当前状态、让我总结一下

    下面是引导模式引脚选择(与上一个)

    它应在文件系统模式(如果可用)下从 SD 卡引导、因为它是可初始化的。 如果 SD 卡不可用、文件系统模式下的 eMMC 应该启动、因为它是辅助系统。

    在这种情况下、当我插入 SD 卡时、器件从 eMMC 引导

    U-Boot SPL 2023.04-gb0d717b732 (2023年12月6日- 15:11:45 +0000)
    SYSFW ABI:3.1 (固件版本0x0009"9.1.8--v09.01.08 (Kool Koala)")
    SPL 初始堆栈使用量:13384字节
    尝试从 MMC1引导
    身份验证已通过
    身份验证已通过
    身份验证已通过
    身份验证已通过
    身份验证已通过
    在 ARM64内核上启动 ATF……

    即使我移除 SD 卡、器件也会从 eMMC 引导

    U-Boot SPL 2023.04-gb0d717b732 (2023年12月6日- 15:11:45 +0000)
    SYSFW ABI:3.1 (固件版本0x0009"9.1.8--v09.01.08 (Kool Koala)")
    SPL 初始堆栈使用量:13384字节
    尝试从 MMC1引导
    身份验证已通过
    身份验证已通过
    身份验证已通过
    身份验证已通过
    身份验证已通过
    在 ARM64内核上启动 ATF……

    如果我丢弃备用引导模式、通过将 b10-b11-b12设置为0、然后将主引导设置为 SD 卡、器件从 SD 卡引导

    U-Boot SPL 2023.04-gb0d717b732 (2023年12月6日- 15:11:45 +0000)
    SYSFW ABI:3.1 (固件版本0x0009"9.1.8--v09.01.08 (Kool Koala)")
    SPL 初始堆栈使用量:13384字节
    尝试从 MMC2引导
    身份验证已通过
    身份验证已通过
    身份验证已通过
    身份验证已通过
    身份验证已通过
    在 ARM64内核上启动 ATF……

    如果我放弃备用引导模式、则 通过将 b10-b11-b12设置为0、然后将主引导设置为 eMMC、从 eMMC 引导器件。

    问题看起来像、ILF SD 卡是主卡并已插入、器件无法从 SD 卡引导并从 eMMC 引导。

    您是否知道此类问题或能否为我们提供解决方案?

    提前感谢、

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

    尊敬的 Veysel:

    [引述 userid="530023" url="~/support/processors-group/processors/f/processors-forum/1494315/am625-default-wic-image-does-not-boot-up/5768071 #5768071"]

    问题看起来像、ILF SD 卡是主卡并已插入、器件无法从 SD 卡引导并从 eMMC 引导。

    您是否知道此类问题或能否为我们提供解决方案?

    [/报价]

    我无法解释该行为。

    您是否在多个电路板上看到问题?

    您在 AM62x EVM 上看到同样的问题吗?

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

    尊敬的 Bin:

    我们在不同的板上看到了完全相同的行为。 很遗憾、我们没有 AM62x EVM。

    我们是否可以在引导加载程序端将引导器件引导为硬编码? 如果可能、我们希望在插入 SD 卡时使用文件系统模式进行引导。 否则、从使用文件系统模式的 eMMC 引导?

    您能提供帮助吗?

    提前感谢、

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

    尊敬的 Veysel:

    问题在于 ROM 检测并从 SD 卡加载第二个引导加载程序、U-Boot 二进制文件尚未进入引导流程、因此没有什么可以硬编码。

    快速测试(我以前从未这样做过、不确定它是否可以正常工作)、您能否将引导模式位13更改为1、以便主模式和反向模式都从 sdcard 引导、以查看主板是否会从 sdcard 引导?

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

    尊敬的 Bin:

    非常感谢您的快速反馈。 我尝试了您提到的测试、引导模式位13至1、以便主模式和备份模式都从 sdcard 引导。 在这种情况下、器件从 SD 卡启动:

    -Boot SPL 2023.04-gb0d717b732 (Dec 06 2023 - 15:11:45 +0000)
    SYSFW ABI:3.1 (固件版本0x0009"9.1.8--v09.01.08 (Kool Koala)")
    SPL 初始堆栈使用量:13384字节
    尝试从 MMC2引导
    身份验证已通过
    身份验证已通过
    身份验证已通过
    身份验证已通过
    身份验证已通过
    在 ARM64内核上启动 ATF……

    但如果我移除 SD 卡、则没有从 eMMC 引导。

    您能提供帮助吗?

    提前感谢、

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

    尊敬的 Veysel:

    、但如果我移除 SD 卡、则无法从 eMMC 引导。

    这是预期的、因为主和备份都从 sdcard 引导。

    现在退一步、您似乎对 sdcard 和 eMMC 引导使用相同的 U-Boot 二进制文件、因此第一个引导消息始终相同:

       Boot SPL 2023.04-gb0d717b732 (2023年12月6日- 15:11:45 +0000)

    我们无法确定 ROM 是从 sdcard 还是 eMMC 加载 tiboot3.bin。

    您能否重新编译 U-Boot 并将二进制 tiboot3.bin 更新到 sdcard? 然后、如果 ROM 从 sdcard 引导、第一个控制台消息将包含当前时间戳、而不是"Dec 06 2023"、以便我们知道它在每次测试中的引导位置。

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

    尊敬的 Bin:

    我们通过 bitbake 命令对构建 u-boot 进行了如下清理、然后再次构建:

    cleanstate u-boot-ti-staging MACHINE=:k3r5:u-boot-ti-staging

    我们可以看到、每次 tiboot3.bin、tispl.bin 和 u-boot.img 都是新生成的。 我还可以通过文件的时间戳来验证这一点、每次我构建时、访问和修改的时间都是最新的。

    但时间戳如你指出的是 12月06 2023 - 15:11:4 和它永远不会改变?  

    提前感谢、

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

    您的意思是、即使您将备份引导模式更改为000、并且我们知道 eMMC 从未参与过、sdcard 引导日志仍然显示"Dec 06 2023"?

    可能是因为 Yocto 硬编码/修复了构建时间戳、但我不熟悉 Yocto 如何更改它。

    您能否将 Yocto 配置中的 U-Boot 版本/标签更改为9.2.x.x、以便引导日志与 eMMC 引导不同?

       Boot SPL 2023.04-gb0d717b732 (2023年12月6日- 15:11:45 +0000)
       SYSFW ABI:3.1 (固件版本0x0009"9.1.8--v09.01.08 (Kool Koala)")

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

    尊敬的 Bin:

    是的、在 SD 卡和 eMMC 引导中、我们分别为每个卡和 eMMC 引导提供相同的引导日志。

    作为快速测试、我在 boot_from_devices 函数中添加了 common/spl.c 日志、然后清理了 u-boot 并再次编译。

    然后、我将 SD 卡引导分区中的 tiboot3.bin 替换为新编译的分区。

    如果 SD 卡是主卡并插入、eMMC 是备份的、器件再次从 eMMC 引导(没有新添加的日志):

    U-Boot SPL 2023.04-gb0d717b732 (2023年12月6日- 15:11:45 +0000)
    SYSFW ABI:3.1 (固件版本0x0009"9.1.8--v09.01.08 (Kool Koala)")
    SPL 初始堆栈使用量:13384字节
    尝试从 MMC1引导

    如果我将主日志和备份都设置为 SD 卡引导、为了确保设备可以从 SD 卡引导、我可以看到新添加的日志:

    U-Boot SPL 2023.04-gb0d717b732 (2023年12月6日- 15:11:45 +0000)
    SYSFW ABI:3.1 (固件版本0x0009"9.1.8--v09.01.08 (Kool Koala)")
    SPL 初始堆栈使用量:13384字节
    从 SD 卡引导-->新添加的日志
    尝试从 MMC2引导
    MMC_LOAD_IMAGE_RAW_SECTOR:MMC 块读取错误
    身份验证已通过
    身份验证已通过
    身份验证已通过
    身份验证已通过
    身份验证已通过
    在 ARM64内核上启动 ATF……

    如您所见、由于 tiboot3.bin 有更改、但时间戳仍然相同。 我不知道这是否与我们的问题有关、但因此、如果是主要 SD 卡、我们便无法从 SD 卡引导。

    您能提供帮助吗?

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

    尊敬的 Veysel:

    作为快速测试、我在 boot_from_devices 函数中添加了 common/spl.c 中的日志、然后清理了 u-boot 并再次编译。
    [/报价]

    调试的好技巧!

    当您将 sdcard 设置为主盘和 eMMC 设置为备份时、U-Boot 提示符下以下命令的输出是什么?

    => MD.l 43000030 1.

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

    在每次测试中、您是对电路板进行下电上电还是对电路板进行热复位?

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

    尊敬的 Bin:

    以下是当 SD 卡为主卡(作为文件系统)且 eMMC 为备份(同样作为文件系统)时"md.l 43000030 1"的命令输出

    43000030:000016c3…

    我确实对断电-开启循环进行了测试。

    顺便说一下、我观察到 SD 卡是主卡、eMMC 是备份的、插入 SD 卡、如果我给电路板上电、器件会从 eMMC 引导。

    同样、如果我给电路板加电并截取 u-boot、然后在 u-boot 中触发"复位"命令、我就可以看到该器件每次从 SD 卡启动。

    您能提供帮助吗?  

    提前感谢、

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

    尊敬的 Bin:  

    让我更正命令输出、很抱歉给您带来不便

    => MD.l 43000030 1.
    43000030:00001643 C....

    提前感谢、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    BOOTMODE PIN 选择如下(与上一个相同)

     [/报价]

    根据该表、引导模式应为0x1643、但

    43000030:000016c3 ...

    它在寄存器中锁存为0x16c3。

    引脚 B7看起来是反向的。 请仔细检查您的电路板。

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid="530023" url="~/support/processors-group/processors/f/processors-forum/1494315/am625-default-wic-image-does-not-boot-up/5770849 #5770849"]
    => MD.l 43000030 1.
    43000030:00001643 C...

    好的、现在我看到您将该值更新为0x1643、这似乎是正确的。

    现在我唯一可以推荐的是使用不同品牌的 SD 卡进行测试、看看问题是否仍然发生。

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

    此外、还请检查所有 sdCard 总线信号(data/cmd 和 clk 线路)都具有所需的上拉/下拉电阻器。

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

    尊敬的 Bin:

    我刚刚尝试了不同品牌的 SD 卡、但结果是相同的。 我肯定会检查 data/cmd 和 clk 线路。

    但是你对下面的行为有什么意见吗? 如果我截取 u-boot 并输入 reset 命令、SD 卡主引导功能将按预期工作:

    按照我观察到的方式、SD 卡是主卡、eMMC 是备份、插入 SD 卡、如果给电路板上电、器件从 eMMC 引导。

    同样、如果我给电路板加电并截取 u-boot、然后在 u-boot 中触发"复位"命令、我可以看到器件从 SD 卡启动


    您能提供帮助吗?

    提前感谢、

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

    尊敬的 Veysel:

    MMR 中的引导模式锁存正确、因为主引导模式是 sdcard、备用模式是 eMMC。 如果给电路板上电、它始终从 eMMC 引导、则表示 ROM 在检测到来自 sdcard 的内容/进行初始化时失败。

    由于 warmreset 可以使 sdcard 引导正常工作、因此似乎表明 sdcard 在 POR 点未就绪、然后 ROM 无法检测到它。 因此、我们现在需要重点检查硬件、例如 SDCard 信号设计(上拉/下拉)、所有电源轨和上电时序等

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

    尊敬的 Bin:  

    我们检查了 SD 卡总线信号、并注意到问题与 SD 卡的上电顺序有关。 我们修复了该问题、并能够使用主引导 SD 卡和备用引导 eMMC。

    感谢您的所有帮助。

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

    很高兴问题得到解决。 感谢您的更新。