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 Developer | 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 Developer | 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 Developer | TouchGFX