ARM11嵌入式系统Linux下液晶显示的实现
2015-05-30田志强刘军卿周闻云沈滨董自卫
田志强 刘军卿 周闻云 沈滨 董自卫
【摘要】 通过对ARM11嵌入式系统Linux下程序设计的研究,分析了ARM11嵌入式系统Linux下控制液晶显示的驱动程序和应用程序的实现方法。并以液晶屏NS320240A为例,采用直接读写GPIO的驱动方式,实现了对该液晶屏的显示控制,实际应用表明:用该方法控制液晶显示驱动程序简单、移植性强、程序调试方便,对在Linux下实现其它液晶屏的控制以及驱动程序的编写具有指导意义。
【关键词】 ARM11 Linux 液晶显示 驱动程序 应用程序
随着信息化、智能化和网络化的发展,嵌入式系统近年来得到了飞速的发展,被广泛的应用于状态监测、遥测控制、自动化数据采集和无线监控等诸多领域。
S3C6410是三星公司生产的基于ARM1176JZF-S 核的嵌入式ARM11处理器,主频为533MHz,最高可达667MHz,较ARM7主频提高了十倍,且拥有更丰富的片上资源,处理速度更快,功能更强。
一、Linux下液晶显示的驱动程序设计
1.1液晶显示驱动方式分析
Linux操作系统由Linux内核、Linux Shell和文件结构3部分组成。Linux系统应用程序通过系统调用,如ioctl、open、close等来调用内核提供的各种服务,而内核通过相应的设备驱动来调用和管理各类硬件设备,因此要实现液晶显示的控制首先要编写相应的驱动程序。
液晶屏选择NS320240A集成了SED1330液晶显示控制器,因此可以选用直接读写GPIO寄存器的方法实现LCD驱动。
为了提供驱动程序的可移植性和程序调试的方便,本文采用控制时序在应用层的直接读写GPIO的驱动方式。
1.2液晶屏NS320240A显示驱动程序的实现
NS320240A的驱动程序主要包括以下几个函数:
(1)写GPIO控制寄存器函数
函数定义为S3C6410_Set_Com(long int data),该函数是用于设置与LCD控制器相连GPIO的控制寄存器,核心语句是writel(com, S3C64XX_GPICON)。
writel(com, S3C64XX_GPICON)中,writel是驱动层的写函数,com是写入控制寄存器的数据,通过此数据可以对GPIO口进行输入、输出和高阻三态设置, S3C64XX_GPICON是S3C6410中第I组GPIO口的控制寄存器。
(2)读写GPIO数据寄存器函数
函数定义为S3C6410_Set_dat(unsigned int data),该函数是读写与LCD控制器相连GPIO的数据寄存器,与写控制寄存器一样,写数据的语句也是writel(data, S3C64XX_GPIDATA)。
writel(data, S3C64XX_GPIDATA)中,data是写入数据寄存器的数据,该数据是通过系统调用接口从应用层读进来的, S3C64XX_GPIDATA是S3C6410中第I组GPIO口的数据寄存器。读指令为readl(data, S3C64XX_GPIDATA),从GPIO口读回的数据就放在data中。
完成上述驱动程序后,应用程序通过系统调用iotcl(fd,1,xx)和iotcl(fd,2,xx)就可以实现对GPIO口控制器和数据寄存器的读写,按照NS320240A的控制器SED1330的读写时序进行读写操作就可以实现NS320240A的显示控制。
三、結束语
该文分析了ARM11嵌入式Linux程序设计的方法,在分析总结两种LCD驱动思想的、优缺点的基础上,采用控制时序在应用程序中直接读写GPIO的驱动方式完成了驱动程序设计,并根据NS320240A液晶屏控制其SED1330的读写时序完成了应用程序,最终实现了ARM11嵌入式系统Linux下的液晶显示控制。
实际测试表明该方式使得控制LCD的显示液晶显示驱动程序简单、移植性强、程序调试方便,开发较为灵活,对于嵌入式系统开发中,在Linux操作系统下驱动程序和应用程序的设计具有很大的借鉴意义。