2024-12-12 4:21 PM - edited 2024-12-12 4:22 PM
Anybody have Linker.ld and Loader_src.c file for STM32H563? I have done one for the STM32H743 on another project and made an attempt to modify these for the STM32H563 but it's not working. Appreciate any guidance.
I changed the RAM location from 0x24000000 for the H7 to 0x20000000 for the H5 but not sure what else is different as it pertains to a loader.
Something with the Init could be wrong...
int Init(void) {
*(uint32_t*)0xE000EDF0 = 0xA05F0000; //enable interrupts in debug
// Added per suggestion from ST to clear out QSPI structure
memset(&hospi1, 0, sizeof(hospi1));
SystemInit();
/* ADAPTATION TO THE DEVICE
*
* change VTOR setting for H5 device
* SCB->VTOR = 0x20000000 | 0x200;
*
* change VTOR setting for other devices
* SCB->VTOR = 0x20000000 | 0x200;
*
* */
SCB->VTOR = 0x20000000 | 0x200;
__set_PRIMASK(0); //enable interrupts
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
__HAL_RCC_OSPI1_FORCE_RESET(); //completely reset peripheral
__HAL_RCC_OSPI1_RELEASE_RESET();
if (CSP_QUADSPI_Init() != HAL_OK) {
__set_PRIMASK(1); //disable interrupts
return LOADER_FAIL;
}
if (CSP_QSPI_EnableMemoryMappedMode() != HAL_OK) {
__set_PRIMASK(1); //disable interrupts
return LOADER_FAIL;
}
/*Trigger read access before HAL_QSPI_Abort() otherwise abort functionality gets stuck*/
uint32_t a = *(uint32_t*) 0x90000000;
a++;
__set_PRIMASK(1); //disable interrupts
return LOADER_OK;
}
Solved! Go to Solution.
2025-04-13 10:41 AM
Finally HAL_Delay(); worked for me by ticking both the check boxes of "enabled" and "initialize", kindly refer to my reply at https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/regarding-external-loader-with-at25q128a-nor-flash/td-p/790941
thank you,