2024-11-27 7:14 AM
I’m encountering an issue with my STM32H755 application after moving the flash memory to accommodate SBSFU. The Reset_Handler address in the vector table is misaligned by one flash bank. Here are the details:
Background:
Problem: After moving my application to start at 0x08020400 to make room for SBSFU, the Reset_Handler address in the vector table is incorrect. The address is off by 0x203FF.
Linker Script: Here is the relevant part of my linker script:
MEMORY
{
FLASH (rx) : ORIGIN = 0x08020400, LENGTH = 896K
RAM_D1 (xrw) : ORIGIN = 0x24000000, LENGTH = 128K
// Other memory regions
}
SECTIONS
{
.isr_vector :
{
. = ALIGN(8);
KEEP(*(.isr_vector))
FILL(0);
. = ORIGIN(FLASH) + LENGTH(FLASH) - 1;
BYTE(0)
. = ALIGN(8);
} > FLASH
.text :
{
. = ALIGN(4);
*(.text)
*(.text*)
*(.glue_7)
*(.glue_7t)
*(.eh_frame)
KEEP(*(.init))
KEEP(*(.fini))
. = ALIGN(4);
_etext = .;
} > FLASH
// Other sections
}Startup Code: Here is the relevant part of my startup assembly file:
.section .isr_vector, "a", %progbits
.type g_pfnVectors, %object
.size g_pfnVectors, .-g_pfnVectors
g_pfnVectors:
.word _estack
.word Reset_Handler
.word NMI_Handler
.word HardFault_Handler
// Other exception vectors
.thumb_func
.type Reset_Handler, %function
Reset_Handler:
// Reset handler code
b .Vector Table Output: Here are the first 10 entries of the vector table:
0x08020400: 0x24020000 0x08020404: 0x080656E5 0x08020408: 0x08064549 0x0802040C: 0x0806454F 0x08020410: 0x08064555 0x08020414: 0x0806455B 0x08020418: 0x08064561 0x0802041C: 0x00000000 0x08020420: 0x00000000 0x08020424: 0x00000000
What I’ve Tried:
Question: Why is the Reset_Handler address in the vector table misaligned by one flash bank, and how can I fix this issue?
Solved! Go to Solution.
2024-11-27 9:32 AM
Resolved.
The SBSFU postbuild script that generates the .sfb firmware requires both the elf and bin files. I had not updated one of these after updating the flash address.
2024-11-27 9:32 AM
Resolved.
The SBSFU postbuild script that generates the .sfb firmware requires both the elf and bin files. I had not updated one of these after updating the flash address.