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-AM62-LP:如何缩短从 AM62 唤醒到 M4F 内核运行的时间

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1519886/sk-am62-lp-how-to-reduce-the-time-from-the-wake-up-of-am62-to-the-operation-of-the-m4f-core

器件型号:SK-AM62-LP
主题:TCAN1043 中讨论的其他器件

工具/软件:

您好、

 我们的客户要求我们产品从唤醒到发出 CAN 数据包的时间小于 300ms、

我们的实际测试约为 480ms。

 测试 M4F 内核的启动并发送 CAN 数据包需要 119ms 时间、

这意味着 TI AM62 芯片需要 360ms 的时间来唤醒和启动 M4F 内核。

 我的问题是如何在本例中缩短 360ms 的时间?

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

    您好、Walter

    建议您描述更多细节。

    “示例类似“。

      

    主要问题:  

    当 AM62x 处于深度睡眠模式时、如何在 300ms 内缩短 CAN 响应 (ACK) 时间?

    (MCUSS 的周期 A + AM62 唤醒时间+ 周期 B = 300ms)  

    当前您的状态:  

    MCUSS 的周期 A + AM62 唤醒时间+周期 B = 480ms、特别是(MCUSS 的周期 A + AM62 唤醒时间)= 119ms  

    您的要求:

    是否可以缩短  周期 A?

    是否可以缩短  周期 B?

    是否可以缩短 MCUSS 的 AM62 唤醒时间?

    建议您描述更多详细信息、比如问题。

    (1) 您的 CAN PHY 芯片是什么? PHY 如何唤醒 AM62?

    (2) 什么是相关的硬件连接?

    (3) 当第一个 CAN 切换信号时、用于 MCUSS 唤醒的任何 UART 日志?

    ...等等

    谢谢

    Gibbs

     

     

     

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

    嗨、Gibbs

     我们使用 TCAN1043 作为 CAN 收发器。下面我简单介绍一下如何运行测试脚本、
    1.将产品置于睡眠状态(包括 AM62)
    2.记录启动时间,拉 IGN 接通(一个 GPIO 唤醒源)
    3、记录接收 CAN 消息第一帧时的结束时间(产品开机后将自动发送 CAN 消息)
    我们测量的时间差是 480 毫秒、假设这是时间 a

     通过修改代码、我在 M4F 主函数中初始化 GPIO 时默认生成 GPIO、

    发送 CAN 数据后降低 GPIO。 上拉 GPIO 的周期是时间

    从 M4F 内核的主函数开始到 CAN 数据的第一帧成功传输。

    逻辑分析仪获得的时间为 119ms、假定为时间 B

    时间 A (480)-时间 B (119)=时间 C (361ms)

     总之、我们希望缩短时间 C、即 AM62 接收到唤醒电平与 M4F 内核运行到主函数之间的时间

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

    您好 Walter、

    这些时序是参考 SBL 引导流程还是 SPL 引导流程?  另外、您能告诉我这里使用了哪个引导介质吗?

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

    尊敬的会议:

     我们使用 SPL 方法启动芯片、引导介质为 EMMC。

    启动方法是否会影响 M4F 内核的唤醒时间?

     此外、我们还进行了 20 次测试。

    时间 A 的最大值为 445ms、最小值为 412ms、平均时间为 427ms。

    时间 B 基本上固定为 119ms、平均误差约为 20us。

    谢谢

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

    您好 Walter、

    对于此用例、使用 SPL 和 eMMC 是否有任何特殊原因? 您可以使用 SBL OSPI 的组合、因为与使用 SPL 相比、该组合更具可定制性。 我们有一份使用 SBL 引导流程在 Processor SDK 中优化引导时的指南: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/10_01_10_04/exports/docs/linux/How_to_Guides/Target/How_to_boot_quickly.html#measurements

    本节还提供优化引导流程的引导时间测量: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/10_01_10_04/exports/docs/linux/How_to_Guides/Target/How_to_boot_quickly.html#measurements

    此致、

    会面。

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

    尊敬的会议:

    1.我想我们不是在谈论同一件事。

    您指的是 AM62 芯片的启动时间、而我指的是时间

    AM62 中的 M4F 内核从深度睡眠模式唤醒所需的时间。


    2.我们的项目即将进入批量生产阶段。

    我们只能在现有硬件和架构内优化时间 C。

    谢谢

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

    您好 Walter、

    使用 SBL 引导模式将无法实现低功耗模式(包括深度睡眠)。 目前、LPM 仅适用于 SPL 引导。

    减少挂起和恢复延迟的最简单方法是删除未使用的 Linux 内核驱动程序。 默认的 Linux SDK 将启用尽可能多的驱动程序、以便通过 Linux 内核驱动程序和模块来启用。

    我不知道有任何方法可以比 M4F MCU 恢复速度更快。 设置 M4F MCU PLL 所需的时间大部分是静态的。

    此致、

    Anshu

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

    尊敬的 Anshu:

    TI 是否测试了 M4F 内核从 DEEPSLEEP 模式唤醒的时间?

    尽管我们测得该时间约为 330ms。

    但是、TI 仍需要提供证据或电子邮件来说明此次回答正确。

    M4F 内核从 DEEPSLEEP 模式唤醒大约需要 330ms 的时间。

    否则、TI 需要告知我们如何缩短此时间以满足客户需求。

    谢谢

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

    您好 Walter

    有几个问题、需要 仔细检查

    (1) 时间 A (480ms) 的定义、步骤如下:

    您的 ECU(包括 AM62)已处于“深度睡眠模式“-> ECU 从车辆获取 IGN 信号->触发 AM62 GPIO -> AM62 启动唤醒-> AM62 发送第一个 CAN 帧

    是否正确?

    (2)  时间 B 的定义 (119 ms)

    “AM62 唤醒时间“包括“MCU 应用启动时间“、我是否可以说 119ms 表示 MCU 应用在发送第一个帧之前的执行时间?

     

    嗨、Anshu

    点击此链接、这是一个从深度睡眠状态唤醒的 GPIO 示例。

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1458957/am620-q1-deep-sleep-console-log?tisearch=e2e-sitesearch&keymatch=%25252525252520user%2525252525253A533255#

    红色:进入深度睡眠

    黄色:MCU GPIO 触发后、退出深度睡眠

    唤醒时间= 84.571991 - 84.374566 = 0.197425 = 197ms、正确吗?

    如果基于我们具有 GPIO 唤醒功能的默认 Linux 示例、在这种情况下、MCU 如何唤醒和执行?

    非常感谢

    Gibbs

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

    嗨、Gibbs、

     (1) 我们在 PC 端运行脚本测试时间 A、因此我们不会得到车辆的 IGN 信号、

    但从继电器获得的 12 伏电压。 其他正确。


     (2)  通过执行主函数计算时间 B、

    不包括准备 C 运行时环境的时间(诸如初始化堆栈之类的操作)。

    谢谢

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

    您好:

    唤醒时间= 84.571991 - 84.374566 = 0.197425 = 197ms、是否正确?

    是、这是正确的。 最后我进行了一个快速测试、结果恢复时间约为 192ms。  

    然后、我对仅 MCU 模式进行了类似的测试、得到的恢复时间为 176ms。

    仅 MCU 模式和深度睡眠模式之间的唯一区别是 MCU M4F 内核保持在线状态。 更具体地说、MCU_PLL 和 MCU_HFOSC 在仅 MCU 模式下保持在线、但在深度睡眠模式下关闭。

    这意味着启动 MCU M4F 内核的过程约为 16ms、这应该是一个静态数字。 根据在 MCU 上恢复应用、可能会有一些延迟、但这会因情况而异。

    唤醒源不应影响唤醒延迟。

    此致、

    Anshu

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

    嗨、Gibbs、

     让我们更正一下、第二次和第三次复制方法需要 3 分钟来重置、而不是 1 分钟。

    但是、由于我们没有进行相关的软件配置、该复位是意外的。

    我是否可以询问 3 分钟自动重置的配置位置?

    谢谢

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

    尊敬的 Anshu:

      我们使用 ipc_rpmsg_echo_linux_am62x-sk-lp_m4fss0-0_freertos_ti-arm-clang + EVB 电路板测试不大约为 200ms、但超过 300ms。

    谢谢

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

    嗨、Anshu

    感谢您的答复。

    仔细检查几件事、这是概念说明。

    * M4 内核启动时间约为 16ms

    *我需要知道 M4 内核开始从深度睡眠模式“启动计时“

    (a) 当同时被 GPIO 唤醒触发时、M4 内核是否也会启动唤醒过程

    (b) 是否仅在 AM62 完成唤醒过程时 M4 内核才开始运行?

    谢谢你。

    Gibbs   

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

    嗨、Anshu

    基于 Walter 的日志。

    我发现日志与我的日志略有不同。

    请勾选黄色标记。

    M4 内核应用程序 (M4-FW) 似乎仅在唤醒过程完成后启动。

    它花费了大约 62.4ms、还应该包括 RPMSG 信道创建

    您能否为我们提供深入调试和研究以缩短唤醒时间的建议?

    非常感谢

    Gibbs

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

    嗨、Gibbs、

    目前、我们正在运行测试、以对启动 M4F 内核和应用程序的不同步骤的延迟进行基准测试。 我们将尝试在明天之前获得更新。  

    目标是了解每个步骤对总体延迟的影响、然后确定是否有进一步优化的步骤。

    此致、

    Anshu

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

    嗨、Gibbs、

    我们进行了一些延迟测试、我们将在这里分享结果。

    唤醒源-> M4F MCU 固件

    第一项测试是检查从唤醒源到 M4 MCU 固件开始的延迟。 这一过程花费了 282.176ms

    蓝色信号是 PMIC_LPM_EN 信号、当 SoC 唤醒时该信号从低电平变为高电平。 此信号反馈到 TI EVM 上的 PMIC。

    橙色信号是在 M4F MCU 执行时设置为高电平的 GPIO。 此 GPIO 表示 MCU 固件的启动。

    这两个事件之间的时间为 282ms。

    唤醒源->无打印语句的 M4F MCU 固件

    将语句打印到内核日志会增加恢复进程的延迟。 因此我们删除了 PRINT 语句并执行了相同的测试。

    在这种情况下、唤醒事件和 MCU M4F 固件启动之间的延迟为 115.64ms。

    如何禁用/减少打印语句?

    有两种方法可以做到这一点:

    • 运行脚本以关闭打印语句。

    # Detach kernel serial console
    consoles=$(find /sys/bus/platform/devices/*.serial/ -name console)
    for console in ${consoles}; do
    echo -n N > ${console}
    done

    现在、  M4F 固件恢复的目标延迟是多少?

    我们需要知道具体的目标编号。

    此致、

    Anshu

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

    嗨、Gibbs、

    另一种降低延迟的方法是优化 Linux 内核映像、使不会暂停和恢复不需要或未使用的 Linux 驱动程序。  

    此致、

    Anshu

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

    您好、Anshu、ć

    感谢您的信息。

    关闭控制台日志后、时间 A 达到了 255ms、这满足了客户的需求

    谢谢