[arm-gnu] NXP LPC1788 checksum

Martin Velek martin.velek at gmail.com
Fri Jul 20 06:58:48 UTC 2012


Hello,

I have re-invented the wheel. I have downloaded a trial version of
Codebench for ARM EABI and exactly this sequence is generated by the
board definition tool :). It's a pitty that the lpc1788 is not
supported by the IDE.

Martin

On Thu, Jul 19, 2012 at 4:39 PM, Carlos O'Donell
<carlos_odonell at mentor.com> wrote:
> On 7/19/2012 5:01 AM, Martin Velek wrote:
>> Hello,
>>
>> I am using the NXP LPC1788. However the NXP has a checksum feature,
>> after reset the ROM Bootloader sums  first 7 * 4 bytes and checks if
>> the sum is equal to zero. If not a special programm is called.
>>
>> I would like not to rely on a JTAG (segger jlink) which probably does
>> the checksum or any other external tool. My idea is to add a magic
>> stuff to startup file or a linker to be generated automatically.
>>
>> Adding  .long __cs3_stack + __cs3_reset + ...... +
>> __cs3_isr_usage_fault@ = __cs3_lpc17xx_checksum led to
>> ../lpc17xx-vector.S:29: Error: invalid operands (*UND* and *UND*
>> sections) for `+'
>>
>> So that I have modified the linker script and added
>> PROVIDE(__cs3_lpc17xx_checksum = (0x0 - (__cs3_stack + __cs3_reset +
>> __cs3_isr_nmi + __cs3_isr_hard_fault + __cs3_isr_mpu_fault +
>> __cs3_isr_bus_fault + __cs3_isr_usage_fault)) - 0x6);
>> The six at the end is due to adding 0x1 as a function pointer (thumb)
>> while the linker probably counts with 0x0 at the end.
>>
>> My question is if this solution is clear. It works but maybe there is
>> more fancy solution.
>
> That is *already* a fancy solution :-)
>
> There is no easy way to do this and in the past I've always post-processed
> the ELF file to write in the checksum.
>
> Your method is significantly more elegant than a post-processing step
> with special tools.
>
> Cheers,
> Carlos.
> --
> Carlos O'Donell
> Mentor Graphics / CodeSourcery
> carlos_odonell at mentor.com
> carlos at codesourcery.com
> +1 (613) 963 1026



More information about the arm-gnu mailing list