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.

[参考译文] TDA4VP-Q1:HS-DFU FS USB-DFU 引导:Cortex-A72 tispl 卡在 ATF

Guru**** 2555630 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1563341/tda4vp-q1-hs-fs-usb-dfu-boot-cortex-a72-tispl-is-stuck-at-atf

器件型号:TDA4VP-Q1


工具/软件:

尊敬的 TI 团队:

我遇到了一个卡在 Cortex-A72 中的“在 ARM64 内核上启动 ATF ...“ 步骤。 这是 UART 输出:

U-Boot SPL 2025.01-ti-g70667128cb5b-dirty (Sep 09 2025 - 13:18:59 +0200)
SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.9--v11.00.09+ (Fancy Rat)')
Initialized 3 DRAM controllers
SPL initial stack usage: 13456 bytes
Trying to boot from DFU
#####DOWNLOAD ... OK
Ctrl+C to exit ...
Authentication passed
Authentication passed
Authentication passed
Loading Environment from nowhere... OK
init_env from device 18 not supported!
Authentication passed
Authentication passed
Starting ATF on ARM64 core...

我使用的是最新的 PROCESSOR-SDK-LINUX-J784S4 版本 11.0.0.8。

您能帮助我找到这个问题的根源吗?

此致、

Andreas

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

    尊敬的 Andreas:

    您是否可以尝试使用 DFU 以外的其他引导模式、并查看是否还会出现相同的问题。

    它也是定制电路板吗?

    此致

    Gokul

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

    尊敬的 Gokul:

    我使用 UART 引导模式时也有同样的行为。 我可以tiboot3-j784s4-hs-fs-evm.bintispl.bin使用sx Linux 命令行工具(minicom 对我不起作用)进行传输。

    这是 UART 输出:

    02000000011a00006a376165700000000000000048534653000801000008010002a60000000000002b28ecde967b79d61619f89cf299205c36d179cacb2b1c5a7f16e3169cc879602122d07ad47ae878a46e243c6f5078c04a5452faceeccb00d0453a5a5e6420daad0bc40b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000309aa3d25842d84d3c1c0c0cf41c02f6ca9bae312f209e7b8807136f4f4dfc12CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
    
    
    U-Boot SPL 2025.01-ti-g70667128cb5b-dirty (Sep 09 2025 - 15:00:50 +0200)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.9--v11.00.09+ (Fancy Rat)')
    Initialized 3 DRAM controllers
    SPL initial stack usage: 13456 bytes
    Trying to boot from UART
    CCCCCCCC
    
    board_fit_image_post_process: processing image: addr=70000000COMMA size=54477COMMA os=arm-trusted-firmware
    board_fit_image_post_process: matched image for ID 1
    board_fit_image_post_process: processing image: addr=9e800000COMMA size=492501COMMA os=tee
    board_fit_image_post_process: matched image for ID 2
    board_fit_image_post_process: processing image: addr=89000000COMMA size=229277COMMA os=DM
    board_fit_image_post_process: matched image for ID 4
    board_fit_image_post_process: processing image: addr=80080000COMMA size=311077COMMA os=U-Boot
    board_fit_image_post_process: matched image for ID 3
    board_fit_image_post_process: processing image: addr=ffffffffCOMMA size=17786COMMA os=
    Loaded 1107335 bytes
    Loading Environment from nowhere... OK
    init_env from device 7 not supported!
    jump_to_image_no_args: Authenticating image: addr=70000000COMMA size=54477COMMA os=arm-trusted-firmware
    jump_to_image_no_args: Authenticating image: addr=9e800000COMMA size=492501COMMA os=tee
    jump_to_image_no_args: jumping to address 41010000
    Starting ATF on ARM64 core...
    

    我可以看到与 USB 引导模式完全相同的输出/行为。

    希望这能有所帮助!

    此致、

    Andreas

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

    尊敬的 Andreas:

    只是有几个问题:

    • 这是您第一次尝试启动电路板吗?
      • 如果没有、说明它是否能在任何早期 SDK 版本中正常工作。

    此致

    Gokul

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

    尊敬的 Gokul:

    是的、这是第一次启动这样的电路板。 我们的用例是设置可直接用于生产环境的高速初始刷写流程。 这是一种定制电路板、我们的工具链与客户和客户软件栈完全分离、因此我要执行这些步骤。

    我目前也在等待反馈、但我已经测试了以下 SDK 版本以供参考:

    • v11.00.00.08:最新 SDK;当前正在使用
    • v10.01.00.05:行为与最新 SDK 相同
    • v09.01.00.06:根本没有 UART 输出

    此致、

    Andreas

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

    尊敬的 Andreas:

    感谢您的信息。 我会仔细研究一下、然后回复您。

    此致

    Gokul

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

    尊敬的 Gokul:

    谢谢您的支持!

    我能够自己编译 ti-ATF、并在 Code Composer Studio 中查看 Cortex-A72_0_0 以查看失败的位置:

    • ATF 运行到中plat_panic_handler()、链接寄存器告诉我它来自 reset_handler()
    • 当我跳过reset_handler()核心也恐慌:

      我可以看到 fconf_populate + 0x3c() 意味着 dtb 文件无效。

    由于 PCB 的 RAM 大小减小、DTB 无法加载到预期的地址 0xFFFFFFFF。
    因此、在我们这边、可能必须以不同的方式定义 RAM 布局。

    目前我们有 EMIF0 - EMIF2 在使用中(3 个 DRAM 控制器)、每个控制器具有 1GB 存储器。 这就是我在 DTS 中调整存储器节点的方式 (EVM 中为 32GiB):

        memory@80000000 {
            /* 2G RAM */
            reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
            device_type = "memory";
            bootph-all;
        }

    您是否有其他想法来解决此问题?

    此致、

    Andreas

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

    尊敬的 Andreas:

    能否提供有关 所使用的 DDR 大小的更多信息?

    此致

    Gokul

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

    尊敬的 Gokul:

    EMIF0 - EMIF2 每个都连接了一个 8Gbit DDR RAM。 因此、总共有 3 GiB 的可用内存。

    我保留了 RAM 的前 2 GiB、因为它的定义与 EVM 的 32 GiB 布局相同。

    此致、

    Andreas

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

    你好、Gokul  

    本主题正在阻止生产、请立即寻求支持  

    您能告诉我您今天有什么时间安排会议吗?

    感谢您的理解  

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

    尊敬的 Ahmed:

    • 您能否分享您用于构建 ATF 的步骤?
    • 其次是您用于控制台日志记录的 UART 实例、与 TI J784S4 EVM 中使用的实例相同

    此致

    Gokul

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

    @Andreas K 您能否提供您的答案来构建用于调试的 ATF 和 UART?

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

    您好、Gokul、您好、Ahmed、

    1.创建 ATF 的步骤:

    • 我使用了支持包中的标准版本、标签为“11.00.10"</s>“
    • 我自己构建了 ATF、只是为了拥有调试符号以将其加载到 CCS 中
    • 因此、通常与预构建版本没有区别

    UART 实例:

    • 对于 U-Boot、我从 MAIN_UART8 (SERIAL2) 切换到 MCU_UART0 (SERIAL1)
    • 对于 ATF、我没有更改 UART 实例、这就是为什么我没有收到额外输出的原因。
      但我没有找到任何与 Keystone3 相关的设备树源

    此致、

    Andreas

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

    尊敬的 Andreas:

    • 您能分享用于构建 ATF 的详细命令吗?
      • 对于 ATF、我没有更改 UART 实例、这就是为什么我没有收到额外输出的原因。
        但我没有找到任何与 Keystone3 相关的设备树源

      Andreas、能更清楚地说明一下这个问题吗? 您的电路板是否支持主 UART8? 如果是、您是否可以尝试将所有串行控制台日志 (uboot 和 ATF) 打印到主 UART8、以便我们可以缩小问题范围。

      此致

      Gokul

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

    尊敬的 Gokul:

    您能否分享用于构建 ATF 的详细命令。

    我可以给你我做了什么的完整背景:

    1. 示例  ti-processor-sdk-linux-adas-j784s4-evm-11_00_00_08
    2. 调整了器件树:
      1. 更新 Dtsi 中的 DDRSS 寄存器
      2. 仅使用 3 个 DRAM 控制器(仅连接 3 个)
      3. 设置 2GB RAM 以使用 u-boot
      4. MAIN_UART8 根据原理图、引脚用于其他目的、并且没有测试点、因此我要切换 MCU_UART0
    3. 根据文档使用构建了 u-boot make u-boot

    dfu-boot 工件:

    • tiboot3-j784s4-hs-fs-evm.bin:
      • 引导成功
    • tispl.bin:
      • 跳进(预编译的)ATF、但 卡滞

    为了了解 ATF 中发生了什么并在 CCS 中查看它、我执行了以下步骤:

    1. cd board_support=trusted-firmware-a-2.12+git
    2. 制造
    3. cp build/fvp/debug/bl31.bin ./prebuilt-images/bl31.bin

    然后、我重新构建了 u-boot 和 DFU 引导的工件。 tispl.bin 引导后、I:

    1. 连接到连接到 TDA4 JTAG 线路的 XDS 调试探针
    2. 已为 J784s4 加载 CCS 目标配置
    3. 导入了编译的 bl31.elf 以访问调试符号和调用栈(请参阅上面的屏幕截图部分注释)
    [引述 userid=“567772" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1563341/tda4vp-q1-hs-fs-usb-dfu-boot-cortex-a72-tispl-is-stuck-at-atf/6035788

    Andreas、能更清楚地说明一下这个问题吗? 您的电路板是否支持主 UART8? 如果是、您是否可以尝试将所有串行控制台日志 (uboot 和 ATF) 打印到主 UART8、以便我们可以缩小问题范围。

    [/报价]

    根据原理图、MAIN_UART8 引脚可用于其他目的。 -> 不支持 MAIN_UART8。

    此致、

    Andreas

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

    尊敬的 Andreas:

    很抱歉晚才回复。

    您是否可以在 SDK 的 ATF 目录中应用以下更改:

    diff --git a/plat/ti/k3/include/platform_def.h b/plat/ti/k3/include/platform_def.h
    index a2cc62d34..7183e901b 100644
    --- a/plat/ti/k3/include/platform_def.h
    +++ b/plat/ti/k3/include/platform_def.h
    @@ -105,14 +105,14 @@
     
     /* Platform default console definitions */
     #ifndef K3_USART_BASE
    -#define K3_USART_BASE                  (0x02800000 + 0x10000 * K3_USART)
    +#define K3_USART_BASE                  0x40a00000
     #endif
     
     /* USART has a default size for address space */
     #define K3_USART_SIZE 0x1000
     
     #ifndef K3_USART_CLK_SPEED
    -#define K3_USART_CLK_SPEED 48000000
    +#define K3_USART_CLK_SPEED 96000000
     #endif
     
     /* Crash console defaults */

    应用上述更改后、使用以下命令重新编译 ATF:

    host# export CROSS_COMPILE_64="${SDK_INSTALL_DIR}/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/aarch64-oe-linux/aarch64-oe-linux-"
    host# export SYSROOT_64="${SDK_INSTALL_DIR}/linux-devkit/sysroots/aarch64-oe-linux"
    host# export CC_64="${CROSS_COMPILE_64}gcc --sysroot=${SYSROOT_64}"
    host# export CROSS_COMPILE_32="${SDK_INSTALL_DIR}/k3r5-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-oe-eabi/arm-oe-eabi-"
    
    host# make CROSS_COMPILE="$CROSS_COMPILE_64" ARCH=aarch64 PLAT=k3 TARGET_BOARD=j784s4

    将生成的 bl31.bin 文件复制到 SDK 的预编译映像目录。

    通过再次进行清洁和编译来重建 uboot。

    此致

    Gokul

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

    尊敬的 Gokul:

    我执行了您提到的步骤。

    现在 TISPL 成功、我可以发送 u-boot.img。

    我遇到的下一个错误是 u-boot 无法正确初始化 DRAM。 UART 输出:

    U-Boot SPL 2025.01-ti-g70667128cb5b-dirty (Sep 23 2025 - 16:51:55 +0200)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.9--v11.00.09+ (Fancy Rat)')
    Initialized 3 DRAM controllers
    SPL initial stack usage: 13456 bytes
    Trying to boot from DFU
    #####DOWNLOAD ... OK
    Ctrl+C to exit ...
    Authentication passed
    Authentication passed
    Authentication passed
    Loading Environment from nowhere... OK
    init_env from device 18 not supported!
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.12.0(release):11.00.09-1-gbd43b3320
    NOTICE:  BL31: Built : 14:50:36, Sep 23 2025
    
    U-Boot SPL 2025.01-ti-g70667128cb5b-dirty (Sep 23 2025 - 16:51:26 +0200)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.9--v11.00.09+ (Fancy Rat)')
    Trying to boot from DFU
    cdns-usb3-peripheral usb@6000000: DRD version v1 (ID: 0004024e, rev: 00000200)
    cdns-usb3-peripheral usb@6000000: Initialized  ep0 support:
    cdns-usb3-peripheral usb@6000000: Initialized  ep1out support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep2out support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep3out support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep4out support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep5out support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep6out support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep7out support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep8out support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep9out support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep10out support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep11out support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep12out support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep13out support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep14out support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep15out support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep1in support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep2in support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep3in support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep4in support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep5in support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep6in support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep7in support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep8in support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep9in support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep10in support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep11in support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep12in support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep13in support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep14in support: BULK, INT ISO
    cdns-usb3-peripheral usb@6000000: Initialized  ep15in support: BULK, INT ISO
    ######DOWNLOAD ... OK
    Ctrl+C to exit ...
    Authentication passed
    Authentication passed
    
    
    U-Boot 2025.01-ti-g70667128cb5b-dirty (Sep 23 2025 - 16:51:26 +0200)
    
    SoC:   J784S4 SR1.0 HS-FS
    Model: Texas Instruments J784S4 EVM
    DRAM:
    

    我记得以前曾为 J721S2 向 TI 解决过这个问题、 我认为这包含多个问题(u-boot DTS RAM 大小+ MMU RAM 区域定义)

    非常感谢、此致、

    Andreas

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

    尊敬的 Andreas:

    如果可能、您可以将链接指向该线程吗?

    此致

    Gokul

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

    尊敬的 Gokul:

    这是相应的主题: TDA4VL-Q1:J721S2 USB-DFU U-Boot、用于在生产环境中快速刷写 eMMC — 处理器论坛-处理器 — TI E2E 支持论坛

    但是、大多数问题都是在升级会议中解决的、因此不是所有问题都得到相应的跟踪。

    此致、

    Andreas

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

    尊敬的 Andreas:

    我已经邀请了相应的专家来回答与 DDR 相关的问题、因为我不是合适的专家。

    同时、您能否在使用 UART 引导模式时检查它是否在同一位置挂起 、以便我们可以缩小该问题的范围。

    此致

    Gokul

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

    您好、

    下一个错误是 DRAM 无法通过 u-boot 正确初始化。 UART 输出:

    DDR 初始化在 R5 SPL 中进行。 A72 SPL 和 u-boot.img 应在 DDR 之外执行。

    调整了器件树:
    1. 更新 Dtsi 中的 DDRSS 寄存器
    2. 仅使用 3 个 DRAM 控制器(仅连接 3 个)
    3. 设置 2GB RAM 以使用 u-boot
    [/报价]

    您能否显示您对上述项目所做的更改?

    此致、
    Kevin

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

    您好、

    1) 想法 1(需要修复)

    DDR 地址空间分为 TDA4VP 器件的 2 个区域:下部存储器区域和上部存储器区域。
    较低的内存区域只有 2GB、对应于系统地址空间 0x0 8000 0000 到 0x0 FFFF FFFF。
    较高的存储器区域为 30GB、对应于系统地址空间 0x8 8000 0000 到 0xF FFFF FFFF。
    k-j784s4-evm.dts 文件中的存储器节点通过“reg"属性“属性定义这两个区域。 “reg"的“的每个条目都定义起始地址和大小(前两个 32 位值与地址相关、 后两个 32 位值与大小相关)。  
    在最新的测试中、您已将 3GB 分配给较低内存区域、这是无效的(因为较低内存区域的最大大小为 2GB)。

    2) 思考 2(可能需要修复)

    我不是软件团队的成员、但(另一个观察)您可能需要保留内存节点“reg"属性“属性中定义的第二个内存区域。 我建议将大小设置为 0x0、而不是将其注释掉。

    请回答以上两个想法、如果仍然卡住、请告知我们。

    此致、
    Kevin

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

    作为对思想 2 的轻微修改、您也可以将其设置为 1GB、因为您总共有 3GB 的物理内存。

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

    您好 Kevin、

    使用类似 EVM 的 DRAM 布局 (  0x0 8000 0000 到 0x0 FFFF 为 2GB) 解决了该问题。  TDA4 u-boot 现在能够成功引导。

    感谢大家的快速帮助!

    此致、

    Andreas

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

    尊敬的 Andreas:

    感谢您确认并高兴问题现已解决!

    此致、
    Kevin