cancel
Showing results for 
Search instead for 
Did you mean: 

Garbage in framebuffer

EHay.1
Associate III

Good afternoon to everyone!

I have some problem with flushing or rendering.

My settings:

  • partitial framebuffer, 4 bloks, 16bpp, 32000 block size;
  • internal RAM for framebuffer;
  • use DMA2D and DMA2 for FMC (STM32F469);

Problem - after start UI if we press "Reset" UI button, release image button is corrupted. I am check bitmap and bitmap in framebuffer - they very difference. Result in pic.

After two click this corruption disappears. But similar problem in swap container(upper text label "LFP1") never disappears.

0693W0000059JZ8QAM.jpg0693W0000059JZ3QAM.jpgThank you in advance!

5 REPLIES 5
EHay.1
Associate III

I am add code in function transmitFrameBufferBlock delay before start DMA for FMC:

void transmitFrameBufferBlock(uint8_t* pixels, uint16_t x, uint16_t y, uint16_t w, uint16_t h)
{
        _isTransmittingData = 1;
	uint32_t _data_length = w * h;
        for(uint32_t i = 0; i < 21300; i++)
        {
            asm("nop");
        }
 
        SSD1963_Set_Work_Area(x, y, w, h);
        HAL_DMA_Start_IT(&hdma_memtomem_dma2_stream0, (uint32_t)pixels, FMC_DATA_ADR, _data_length);
}

Garbage is disappear but flushing very slow. This method is wrong.

Alexandre RENOUX
Principal

Hello,

Do you store your images in an external Flash ? If so, try to put them into internal Flash and see if you have still the problem. If you don't, this probably means your external Flash is incorrectly configured.

/Alexandre

Thank for your answer. I do not use external flash. Image storage placed in internal flash.
EHay.1
Associate III

Hello everyone!

I find out that framebuffer allocator working with issues. If we use 4 bloks, counter sendingBlock or drawingBlock lags and we draw another blocks. TouchGFX engine marks another block. markBlockReadyForTransfer() we call in flush method. How fix it?

Alexandre RENOUX
Principal

Hello,

Sorry but could you please add more information ? You are using an F469 MCU right ? Is your board a custom board ? Do you confirm using TouchGFX 4.15 ?

Can you illustrate the issue with images and/or pieces of code to make it clearer ?

Have you tried using 3 blocks ? Have you tried changing the size of the blocks ?

/Alexandre