Part Number:AM3358
Tool/software:TI-RTOS
Champs,
We are debugging a customer issue with on ARM A8 core,
SYSBIOS: 6.52.0.12
Compiler: GNU 6.3.1.
The code likes this:
taskFxn () {
....
Error_init(&eb);
Timer_Params_init(&contTimerParams);
contTimerParams.period = 500; //
contTimerParams.periodType = Timer_PeriodType_MICROSECS;
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("Timer create failed");
}
customer application code;
}
The timeIsr is simply a counter and should not use any cycles. The timer is HWI as seen in ROV view.
When the contTimerParams.period = 500; , the customer application code following the timer_create can be executed normally. If the contTimerParams.period = 300; the application code can't get chance to run (e.g, set a break point, and can't be hit).
We added a UIA module to track the CPU load. When the timer interrupt interval is 2000 us, the CPU load is already ~70%. When timer interrupt interval is 1500 us, the CPU load is ~100%. Reducing the interrupt interval further, the CPU is totally busy and no CPU load graph can be generated. I believe the UIA module itself takes cycles as well.
The real usage case for customer is they have interrupt came in every 125 us.
In SYSBIOS, is there any configuration to let application has chance to run when the there is interrupt happening at fast pace?
Regards, Eric