|
S3C2440在RAM里分配内存,提高LCD刷新速度
[复制链接]
测试平台:
S3C2440
TFT LCD 480x272 24bpp
垂直同步大约60Hz
源于以前用CPU直接操作显存,时间太慢,以打点的方式绘制256x100的渐变色矩形大约需要1.5s
后来改用双显存+DMA技术,屏幕刷新速度提高到
测试方法:
在SDRAM申请2块 480x272x4 的内存做显存,一块用于LCD实际显存,另一块(后台显存)用于与CPU交互,当CPU操作完后,DMA将后台显存拷贝到实际显存中,拷贝是瞬间的事情,每秒能完成39.1次刷新。
测试方法:
1. DMA操作将后台缓存清除成白色(1 Frame)
2. DMA操作将后台缓存画一套红线(1 Link)
3. DMA操作将后台缓存拷贝到显存(1 Frame)
4. 循环上面过程272次,每次将红线下调一行
完成上面的测试大约13.9s。
现在13.9S是我本次测试的极限,有没有大神有更好的优化方式。我这里有个建议,也是我发帖需要求助的“将两块显存放置在S3C2440的前4K RAM里,应该还能提高LCD刷屏速度”
问题是我不知道怎么用C语言定位这块地方的内存
#define rbuffer ((volatile unsigned *)0x00001000)
volatile unsigned long (*pbuf)[480][272] = rbuffer
再将LCD的显存地址指向rbuffer,但是实际操作没能成功,求助!!!!!!!!!!!!!
|
|