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.
大家好、
我使用 PMU 周期计数器来计算驱动程序初始化和后续阶段的执行时间。
如果我在启动 FreeRTOS 调度程序之前放置代码、PMU 代码在主文件中看起来运行良好。
现在、我有一个要求在一个任务内(在启动调度程序之后)测量 CPU 时间和
每当我在启动调度程序后使用 PMU 代码时、我的程序总是在 sys_intvecs.asm (dabort)文件结束。
如果可能、有人可以告诉我我我所犯的问题或错误是什么? 什么是 sys_intvecs.asm?
此致、
SAI
您好、Sai、
希望您使用 HALCoGen 生成的文件。
PMU 寄存器只能在特权模式下访问。 默认情况下、HALCoGen 会在 CPU 进入 main 之前将其设置为"系统模式"。 系统模式是特权模式。 这就是您能够使用 PMU 功能的原因。
我相信您已经创建了一个在用户模式下运行的任务。 非特权模式下的任何 PMU 函数调用都会导致中止。
如果您想在任务中使用 PMU、我建议您为您创建的任务提供特权访问权限。 您可以通过设置 传递给 taskCreate 函数的优先级参数的 portPRIVILEGE_bit (例如:2 | portPRIVILEGE_bit、其中2是设置的任务优先级)来实现此目的。 有关 更多详细信息、请参阅 FreeRTOS API 文档。
希望这对您有所帮助!
谢谢、此致、
Veena
尊敬的 Veena:
非常感谢您的回答和很好的解释。 我将尝试并告诉您结果:)
祝你度过美好的一天:)
此致、
SAI。