Hi,
We have a problem with low GUI performance on TFT.
Our HW setup:
LPC1853 - Cortex-M3, 180 MHz
External SDRAM - 90 MHz
TFT - 768x128px, RGB, TFT running at 10 MHz
Our SW setup:
RGB565 format
single framebuffer (framebuffer footprint - 192kB)
FreeRTOS
We setup uGFX and established initial code for that :
void APP_Init(void)
{
TFT_BacklightOnOff(true);
Set_TFT_Backlight(PWM_100);
SysInterfaceInit();
// Create the initialization task
xTaskCreate(APP_InitTask, "Init Task", 1024, 0, 1, &InitTaskHandler);
vTaskStartScheduler();
}
static void APP_InitTask(void* pvParameters)
{
gfxInit();
xTaskCreate(APP_GuiTask, "Gui Task", 1024, 0, 1, 0);
vTaskDelete(InitTaskHandler);
}
static void APP_GuiTask(void* pvParameters)
{
for (;;)
{
gdispClear(Black);
vTaskDelay(1000);
gdispClear(White);
vTaskDelay(1000);
}
}
And we quickly find out that it works slowly. It is easy to see the redrawing process. There is nothing else in the system. We are only drawing this in one task.
We tried also to show on the display .png file from USB stick. We set up a FatFs on that and tried to show pictures like that :
Variant 1 - png format directly from USB;
Variant 2 - the same picture converted to raw RG565 format;
// VARIANT 1
static void APP_GuiTask(void* pvParameters)
{
gdispImage myImage1;
gdispImageOpenFile(&myImage1, "1:1.png");
gdispImageCache(&myImage1);
}
// VARIANT 2
static void APP_GuiTask(void* pvParameters)
{
gdispImage myImage2;
gdispImageOpenFile(&myImage2, "1:a.bin");
gdispImageCache(&myImage2);
}
Both ways gave us an answer: very slow performance.
We used cache mechanism to improve performance with a result: slow performance (a small improvement, really small).
We also check how it looks when we use external flash memory (QSPI, 60 MHz) - nothing happens, GUI is still working slow enough to see the redrawing process.
Please see gfxconf.h in the attachment. Could you help us?
PS. We made on this HW setup one project with commercial graphics framework, and we had good performance (with animations).
Best regards,
DCWR
gfxconf.h