I've written a Windows program that will download firmware code from .hex (converted to bin) and into our device. In doing this project, I noticed these errors? in the manual. Not sure they are errors, but wanted to put them down to see what the experts think.
Writing to RAM w/ ISP/IAP command ('W')
1. When using the “Write to RAM” Command, the datasheet (UM10800.pdf) shows on page 372 under section 220.127.116.11 that the proper sequence is:
1. Write command to uC ("W [Address] [length]")
2. uC replies with result of command request (CMD_SUCCESS hopefully)
3. Write the data to be written to the RAM
4. When complete, the uC will reply with “OK\r\n”. <-- This does not happen.
When using this command, it is fairly clear that I’m using the command correctly (by not waiting for “OK” since it never happens) because when I issue the next command it works just fine. Indicating to me that the internal state machine is in the proper state. Namely, the ready_to_receive_command or whatever and not in the still_accepting_RAM_data state, etc.
When restarting after the code is completely copied and CRC checked (yes, including FLASH from 0x00 to 0x01FF), I issue the Go command. The datasheet says I can't use an address lower than 0x0200. This is incorrect as I am issuing the command "GO 0 T" and it's working just fine. Is this ok? Do I need to write a little booter program to put in flash that loads the stack pointer and then updates the PC to the value at 0x0004? Seems like a lot of work if the actual command seems to work. I have read in other places on this forum where this seems to work for some uC's and not for others. Was there an update?