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.

[参考译文] AM620-Q1:请添加适用于 M4F 内核的支持 ECAP、WDT、EQEP 驱动程序

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1498410/am620-q1-please-add-support-ecap-wdt-eqep-drivers-for-m4f-core

器件型号:AM620-Q1
主题中讨论的其他器件:AM620-Q1

工具/软件:

您好、团队

 请为 AM620-Q1中的 ECAP、WDT、EQEP 外设添加软件支持、以适用于 M4F 内核

  背景:
 CCS v12.8.1
 MCU + SDK AM62x_10_01_00_33

我们使用 M4F 内核进行 BLDC 电机控制(A53内核无法满足实时要求)。 控制过程使用三个驱动器:ECAP、WDT 和 EQEP。

由于 TRM 规定外设寄存器可以跨域运行、因此我们相应地设计了硬件。
但是、在开发过程中、

我们发现、当前 SDK 只能将上述三个外设分配给 A53内核、而不能分配给 M4F 内核。
这要求 TI 在软件级别修改 SDK 或 syscfg (资源分配工具)。

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

    嗨、Owens、据我所知、我们的 AM62x SW SDK 路线图中并未计划支持这些外设。 可以移植驱动程序、但对其进行测试和移植示例需要做一些额外的工作。  此外、请注意以 M4F (256KB)为单位的 SRAM 可用大小、该大小可能太小、无法分配完整的电机控制代码/数据、并且从 DDR 运行会增加延迟。 此处提供了更多详细信息: (+)[常见问题解答] SK-AM62:如何使用 M4F 内核从外部存储器执行代码? -处理器论坛-处理器- TI E2E 支持论坛

    回到驱动程序移植问题、并不完全相同、但在我最后一篇文章中我 说过:(+) SK-AM62A-LP:在启动期间使用 Linux 加载 MCU-R5固件(程序)时遇到错误。 (未能加载程序段:-22)当尝试在 EVK (SK-AM62A-LP)上运行 Linux 的情况下在 EVK (SK-AM62A-LP)上运行"ePWM 占空比"示例时(SK-AM62A-LP -处理器论坛-处理器- TI E2E 支持论坛) 、我介绍了如何将 ePWM 演示/驱动程序从 DM-R5F 移植到 MCU-R5F。 因此、第一步、我们可以尝试使用额外的 ECAP、WDT 和 eQEP *。c 文件重新构建 M4F 驱动程序库、并了解实现方法。

    谢谢您、

    Paula

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
     此外、请注意以 M4F (256KB)为单位的 SRAM 可用大小、该大小可能太小、无法分配完整的电机控制代码/数据、从 DDR 运行会增加延迟。

    之前另一个芯片品牌的编译使用:131KB 闪存和54KB RAM。 请评估
    1. AM620-Q1 M4F 芯片中的 SRAM 是否足够?
    2.高于256KB 的 SRAM 是否专用于 M4F 内核? R5F 和 A53是否会占用其中的一部分、例如用于引导过程?

    关于移植驱动程序、
    1.我看到的示例是移植 R5F 内核、而不是 M4F 内核。 我认为、如果 FAE 或其他客户想要使用 M4F+这些外设、他们需要一个直观的示例。
    2、由于移植涉及多个内核、有些甚至需要参考非 AM620-Q1系列芯片、因此有许多细节您熟悉、但我们不理解。 如果我们通过论坛反复沟通,它将消耗大量的能量为您和我们,所以请帮助移植上述三个外围设备。

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

    您好 Owens、

    M4F 内核具有专用的256KB 存储器、不与任何其他内核共享这些存储器。

    此外、ECAP 和 EQEP 模块也在生成 不支持 在 M4F 内核上处于中断模式、因为它们的中断不会路由到 M4F 内核。 更多详细信息、请参阅下面提到的"TRM"一章。

    因此、如果您仍想在 M4F 内核上使用这些外设、则必须使用轮询模式、这可能会导致 延迟 问题。

    正如 Paul 之前提到的、如果电机控制应用的大小超过256KB、则 M4F 内核可能不是最佳解决方案。

    虽然 M4F 内核可以访问 DDR 存储器、但这样做会导致性能下降、因此不建议依赖 M4F 内核的 DDR。

    MCU+ SDK 中已提供了 WDT (看门狗计时器)示例。 请参阅以下链接。

    C:\ti\mcu_plus_sdk_am62x_10_01_00_33\examples\sdl\RTI

    另请注意、在 AM62x SoC 上、WDT 不支持超时后的系统复位。 为了实现此类功能、需要将 ESM (错误信令模块)与 WDT 集成在一起。  请参阅以下链接。

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1283237/faq-am64x-am62x-how-to-reset-the-soc wddt-timer-expression-in-am64x-and-am62x

    此致、

    Anil.

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

    嗨、Swargam

     正如您提到的中断问题、我们已经考虑过这一点。 在我们的应用中、电机转速不快。 我们有足够的时间通过轮询来读取 ECAP 中的4个寄存器。

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

    您好 Owens、

    是否可以在轮询模式下使用 EQEP?

    电机控制应用的大小是多少?

    电机控制应用程序需要适合于256KB。是否可以?

    将某些功能从 M4F 内核迁移到 DM R5F 内核是否存在任何问题?

    此致、

    Anil.

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

    Anil & Paula:   

    我会投票支持  在最新 Sitara IC 上2个最高时钟频率 ARM 内核(A 类和 R 类)上的 ECAP 和 EQEP 驱动器、因为  与裸片上最慢的 M4内核相比、它们的实际时序要求更严格。  

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

    您好、Swargam

     1、 在 DDR 模式下运行时 DM 内核程序的运行速度是否会变慢?

    2.当 A53核心升级 norflash 固件时,能否直接更新 DM 固件?

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

    亲爱的 Anil、Paula、Jim。

    还有一个问题来自 Owens。

    从 EPWMx 到 DM 内核(R5F)之间似乎没有 INT。 请帮助再次确认。

    非常感谢!

    Yong

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

    您好、ownes / Yong、

    当 A53核心升级 norflash 固件时、是否可以直接更新 DM 固件?

    DM 内核已经在使用 DDR 存储器、如果 DM 内核使用 DDR 存储器、则不会出现任何性能下降。

    如果更新了新固件、复位后、SBL/SPL 将加载新的应用映像和新的 DM 固件、无法直接上传 DM 固件。

    从 EPWMx 到 DM 内核(R5F)之间似乎没有 INT。 请帮助双重确认。

    是的、您回答正确。 EPWM 中断不会路由到 DM R5F 内核。

    此致、

    Anil.

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

    您好、Swargam

      1.为什么 M4F 代码在 DDR 中运行缓慢?
     2. M4F -> R5之间的 IPC 消息是否只能分配给 DDR? 用于 M4F 操作的 DDR 上的 IPC msg 是否也会缓慢运行?

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

    您好  Owes、

    请看下面我的答复。

    M4F 位于到 DDR 的较慢总线路径上。M4F 内核是 MCU 域的一部分、通过互连桥连接到 DDR。

    这些互连会引入延迟和带宽瓶颈、尤其是在 DDR 与 A53或 R5F 内核共享的情况下。

    在 M4F 上没有缓存。 M4F 内核通常没有高速缓存、因此每个 DDR 访问都是非缓存的。  

    这意味着每次读取/写入都会进入 DDR、导致总线上出现失速周期。

     如果 R5F 或 A53内核也使用 DDR、则 M4F 在 DDR 仲裁中具有较低的优先级、从而导致访问速度变慢。

    M4F -> R5之间的 IPC 消息是否只能分配给 DDR? 用于 M4F 操作的 DDR 上的 IPC msg 是否也会缓慢运行?

    这是一个好问题。 是的、即使在 IPC 中、当 M4F 访问 DDR 存储器时、性能也会下降。

    我认为 IPC 主要使用的字节更少。 在这种情况下、M4F 性能仅在几个字节的读取时间内下降。

    此致、

    Anil.

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

    您好、Swargam

      感谢您的答复。
    根据您所说的、DDR 访问有一种仲裁机制。
    1.当 M4F 访问 IPC (IPC msg 只能配置为 DDR 空间)时、它是否会影响 A53访问 DDR 的速度?
    2.默认情况下、DM 和 A53在 DDR 上运行。 如果 DM 有效载荷很重且经常访问 DDR、A53的访问速度会减慢、从而导致 A53内核的运行速度变慢(据我了解、AM620-Q1和 DDR 之间只有一个总线接口、最大容量是固定的)

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

    您好 Owens、

     SOC 中有 QoS (服务质量)设置、用于确定 DDR 访问的优先级。

    默认情况下、A53被分配了 DDR 访问的高优先级。  

    其他内核(如 DM R5F 或 M4F)通常设置为较低优先级。 这意味着、当 A53和 DM R5F/M4F 同时请求访问 DDR 时、A53具有优先权。 DM 会等待 A53的 DDR 事务完成、然后获得访问权限。 这可确保 A53性能不会受影响。

    此致、

    Anil.

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

    尊敬的 Anil、TI 专家。

    与 Seyond 团队核实、以下是 M4F 上的函数
    1.用于驱动转子的 EPWM 6通道
    2.当电机正向旋转时用于读回转子位置的 ECAP 1通道
    3.在电机反转时读回转子位置的 eQEP 1个通道
    4.用于从外部 ADC 读取数据的 SPI 1通道
    5.用于从外部 FPGA 读取数据的 SPI 1通道、保留。

    他们更喜欢在 M4F 内核上部署电机控制功能、但他们列出了风险、如下所示。
    1. M4F 上没有 ECAP 驱动器
    2. M4F 上没有 eQEP 驱动程序
    3.从 M4F 到 DM 的 IPC 通信。 如您所述、M4F 访问 DDR 的速度缓慢、而不是256KB RAM。 支持以下用例是否有任何限制? 通过 IPC 进行的这种数据交换是否会影响 A53和 DM、因为这两个内核需要在 DDR 上运行?
      a.以高频进行小数据转换。 总共31个事件、一个是10ms 触发、其他30个是事件触发器。
        A53 -> M4F、32字节
        M4F -> A53、32字节
      b.低频大数据转换(平均每5s 一次转换)
        M4F -> A53将日志发送到 A53、然后在 ETH 上转发。
    4.需要添加安全诊断(SDL)。 赛义德队仍在调查中。

    请帮助检查上述要求和风险。  

    有关如何在 AM620-Q1上部署电机控制功能的建议、请获得帮助。

    非常感谢!

    Yong

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

    你好 Yong、


    请根据您的要求和顾虑查看我的分析要点:

    EPWM:

     •主域 EPWM 模块可 在轮询和中断模式下从 MCU 内核访问这些模块。

    您需要6个 PWM 通道、并且由于每个 ePWM 模块支持两个输出、因此3个 ePWM 模块就足够了。

    注意:从 MCU (M4F)内核访问主域外设时可能存在延迟。


    路径:  

    C:\ti\mcu_plus_sdk_am62x_10_01_00_33\examples\drivers\epwm\epwm_duty_cycle\am62x-sk\m4fss0-freeRTOS

    ECAP:

    •主域 ECAP 中断仅路由到主域(A53内核)、在 MCU 内核(M4F)上不可用。

    •因此、从 M4F 访问时仅支持轮询模式。


    注意:请与客户确认轮询模式是否可以满足其实时要求。 可以对轮询进行基准测试以评估性能。

    eQEP  :

    •与 ECAP 类似、eQEP 中断也不会路由到 M4F、因此只能使用轮询模式。

    •驱动程序在 A53内核上提供、也可以移植到 M4F。

    注意:从 MCU (M4F)内核访问主域外设时可能存在延迟。

    SPI:

    •您需要两个 SPI 接口-一个用于外部 ADC、一个为 FPGA 保留。

    •建议使用 MCU 域 MCSPI 模块、因为 MCU 侧有2个可用的 MCSPI 实例。

    •与使用来自主域的 SPI 相比、这将避免延迟问题。


    路径:  

    C:\ti\mcu_plus_sdk_am62x_10_01_00_33\examples\drivers\mcspi\mcspi_performance_8bit\am62x-sk\m4fss0-0_nortos

    将 ECAP 和 eQEP 驱动程序移植到 M4F:

    •由于这些驱动程序仅在 A53上正式支持、因此需要手动移植到 M4F。

    •我可以提供有关移植它们的指导、包括修改驱动程序路径和外设访问。

    •但是、如上所述、这些模块仅在 M4F 上的轮询模式下工作、因此客户需要评估其电机控制应用的轮询可行性。

    A53和 M4F 之间的 IPC 通信:

    •用于 IPC 通信的共享内存(通过 RPMsg )位于 DDR 中,不能重定位到任何其他内存。

    •因此、当 M4F 访问 DDR 中的共享缓冲器(例如、读取/写入32个字节)时、可能会有显著的性能下降。


    安全诊断库(SDL) :

    •SDL 支持仅适用于 DM 内核(DM R5F)、用户只需在 DM R5F 内核上使用、而不需要在 MCU 内核上使用。

    此致、

    Anil.

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

    您好、Swargam

    [引述 userid="525901" url="~/support/processors-group/processors/f/processors-forum/1498410/am620-q1-please-add-support-ecap-wdt-eqep-drivers-for-m4f-core/5770186 #5770186"]
    注意:从 MCU (M4F)内核访问主域外设时可能存在延迟。 [/报价]

     1.这个延迟时间是多久,大约是多少级? 您能否提供一些数据以供参考?

    因此、当 M4F 访问 DDR 中的共享缓冲区(例如、读取/写入32字节)时、可能会出现明显的性能下降。

    2、 类似地,这种性能下降的大致数量级是多少?理论数据是什么? 您能否提供测量方法?

    非常感谢!

    Owens

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

    你好、Mukul

      1.  R5F 访问 MCU 域外设寄存器的延迟是多少? 这是因为用于电机电流 ADC 采样的 mspm0l MCU 通过 SPI 连接到 MCU 域的 IO

      2. M4F 读取和修改 ePWM 寄存器的延迟是多长时间? 请提供此数据(SDK 列表支持使用 M4F 来控制 ePWM)

      3."M4F"延时注意事项"的屏幕截图来自哪个文档? 您能给我们发送一份副本吗? 我们想了解更多信息以进行评估。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="581931" url="~/support/processors-group/processors/f/processors-forum/1498410/am620-q1-please-add-support-ecap-wdt-eqep-drivers-for-m4f-core/5786871 #5786871"]

      2. M4F 读取和修改 ePWM 寄存器的延迟是多长时间? 请提供此数据(SDK 列表支持使用 M4F 来控制 ePWM)

    [/报价]

    您好 Owens、

     访问从 MCU 内核读取的4字节主 ePWM 寄存器时、M4F 需要大约~270ns 的时间。

    R5F 访问 MCU 域外设寄存器的延迟是多少? 因为用于电机电流 ADC 采样的 mspm0l MCU 通过 SPI
    连接到 MCU 域的 IO

     DM R5F 内核访问从 DM R5F 内核读取的4字节 MCU SPI 寄存器时大约需要~165ns。

    3. "M4F 延迟注意事项"的屏幕截图来自哪个文档? 您能给我们发送一份副本吗? 我们希望了解更多评估信息。

    我需要咨询其他专家以与您共享文档、这是机密数据、我们不应该在 e2e 上共享此文档。

    此致、

    Anil.

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

    您好 Owens、

    要在 M4F 内核上集成 ECAP 和 eQEP 模块、请按照以下步骤操作。 如果您遇到任何问题、请告诉我-我很乐意提供帮助。 我将以 ECAP 为例说明该过程;相同的过程可以应用于 eQEP 等其他外设。

    步骤1:时钟启用和焊盘配置

    ECAP 初始化代码在 MCU+ SDK (适用于 A53内核)中提供。 在 A53上编译 ECAP 示例、并提取生成的代码用于时钟启用和 Padcfg 寄存器设置。

    ECAP 的时钟启用和 Padcfg 寄存器代码:

    uint32_t gSocModules_ECAP[] = {
    TISCI_DEV_ECAP0,
    SOC_MODULES_END,
    };
    
    SOC_ModuleClockFrequency gSocModulesClockFrequency_ECAP[] = {
    { TISCI_DEV_ECAP0, TISCI_DEV_ECAP0_VBUS_CLK, 125000000 },
    { SOC_MODULES_END, SOC_MODULES_END, SOC_MODULES_END },
    };
    
    Pinmux_PerCfg_t gPinMuxMainDomainCfg_ECAP[] = {
    // ECAP0_IN_APWM_OUT -> EXT_REFCLK1 (A18)
    {
    PIN_EXT_REFCLK1,
    (PIN_MODE(8) | PIN_INPUT_ENABLE | PIN_PULL_DISABLE)
    },
        {PINMUX_END, 0U}
    };

    void PowerClock_init(void)
    {
    Module_clockEnable();
    Module_clockSetFrequency();
    }
    
    void Pinmux_init(void)
    {
    Pinmux_config(gPinMuxMainDomainCfg_ECAP, PINMUX_DOMAIN_ID_MAIN);
    }

    ECAP 示例代码:  

    步骤2:准备 M4F 应用程序

    采用任何 M4F 示例工程、并将 ECAP 示例文件以及上述 Padcfg 和时钟使能 API 复制到工程中。

    步骤3:更新 M4F Makefile

    除非为 M4F 内核构建了 ECAP 驱动程序、否则直接编译可能会导致错误。

    将 ECAP 模块添加到 M4F makefile:
    •包含 eCAP.c 文件。
    •将 ECAP 文件夹路径添加到文件列表中。

    这使得 M4F 应用程序能够编译 ECAP 驱动程序。

    请查看 make 文件中的 EPWM 文件和文件夹以及您必须为 ECAP 完成的相同过程

    步骤4:构建驱动程序

    使用以下命令进行编译:

    gmake -s -f makefile.am62x.m4f.ti-arm-clang PROFILE=debug/Release

    步骤5:编译应用程序

    从 CCS 编译整个 M4F 应用程序。

    步骤6:加载并运行

    使用 CCS 将编译后的应用程序加载到 M4F 内核上。

    如果您遇到任何编译问题、请告诉我、我随时为您提供帮助。

    此致、

    Anil.

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

    尊敬的 Anil:

     TI 是否正在尝试 为版本12的 AM6x MCU+ SDK 自动为 M4F 内核上的 ECAP 和 eQEP 模块提供支持? (我认为对11.1版这样做会 推后7月的预测)。

    此致、Jim

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

    您好、Jim、

    没有计划在 M4F 内核上支持上述功能。

    此致、

    Anil.