找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] ARM9+Linux下电子纸驱动的设计与实现

[复制链接]
admin 发表于 2013-3-23 02:57:40 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摘  要: 为实现在ARM9+Linux系统下对电子纸的快速、有效控制,设计了一种基于电子纸显示控制芯片(GD6210E)的电子纸驱动。根据S3C2440 ARM9处理器和GD6210E的接口特点,利用S3C2440的GPIO口来扩展GD6210E,最后利用Linux为显示设备提供的帧缓冲专用接口编写驱动程序,完成电子纸的驱动。该驱动有利于电子纸的普及应用。
关键词: 电子纸显示屏;GD6210E;Linux OS;帧缓冲;电子纸驱动
       电子纸可以实现显示内容的重写,具有对比度高、重量轻、可以适当弯曲,且在断电的情况下,能保持原有的显示内容等优点。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所示。
    20121107051557678422953.gif
   
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所示。
    20121107051557725292954.gif
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-24 02:50 , Processed in 0.057488 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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