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.

[参考译文] AM2431:在 Pinmux_init () 之后执行 Bootloader_socResetWorkaround() 的时序

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1584966/am2431-timing-of-bootloader_socresetworkaround-execution-after-pinmux_init

器件型号: AM2431

SDK 版本:mcu_plus_sdk_am243x_08_03_00_18

为了符合看门狗计时器 (WDT) 馈送限制、我想确认是否可以在 System_init() 中的以下初始化函数之后执行 Bootloader_socResetWorkaround():

DPL_init ()
PowerClock_init ()
Pinmux_init ()

目的是首先执行 Pinmux_init ()、然后输入一次 WDT、然后通过调用 Bootloader_socResetWorkaround() 触发热复位。

在原始 SDK 流程中、Bootloader_socResetWorkaround() 在 main() 函数中的 Bootloader_profileReset () 之后调用。 我想知道在 Pinmux_init () 和 WDT 馈送之后更改时序以执行它是否会导致 SoC 状态或初始化一致性出现任何问题。
对于此更改、TI 是否建议采取任何措施或预防措施?

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

    您好、Kanno、

    我正在查看您的查询,你可能会期待在一两天内回复.

    此致、

    Anil.

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

    您好、Kanno、

    我们的建议是在 System_init ()( DPL_init (), PowerClock_init (), Pinmux_init  () 之前调用 Bootloader_socResetWorkroll()

    如果在 System_init () 之后调用此 API、API 将在内部执行 SoC 的热复位。 在这种情况下,由于 System_init() 在重置前已经花费了 x 微秒,因此在重置后必须再次运行相同的初始化序列——实际上使该设置时间加倍。

    此外、如果您的 SBL 正在访问 CPSW 寄存器、请确保首先执行热复位、然后调用 System_init ()

    根据 TI 的建议流程、应立即发生 SoC 复位、而不首先运行 System_init ()。 此方法可帮助您节省冗余初始化时间。

    此致、

    Anil.

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

    您好 Anil、

    感谢您的详细说明。

    我还旨在尽可能减少冗余处理并缩短启动时间。 然而、由于 WDT IC 的限制、我们必须在 450ms 内通过 GPIO 发送信号。 遗憾的是、如果我们执行Bootloader_socResetWorkaround()得太早、这就不可能实现、因为它会导致热复位并延迟 GPIO 信号。

    因此,即使它引入了一些冗余,我们还是被迫在调用之前通过 GPIO 馈送 WDTBootloader_socResetWorkaround()

    目前、我们的流程如下:

    Bootloader_profileReset()
    Bootloader_socIsMCUResetIsoEnabled()
    Bootloader_socResetWorkaround()
    Bootloader_socWaitForFWBoot()
    Bootloader_socOpenFirewalls()
    System_init()
    

    我们正在考虑将其改为:

    Bootloader_profileReset()
    Bootloader_socWaitForFWBoot()
    Bootloader_socOpenFirewalls()
    System_init()
    Bootloader_socIsMCUResetIsoEnabled()
    Bootloader_socResetWorkaround()
    

    由于现阶段不涉及 CPSW 寄存器访问、因此我们认为此更改不应导致任何问题。 您能否确认此理解是否正确?

    此致、
    Kanno, Itsuki

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

    您好、Kanno、

    Bootloader_profileReset () Bootloader_socWaitForFWBoot ( ) Bootloader_socOpenFirewalls () System_init () Bootloader_socisMCUResetIsoEnabled () Bootloader_socResetWorkaround ()
    如果您使用的是任何 MCU 域外设、则上述序列会出现问题。
    但是、 如果您  未使用 MCU 域 外设、则没有问题。
    如果您查看此检查的内部、 Bootloader_socIsMCUResetIsoEnabled我们将启用 MCU PLL。
    因此、在    为 MCU 外设设置时钟频率之前、您可能会看到  问题。
    如果您未使用任何 MCU 域 外设 和 MCU 引脚、则没有问题。
       也请您进行测试。
    我们 建议 您遵循  TI SBL 流程、但此 方法特定于 您的 要求。
    TI 尚未 验证 这种方法。
    此致、
    Anil.

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

    您好 Anil、

    感谢您的澄清。

    在我们的开发中、我们不使用任何 MCU 域外设或引脚。 我们仅使用主域内核和外设。 因此、从理论上看、我明白建议的改变不应引起任何问题。
    我们仍会进行测试、以确认行为。

    非常感谢您的支持。

    此致、
    Kanno, Itsuki

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

    你好 Kanno, Itsuki,

    完成测试后、请将测试结果与我们分享。

    此致、

    Anil.