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.

[参考译文] AM5718:定时器配置不符合 SOFTRESET 标准

Guru**** 2540720 points
Other Parts Discussed in Thread: AM5718, SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/568419/am5718-timer-configuration-is-not-honoring-softreset

器件型号:AM5718
Thread 中讨论的其他器件: SYSBIOS
设置 TIOCP_CFG:SOFTRESET (位0)不会将 TIOCP_CFG:IDLEMODE (位3:2)复位为0x2智能空闲模式、而是将其设置 为0x0强制空闲模式
参阅 SPRUHZ7C 表22-28 TIOCP_CFG、第5451页、复位列建议 IDLEMODE (位3:2)在"复位"之后的值应为0x2智能空闲。  我看到的结果是0x0在设置 SOFTRESET (位0)时强制空闲
我假设 SOFTRESET 将符合   该 TIOCP_CFG 寄存  器的有效复位机制的条件、以便根据此表将其设置为复位状态。  这是有效的假设吗?
这是 AM57xx 系列 器件中的硅硬件问题吗?在此类器件中、无法正确执行复位?  还是这是一个文档问题?
使用  SYS/BIOS 6.45.1.29和 pdk_am57xx_1_0_3通过 DSP 上的启动代码(AM5718上的 C66x 内核)进行跟踪 在 Timer.c:210处停止后、我看到以下初始化序列。 通过在写入0x48820010 (TIMER5:TIOCP_CFG)时设置一个硬件观察点来完成 CCS/JTAG 暂停。
xdc_runtime_Startup_startMods__I()... 在 Startup.c:84上
TI_SYSBIOS_TIMER_dmtimer_Timer_Timer_Module_startup___E ()、位于 Timer.c:300
TI_SYSBIOS_TIMER_dmtimer_Timer_checkFreq___i ()、位于 Timer.c:646
TI_SYSBIOS_TIMER_dmtimer_Timer_deviceconfig__i()位于 Timer.c:210
207:   //如果执行 SOFTRESET:在设置其他标志之前先执行它*/
208:   if (obj->tiocpCfg & timer_TIOCP_CFG_SOFTRESET_FLAG){
209:       timer->tiocpCfg = TIMER_TIOCP_CFG_SOFTRESET_FLAG;
210:       while (timer->tiocpCfg & timer_TIOCP_CFG_SOFTRESET_FLAG)
211:               ;
212:   }
213:   timer->tiocpCfg = obj->tiocpCfg &~timer_TIOCP_CFG_SOFTRESET_FLAG;
该 TI 代码正在设置 SOFTRESET (位0)并等待其清零。  此时、它假定定时器:TIOCP_CFG 的"复位"状态现在已完成。
在检查代码这一部分之后的0x48820010 (TIMER5:TIOCP_CFG)的内容时 、它包含 0x00000000。
根据 SPRUHZ7C、表22-28、我希望它为0x00000008。
如果这是器件问题或 SPRUHZ7C 不正确、请提供建议。
谢谢、
乔治
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    感谢您在文档中阅读详细信息并分析 SysBIOS 计时器启动代码。 我看到了 TIMER5:TIOCP_CFG 在软复位后也是0x0。

    对于 IDLEMODE (位3:2)、复位列建议"复位"之后的值应为0x2智能空闲。 ===>这可能需要 IP 团队的澄清。

    您能否解释一下复位值0x0或0x2是否对您的应用/项目有任何影响?

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、从 AM5718 TRM 的22.2.4.3和22.2.4.4读数来看、软复位位位位将使 PRCM 域复位、因此时间模式进入0x00 (强制空闲)。

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

    Eric、

    感谢您的快速回复。

    每当我们的系统看到空闲请求(当时来自未知源)时 、我们的 DSP 都会停止工作、因此我们的系统停止工作。  由于 SOFTREST 的默认行为导致0x0=Force-Idle、因此使用 TIMER5的 DSP 始终处于停滞状态、即没有 RTOS 节拍。  无论该计时器处于0x0=Force-Idle (SOFTRESET 之后的实际默认值)还是0x2=Smart-Idle (SOFTRESET 之后的记录默认值)中、都会发生这种情况。  临时的解决方法是让我们的 DSP 启动代码超载 SOFTRESET 并设置为0x1=No-IDLE。

    直到最近、我们还没有找到在我们的系统中触发空闲请求的原因、因此我们的 DSP 在没有空闲变通办法的情况下"停顿"。  我们 现在 已经确定是 I2C 子系统向 公共区域上的所有计时器发出空闲指令。  此后、我们防止 了来自 I2C 子系统的错误空闲请求、并且无论 TIMER5的 IDLEMODE 设置如何、DSP 都不再停止、很明显、因为不存在空闲请求。

    我们仍然想获得原始问题的答案、即 SOFTRESET 行为是否应导致 TRM 文档(在这种情况下存在 AM57xx 器件错误)、或者器件是否正确以及文档是否有错误。

    谢谢、

    乔治

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

    感谢您提供的信息! 我问硬件团队、他们将在这里更新。

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

    您是否从硬件团队那里获得了有关此方面的更新? 客户正在等待解决方案。

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

    尊敬的乔治:

    我已确认这是一个文档错误。  TIOCP_CFG:IDLEMODE 的复位值应为0x0、而不是0x2。  

    这将在下一版 TRM 中更正。

    此致、
    Melissa