Description
So I’ve been able to get LVGL running and displaying several of the examples utilizing my custom hardware setup but I began facing an memory overflow issue once I increased the resolution to more accurately fit my screen. I was able to resolve this by creating a new memory section as suggested by a user in a different thread and successfully loaded the framebuffer into the new memory section but now when I try and reference it nothing changes. I know the image is being loaded into the section as when I set it during the LTDC_INIT() function the image displays as expected but any attempt to update the frame buffer array and rewrite it does not work.
I know the update pixel function works when its not in said memory section as I was able to use it to white out the image pixel by pixel on boot.
What MCU/Processor/Board and compiler are you using?
STM32H7 Alientech board utilizing a 1020 x 600 ARGB8888 LTCD display
What LVGL version are you using?
Most recent
What do you want to achieve?
Update the frame buffer located in a different section of memory.
What have you tried so far?
Different addresses, images and rendering methods .
Code to reproduce
void put_px(uint16_t Xpos, uint16_t Ypos, uint32_t RGB_Code)
{
/* Write data value to all SDRAM memory */
image_data_American_Wasteland[Ypos * LayerWidth + Xpos] = RGB_Code;
pLayerCfg.FBStartAdress = (uint32_t)&image_data_American_Wasteland;
HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0);
}
MEMORY
{
DTCMRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K
RAM_D1 (xrw) : ORIGIN = 0x24000000, LENGTH = 512k
RAM_D3 (xrw) : ORIGIN = 0x38000000, LENGTH = 64K
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 2048K
BUFFER (xrw) : ORIGIN = 0xC0000000, LENGTH = 640k
}
Screenshot and/or video
When the frameBuffer is stored in the default location.
When the frameBuffer is stored in .buffer