2025-06-21 4:56 PM - last edited on 2025-06-23 10:00 AM by Andrew Neil
I use stm32 touch gfx tool ``TouchGFX 4.25.0 Designer`` generate a simple demo based on STM32H7B3I_EVAL board.
but when I build this project on MDK542a, I get failed as below
```
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching touchgfxgeneratedhal.o(.bss.TouchGFX_Framebuffer).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching heap_4.o(.bss.ucHeap).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching hardwaremjpegdecoder.o(TouchGFX_MCU_Data_OutBuffer0).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching hardwaremjpegdecoder.o(TouchGFX_MCU_Data_OutBuffer1).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching touchgfxconfiguration.o(.bss._ZZN12FrontendHeap11getInstanceEvE8instance).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching startup_stm32h7b3xxq.o(STACK).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching startup_stm32h7b3xxq.o(HEAP).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching touchgfxconfiguration.o(.bss._ZL3dma).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32h7b3i_eval_bus.o(.bss.I2c_valid_timing).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching tasks.o(.bss.pxReadyTasksLists).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching cmsis_os2.o(.bss.vApplicationGetTimerTaskMemory.Timer_Stack).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching hardwaremjpegdecoder.o(.bss.MCU_Cropping_Buffer).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching cmsis_os2.o(.bss.vApplicationGetIdleTaskMemory.Idle_Stack).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching main.o(.bss.hltdc).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching timers.o(.bss.prvCheckForValidListAndQueue.ucStaticTimerQueueStorage).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching touchgfxconfiguration.o(.bss._ZL3hal).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching touchgfxconfiguration.o(.bss._ZL7display).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching touchgfxgeneratedhal.o(.bss..L_MergedGlobals).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching tasks.o(.bss..L_MergedGlobals).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32h7b3i_eval_sdram.o(.bss.SDRAM_MspDeInit.mdma_handle).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching main.o(.bss.hmdma_jpeg_infifo_th).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching main.o(.bss.hmdma_jpeg_outfifo_th).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32h7b3i_eval_sdram.o(.bss.SDRAM_MspInit.mdma_handle).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching main.o(.bss.hdma2d).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32h7b3i_eval_ospi.o(.bss..L_MergedGlobals).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching hardwaremjpegdecoder.o(.bss..L_MergedGlobals).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching main.o(.bss..L_MergedGlobals).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching cmsis_os2.o(.bss.vApplicationGetIdleTaskMemory.Idle_TCB).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching cmsis_os2.o(.bss.vApplicationGetTimerTaskMemory.Timer_TCB).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching libspace.o(.bss).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching main.o(.bss.hospi1).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32h7b3i_eval_bus.o(.bss..L_MergedGlobals).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32h7b3i_eval_ts.o(.bss..L_MergedGlobals).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching main.o(.bss.hjpeg).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32h7b3i_eval_sdram.o(.bss..L_MergedGlobals).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stdio_streams.o(.bss).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stdio_streams.o(.bss).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stdio_streams.o(.bss).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching timers.o(.bss.prvCheckForValidListAndQueue.xStaticTimerQueue).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32h7xx_hal_timebase_tim.o(.bss.htim6).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching queue.o(.bss.xQueueRegistry).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching timers.o(.bss..L_MergedGlobals).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching hardwaremjpegdecoder.o(.data.Jpeg_OUT_BufferTab).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching ft5336.o(.data.FT5336_TS_Driver).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching tasks.o(.bss..L_MergedGlobals.2).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching touchgfxconfiguration.o(.bss..L_MergedGlobals).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching heap_4.o(.bss..L_MergedGlobals).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching is42s32800j.o(.bss.Command).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching touchgfxgpio.o(.bss..L_MergedGlobals).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching oswrappers.o(.bss..L_MergedGlobals).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32h7xx_hal.o(.data..L_MergedGlobals).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching system_stm32h7xx.o(.data..L_MergedGlobals).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching port.o(.bss..L_MergedGlobals).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching touchgfxconfiguration.o(.data._ZL12fontProvider).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching touchgfxconfiguration.o(.bss._ZGVZN12FrontendHeap11getInstanceEvE8instance).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching oswrappers.o(.data._ZL5dummy).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32h7xx_hal.o(.bss.uwTick).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching cmsis_os2.o(.bss.KernelState).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching port.o(.data.uxCriticalNesting).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching cxa_finalize.o(.data).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching atexit_init.o(.data).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stdio_streams.o(.data).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stdio_streams.o(.data).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stdio_streams.o(.data).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32h7xx_hal_msp.o(.bss.FMC_Initialized).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32h7xx_hal_msp.o(.bss.FMC_DeInitialized).
STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf: Error: L6407E: Sections of aggregate size 0x1908c4 bytes could not fit into .ANY selector(s).
Not enough information to list image symbols.
Not enough information to list load addresses in the image map.
Finished: 2 information, 0 warning and 67 error messages.
"STM32H7B3I_EVAL\STM32H7B3I_EVAL.axf" - 67 Error(s), 0 Warning(s).
Target not created.
```
I add the project zip file to attach.
2025-06-23 9:50 AM - edited 2025-06-23 9:51 AM
Hello @sheng yang ,
It seems you have insufficient memory. For that check memory settings and ensure that the memory regions are properly defined and have enough space.
You need to modify your Keil MDK scatter file to allocate the framebuffer, heap, and large objects to external SDRAM.
2025-06-24 2:52 AM - last edited on 2025-06-26 12:34 PM by MM..1
Hello @sheng yang ,
I have checked the project you shared as a zip file.
You say that you try to build using MDK542a.
To build and flash using Keil, in STM32CubeMX => Project manager => Toolchain, you have to change the toolchain and IDE:
Then you have to generate code using STM32CubeMX with set MDK-ARM.
Then you have to go back to TouchGFX Designer and generate code there aswell.
Then you can go to your Keil IDE and build and flash.
If you struggle to flash, you can flash the bin using STM32CubeProgrammer.
Regards,
2025-06-24 3:20 PM
the scatter file (generated by TouchGFX 4.25.0 Designer) as:
```
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x08000000 0x00200000 { ; load region size_region
ER_IROM1 0x08000000 0x00200000 { ; load address = execution address
*.o (RESET, +First)
*.o (TextFlashSection)
*.o (FontFlashSection)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x24000000 0x00100000 { ; RW data
.ANY (+RW +ZI)
}
RW_SDRAM 0xd0000000 UNINIT 0xd1ffffff {
*.o (TouchGFX_Framebuffer)
}
}
LR_EROM1 0x90000000 0x4000000 { ; load region size_region
ER_EROM1 0x90000000 0x4000000 { ; load address = execution address
*.o (ExtFlashSection)
}
}
```
I thought I use the generated project, it should be compilied success by default. :smile:
2025-06-24 3:21 PM
after I regenerate the mdk-arm project, I get new errors as below:
2025-06-25 1:16 AM
Hello @sheng yang ,
It looks like your linker is not aware of the TouchGFX framework (library).
Can you check that you have the TouchGFX framework in your project's libraries?
Can you tell me the steps you did to create your project?
Regards,
2025-06-25 3:38 PM
1. I use touchgfx generate a demo pro with stm32h7b3i evaluation board
2. I launch the keil project under MyApplication\MDK-ARM\STM32H7B3I_EVAL.uvprojx it failed with no space region
3. I renegerate the keil project with MyApplication\STM32H7B3I_EVAL.ioc and recompiled the project with v5.06 compiler rather v6 default in keil v5.42, it failed as undefined symbol as preview post
Besides I regenerate the project with stm32 cube IDE, it can compiled success as
2025-06-26 2:28 AM
Hello @sheng yang ,
When you create a project using TouchGFX Designer, by default it is set to work with GCC (and STM32CubeIDE), which means that there are generated files for that compiler.
When you select Keil Toolchain and re-generate code from STM32CubeMX, some of those files are rewritten to work with Keil, but not all of them.
Some of the files are generated by TouchGFX Generator.
So after re-generating code from STM32CubeMX, you also have to open your TouchGFX project in Designer and clikc on the "Generate code" button.
Then you can work with the Keil toolchain.
Regards,
2025-07-11 4:17 PM - edited 2025-07-11 4:26 PM
I have a board with stm32H7B0ZBT6, and I want to use touchgfx with my board. Now I use touchgfx designer generate a STM32H7B3I_EVAL demo, I try to just use stm32cubemx open STM32H7B3I_EVAL.ioc and change the chip and releate settings then regenerate the files. But after I rechange the chip , I found stm32cube mx recreate a new project.
I wonder is there any way that I can run touchgfx simple demo on my stm32h7bzbt6 board ?
Besides I append a stm32cubeide project of myboard, I have an another question how could I regenerate the touchgfx code to this project ?