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.

[参考译文] PROCESSOR-SDK-AM67:UART 引导序列挂起

Guru**** 2442090 points
Other Parts Discussed in Thread: AM67

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1536111/processor-sdk-am67-uart-boot-sequence-hangs

器件型号:PROCESSOR-SDK-AM67
主题中讨论的其他器件:AM67DA8XX

工具/软件:

我正在使用 TI SDK 11.00.10.01 对基于 AM67 (J722S) EVM 的定制电路板执行系统引导验证
目前、我正在 UART 引导模式下实现以下引导序列、并遇到错误:

1.通过 XMODEM 传输 tiboot3.bin
2.通过 Ymodem 传输 tispl.bin 和 u-boot.img

但是、执行 tiboot3.bin 后、系统不会转换到 Ymodem 传输等待状态、引导序列会停止。

在跟踪 tiboot3.bin 的操作时、我确认了以下内容:
-执行 k3_sysfw_loader() 后、UART 输出正常工作(系统固件已由 ROM 加载)
随后,当 get_ti_sci_handle () 被执行时,它返回 NULL
-inside get_ti_sci_handle ()、uclass_get_device_by_driver (UCLASS_firmware、DM_driver_get (ti_sci)、&dev) 被调用、但无法获取 dev
-因此,k3_sysfw_print_ver () 中的版本显示失败,因为 ti_sci 为 NULL

作为一种变通方法,我尝试调用 k3_sysfw_loader () 中的 get_ti_sci_handle () 来检查 ti_sci 的初始化状态,但这无法解决问题。
这似乎在很大程度上依赖于 TI SDK 中包含的 u-boot-ti-staging 中的 SPL 实现和 TI 系统固件初始化。


怀疑有以下原因:

-ti_sci 驱动程序在 SPL 执行期间尚未初始化
-在 SPL 配置中,即使系统固件已由 ROM 加载,在 SPL 端初始化完成前也会调用 get_ti_sci_handle ()
-在 SPL 阶段未启用 UART 引导中的 Ymodem 传输等待过程

关于 k3_sysfw_loader () 和 ti_sci 的初始化过程,我想知道以下内容。

在 k3_sysfw_loader() 中、是否需要显式执行 ti_sci 客户端初始化(等价于 ti_sci_initialize ())、即使在 ROM 加载的状态下也是如此?
-get_ti_sci_handle () 在 SPL 执行期间是否返回 NULL ? 如果是、应该将 ti_sci 初始化在哪里?
-关于 Ymodem 接收 tispl.bin 和后续文件不是在 UART 引导模式下启动的问题,应该在 SPL 中检查什么设置或代码?

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

    尊敬的 Kazuya:

    我们将对其进行研究、然后返回给您。

    此致

    Gokul

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

    您好:

    几个问题:

    • 控制台上有任何日志吗?
    • 您使用哪个实例作为定制电路板上的控制台?
    • 您通过 UART 控制台执行的任何自定义更改?

    - Keerthy

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

    您好:

    几个问题:

    • 控制台上有任何日志吗?
    • 您使用哪个实例作为定制电路板上的控制台?
    • 您通过 UART 控制台执行的任何自定义更改?

    - Keerthy

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

    您好 Keerthy

    感谢您的回答和问题。
    以下是我的答案:

    1.是的、我在控制台上获得了日志。 控制台输出工作正常、如以下日志所示:
    2.“U-Boot SPL 2025.01-00407-g6c6b4a79acea (2025 年 3 月 25 日 — 16:14:37 +0000)“
    我使用 UART0 作为定制电路板上的控制台实例。
    未对 UART 控制台配置进行任何自定义更改。

    - Kazuya

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

    您通常可以提供该信息  

    [引述 userid=“646340" url="“ url="~“~/support/logic-group/logic/f/logic-forum/1536111/processor-sdk-am67-uart-boot-sequence-hangs/5909757 #5909757“]U-Boot SPL 2025.01-00407-g6c6b4a79acea (2025 年 3 月 25 日 — 16:14:37 +0000)[/报价]

    则还应加载 TIFS。

    下面我会邀请 UART 专家。

    - Keerthy

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

    尊敬的 Kazuya:

    我们在 J722S TI 板上对此进行了最终测试、运行正常。

    日志:

    因此、电路板上的一些定制更改会导致该问题。

    您能通过简要说明所做的所有自定义更改(包括硬件和软件)来帮助我们、以便我们缩小问题范围。

    此外、我找不到 您告诉过的任何 TI SDK 11.00.10.01。  以下链接中只有 SDK 版本 11.00.00.08:

    www.ti.com/.../PROCESSOR-SDK-LINUX J722S-J722S

    此致

    Gokul

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

    嗨、Gokul

    我使用从以下网站下载的 TI SDK 版本 (11.00.10.01):
    “">www.ti.com/.../PROCESSOR-SDK-AM67</s>“

    定制电路板的定制修改:
    根据我们定制电路板的“ProcessorSDK 11.00.10.01“进行了以下更改。
    ============================================================================
    2-1. local.conf
    ・构建配置更改
    【之前】
    机器?=“Arago"</s>“
    Distro =“Arago"</s>“
    【之后】
    机器?=“定制板“
    Distro =“Arago-CustomBoard"</s>“

    2-2. arago-CustomBoard.conf
    基于“sources/meta-arago/meta-arago-distro/conf/distro/arago.conf “并进行以下更改:
    【之前】
    DISTRO_NAME =“ARAGO"</s>“
    DISTRO_VERSION =“2025.01"</s>“
    distro_feed_URI ?=“">http://lcpd.itg.ti.com"</s>“ “
    【之后】
    distro_name =“arago for CustomBoard with AM6754“
    DISTRO_VERSION =“0.1.0"</s>“
    DISTRO_FEED_URI =“"</s>“

    2-3. CustomBoard-k3r5.conf
    基于“sources/meta-ti/meta-ti-bsp/conf/machine/j722s-evm-k3r5.conf",“,进行、进行以下更改:
    【之前】
    SYSFW_CONFIG =“EVM"</s>“
    【之后】
    SYSFW_CONFIG =“CustomBoard"</s>“

    2-4. 向“binman.dtsi"添加“添加了设置
    基于“git\git\arch\arm\dts\k3-j722s-binman.dtsi",“,进行、进行以下更改:
    + mboxes=<&secure_proxy_main 22>、
    +<&SECURE_PROSET_MAIN 23>;

    2-5. 为定制电路板添加或修改的项目
    ・添加:
    CONFIG_TARGET_J722S_R5_CUSTOMBOARD=y
    CONFIG_SYS_SPL_MALLOC=y
    CONFIG_HAS_CUSTOM_SPL_MALLOC_START=y
    CONFIG_CUSTOM_SYS_SPL_MALLOC_ADDR=0x84000000
    CONFIG_SYS_SPL_malloc_size=0x1000000
    CONFIG_SPL_MTD_SUPPORT=y
    CONFIG_DA8XX_GPIO=y
    CONFIG_SPL_DM_GPIO=y
    CONFIG_DM_GPIO=y
    CONFIG_DM_GPIO_Lookup_label=y
    CONFIG_SPL_DM_GPIO_Lookup_label=y
    CONFIG_FLASH_CFI_MTD=y
    CONFIG_SYS_FLASH_CFI=y
    CONFIG_SYS_MAX_FLASH_BANK_DETECTE=y
    CONFIG_CUSTOMBOARD_DDR_CONFIG_DEFAULT=0

    ・修改时间:
    CONFIG_SF_DEFAULT_SPEED=60000000
    config_default_device_tree=“k3-j722s-r5-CustomBoard"</s>“
    CONFIG_SPI_FLASH_STMICRO=y
    CONFIG_SPL_SIZE_LIMIT=0x80000
    CONFIG_GPIO=y
    CONFIG_MTD_NOR_FLASH=y
    CONFIG_CFGI_FLASH=y

    3.为了验证 SYSFW 操作、我在“spl.c"中“中添加了跟踪日志并确认了该行为。
    以下日志显示已加载 SYSFW:
    ======================================
    k3_sysfw_loader:已输入
    SYSFW 已由 ROM 加载
    CONFIG_K3_LOAD_SYSFW =启用=
    ======================================

    但是、该过程将通过“安全代理“进入 SYSFW 的消息发送阶段、
    但它在 mbox_send () 调用中停止,并且没有响应。
    是否缺少任何配置?
    ======================================
    uclass_get_device_tail 返回 0
    调用了 TI_sci_get_handle_from_sysfw ()
    TI_sci_get_handle_from_sysfw:已输入
    调用 dev_get_priv()
    DEV_GET_PRIV 正常
    调用 ti_sci_cmd_get_revision()
    TI_sci_cmd_get_revision:已输入
    handle_to_ti_sci_info 正常
    调用 ti_sci_setup_one_xfer
    TI_sci_setup_one_xfer 正常
    调用 ti_sci_do_xfer
    TI_sci_do_xfer:已输入
    TI_sci_do_xfer:安全模式激活
    memcpy 安全标头+有效载荷
    TI_sci_do_xfer:通过 mbox_send () 发送消息
    ======================================

    - Kazuya

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

    尊敬的 Kazuya:

    您可以尝试使用吗   SDK 版本 11.00.00.08  您使用的 EVM 时可以在以下链接中找到 J722S EVM:

    www.ti.com/.../PROCESSOR-SDK-LINUX J722S-J722S

    此致

    Gokul

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

    尊敬的 Gokul:

    很抱歉跳进去了。 这是工业客户的支持请求、我已与 Suman 确认将 AM67 SDK 用于工业应用。

    谢谢、
    Nakano

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

    尊敬的 Kazuya:

    config_default_device_tree="k3-j722s-r5-CustomBoard"
    </s>“ “
    • 您能分享一下在 k3-j722-r5-CustomBoard 中所做的更改吗?
    • 您是否还可以使用 R5 存储器映射 ((docs.u-boot.org/.../j721s2_evm.html) 对存储器映射进行交叉验证、并确保不会覆盖任何内容。

    此致

    Gokul

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

    尊敬的 Gokul:

    我检查了存储器映射、 “u-boot-spl"的“的大小不同、“ti-fs-enc.bin"的“的偏移量也因大小的增加而不同。

    tiboot3-j722s-hs-fs-evm (->tiboot3.bin)
    ----------------------------------------------------------------------------------------
    ImagePos 偏移大小名称
    ----------------------------------------------------------------------------------------
    00000000 00000000 0005bcca tiboot3-j722s-hs-fs-evm.bin
    00000000 00000000 0000085c ti-secure-ROM
    0000085c 0000085c 0003300c u-boot-spl
    00033868 00033868 00027000 ti-fs-enc.bin
    0005a868 0005a868 000007ac combined-tifs-cfg.bin
    0005b014 0005b014 00000694 sysfw-iner-cert
    0005b6a8 0005b6a8 00000622 combined-dm-cfg.bin


    tiboot3-j722s-hs-fs-customboard (-> tiboot3.bin)
    ----------------------------------------------------------------------------------------
    ImagePos 偏移大小名称
    ----------------------------------------------------------------------------------------
    00000000 00000000 0005c07d tiboot3-j722s-hs-fs-customboard.bin
    00000000 00000000 0000085c ti-secure-ROM
    0000085c 0000085c 000333ef u-boot-spl
    00033c4b 00033c4b 00027000 ti-fs-enc.bin
    0005ac4b 0005ac4b 00000794 combined-tifs-cfg.bin
    0005b3df 0005b3df 00000694 sysfw-iner-cert
    0005ba73 0005ba73 0000060a combined-dm-cfg.bin

    - Kazuya

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

    尊敬的 Kazuya:

    我会仔细研究一下、然后回复您。

    此致

    Gokul

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

    尊敬的 Kazuya:

    2-4. 向“binman.dtsi"添加“添加了设置
    基于“git\git\arch\arm\dts\k3-j722s-binman.dtsi",“,进行、进行以下更改:
    + mboxes=<&secure_proxy_main 22>、
    +<&SECURE_PROSET_MAIN 23>;

    你能详细说明为什么进行了上述更改,因为这可能是 当你试图通过“安全代理“向 SYSFW 发送消息时 mobx_send () 函数失败的原因。

    此致

    Gokul