Utilize external address for framebuffer


So for a couple months I faced issues with getting LVGL to operate on a custom Alientek board with external SDRAM but have finally resolved the SDRAM issue as I have confirmed I can write an image to it, render and display it. This is fantastic news as for around a month and a half I was unable to even successfully write data to the external memory.

The issue I’m currently facing now is a manner of formatting and most likely byte arrangements as other images are not properly rendered, though I am using the same write to buffer function and can see the values write properly to memory, and was wondering if anyone has any tips on how to implement a write_px function for a custom board or why my images, excluding one, might be all misformatted and slanted.

What MCU/Processor/Board and compiler are you using?

Alientek STM32H743II

What LVGL version are you using?

Most recent

What do you want to achieve?

Proper use of external memory for framebuffer

What have you tried so far?

Modifying the write to framebuffer function I successfully implemented for a different image, including modifying the byte size, indexing algorithm and changes to width/height.

Code to reproduce

Below is the code I’m using to test my rendering at external address 0xC0000000. I can successfully write one array of pixels to be properly displayed but attempting with this image array does not work.

The code block(s) should be formatted like:

  for(int i = 0; i < 200000; i++){
	*(uint32_t*)(Bank5_SDRAM_ADDR+(i*4)) =   image_data_vice_city_test[i*2];

Screenshot and/or video

If possible, add screenshots and/or videos about the current state.