I plan to use Idle Task for different house keeping activities. The
first think I plan to implement is de-fragmentation of the external
SPI Flash. For this purpose I need to initiate sector erase operation.
Flash is used by a number of tasks and arbitration is done with mutex.
My question is if I can use mutex from Idle Task. I understand I can't
wait on mutex from Idle Task but can i query/acquire the mutex with
xTicksToWait=0. If Idle Task takes the semaphore won't in cause to
dead lock once another higher priority task will attempt to take it
and will block on it?
What restrictions should be considered at all in Idle Task? I
understand I can't just treat it as a task with lowest possible
Taking a semaphore with a block time of 0 is fine. Best to use a mutex rather than a standard semaphore because doing so will temporarily raise the priority of the idle task should a higher priority task attempt to take the same mutex.