Content originally posted in LPCWare by lonwalker on Thu Mar 05 14:45:50 MST 2015
Hello all,
I am trying to generate a hex file in SREC format for a PE-Micro Cyclone programmer to utilize for programming LPC824 devices. I used the following Xpresso (v7.6) post-build step to somewhat of success:
arm-none-eabi-objcopy -O srec ${BuildArtifactFileName} ${BuildArtifactFileBaseName}.s19
I am however finding out that the Programmer is failing a read-verify after programming locations 001C-001F. I learn from the LPC824 data sheet that these locations are reserved for Cotrex-M0+ exception vector for validating the first 7 vector locations. The 8 location (vector 7) should contain a 2's complement sum of the first 7 vectors.
My programmer device, PEMicro Cyclone for ARM, *does* appear to program everything correctly, but complains during the read-verify after programming that the expected data for vector 7 is 0000 0000h instead of what the device actually has; something like 1DDB FFFF.
Looking at the objcopy generated SREC programming file data the utility is setting the expected data for locations 001C-001F to zeros instead of the 2's complement of checksum of vectors 0-6:
S017000053593930312D4261724C6974653832342E73313929
S11300000020001049010000C9010000D1010000D6
S113001000000000000000000000000000000000DC
I have not found any 'true' PDF type documentation on arm-none-eabi-objcopy utility other than the command line help- Is there any that anyone knows of?.
Is there a way to make the utility compute the checksum of the first 7 vectors, 2's complement that, and then generate SREC data for vector 7 (address locations 001c-001f) ???
Maybe there is something else going on here I am not just aware of???, but as always in engineering- time is of the essence here.
Thanks in advance for any help you could lend,
Lon