> After the last S-record, which starts with S7, is read the device reboots and comes up successfully
My guess is that it is like dropping a phone in the middle of a conversation, and the other end is still saying "Hello, Hello?". The other end is expecting to hear that the data has been received properly and is then expecting to cleanly end the "call".
After receiving the last S-Record, the code should not reboot immediately, but should hang around running the USB processing loop until the transfer has been ACKed or the the connection has been closed and all the handshakes finished. Only then should it reboot.
BTW, can you EDIT the original post as there's no such chip as an "MCF52289" like you have in the "Subject" line.
Tom