2026-05-06 12:56 AM - last edited on 2026-05-06 1:09 AM by Andrew Neil
Hello everyone,
I am working on a custom bootloader for an STM32H743-based TouchGFX project and facing a very strange issue specifically with the TouchGFX application after jumping from bootloader.
STM32H743 Bootloader Successfully Jumps to Simple App but TouchGFX Application Shows Black Screen After Bootloader Jump.
I would appreciate any guidance from people who have experience with STM32H7 + TouchGFX + bootloader integration.
MCU:
Frameworks:
Peripherals Used in TouchGFX App:
External Memories:
The bootloader:
Important:
This strongly suggests:
Application FLASH origin:
FLASH (rx) :
ORIGIN = 0x08040000
Vector table offset in system_stm32h7xx.c:
#define USER_VECT_TAB_ADDRESS
#define VECT_TAB_OFFSET 0x00040000U
Framebuffer sections:
BufferSection (NOLOAD) > SDRAM
BitmapCacheSection (NOLOAD) > SDRAM1
ExtFlashSection > QSPI
Stack pointer at application start:
Current jump code:
typedef void (*pFunction)(void);
void Jump_To_User_Application(void)
{
uint32_t appStack;
uint32_t appEntry;
appStack = *(__IO uint32_t*)APPLICATION_ADDRESS;
appEntry = *(__IO uint32_t*)(APPLICATION_ADDRESS + 4);
if (((appStack & 0xFF000000) == 0x24000000) ||
((appStack & 0xFF000000) == 0x20000000))
{
__disable_irq();
SysTick->CTRL = 0;
SysTick->LOAD = 0;
SysTick->VAL = 0;
for (uint32_t i = 0; i < 8; i++)
{
NVIC->ICER[i] = 0xFFFFFFFF;
NVIC->ICPR[i] = 0xFFFFFFFF;
}
HAL_MPU_Disable();
SCB_DisableICache();
SCB_DisableDCache();
__DSB();
__ISB();
SCB->VTOR = APPLICATION_ADDRESS;
__set_MSP(appStack);
pFunction JumpToApp;
JumpToApp = (pFunction)(appEntry);
JumpToApp();
}
}Why would:
even though:
Could this be related to:
Has anyone successfully implemented STM32H7 bootloader + TouchGFX application jump reliably?
Any suggestions would be greatly appreciated.
Thank you.