Hello,
so we noticed that the Flash-access via the TI-drivers uses a while-loop in Flash_norOspiWaitReady (no matter the SDK-version):
status = Flash_norOspiCmdRead(config, cmd, cmdAddr, numAddrBytes, &readStatus, 1); while((status != SystemP_SUCCESS) || timeOut > 0) { status = Flash_norOspiCmdRead(config, cmd, cmdAddr, numAddrBytes, &readStatus, 1); if((status == SystemP_SUCCESS) && ((readStatus & devDefines->NOR_SR_WIP) == 0)) { break; } timeOut--; }
In a freeRTOS-based environment this means that the calling task is running inside this loop. This also means all lower-priority-tasks are completely blocked until this operation is finished. Since a task with prio 5 has no wait-call or anything inside this function it will loop and poll until the answer is ready. All tasks below prio 5 are never scheduled then.
We may build a workaround with a dedicated Flash-Handler-Task but I am not sure if this behaviour is intended by the SDK. A solutions inside the SDK for freeRTOS would be appreciated.
Additionally for now I would recommend mention this behaviour in your SDK-documentation, since this may help other devs running into those problems.
regards
Felix