Thanks Yuri for your response.
My UART configuration seems to be correct. SDP works fine and produces the 88 88 88 88 response as expected after sending down a file.
We also do not modify the clock during SDP. Once SDP is complete, our binary has a DCD section which configures the clock, i.e.:
DCDGEN(25, 4, 0x53F80008, 0x20034000)
But at this point, SDP has completed. I have tried removing this DCD entry, but the device does not seem to be able to boot without it.
However, the same process works fine on an unsecured Engineering mode board, but does not work on a Production board. The only difference is the fuse configuration. Since SDP download works in both cases, what difference could contribute to the lack of successful boot in the case of the Production board? We are confident that the image is properly signed. Interestingly, when I attempt to use a small unsigned bootloader, I get a 47 47 47 47 response, as expected. But if I use a larger unsigned bootloader, I get garbage. In fact, I have consistently found that file size has a significant impact on behavior. The same goes for a bootloader that loads into internal ram. If the bootloader is loaded starting at 0x78001c00 and is up to 120k in size, it boots (on a non-secure board). But if loaded at 0x78000000, or if it is 121k or larger, it does not boot. Can you indicate any documentation that might explain this subtle behavour?
Cheers,
Bryan