cancel
Showing results for 
Search instead for 
Did you mean: 

TouchGFX Put Partial FrameBuffer Location in SDRAM

MMoha.3
Associate III

I'm setting up my LCD in SPI mode on my STM32F429 Discovery board. So the framebuffer is set as partial (ManyBlockAllocator).

So my question is whether I can define this framebuffer in the SDRAM to save up some space.

Thanks in advance

6 REPLIES 6
Romain DIELEMAN
ST Employee

Hi,

It is possible to store the framebuffer in the SDRAM (have not tried personally yet with partial framebuffers). Here are links to the documentation to help you: how to put the Framebuffer in external RAM, selecting the Hardware components and the partial framebuffer strategy.

/Romain

Hi Romain,

Thanks for the response.

I have already read the links that you sent, but the difference with partial framebuffers is that partial ones are not simply stored as a single variable. The function that constructs the buffer is defined in the FrameBufferAllocator.hpp file and I cannot find a way to use LOCATION_PRAGMA for instance to set the location that the buffers are stored.

I tried to put the LOCATION_PRAGMA there but I had no luck and encountered this error: "section attribute not allowed for 'memory' "0693W000007CZS2QAO.png

Hello @MMoha.3​ ,

FYI, Partial Framebuffer was created for low cost solution where you don't have external RAM. If the Partial Framebuffer fits perfectly in G0, I'm pretty confident it should fit in the internal RAM of an F429 (256 Kbytes for F429 against 36 Kbytes for G0).

I don't understand your use case, could you elaborate ?

/Alexandre

Hi @Alexandre RENOUX​ ,

In my application, I need the DCMI module of the stm32f429.

And because in the stm32f429 discovery board the pins for LTDC and the DCMI module of the MCU are multiplexed, I need to use the SPI communication method for my LCD.

So therefore I have to use the Partial Framebuffer.

I was just curious if I could just take benefit of the onboard SDRAM of the discovery board since my guess is that the main application (which is to receive data in parallel format from an ADC, connected to the DCMI module of the microcontroller) is going to use up lots of RAM.

Hello @MMoha.3​ ,

One additional information : I don't think the F429-Disco board has a display with embedded GRAM so in this case Partial Framebuffer is not possible.

Also, SPI interface does not mean Partial Framebuffer, You can definitely have a double framebuffer in external RAM and send the rendered frame to the display over SPI (https://support.touchgfx.com/docs/development/touchgfx-hal-development/scenarios/scenarios-spi/) IF AND ONLY IF the display supports the SPI interface. If it's the case, the speed might be limited which could impact performance but right now that would be your best bet in my opinion.

/Alexandre

The F429-disc1 board does have a controller with GRAM. The controller is ILI9341.

I have successfully initialized the LCD in SPI mode and using a partial framebuffer and it's fully functional.

One other downside to partial framebuffers is that the memory that is being used up by the framebuffer doesn't show up in CubeIDE Build Analyzer.