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.

[参考译文] AM62L:AM62L3 复位原因

Guru**** 2651505 points

Other Parts Discussed in Thread: AM62L

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1584596/am62l-am62l3-reset-cause

器件型号: AM62L

似乎无法在 TF-A BL1(和更高的 BL 阶段)上检测到复位原因。

通过在 WKUP_CTRL_MMR_CFG5_RST_CTRL (0x43054000) 上写入 0x00000006 来发出热复位、则可以正常运行。 但是、在 TF-A BL1 执行的早期阶段、从 WKUP_CTRL_MMR_CFG5_RST_SRC (0x43054010) 中读回复位原因始终返回 0x00000000(预期:0x00000002)。

源寄存器说明说、必须在首次读取寄存器后清除状态。 因此、好像在 BL1 清除这些位之前的某个阶段一样。 到目前为止、我在 BL1 代码中找不到它已被使用的位置、因此复位状态寄存器可能无法正常工作或被其他人覆盖。

问题是、如果某个阶段可能无法控制(可能是 ti sysfw?)、我们如何找出复位原因? 已消耗并复位源寄存器?

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

    您好 Fabian:

    您能否确认您使用的是 Linux SDK 或 MCU+SDK?

    在 MCU+SDK 中、TFA 是二进制文件、用户无法在此 TFA 二进制代码中编写任何内容。

    此致、

    Anil.

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

    尊敬的 Anil:

    感谢您的支持。 我已经使用了显示相同行为的 SDK 二进制文件。 由于 SDK 还包含源代码和 Makefile、因此我们也能够重现 bianries。 然后我们在函数 bl1_plat_arch_setup(void) 内添加了一个小的附加 note() 调用来打印复位源寄存器的内容  
    在  plat/ti/k3/common/k3_bl1_setup.c 中,我们认为该函数无法识别正确的复位源。 也许我们错过了这里的一些东西? 提前感谢!

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

    您好 Fabian:

    也许您是对的。

    在读取复位寄存器的状态之前、有人会清除复位状态位。

    您可以执行一次测试、而不是在 BL1_plat_arch_setup API 调用之前读取复位状态、而是在 BL1_plat_arch_setup API 之后读取。

    如果您已经完成了该操作、则可能只会在 ROM 引导加载程序中清除此标志。

    因为 BL1 阶段是 ATF 以及 DM 功能 (SYSFW)、您正尝试读取 BL1 内核平台之前的设置。

    您可以据此确认测试结果、我可以将该主题转给 Linux 专家。

    BL1 代码无法在 MCU+SDK 中进行操作,我觉得您使用的是 A53 内核上的 Linux。

    此致、

    Anil.

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

    您好 Anil、

    再次感谢您的答复。 抱歉、我忘记提一下、是的、这是 Linux-SDK (

    AM62L-Linux-SDK— 适用于 AM62L 系列器件的 Linux SDK

    ) 我在这里使用。

    现在使用 NOTICE(“0x%08x\n",“,MMIO_READ_32、MMIO_READ_32 (0x43054010)) 再次尝试;
    调用  bl1_plat_arch_setup(void) 之前和之后的调用。 另外在后续的引导阶段中进行检查。

    但它仍为复位源寄存器值打印全 0。

    此致、
    Fabian

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

    您好 Fabian:

    我正在将您的查询发送给 Linux 专家。

    此致、

    Anil.

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

    尊敬的 Fabian:

    [报价 userid=“673165" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1584596/am62l-am62l3-reset-cause/6105825

    现在使用 NOTICE(“0x%08x\n",“,MMIO_READ_32、MMIO_READ_32 (0x43054010)) 再次尝试;
    调用  bl1_plat_arch_setup(void) 之前和之后的调用。 另外在后续的引导阶段中进行检查。

    但它仍为复位源寄存器值打印全 0。

    [/报价]

    您能否尝试以下 U-Boot 命令以查看其是否打印正确的复位值?

    => MD.l 0x43054010 1.

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

    尊敬的 Bin:

    感谢您的支持! 当然、已尝试通过 USB DFU 进行引导、结果如下:

    => MD.l 0x43054010 1.
    43054010:00000000…
    => mw.l 0x43054000 0x00000006 1?请注意:bl1_plat_arch_setup arch 设置
    注意:引导可信固件
    注意:BL1:v2.12.0(发行版):11.01.14-1-g6c8ef6729-dirty
    注意:BL1:建造:08:31:09, 2025 年 9 月 25 日
    注意:bl1:dram_class:11
    注意:LPDDR4:POST START - PI 训练状态=0x27c0a000
    注意:bl1_platform_setup DDR 初始化完成
    注意:k3_bl1_handoff 进入 WFI - BL1 的末尾
    注意:BL31:v2.12.0(发行版):11.01.14-1-g6c8ef6729-dirty
    注意:BL31:建造:08:31:09, 2025 年 9 月 25 日
    注意:SYSFW ABI:4.0(固件版本 0x000b '11.1.12-v11.01.12(花哨 Rat)')
    错误:代理 0 协议 0x10 消息 0x7:不支持

    U-Boot SPL 2025.01-00586-gc779c758475c (2025 年 9 月 24 日 — 19:44:29 +0000)
    SPL 初始栈使用量:1984 字节
    它会尝试从 DFU 进行引导
    ###### 下载...确定
    按 Ctrl+C 退出...
    错误:代理 0 协议 0x10 消息 0x7:不支持


    U-Boot 2025.01-00586-gc779c758475c (2025 年 9 月 24 日 — 19:44:29 +0000)

    SoC:AM62Lx SR1.1 HS-SOC FS
    型号:Texas Instruments AM62L3 评估模块
    DRAM:2 GiB
    错误:代理 0 协议 0x10 消息 0x7:不支持
    内核:82 个器件、31 个 uclasses、器件树:单独
    MMC:MMC@fa10000:0、MMC@fa00000:1
    从无处加载环境... 好的
    IN:serial@2800000
    输出:串行@2800000
    错误:serial@2800000
    NET:无法获取 MDIO@f00 的 PHY:地址 0
    am65_cpsw_Nuss_port Ethernet@8000000port@1:phy_connect () 失败
    无法获取 MDIO@f00:地址 1 的 PHY
    am65_cpsw_Nuss_port Ethernet@8000000port@2:phy_connect () 失败
    未找到以太网。

    按任意键停止自动引导:0
    => MD.l 0x43054010 1.
    43054010:00000000…

    因此、热复位后没有变化。

    此致、

    Fabian

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

    尊敬的 Fabian:

    感谢您的测试。 您是在定制电路板或 AM62L EVM 上运行该器件吗?

    我在使用 SDK 11.1.16.13 从 sdcard 引导的 EVM 上运行了它、并看到了预期结果。

    => md.l 0x43054010 1
    43054010: 00000000                             ....
    => mw.l 0x43054000 0x00000006 1NOTICE:  bl1_plat_arch_setup arch setup 
    NOTICE:  Booting Trusted Firmware
    NOTICE:  BL1: v2.12.0(release):11.01.14-1-g6c8ef6729-dirty
    NOTICE:  BL1: Built : 08:31:09, Sep 25 2025
    NOTICE:  BL1: dram_class: 11
    NOTICE:  lpddr4: post start - PI training status=0x27c0a000 
    NOTICE:  bl1_platform_setup DDR init done
    NOTICE:  k3_bl1_handoff ENTERING WFI - end of bl1
    NOTICE:  BL31: v2.12.0(release):11.01.14-1-g6c8ef6729-dirty
    NOTICE:  BL31: Built : 08:31:09, Sep 25 2025
    NOTICE:  SYSFW ABI: 4.0 (firmware rev 0x000b '11.1.12-v11.01.12 (Fancy Rat)')
    ERROR:   Agent 0 Protocol 0x10 Message 0x7: not supported
    
    U-Boot SPL 2025.01-00586-gc779c758475c (Sep 24 2025 - 19:44:29 +0000)
    SPL initial stack usage: 1984 bytes
    Trying to boot from MMC2
    ERROR:   Agent 0 Protocol 0x10 Message 0x7: not supported
    
    
    U-Boot 2025.01-00586-gc779c758475c (Sep 24 2025 - 19:44:29 +0000)
    
    SoC:   AM62LX SR1.1 HS-FS
    Model: Texas Instruments AM62L3 Evaluation Module
    DRAM:  2 GiB
    ERROR:   Agent 0 Protocol 0x10 Message 0x7: not supported
    Core:  82 devices, 31 uclasses, devicetree: separate
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In:    serial@2800000
    Out:   serial@2800000
    Err:   serial@2800000
    Net:   eth0: ethernet@8000000port@1
    Warning: ethernet@8000000port@2 (eth1) using random MAC address - 62:19:f9:25:0b:48
    , eth1: ethernet@8000000port@2
    Hit any key to stop autoboot:  0 
    => md.l 0x43054010 1
    43054010: 00000002

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

    尊敬的 Bin:

    感谢您的支持。 我在定制电路板上尝试过、也使用了 ti-processor-sdk-linux-am62lxx-evm-11.01.16.13 及其预编译的二进制文件 tiboot3.bin、tispl.bin 和 u-boot.img。
    我仅在 USB 引导时尝试了预编译的二进制文件、因为预编译的 tispl.bins u-boot SPL 不支持基于 GPMC-NAND 的引导。 NAND 将是我们的主要存储器。 从 NAND 引导准备好的 TF-A BL1(在启动时通过 NOTICE () 消息检查,请参见上文)也会显示缺少的复位源。 NAND 引导通过 EFUSE 引导模式进行选择(只需在此处提及)。 CPU 具有“TI AM62L 32B0GHA 57P0P6 412 ANB“。 印刷在它的顶部。

    我们的电路板上没有 SD 卡插槽或 eMMC。 也许所选/使用的引导模式对复位源检测有影响?

    此致、
    Fabian

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

    尊敬的 Fabian:

    我使用 AM62L EVM 上的 SDK11.01.16.13 预编译 U-Boot 二进制文件尝试了 DFU 引导、但仍然从寄存器 0x43054010 中获取预期的 0x00000002。

    您的电路板是否有 PMIC、当发生 SoC 热复位时、可以对 AM62L 进行下电上电? 这将是定制电路板上行为的唯一解释。

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

    尊敬的 Bin:

    非常感谢您的支持。 尽管不直接涉及 PMIC、但有关外部元件的提示非常有用。 事实证明、外部控制器当前会解读 RESETSTATz 信号、该信号在热复位期间被拉取、然后触发 CPU 的 PORz 引脚、进而触发 CPU 的下电上电。 然后、这会覆盖热复位。 CPU 可能会执行这里的所有操作。 因此、现在需要修改外部控制器的固件。

    我相信、它将在此之后发挥作用。 一旦我收到新的控制器固件并检查行为、我将按下 Resolve(解决)按钮、并且可以关闭线程。

    此致、
    Fabian

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

    尊敬的 Fabian:

    很高兴我们找到了根本原因。 感谢您的更新。

    期待最终确认。