cancel
Showing results for 
Search instead for 
Did you mean: 

using TouchGFX with only internal ram

JIN3473
Associate II

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.

 

1 ACCEPTED SOLUTION

Accepted Solutions
Osman SOYKURT
ST Employee

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 SOYKURT
ST Software Developer | TouchGFX

View solution in original post

1 REPLY 1
Osman SOYKURT
ST Employee

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 SOYKURT
ST Software Developer | TouchGFX