【初学】2440的裸机程序是怎么实现对LCD的控制?
2440的板子配的LCD裸机程序,有点看不懂,我看绘图的最终语句就是 LCD_BUFFER=c;但是我一直找不到把LCD_BUFFER写到LCD里面的函数啊。。真晕。。
源码下面RVDS1.2的
点击此处下载 ourdev_722153L5COD0.rar(文件大小:57K) (原文件名:1.11-lcd.rar) 2440的自带LCD控制器,有专用的DMA将显存里面的数据刷到LCD,不需要CPU送数据到LCD屏幕,所以在初始化LCD的时候只需要将显存的位置告诉LCD控制器就行了,去找找LCD的初始化函数,里面肯定有一句是将LCD_BUFFER这个变量的地址赋值给一个LCD控制器相关的的寄存器了。 回复【1楼】s200661524
2440的自带lcd控制器,有专用的dma将显存里面的数据刷到lcd,不需要cpu送数据到lcd屏幕,所以在初始化lcd的时候只需要将显存的位置告诉lcd控制器就行了,去找找lcd的初始化函数,里面肯定有一句是将lcd_buffer这个变量的地址赋值给一个lcd控制器相关的的寄存器了。
-----------------------------------------------------------------------
那天下这么多LCD,如果没有驱动程序的话,处理器怎么都知道怎么去驱动?岂不是很不科学?你是什么工大的?? 大连理工,你去看看2440的数据手册,上面有关于LCD控制器的一章,讲得很清楚,它支持哪几种类型的LCD,有一大堆寄存器去配置你的lcd的时序参数,这样就可以支持天下一大堆的lcd。裸机程序写那几个lcd控制器就是叫驱动程序,只要配置了lcd控制器的那几个寄存器,lcd控制器就知道怎么去驱动外接的lcd,具体驱动时序cpu不参与。 弄完了把LcD驱动一下。 初始化完成后,LCD控制器一直利用DMA将显示缓存单元 LCD_BUFFER中的数据显示到屏幕上,因此,若想改变屏幕显示内容,只需更改显示缓存 LCD_BUFFER即可。 S3C44BOX的裸机对LCD屏的控制的飘过。 找到了,addr.h
volatile static unsigned short LCD_BUFFER;
Lcd_Init(void)
rLCDSADDR1=(((U32)LCD_BUFFER>>22)<<21)|M5D((U32)LCD_BUFFER>>1);
rLCDSADDR2=M5D( ((U32)LCD_BUFFER+(SCR_XSIZE_TFT_320240*LCD_YSIZE_TFT_320240*2))>>1 );
rLCDSADDR3=(((SCR_XSIZE_TFT_320240-LCD_XSIZE_TFT_320240)/1)<<11)|(LCD_XSIZE_TFT_320240/1);
rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
呵呵,我個人理解其實DMA只不過是內部通道,怎麼去處理只要我們中控制好時序就OK
页:
[1]