This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
manual:ports:armcm0_stm32 [2016/10/18 01:36] voorburg [Checksum location] |
manual:ports:armcm0_stm32 [2022/11/07 11:27] voorburg [Checksum location] |
||
---|---|---|---|
Line 32: | Line 32: | ||
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. | 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 bootloader programs this value at the end of the user program's vector table. Its exact location is configured by macro FLASH_VECTOR_TABLE_CS_OFFSET in flash.c. The vector table size can vary based on the microcontroller derivative you are using. Please verify that the default value of FLASH_VECTOR_TABLE_CS_OFFSET is correct. If not, you can simply override the value by adding the macro with the correct value to the blt_conf.h configuration header file. | + | The bootloader programs this value at the end of the user program's vector table. Its exact location is configured by macro BOOT_FLASH_VECTOR_TABLE_CS_OFFSET in flash.c. The vector table size can vary based on the microcontroller derivative you are using. Please verify that the default value of BOOT_FLASH_VECTOR_TABLE_CS_OFFSET is correct. If not, you can simply override the value by adding the macro with the correct value to the blt_conf.h configuration header file. |
- | The user program must reserve space for this 32-bit checksum value. To reserve this space, simply enter one extra dummy entry into the interrupt vector table. This reserves space for the checksum at memory address: flash reserved for bootloader + flash base address + FLASH_VECTOR_TABLE_CS_OFFSET. Refer to the demo program for an example. | + | The user program must reserve space for this 32-bit checksum value. To reserve this space, simply enter one extra dummy entry into the interrupt vector table. This reserves space for the checksum at memory address: flash base address + flash reserved for bootloader + FLASH_VECTOR_TABLE_CS_OFFSET. Refer to the demo program for an example. |
{{:manual:ports:stm32_cm0_checksum_reservation.png?|}} | {{:manual:ports:stm32_cm0_checksum_reservation.png?|}} |