工作笔记之32BPP之二
来源:互联网 发布:lego ev3 编程教程 编辑:程序博客网 时间:2024/04/28 18:30
20100924:
最后验证的结果,应该是和内存速度相关,测试如下:
//内存读写数据测试
void MemTimeTst(void)
{
#if 24BPP
unsigned int *addr=(unsigned int *)(LCD_BUFFER);
#else
//16BPP
unsigned short *addr=(unsigned short *)(LCD_BUFFER);
#endif
unsigned int i,j,k,m;
//屏分辨率
m=(SCR_XSIZE*LCD_YSIZE);
rGPGCON=(rGPGCON & (~(0x3<<10)))|(1<<10);
//IO口输出高电平
rGPGDAT=rGPGDAT | (1<<5);
//输出低电平,此时就可以抓到下降沿了
rGPGDAT=rGPGDAT & ~(1<<5);
for(i=0;i<m;i++)
{
*(addr+i)=*(addr+i+1);
}
//拉高,测量低电平时间
rGPGDAT=rGPGDAT | (1<<5);
}
16BPP写内存时间8ms,对应的24BPP时间15ms
void LCDDMATimeTst(void)
{
//(rLCDCON1>>18)为DMA输出LCD数据的行指针,只读,为countdown
while((rLCDCON1>>18)!=271)
{}
rGPGCON=(rGPGCON & (~(0x3<<10)))|(1<<10);
rGPGDAT=rGPGDAT | (1<<5);
rGPGDAT=rGPGDAT & ~(1<<5);
//等待DMA从271传输到0行
while((rLCDCON1>>18)!=0)
{}
rGPGDAT=rGPGDAT | (1<<5);
}
输出271行,DMA时间17->18ms左右(基于不同的HCLK和CLKVAL时间会不同,只是测试一下16BPP和24BPP差异),16BPP和24BPP无明显区别
以上,时间用示波器测量IO端口的高低电平来测量时间
一般,人眼可以感觉到的闪烁为60HZ,约1000/60ms=16.7ms,24BPP直接写一帧的时间基本就已经达到了60HZ,再做一下其他判断,则输出来的画面会缓慢
总结:16BPP->24BPP,写内存时间增加接近1倍左右,而DMA时间没变,所以直接写屏也会较16BPP闪烁;从16BPP->24BPP DMA时间可以变得更大或更小,而写内存时间是改变不了的
之所以会出现这种状况,可能是由于驱动中是用NOCACHE,对应的写内存速度不是受CPU限制而是受SDRAM限制,SDRAM目前最高速度好像是133M,而不是CPU的400M。而且写数据一般是从内存的一个地方读取出来保存到LCD buffer对应的内存中,需多个指令周期完成
- 工作笔记之32BPP之二
- 工作笔记之32BPP
- 工作笔记之32BPP之三
- [工作笔记之二] 测试工作小结
- 工作笔记之电源管理二
- 流媒体学习笔记1:一个视频文件常用属性浅析之我见(bpp/vbr/resolution/fps)
- MySQL学习笔记之二十二 权限系统工作原理
- 项目管理学习笔记之二.工作分解
- 工作笔记之--ordupdate
- 工作笔记之socket
- 工作笔记之杂七杂八
- 工作笔记之juqery
- 工作笔记之ONVIF相关
- 工作笔记之输入输出操作
- 工作笔记之sip相关
- 工作笔记之部署FFMPEG
- 工作笔记之“git 常用命令”
- 工作笔记之图片压缩
- 77句以及经典翻译
- MeeGo开发Tips(0)非Intel图形芯片使用Xephyr模拟器
- 哈哈,这是对腾讯最好的评价
- 一篇精彩的创业励志演讲稿
- ASP.NET通过IP138来获取外面IP地址
- 工作笔记之32BPP之二
- 编写了一个HTTP高匿代理
- Linux安装OpenSSH Server
- How to make your spec professional
- Js 整理备忘(00)—— 基础
- ASP.NET推荐2款轻量级的NicEdit和Kindeditor富文本编辑器
- 浏览器集成教学 自定义浏览器
- 浏览器的定制与扩展
- 我对Android中apk文件进行签名的一点理解