__task void ParameterManager::ParameterManagerTask() { // Reset all Constants ParameterManager::GetParameterById(ParameterId_Vendor)->setValue((char*)&Vendor, 2); while(true) { } }
Our target board is wired with ARM7 LPC2468 Microcontroller. Our embedded application is written in 'C++'. This code base was working fine. Recently number of changes were made and now I'm stuck in while(true). This task keeps running. No other task gets to run. Why might this task be running all the time ?
>> If interrupts are blocked, then the kernel will not see time, so it will not know when to task-switch.
What do you mean by "kernel will no see time" ?
The kernel apportions how time (quanta, slots, slices) get allocated between running tasks, if there are no interrupts there is no way of marking time, or switching tasks.
Sitting in a tight loop with interrupts disabled isn't going to play well with other tasks.
Instead of focusing on the loop, focus on the bigger picture of how the OS functions, and how the other tasks interact with it.