User Tools

Site Tools


manual:ports:armcm0_stm32

This is an old revision of the document!


Checksum location

A 32-bit checksum value is programmed by the bootloader at the end of a programming session. Upon startup, the bootloader verifies the correctness of this checksum to determine if a valid user program is present and can be started.

The user program must reserve space for this 32-bit checksum value. The bootloader programs this value at the end of the interrupt vector table. To reserve this space, simply enter one extra dummy entry into the interrupt vector table. This reserves space for the checksum at memory address 0x080020C0 (0xC0 + flash reserved for bootloader + flash base address). Refer to the demo program for an example.

Stackpointer initialization

On the ARM Cortex-M0 the first entry into the vector table holds the initialization value for the stackpointer, which is automatically loaded into the CPU's stackpointer register upon reset.

After reset, the bootloader gets started first and, if a valid user program is present, it is the bootloaders responsibility to start the user program. This unfortunately means that the automatic initialization of the CPU's stackpointer register does not work for the user program. The user program therefore needs to explicitly set the initial value of the CPU's stackpointer register in the reset interrupt service routine. Refer to the demo program for an example.

manual/ports/armcm0_stm32.1461939256.txt.gz · Last modified: 2019/09/24 22:14 (external edit)