In the event that os_error() is called by RTX, how can one recover from this?
For example if there is an event queue overflow (OS_ERR_FIFO_OVF) it would be useful to flush the queue in the error handler and return to normal processing. But it appears this is not the way os_error() works. It seems that once os_error() is invoked, scheduling is stopped, only ISR's run.
Also during runtime there is no RTX call to check the level of the event queue.
Any ideas how to overcome this without a system reboot would be appreciated.
Thanks Trevor
I don't think it would be possible to recover from some of these errors. In our projects we usually log the error to non-volatile memory and then execute a watchdog reset.
Thanks for your reply.
Rather than try to recover, perhaps try to diagnose this issue.
See the conversation in thread
http://www.keil.com/forum/60425/#msg197133
The os_error() function is a good place to gather telemetry of the issues and send them out, either stored in variables, or spit out a serial port.