Hi all.
I have three images in ASTC format ready in the flash memory attached to BT817. Each image starts on a 4k boundary.
If I, stepping through my program, generate a DL with only one of the three images, it works normally.
As soon as I use two or three images, the BT817 gets crazy, messe up the screen with flashes and other anomalies.
I I first copy the three images in RAM_G, of course in appropriate non-overlapping adresses, it works.
My display list is as follow:
// copy in ram 3 images, and get their address
handles[1] = resou_bitmapastc("STS 8x752x168.raw", 0);
handles[2] = resou_bitmapastc("ST 8x752x168.raw", 0);
handles[3] = resou_bitmapastc("ASS 8x752x168.raw", 0);
Gpu_CoCmd_Dlstart();
coCmd(CLEAR_COLOR_RGB(255,255,255));
coCmd(CLEAR(1, 1, 1));
coCmd(COLOR_RGB(255,255,255));
coCmd(BEGIN(BITMAPS));
coCmd(BITMAP_HANDLE(0));
Gpu_CoCmd_SetBitmap(handles[1], resou_lastt, resou_lastw, resou_lasth); // resou_lastX are correct
coCmd(VERTEX2F(18*16, 53*16));
coCmd(BITMAP_HANDLE(1));
Gpu_CoCmd_SetBitmap(handles[2], resou_lastt, resou_lastw, resou_lasth);
coCmd(VERTEX2F(18*16, 250*16));
coCmd(BITMAP_HANDLE(2));
Gpu_CoCmd_SetBitmap(handles[3], resou_lastt, resou_lastw, resou_lasth);
coCmd(VERTEX2F(18*16, 412*16));
coCmd(END());
coCmd(DISPLAY());
Gpu_CoCmd_Swap();
Gpu_Hal_WaitCmdfifo_empty();
The above works, because the images are first copied in RAMG. But if I don't copy them, and use
Gpu_CoCmd_SetBitmap(0x800000 | FLASH_ADDR / 32, .....)
only one image at a time can be displayed correctly. No two or three images together work. I can say this because, running step-by-step my program, I can execute instruction for just one image, and then skip right to the instruction for DISPLAY().
Please note that the three commands "coCmd(BITMAP_HANDLE(X));" were added later: at first I didn't use them, and then added them to see whether they could help (but they didn't).
What am I doing wrong?
Thank you for help and regards.