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.

[参考译文] SK-AM62P-LP:较大的引导加载程序 (DM 固件>7MB) 的 GPT 更新后引导失败

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1643980/sk-am62p-lp-boot-failure-after-gpt-update-for-larger-bootloader-dm-firmware-7mb

器件型号: SK-AM62P-LP

尊敬的团队:

我们使用以下设置:

  • 适用于 AM62Px 的 Processor SDK Android:11_00_01
  • 安卓版: 16
  • 内核版本:6.12

要求

我们需要增加 引导加载程序分区大小 、因为我们的 DM 内核应用程序大小超过 7MB、因此引导加载程序总大小要求为~8MB+。  链接

更改已完成

我们在中修改了 GPT 布局:
include/env/ti/android.env

diff --git a/include/env/ti/android.env b/include/env/ti/android.env
index 7732213e..1c9bd64d 100644
--- a/include/env/ti/android.env
+++ b/include/env/ti/android.env
@@ -1,8 +1,8 @@
 /* Android partitions
  * += is needed because \n is converted by space in .env files */
-partitions=name=bootloader,start=5M,size=8M,uuid=${uuid_gpt_bootloader};
+partitions=name=bootloader,start=5M,size=16M,uuid=${uuid_gpt_bootloader};
 partitions+=name=tiboot3,start=4M,size=1M,uuid=${uuid_gpt_tiboot3};
-partitions+=name=misc,start=13824K,size=512K,uuid=${uuid_gpt_misc};
+partitions+=name=misc,start=21M,size=512K,uuid=${uuid_gpt_misc};
 partitions+=name=frp,size=512K,uuid=${uuid_gpt_frp};
 partitions+=name=boot_a,size=40M,uuid=${uuid_gpt_boot_a};
 partitions+=name=boot_b,size=40M,uuid=${uuid_gpt_boot_b};
diff --git a/include/env/ti/k3_dfu.env b/include/env/ti/k3_dfu.env

问题 1: DFU (snagrecover) 故障

运行时:

snagrecover -s am625 -f ./am62px-sk-evm-hsfs.yaml

我们在 tispl 下载过程中遇到以下错误

snagrecover -s am625 -f ./am62px-sk-evm-hsfs.yaml
2026-05-08 19:36:36,811 [INFO] Starting recovery of am625 board
2026-05-08 19:36:36,814 [INFO] Installing firmware tiboot3
2026-05-08 19:36:36,814 [INFO] Searching for partition id...
2026-05-08 19:36:36,815 [INFO] Found DFU Functional descriptor: wTransferSize = 512
2026-05-08 19:36:36,815 [INFO] Downloading file...
2026-05-08 19:36:37,241 [INFO] Could not read status after end of manifest phase
2026-05-08 19:36:37,241 [INFO] Done
2026-05-08 19:36:37,241 [INFO] Done installing firmware tiboot3
2026-05-08 19:36:38,255 [INFO] Installing firmware tispl
2026-05-08 19:36:38,255 [INFO] Searching for partition id...
2026-05-08 19:36:38,256 [INFO] Found DFU Functional descriptor: wTransferSize = 4096
2026-05-08 19:36:38,256 [INFO] Downloading file...
Traceback (most recent call last):
  File "/home/user/.local/bin/snagrecover", line 8, in <module>
    sys.exit(cli())
  File "/home/user/.local/lib/python3.10/site-packages/snagrecover/cli.py", line 185, in cli
    recovery()
  File "/home/user/.local/lib/python3.10/site-packages/snagrecover/recoveries/am6x.py", line 33, in main
    run_firmware(dev, "tispl")
  File "/home/user/.local/lib/python3.10/site-packages/snagrecover/firmware/firmware.py", line 204, in run_firmware
    am6x_run(port, fw_name, fw_blob)
  File "/home/user/.local/lib/python3.10/site-packages/snagrecover/firmware/firmware.py", line 86, in am6x_run
    dfu_cmd.download_and_run(fw_blob, partid, offset=0, size=len(fw_blob))
  File "/home/user/.local/lib/python3.10/site-packages/snagrecover/protocols/dfu.py", line 158, in download_and_run
    raise ValueError("DFU error code reported by device!")
ValueError: DFU error code reported by device!

权变措施尝试

diff --git a/include/env/ti/k3_dfu.env b/include/env/ti/k3_dfu.env
index d89f8863..450d5666 100644
--- a/include/env/ti/k3_dfu.env
+++ b/include/env/ti/k3_dfu.env
@@ -25,7 +25,7 @@ dfu_alt_info_ospi=
        rootfs raw 0x800000 0x3800000
 
 dfu_alt_info_ram=
-       tispl.bin ram 0x80080000 0x200000;
+       tispl.bin ram 0x80080000 0x800000;
        u-boot.img ram 0x81000000 0x400000
 
 dfu_alt_info_ospi_nand=
diff --git a/include/env/ti/k3_dfu_combined.env b/include/env/ti/k3_dfu_combined.env
index ce3a1203..7182b4a5 100644
--- a/include/env/ti/k3_dfu_combined.env
+++ b/include/env/ti/k3_dfu_combined.env
@@ -23,5 +23,5 @@ dfu_alt_info_ospi=
        rootfs raw 0x800000 0x3800000
 
 dfu_alt_info_ram=
-       tispl.bin ram 0x80080000 0x200000;
+       tispl.bin ram 0x80080000 0x800000;
        u-boot.img ram 0x81000000 0x400000

通过此更改:

  • Sngrecover 成功
  • DM 内核显示应用程序在 HDMI 上成功运行
  • 引导加载程序大小增加到 16MB

问题 2: eMMC 引导失败

DFU→eMMC 切换引导模式后、电路板无法引导:

U-Boot SPL 2025.01-gef2eb76b6504-dirty (May 08 2026 - 19:13:06 +0530)
SYSFW ABI: 4.0 (firmware rev 0x000b '11.1.5--v11.01.05d (Fancy Rat)')
Set clock rates for '/a53@0', CPU: 1250MHz at Speed Grade 'U'
SPL initial stack usage: 17104 bytes
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###

问题

  1. 将引导加载程序分区增加到 16MB 是否 足够、或者是否有额外的限制(例如,tiboot3/tispl 布局对齐、ROM 预期)?
  2. 在修改 GPT 时、我们是否需要更新任何其他配置(例如,binman 布局、tiboot3 偏移、SYSFW 预期)?
  3. 此故障可能是由于以下原因造成的:
    • 调整大小后的分区偏移量不正确?
    • DFU RAM 布局与 eMMC 布局不匹配?
    • 引导 ROM/SPL 限制?
  4. 在 AM62Px 上支持大于 16MB 的引导加载程序的建议方法是什么?
  5. 是否有任何关于处理内部大型 DM 固件的官方指导 tispl.bin

请提供任何指导。

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

    您好、

    我正在将您的查询转至我们的 Android 专家进行评论。

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

    您好 Shanooj:

    完成此更改后是否重新构建了所有引导加载程序二进制文件?
    (DFU 和非 DFU 均为一)

    -  

    此外、稍后您必须 相应地调整用户数据图像大小。  
    git.ti.com/.../BoardConfig.mk

    此致、
    Vishal