請教32F767 TFT屏的緩衝大小設置?

2019-07-20 14:08发布

原子哥好
近日接一片1280*800的TFT屏,可以正常顯示圖片. 預設是工作在16BIT顏 {MOD}.
Ltdc.h
#defineLCD_PIXFORMAT  LCD_PIXFORMAT_RGB565
早上想試試24bit看是否正常,修改成
#defineLCD_PIXFORMAT  LCD_PIXFORMAT_RGB888
結果BUILD過程出現一個錯誤.
..OBJTEST.axf: Error: L6982E: AT section ltdc.o(.ARM.__AT_0xC0000000) with base 0xc0000000 limit 0xc03e8000 overlaps address range with AT section malloc.o(.ARM.__AT_0xC01F4000) with base 0xc01f4000 limit 0xc1e30000.
Not enough information to list image symbols.
Finished: 1 information, 0 warning and 1 error messages.


我改了malloc.c的設置.但0x2ee000一樣出現相同錯誤.
請教原子哥 這錯誤是怎麼產生?該如何調整? 感謝.
//1280* 800*2=1F4000 (預設)
//1280* 800*3=2EE000
//1920*1080*2=3F4800
//1920*1080*3=5EEC00

//#define TFT_BUF_SIZE 0x1F4000
#define TFT_BUF_SIZE 0x2EE000
//#define TFT_BUF_SIZE 0x3F4800
//#define TFT_BUF_SIZE 0x5EEC00

//內存池(64字節對齊)
__align(64) u8 mem1base[MEM1_MAX_SIZE];             //內部SRAM內存池
__align(64) u8 mem2base[MEM2_MAX_SIZE] __attribute__((at(0XC0000000+TFT_BUF_SIZE))); //外部SDRAM內存池,前面2M給LTDC用了(1280*800*2)
__align(64) u8 mem3base[MEM3_MAX_SIZE] __attribute__((at(0x20000000)));     //內部DTCM內存池
//內存管理表
u32 mem1mapbase[MEM1_ALLOC_TABLE_SIZE];             //內部SRAM內存池MAP
u32 mem2mapbase[MEM2_ALLOC_TABLE_SIZE] __attribute__((at(0XC0000000+TFT_BUF_SIZE+MEM2_MAX_SIZE))); //外部SDRAM內存池MAP
u32 mem3mapbase[MEM3_ALLOC_TABLE_SIZE] __attribute__((at(0x20000000+MEM3_MAX_SIZE))); //內部TCM內存池MAP


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。