cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H747I-Disco double framebuffer results in frozen screen

seg_fault01
Associate II

Hello,
I am using a STM32H747i-DISCO kit and have set up a project based on the TouchGFX Designer demo applications, which works based on a single framebuffer.
If I go into the CubeMX settings and set the framebuffer strategy to "Double Buffer" and the buffer location to "By Allocation", I can see my screen after flashing, but it is frozen. According to TouchGFXGeneratedHAL.cpp the video RGB buffer (1,152 Mbyte for 800 x 480 x 3 bytes) is located at 0xd0000000 in SDRAM and the framebuffer is placed at 0xd0119400 right after the video buffer. The pointers are set accordingly in the TouchGFXGeneratedHAL::initialise() by calling setFrameBufferStartAddresses((void*)frameBuf, (void*)(frameBuf + sizeof(frameBuf) / (sizeof(uint32_t) * 2)), (void*)0);.
What causes my display to freeze when I change to double framebuffer?

 

1 ACCEPTED SOLUTION

Accepted Solutions
LouisB
ST Employee

Hello @seg_fault01 ,

So I talk with the team on that issue, and unfortunately the double frame buffer strategy is not supported on the H747  TBS. For now, I cant guarantee whenever or not that it will supported in the future.

I hope that answers your question.

Regards,

Louis BOUDO
ST Software Engineer | TouchGFX

View solution in original post

4 REPLIES 4
seg_fault01
Associate II

To recreate the problem: Open TouchGFX Designer, create any demo project for the STM32H747I disco board. In CubeMX - Middleware and Software Packs - TouchGFX set framebuffer strategy to double buffer by allocation.

LouisB
ST Employee

Hello @seg_fault01,

Can you send me your map file ? So I can see how the allocation were made .

Regards, 

Louis BOUDO
ST Software Engineer | TouchGFX

Hello, 

sorry for the late reply. Here is the part of the map file that contains the framebuffer.

 

BufferSection 0xd0000000 0x34bc00 *(Video_RGB_Buffer Video_RGB_Buffer.*) Video_RGB_Buffer 0xd0000000 0x119400 CM7/TouchGFX/build/STM32H747I_DISCO/CM7/TouchGFX/target/generated/TouchGFXGeneratedHAL.o *(.gnu.linkonce.r.*) 0xd0119400 . = ALIGN (0x4) *(TouchGFX_Framebuffer TouchGFX_Framebuffer.*) TouchGFX_Framebuffer 0xd0119400 0x232800 CM7/TouchGFX/build/STM32H747I_DISCO/CM7/TouchGFX/target/generated/TouchGFXGeneratedHAL.o *(.gnu.linkonce.r.*) 0xd034bc00 . = ALIGN (0x4) OUTPUT(CM7/TouchGFX/build/bin/target.elf elf32-littlearm)

image.png

 

LouisB
ST Employee

Hello @seg_fault01 ,

So I talk with the team on that issue, and unfortunately the double frame buffer strategy is not supported on the H747  TBS. For now, I cant guarantee whenever or not that it will supported in the future.

I hope that answers your question.

Regards,

Louis BOUDO
ST Software Engineer | TouchGFX