您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术基于AT91RM9200的LCD驱动程序设计 正文
基于AT91RM9200的LCD驱动程序设计

基于AT91RM9200的LCD驱动程序设计

点击数:7907 次   录入时间:03-04 11:45:41   整理:http://www.55dianzi.com   嵌入式系统-技术

1 引言
嵌入式系统应用于工控领域越来越普及,对于传统工控产品升级换代发挥重要作用,随着由此带来的工控产品性能的大幅提高,与之对应的较高档次、友好的人机界面需求也不断增大。为此,Linux也出现了许多图形界面软件包,在其开发和移植过程种都涉及到底层LCD的驱动。本文针对一款基于AT91RM9200芯片的工业级嵌入式系统开发板,加上可扩展外围控制器SLD13506,在Linux2.4.19操作系统下,通过编写其驱动程序,再用arm-linux-gCC进行编译,使ARM9开发板添加12.1英寸TFT彩色LCD显示功能。

2 硬件介绍
AT91RM9200是一款基于ARM920T内核的高性价比、低功耗、32位的ARM 芯片,拥有独立的16K指令和16K数据cache,写缓存,全功能的MMU虚拟内存管理单元,内部的16KB SDRAM和128KB ROM,在180MHz工作频率下运行速度为200MIPS。AT91RM9200集成了EBI, PMC,I/O,Ethernet,USB,MCI,SSC,UASRT, SPI,RTC,TWI等接口及其控制器。却没有针对LCD显示的控制器,所以本系统添加了SLD13506作为显示控制器,来实现LCD的显示。
SLD13506是EPSON公司一款用于LCD/CRT/TV的显示控制芯片,其体系结构应低成本、低功耗的嵌入式市场的需求而设计,多用于移动通讯工具,手提电脑和办公自动化。它可支持4/8位单色或4/8/16位彩色的单板单显示接口,直接支持9/12位TFT/D-TFD彩色显示,在18位TFT/D-TFD下可显示65536种颜色,最大分辨率可为18bpp800×600。通过编写SLD13506的设备驱动程序,读写一系列的寄存器来产生驱动信号,就可以驱动LCD的显示。

3设备驱动程序
Linux是Unix操作系统的一种变种,类似于大部分Unix系统,Linux应用程序独立于底层硬件运行,用户无需关心硬件问题,但需要为每一款硬件编写驱动程序【²】,从而构成完整的运行系统。模块化驱动程序后,用户操作只需要通过一组标准化的调用来完成。把这些调用映射到设备特定的操作上,则是设备驱动程序的任务【2】。
系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。这种机制可称为“文件层-驱动层”接口方式。
应用程序是通过设备文件操作硬件,实际上是通过如 open,read,write,close系统调用来实现的。而file_operations这一关键的数据结构就把系统调用和驱动程序关联起来,它的形式如下:
struct file_operations {
struct module *owner;
int (*read) (struct inode * ,struct file *, char ,int);
int (*write) (struct inode * ,struct file *, off_t ,int);
int (*ioctl) (struct inode * ,struct file *, unsined int ,unsigned long);
int (*mmap) (struct inode * ,struct file *, struct vm_area_struct *);
}
这个结构的每一个成员的名字都对应着一个系统调用,应用程序利用系统调用在对设备文件进行诸如read/write操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数,这是linux的设备驱动程序工作的基本原理。所以编写LCD驱动程序的主要工作就是编写子函数来填充file_operations的各个域。


本文关键字:程序设计  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术