[ZLG-ARM] 显示图片时间能快吗

[复制链接]
9742|22
 楼主| dsoyy 发表于 2008-11-30 12:35 | 显示全部楼层 |阅读模式
SMARTARM2200开发板用TFT4267在现实图片的时候有明显的刷新过程,优化了下代码速度提高很大,仍然可看到刷新过程,无法满足产品需求。这个主要是主频的原因,我如何能利用现有资源(2200)实现图片的瞬间(客户可以接受)切换,或者增添些硬件等等。<br /><br />请大家赐教!
 楼主| dsoyy 发表于 2008-12-1 14:56 | 显示全部楼层

周工的工程师呢?

请帮忙啊
 楼主| dsoyy 发表于 2008-12-3 09:39 | 显示全部楼层

顶起

阿穆琪 发表于 2008-12-4 12:52 | 显示全部楼层

瓶颈不在你代码优化上,你把总线配快一下,效果就明显了

  
 楼主| dsoyy 发表于 2008-12-5 11:12 | 显示全部楼层

已经调了,还有倍频了。
wgc204 发表于 2008-12-5 11:59 | 显示全部楼层

楼主,你的配置参数是多少?

“已经调了,还有倍频了。”<br />楼主,你的配置参数是多少?<br />贴出来看看
wlq_9 发表于 2008-12-5 15:25 | 显示全部楼层

算算

320*240*2=153600字节.<br />如果你的代码在内部FLASH或者外部32位SRAM运行时,你得把FLASH上的数据调出来送到LCDC的SRAM里.如果你在外部FLASH运行,或者外部16位SRAM运行时,这个速度又得大打折扣.<br />极限情况下,刷屏速度能到多少,LZ心里应该有数了.如果再加上显示数据的运算,这个速度就更慢了.<br />结果偶就不说了.
 楼主| dsoyy 发表于 2008-12-8 11:02 | 显示全部楼层

OK

回6楼:<br />#define&nbsp;Fosc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(11059200&nbsp;)&nbsp;&nbsp;&nbsp;//#define&nbsp;Fosc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11059200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Crystal&nbsp;frequence,10MHz~25MHz,should&nbsp;be&nbsp;the&nbsp;same&nbsp;as&nbsp;actual&nbsp;status.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//应当与实际一至晶振频率,10MHz~25MHz,应当与实际一至<br />#define&nbsp;Fcclk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fosc&nbsp;*&nbsp;5)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//System&nbsp;frequence,should&nbsp;be&nbsp;(1~32)multiples&nbsp;of&nbsp;Fosc,and&nbsp;should&nbsp;be&nbsp;equal&nbsp;or&nbsp;less&nbsp;&nbsp;than&nbsp;60MHz.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//系统频率,必须为Fosc的整数倍(1~32),且&lt=60MHZ<br />#define&nbsp;Fcco&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fcclk&nbsp;*&nbsp;8)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//CCO&nbsp;frequence,should&nbsp;be&nbsp;2、4、8、16&nbsp;multiples&nbsp;of&nbsp;Fcclk,&nbsp;ranged&nbsp;from&nbsp;156MHz&nbsp;to&nbsp;320MHz.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//CCO频率,必须为Fcclk的2、4、8、16倍,范围为156MHz~320MHz<br />#define&nbsp;Fpclk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fcclk&nbsp;/&nbsp;4)&nbsp;*&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//VPB&nbsp;clock&nbsp;frequence&nbsp;,&nbsp;must&nbsp;be&nbsp;1、2、4&nbsp;multiples&nbsp;of&nbsp;(Fcclk&nbsp;/&nbsp;4).<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//VPB时钟频率,只能为(Fcclk&nbsp;/&nbsp;4)的1、2、4倍<br /><br /><br />回7楼:<br />我的是16位总线接口,当在线调试使用分散加载程序到片内RAM时速度比较快,但和应用还有很大差距,如果程序下载到片外FLASH运行相当慢,要换个片内FLASH的。<br />我在使用这个片子的时候怎么能做到最快刷新图片还请楼上多指教。<br />我目前的想法:<br />1.程序放到片内FLASH,启用MAM;<br />2.显示的图片数据在P片外SRAM,改成32位宽<br />3、系统时钟,倍频。<br />4,优化算法,看那些方便用汇编优化。<br /><br />。。。。<br />还有什么比较有效的办法?<br /><br />
wlq_9 发表于 2008-12-8 11:23 | 显示全部楼层

可以

最根本的办法还是换个内置LCD控制器的ARM.....<br />比方说ARM9+NAND+SDRAM.
 楼主| dsoyy 发表于 2008-12-8 13:35 | 显示全部楼层

谢谢楼上

基本平台用了LPC22系列,除非遇到不可行性,平台不能轻易改动。<br />2478好像带LCD控制器和DMA。
阿穆琪 发表于 2008-12-10 08:37 | 显示全部楼层

不是配置主频率呵

楼主,你把外部RAM的总线频率配快一些,这才是关键!!!<br />瓶颈在外频不在主频,配快了就看几乎不到刷屏了!<br />无论LCD还是取指令取数据,都要通过MEM控制器从外部RAM取数据。<br />它相当于电脑的内存条,同样1G的内存,DDR2&nbsp;667的内存是不是比SD133的快.一个道理
cjj3543 发表于 2008-12-10 09:15 | 显示全部楼层

你用的是ZLG_GUI吗?

&nbsp;楼主,你用的是ZLG_GUI吗?周公的GUI里面的驱动都是描点的方式,你把驱动改写下就可以了。
lpCFans 发表于 2008-12-10 13:22 | 显示全部楼层

顶...

  
 楼主| dsoyy 发表于 2008-12-10 15:31 | 显示全部楼层

回楼上

回11楼:<br />我在EMC已经处理了,速度得到提升了,和要求有差距;<br />回12楼:<br />你说的对,我目前操作方式是点扫描如果处理LCDBUF会很快,而且如果我选屏采用双BUF的会得到大幅提升。<br /><br />欢迎大家继续赐教。
wlq_9 发表于 2008-12-10 16:28 | 显示全部楼层

LS

内存也是钱啊,单fb就要占用150K,双buf就是300K.<br />我觉得你非要用LPC系列,选24**比较好,一是带SDRAM,内存成本低得多,二是支持LCDC.
 楼主| dsoyy 发表于 2008-12-10 22:30 | 显示全部楼层

正解

LPC2478也好,留意过。<br />最后会综合考虑。<br />不知道带BUF的TFT价钱会贵多少。<br /><br />2200&nbsp;+&nbsp;TFT(BUF)&nbsp;&nbsp;&nbsp;和&nbsp;&nbsp;2478.<br /><br /><br />此外我想问下如果用UCGUI代码较大,程序放外部FLASH,为了是速度提升,我把程序在开机便搬到内部RAM,但是内部RAM不足够大,这个应该如何解决?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用外部SDRAM吗?<br />
winfeng 发表于 2008-12-11 11:53 | 显示全部楼层

给你出个主意:

1&nbsp;在内存里建一个TFTLCD&nbsp;BUF&nbsp;镜像显存,GUI的算法操作镜像显存,操作完成后再把显存&nbsp;copy到&nbsp;LCD&nbsp;的BUF<br />2&nbsp;可以修改GUI底层驱动算法只拷贝内容变化的显存,提高效率。
 楼主| dsoyy 发表于 2008-12-11 15:01 | 显示全部楼层

winfeng

好主意:<br />方式1,相当于给LCDBUF建立一个缓存,有点2级缓存的意思,对吧,给TFT节省了成本;<br />方式2:有点疑问,2幅图片切换,copy数据前还要比较,不会不花费更多时间?
winfeng 发表于 2008-12-13 17:33 | 显示全部楼层

1&nbsp;不是两种方式,是一种<br />2&nbsp;不节省成本,要多花费一个显示缓冲区的成本,但内存足够的话就不增加成本<br />3&nbsp;不是copy数据前比较,而是在gui的底层驱动里实现,比如把显示区域划分为若干个小区,在一个点操作函数(可以叫GUI_set_point())里,你操作过那个点,就把哪个点所在的小区标记为需要更新就可以了,拷贝数据时仅仅拷贝需要更新的小区所对应的显存。<br />
wgc204 发表于 2009-1-16 09:48 | 显示全部楼层

是不是可以考虑使用ATF16V8 ?

我考虑用ATF16V8来修改硬件设计,将SDRAM和LCD配置为可选的&quot;DMA&quot;模式,显示LCD时,直接读取SDRAM对应的LCD的空间,这样LCD就直接显示了。<br />省去先读取数据到CPU,CPU在写数据到LCD的中间过程。<br />试验中....
您需要登录后才可以回帖 登录 | 注册

本版积分规则

144

主题

566

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部