2009年3月19日星期四

移植Microchip Graphics Library(PIC GUI)到ARM7 + RA8835(SED1335)上刷屏慢的解决方法

上次移植的Microchip Graphics Library(PIC GUI) 在LPC2214上运行很慢,即使主频提高到48Mhz还是很慢,大概刷一屏要1秒。感觉关键问题,一个是RA8835的读写速度太慢,大约在1MHZ;再一个,底层只实现了画点函数,这样如果填充一个矩形,就必须每个点都要画,而其实一次写可以画8个点,还有每次画点都要先设置光标,读回数据,修改,设置光标,写数据,浪费了大量时间;
 
一种加速的方法是,在片内内存设置一屏数据的缓冲区,写屏时对缓冲区操作,速度快,操作完成后,根据裁剪域,把裁剪域数据一次写入液晶控制器;
 
再一种方法也是在片内内存设置一屏数据的缓冲区,每次操作先对缓冲区操作,然后把得到的字节写入控制器,这样画点时对液晶控制器的读写简化为设置光标,写数据;uc/gui的SED1335驱动(UCGUI332a_LCDDriver的LCDSLin.c文件 )就是采用了这种方法,再加上画水平直线,画垂直直线等的优化函数;
 
经仔细分析,发现第一种方法没法实现,因为在GOLDraw() 函数返回时,没有有效的裁剪域存在;只能使用第二种方法。

没有评论: