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.

[参考译文] RTOS/AM3358:无法启用 PWMSS1

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/669187/rtos-am3358-cannot-enable-pwmss1

器件型号:AM3358

工具/软件:TI-RTOS

我正在尝试配置 PWMSS0、PWMSS1和 PWMSS2。  我目前使用 BeagleBone Black 板作为平台、但将来会迁移到基于 Sitara A8的定制板。 我使用 CCS 7.4.0.00015作为 IDE。我已经设置了 pwmss_ctrl regsister、通过向 pwmss0_tbclken、 pwmss1_tbclken 和 pwmss2_tbclken 写入1来启用每个 PWMSSx 模块的时钟、并通过在 CCS 中查看内存来确认这一点。 我能够顺利地设置和使用 PWMSS0。 我可以查看与 PWMSS0相关的所有存储器、而不会出现任何问题。 我还能够毫无问题地查看与 PWMSS2 (0x48304000)相关的所有存储器。  

当我尝试使用系统函数 CSL_epwmTbTimebaseClkCfg (SOC_PWMSS1_regs、TBCLK_FREQ、MODULE_CLK)配置 PWMSS1时、我的项目会立即崩溃。 当我尝试在此调用之前查看0x48302000处的存储器时、所有位置都返回为"??????????? "。 当我尝试使用"Registers"窗口查看 CCS 中的 ePWMSS1寄存器时、CCS 会报告"error:Unable to Read"。 MMU 已映射以处理存储器位置。

您能否为此提供帮助? 根据 TI 的示例代码和 Sitara 技术参考(spruh73p.pdf)、似乎 PWMSS1应该正常工作、正如 PWMSS0那样。 但是、任何访问 0x48302000配置寄存器的尝试都会导致立即发生故障并退出。

谢谢。

Tim Cleveland

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    搜索 E2E 后发现2017年3月出现的同一问题的以下主题:
    e2e.ti.com/.../573789

    我获取了海报提供的信息、然后进行了挖掘。 我在 pdk_am335x_1_0_9中发现了相同的问题:未启用 PWMSS1
    TI 提供的 SOC 启动软件/驱动程序代码。 在 AM335x_prcm.c 文件中、我找到了以下内容:

    AM335x_prcm.c 位于:pdk_am335x_1_0_9\packages/ti\starterware\soc \AM335x 中

    #if 已定义(BUILDCFG_MOD_PWMSS)
    案例 CHIPDB_MOD_ID_PWMSS:

    交换机(instNum)

    情况0:
    enableModule (SOC_CM_PER_Regs、CM_PER_EPWMSS0_CLKCTRL、
    CM_PER_L4LS_CLKSTCTRL、
    CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_L4LS_GCLK);
    中断;
    案例2:
    enableModule (SOC_CM_PER_Regs、CM_PER_EPWMSS2_CLKCTRL、
    CM_PER_L4LS_CLKSTCTRL、
    CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_L4LS_GCLK);
    中断;


    中断;
    #endif /*#if defined (BUILDCFG_MOD_PWMSS)*


    我修改了 AM335x_prcm.c 如下:

    #if 已定义(BUILDCFG_MOD_PWMSS)
    案例 CHIPDB_MOD_ID_PWMSS:

    交换机(instNum)

    情况0:
    enableModule (SOC_CM_PER_Regs、CM_PER_EPWMSS0_CLKCTRL、
    CM_PER_L4LS_CLKSTCTRL、
    CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_L4LS_GCLK);
    中断;

    案例1:
    enableModule (SOC_CM_PER_Regs、CM_PER_EPWMSS1_CLKCTRL、
    CM_PER_L4LS_CLKSTCTRL、
    CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_L4LS_GCLK);
    中断;

    案例2:
    enableModule (SOC_CM_PER_Regs、CM_PER_EPWMSS2_CLKCTRL、
    CM_PER_L4LS_CLKSTCTRL、
    CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_L4LS_GCLK);
    中断;


    中断;
    #endif /*#if defined (BUILDCFG_MOD_PWMSS)*


    更新 AM335x_prcm.c 后、我必须将更改引入我的项目中。 为此、我曾:
    1.从命令行重建 SOC:
    C:\ti\xdctools_3_50_03_33_core> xdc.exe -P c:/ti/pdk_am335x_1_0_9/packages/ti/starterware/soc

    2.然后我必须重建板级配置文件。 请记住在尝试执行以下操作之前设置环境变量:
    C:\ti\pdk_am335x_1_0_9\packages/gmake board_lib limit_boards=bbbAM335x build_profile=debug

    因此、这两个步骤实现了 AM335x_prcm.c 的更新并更新了我的板级配置文件。 然后(最后)我能够通过 CCS 重建我的项目、结果很好、它可以正常工作。 我现在能够使用 PWMSS1。

    问题:

    1.我的修复程序基于您的现有代码。 您对我实施的内容是否有任何疑问?

    2.自2017年3月发布原始帖子以来、为何未更正 SOC 文件中的此错误/遗漏?
    如果您不打算修复它、那么为什么 TI 没有提供文档、列出您在为非 Linux 环境中的 Sitara 提供的 Starterware/驱动程序代码中启用了哪些功能?

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

    感谢您耐心地深入探讨该问题。

    1) 1)没有问题、看起来是正确的。
    2) 2)我应该更好地跟进您提到的上一个帖子、以确保我们记录了该帖子。
    话虽如此、现在可以在 processors.wiki.ti.com/.../Processor_SDK_RTOS_FAQ 板级支持部分下的 Processor SDK 常见问题解答中输入一个条目

    感谢您花时间详细发布您的解决方案。

    Lali