I'd love to say USB debugging on CE 5 is cake, but MS has never been known to get USB debugging to be worthwhile on any of their kernel dev platforms. To give you a better understanding, there is good, bad, horrible, nightmareish, then there is USB support for kernel debugging from windows. Which is why I was bringing up the serial port path.
The main reason is because in windows, you have to bring up the enumeration bus, then the actual device itself (there are a few more steps, but you get the idea, its not just a 'hey wake this 1 device up and we're good!'.
That said, I may be able to rip the current image apart and pull the drivers and reg keys from it and rebuild a boosting driver that can be loaded at boot time, but before the debugger attaches.
The issue is that we have no ethernet interface to gain a TCP/IP address for remote tools.
The old fashioned way to get things rocking on a CE device was to put the image file (nk_ram.nb0 or whatever you want to call the NK bin file) and an autoexec.bat (go figure right?) on a SD card to boot. Then you boot the device and if it still has its basic bootloader, it should pick that up. Now if it DOES boot off the SD, theres a great chance that you will be able to load a custom bootloader in the event you trash the image you upload since you can completely remoteboot off of SD without a care of what is in the device's memory.
The autoexec.bat file contains this:
display
boot mmc nk_ram.nb0 kitl
If you have something connected to its com1 @ 384k 8N1, the serial port will show you objects as they come up online.
From the TESTMODE and HACKMODE, it seems they have a stubloader that will load up different images. If we could get a dump of that boot stub, we could see some of the different points of access that exist unless the file itself has a portion of code that is executed after the stub has done its basic init.
I'll check to see if any of those could be disassembled into something that might run.
Update: So the PRG0 and PRG1 are pretty much a mirror image of each other on a stock 3.001 system (Z130).
Something I did see in the threads was the "USBSerialFn.dll" which is very nice and if that emulates COM0 (as you can get the source code for that puppy) then we have a terminal connection with a USB serial cable so we can start doing some light tracing.
Now I noticed someone mentioned 4 copies of the rom in a different location in nand. Its quite normal to see multiple copies in a firmware device, especially when you bank them so you can call different banks when you want to perform different tasks. You'll see this in almost any 'scene' from consoles to set tops. Its probably the same here, and the kicker is probably in the bootstrap stub with a jmp to the TESTMODE chunk to switch base load addresses. Now I'm just being theoretical here, but its a decent shot.
Edit: I'm doubting the TESTMODE to be code itself. Disassembly in a normal ARM decompiler is ugly. I had a disassembler that had decent instructions, but IDA's says otherwise. So i'll lean toward unicode rotated text or something else.