原子哥好
近日接一片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
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
BUILD問題已解決
24BIT 是佔用4個字節
所以須設置 1280*800*4=3E8000
但是屏只出現全青 {MOD}...無圖片顯示..QQ
----------------------------
看來與malloc內的記憶體設置有關
改太大,即使是16位元也無法正常顯示圖片.
繼續研究
一周热门 更多>