Other Parts Discussed in Thread: SYSBIOS
Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI-RTOS
香榭丽舍
我们正在调试客户在 ARM A8内核上的问题、
SYSBIOS:6.52.0.12
编译器:GNU 6.3.1。
代码如下所示:
taskFxn (){
…
ERROR_INIT (&EB);
Timer_Params_init (contTimerParams);
contTimerParams.period = 500;//
contTimerParams.periodType = Timer_PeriodType_micros;
contTimerParams.arg = 1;
contTimerParams.startMode = Timer_StartMode_Auto;
//delayTimerParams.runMode = Timer_RunMode_OneShot;
contTimerParams.runMode = Timer_RunMode_Continuous;
contTimerHandle = Timer_create (2、timeIsr、&contTimerParams、&EB);
if (contTimerHandle == NULL){
System_abort ("计时器创建失败");
}
客户应用程序代码;
}
timeIsr 只是一个计数器、不应使用任何周期。 如 ROV 视图中所示、定时器为 HWI。
当 contTimerParams.period = 500;时,timer_create 之后的客户应用程序代码可正常执行。 如果 contTimerParams.period = 300、则应用程序代码无法运行(例如、设置断点、并且无法命中)。
我们添加了一个 UIA 模块来跟踪 CPU 负载。 当定时器中断间隔为2000us 时、CPU 负载已经~70%。 当定时器中断间隔为1500us 时、CPU 负载为~100%。 进一步缩短中断间隔、CPU 完全处于繁忙状态、无法生成 CPU 负载图。 我认为 UIA 模块本身也需要周期。
客户真正的用例是、他们每125us 就有一次中断。
在 SYSBIOS 中、是否有任何配置可让应用程序在快速发生中断时有机会运行?
此致、Eric