; ************************************************************* ; *** ILI9341 定制 Scatter 文件 *** ; ------------------------------------------------------------- ; 目的:把 LCD 的 DMA 源缓冲(.lcd_ram 段)强制放到 AXI SRAM ; (0x24000000)。原因: ; - DTCM(0x20000000) CPU 访问最快,但 DMA1/DMA2 无法访问, ; 把 DMA 缓冲放这里会导致 DMA 读到空/错数据 → 白屏/花屏。 ; - AXI SRAM(0x24000000) DMA1 可访问,适合放 LCD 缓冲。 ; 默认自动 scatter 会把缓冲随机分到两块 RAM,是之前偶发 ; 白屏的根因之一。本文件消除这种不确定性。 ; ; 若在 Keil 里修改了内存布局,请保持 .lcd_ram 始终落在 AXI SRAM。 ; ************************************************************* LR_IROM1 0x08000000 0x00020000 { ; 加载域 = Flash 128KB ER_IROM1 0x08000000 0x00020000 { ; 执行域 = 加载域 *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) .ANY (+XO) } ; DTCM 128KB —— CPU 专用高速 RAM,DMA 不可访问。 ; 普通全局变量、堆栈放这里。切勿放 DMA 缓冲。 RW_IRAM1 0x20000000 0x00020000 { .ANY (+RW +ZI) } ; AXI SRAM 512KB —— DMA 可访问。LCD DMA 缓冲必须放这里。 RW_IRAM2 0x24000000 0x00080000 { *(.lcd_ram) ; LCD 绘制/DMA 缓冲,DMA 可达 .ANY (+RW +ZI) } }