Hello,
I'm reading the Application Report SPRAAG0D "Using the TMS320DM643x Bootloader" and I have a question about the way the bootloader handles CRCs.
On page 27, it talks about the Request CRC Command. The REQ CRC command consists of the opcode, a CRC value, and a SEEK value. It says the SEEK value is "to be interpreted as a negative number and should be added to the current address in AIS."
So does this mean that bootloader subtracts the SEEK value from the current address. Or is the SEEK value encoded in 2's complement and added to the current address.
Is there a max value that the SEEK value can be? Can it be the full 32-bit range?
What I am trying to do is setup a bootloader that lets me jump to an alternate firmware image if there is a CRC error. Basically, I want to use the REQ CRC command as a jump if CRC!=0. My AIS sequence looks like this (I have enabled the CRC at an earlier point):
0x58535908 # Startover --- Starting Address is 0x1000
0x58535902 # Request CRC
0x000000FF # Actual CRC should be 0x00000000, but I want to jump so I prog differently
0x00000FA4 # I want to jump to 0x2000
I am programming a STARTOVER command, a REQ CRC command, and then a 0x000000FF as the CRC. THis in theory, should make the AIS use the SEEK value to jump to a location of my choosing in the flash image space.
Does the SEEK need to be referenced from the REQ CRC OPcode or the address of the SEEK value?
Anyone have any thoughts on this ?