Files
motor_ili9341/MDK-ARM/motor_ili9341_lcd.sct
zhy200308 e4d61b19f0 重构 ILI9341+LVGL 驱动:异步 DMA + 硬件旋转,修复残影与白屏
- 硬件 MADCTL 旋转,删除软件转置,LVGL 坐标与面板 1:1,消除移动残影
- 全异步 DMA:flush 启动即返回,完成/出错由 SPI 中断收尾,去掉信号量阻塞
- DMA 缓冲经 .lcd_ram 段强制放入 AXI SRAM,规避 DTCM 不可被 DMA 访问导致的白屏
- LV_COLOR_16_SWAP=1,LVGL 直出面板字节序,省去逐像素交换/拷贝
- 看门狗超时重建 SPI 自恢复,单次异常不再级联长时间白屏
- 定制 scatter(motor_ili9341_lcd.sct) 并接入 uvprojx
- 新增 README_ILI9341.md 说明根因/设计/构建验证
2026-07-08 11:02:42 +08:00

35 lines
1.4 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
; *************************************************************
; *** 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 专用高速 RAMDMA 不可访问。
; 普通全局变量、堆栈放这里。切勿放 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)
}
}