Skip to main content
Associate III
July 11, 2024
Solved

using TouchGFX with only internal ram

  • July 11, 2024
  • 1 reply
  • 1098 views

Hello, I'm developing using stm32f476-DISCO.

Until now, we have made development easy by using external RAM.

The current operation has received a request to create a program using only internal RAM without external RAM.

 

https://support.touchgfx.com/docs/development/board-bring-up/how-to/03-display-internal

https://support.touchgfx.com/docs/development/touchgfx-hal-development/scenarios/scenarios-framebuffer-strategies

 

I tried to make it by reading the above materials and forums, but I don't understand.

 

https://www.youtube.com/watch?v=H7nBx23a8x4

https://www.youtube.com/watch?v=UobGH7_TPD8&t=3s

 

I have a demonstration video on YouTube above, but I can't find the source code.

I'm a beginner and I'd greatly appreciate it if you could organize CubeMX to work without external RAM and guide me on how to touch gfx.

 

Best answer by Osman SOYKURT

Hello @JIN3473 ,

I think you mean STM32F746-DISCO instead? (we do not have a product called STM32F476-DISCO)

The STM32F746-DISCO has 1 MB internal flash and 340 kB internal RAM. So it could be limited for an application especially if you have a lot of assets and if you're using more than 1 framebuffer (the TBS we offer in TouchGFX designer is using double framebuffer strategy).

If you want to use the internal memory to store your framebuffers, you'll need to change your linker script.

 BufferSection (NOLOAD) :
 {
 *(TouchGFX_Framebuffer TouchGFX_Framebuffer.*)
 *(.gnu.linkonce.r.*)
 . = ALIGN(0x4);
	
 } >RAM

 

Same for the fonts, they have to be in internal memory.

 FontFlashSection :
 {
 *(FontFlashSection FontFlashSection.*)
 *(.gnu.linkonce.r.*)
 . = ALIGN(0x4);
 } >FLASH


For the assets, please check in your TouchGFX project that they're in internal flash. 

OsmanSOYKURT_0-1724942421162.png

1 reply

Osman SOYKURT
Osman SOYKURTBest answer
Technical Moderator
August 29, 2024

Hello @JIN3473 ,

I think you mean STM32F746-DISCO instead? (we do not have a product called STM32F476-DISCO)

The STM32F746-DISCO has 1 MB internal flash and 340 kB internal RAM. So it could be limited for an application especially if you have a lot of assets and if you're using more than 1 framebuffer (the TBS we offer in TouchGFX designer is using double framebuffer strategy).

If you want to use the internal memory to store your framebuffers, you'll need to change your linker script.

 BufferSection (NOLOAD) :
 {
 *(TouchGFX_Framebuffer TouchGFX_Framebuffer.*)
 *(.gnu.linkonce.r.*)
 . = ALIGN(0x4);
	
 } >RAM

 

Same for the fonts, they have to be in internal memory.

 FontFlashSection :
 {
 *(FontFlashSection FontFlashSection.*)
 *(.gnu.linkonce.r.*)
 . = ALIGN(0x4);
 } >FLASH


For the assets, please check in your TouchGFX project that they're in internal flash. 

OsmanSOYKURT_0-1724942421162.png

Osman SOYKURTST Software Developer | TouchGFX