DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 180|回复: 0
打印 上一主题 下一主题

ARM9+Linux下电子纸驱动的设计与实现

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 14:51:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为实现在ARM9+Linux系统下对电子纸的快速、有效控制,设计了一种基于电子纸显示控制芯片(GD6210E)的电子纸驱动。根据S3C2440 ARM9处理器和GD6210E的接口特点,利用S3C2440的GPIO口来扩展GD6210E,最后利用Linux为显示设备提供的帧缓冲专用接口编写驱动程序,完成电子纸的驱动。该驱动有利于电子纸的普及应用。
电子纸可以实现显示内容的重写,具有对比度高、重量轻、可以适当弯曲,且在断电的情况下,能保持原有的显示内容等优点。Linux是一种具有开放性、多用户、多任务、设备独立性、系统可靠安全、良好移植性等优点的操作系统[1],其内核可根据具体的运行平台进行适当的裁剪,这对于资源有限的嵌入式系统至关重要。因此,如何将电子纸显示屏移植应用到Linux操作系统的嵌入式平台下,引起了业界的广泛关注。
本文采用GD6210E作为电子纸显示屏的控制芯片,在S3C2440处理器上使用GPIO口对GD6210E进行扩展。编写、编译基于Linux中framebuffer的电子纸显示屏驱动程序。
1 系统架构与电子纸显示屏驱动电路接口设计
1.1 系统架构设计
本文搭建的嵌入式系统采用Samsung公司推出的S3C2440芯片为处理器。S3C2440采用ARM920T内核,拥有丰富的GPIO口,能够很好地对电子纸显示屏控制芯片实现扩展;外围设备有容量为128 MB的NAND Flash、64 MB的SDRAM、以太网以及扩展GD6210E电子纸显示屏控制芯片[2-3]等。嵌入式系统架构框图如图1所示。



1.2 电子纸显示屏控制芯片接口设计
GD6210E芯片是Giga Device Semiconductor公司开发的电子纸控制芯片。该控制芯片提供多种显示功能,如支持部分屏或整屏显示、全局或局部刷新、支持图像翻转等,从而能够减少CPU的运算时间,并支持CPU用命令访问内部寄存器和存储介质。
在接口设计上,本文使用S3C2440的GPD0"GPD15作为数据/命令的输入/输出口;GPC15作为探测GD6210E是否准备好下一次操作的引脚,若为1,说明在GD6210E上已完成一个操作,进入等待接收下一个操作命令状态;利用S3C2440的CLKOUT0引脚为GD6210E提供时钟源/S3C2440对GD6210E扩展接口如图2所示。



2 Linux下电子纸驱动程序设计
2.1 Linux驱动程序的一般编写方法
驱动程序是应用程序与硬件之间的一个中间软件层,没有main()函数,其工作过程是通过使用宏module_init(初始化函数名)将初始化函数加入内核全局初始化函数列表中,在内核初始化时执行驱动的初始化函数,从而完成驱动的初始化和注册,之后驱动便停止,等待被应用程序调用。应用程序通过调用设备驱动程序中实现的接口函数(如read()、ioctl()等)实现对硬件的操作。
本文设计的电子纸驱动程序基于framebuffer,整体分为两大部分:(1)GD6210E的驱动程序,其任务是完成S3C2440 GPIO口的设置、GD6210E初始化并使其处在运行状态;(2)完成framebuffer的填写和内核对显示设备驱动的注册。
2.2 Linux下GD6210E驱动程序
GD6210E是一个从设备,无法自主地工作,必须由外部的CPU对其发送命令,再把命令转换成能使电子纸显示屏做出相应动作的电平时序。GD6210E驱动程序分为以下部分。
(1)初始化GD6210E。首先分别利用Linux中的s3c-2410_gpio_cfgpin()和s3c2410 _gpio_setpin()两个函数设置复用GPIO口的引脚功能和引脚值。接口配置完后,再向GD6210E发出INIT_SYS_RUN命令,使芯片进入等待初始化状态;然后初始化GD6210E中的display engine,填写显示时序寄存器,配置显示时序。其中时序包括行数据输出时间、行同步时间、帧数据输出时间、帧同步时间;最后设置Image buffer和Updimage buffer在GD6210E中SDRAM的开始地址,至此初始化完成。GD6210E初始化流程如图3所示。



                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-8-3 06:28 , 耗时 0.081074 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表