My company is working with an embedded system (bare-metal, no OS) that is deployed at a very distant location. About once a month or so, the system shows signs of starvation - the interrupts run, but the background loop does not. So something has gone wrong. Since hooking up a debugger and running a >30 day debug session really isn't an option, we've decided to attempt to write a core dump routine, that would write the RAM data to flash for later retrieval.
We have support for detecting the starvation (currently we just reset the MCU), and we have support for writing to flash. So the real questions are, how would we go about to dump the RAM, and what would be the best way of interpreting it? We've never written any debug routines like this before, and therefore feel quite lost about where to start...