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/PROCESSOR-SDK-AM335X:Timer_initDevice()无法读取计时器寄存器

Guru**** 2611705 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/581616/rtos-processor-sdk-am335x-timer_initdevice-fails-to-read-timer-registers

器件型号:PROCESSOR-SDK-AM335X
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

您好!

在 Timer_initDevice()中的计时器初始化期间,SysBIOS 启动在我的系统调试中失败。  调试器报告无法读取计时器硬件寄存器、例如0x48042000、如下面的屏幕截图所示。  崩溃发生在以下行:    timer->tclr = 0;

我的设置如下:
CCS 版本:6.1.2.00015
BIOS_6_45_01_29
PDK_AM335x_1_0_3
GNU v4.0.3 (Linaro)
Win 7 64位

到目前为止、我已经能够跟踪它、但此时当然需要一些帮助。   如果能提供任何援助,将不胜感激。

app.cfg。 。

e2e.ti.com/.../6406.app.cfg

谢谢、
Gerry

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

    我想屏幕捕获没有粘滞。  此处为 DOCX。 。

    e2e.ti.com/.../7510.SYSBIOS_5F00_Timer_5F00_initDevice_5F00_failure_5F00_170315.docx

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

    您好、Gerry、

    它听起来好像没有启用计时器。  您可能需要使用 GEL 文件启用它。   请参阅此帖子、它看起来与您所面临的问题非常相似:

    此致、

    Janet

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

    Janet、您好!

    谢谢你,抱歉我错过了另一篇博文!

    我已经 将使能调用-- PRCMModuleEnable() --放入我的次级引导加载程序,它们已经解决了问题,但 在此过程中出现了几个问题:

    一些 计时器默认为 CLK_M_OSC 以外的源时钟,因此我必须使用 SOCCtrlTimerClkSrcSelect()来强制解决每种情况下的问题。

    2. DMTIMER1_1ms 未启用[由于某种原因,PRCMModuleEnable()不支持]。  因此、调试器寄存器窗口中的 DMTIMER1_1ms 值显示为不可读(红色)。  我 根据 TIMER0的 PRCMModuleEnable()代码为该计时器编写了一个单独的使能。

    3.  在启动期间,通过  Timer_checkFreq ()[Timer.c]的 Error_Raise ()退出,我仍然收到计时器频率错误。  我已通过在 app.cfg 中设置 Timer.checkFrequency = false 来暂时忽略此设置[此帖子中的更多信息  :]

    谢谢、
    Gerry

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在计时器频率错误上,问题最终出现在 ti\SysBIOS\timers\dmtimer\Timer.c 中的函数 Timer_checkFreq ()中 对 Timestamp_getFreq()和 Timer_getFreq()的调用得到了错误的答案。 在本例中、MPU 时钟设置为200MHz、DMTimer2 (SYSBIOS 定时器0)时钟设置为25MHz。 但上述调用分别返回25MHz 和32KHz。 来自时间戳计数器和计时器的增量计数大约为911:128、如果使用了200:25比率、但未在25MHz:32KHz 时、则通过测试。

    然而、在启动完成时、DMTimer2已针对其预期的1ms 时序功能进行了正确设置、所以到那时、它的25MHz 时钟速率已经被分类。

    但我将继续绕过频率测试。

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

    您好、Gerry、

    此器件的时间戳应为 ti.sysbios.family.arm.a8.TimestampProvider。  该时间戳的频率与 CPU 频率相同。  您可以在.cfg 文件中配置 BIOS CPU 频率、以匹配 CPU 运行的频率、方法是将其添加到.cfg 文件中:

    bios.cpufreq.lo = 200000000

    这应修复 Timestamp_getFreq()报告的值。

    此致、

    Janet