We are having an issue with suspend/resume with the iMX25 in WinCE6. We are entering STOP mode and powering off the 24MHz oscillator and we are finding that sometimes the unit fails to resume from suspend.
There is an errata for the iMX25 http://www.freescale.com/files/dsp/doc/errata/IMX25CE.pdf that states that if powering off the 24MHz clock it is necessary to run the code that controls this process in internal ram, and then reconfigure the SDRAM before resuming executing from SDRAM, as the PLL can lock at a lower frequency when leaving STOP mode. If I leave the 24MHz clock running I can suspend and resume successfully. Mind you when it fails it is 1 out of 40/50, so it doesn't happen every time. I've tried lowering the clock frequency before entering STOP mode but that doesn't seem to resolve the issue.
How do I get WinCE to place the OEMPowerOff() function into internal RAM? I can see where the SDMA uses internal RAM for buffers for audio but in that case they are just specifically mapping a block of memory to read and write from, not calling functions at that address.
Any pointers would be appreciated!