为实现在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所示。
关键字:ARM9 Linux 电子纸驱动
引用地址:
ARM9+Linux下电子纸驱动的设计与实现
推荐阅读最新更新时间:2024-03-16 12:51
OK6410A 开发板 (八) 32 linux-5.11 OK6410A 从内存角度简略分析整个启动过程
从 arch/arm/kernel/head.S 中的 stext 到 内核 rest_init 的 system_state = SYSTEM_SCHEDULING; 分析 整个内存的启动过程 至于 为什么不分析 arch/arm/boot/compressed/head.S 中的start 到 arch/arm/kernel/head.S 中的 stext 因为 这个过程可以不跑的话, linux 也能运行起来 之前在 https://blog.csdn.net/u011011827/article/details/115944495 分析 过,此过程 跑不跑 带来的效果的是一样的 整个过程可以分段为5个阶段 A ar
[单片机]
研华携手伙伴成立嵌入式Linux和Android联盟
2017年3月16日,全球智能系统领导厂商研华公司(股票代号:2395)在2017年纽伦堡嵌入式电子与工业计算机应用展(Embedded World)上与英研、诚迈、Canonical、Lineo、瑞相、RTSoft、Timesys、中科创达和Witekio共同宣布成立嵌入式Linux与Android联盟(Embedded Linux & Android Alliance, 以下简称“ELAA”)。此联盟主要在工业嵌入式市场推动开放、标准化的Linux和Android软硬件架构,所有成员将藉此联盟,建立完善的软硬件产业生态体系,来加速Linux & Android在嵌入式和工业物联网的发展,让软硬件开发者与终端使用者都能受益。
[嵌入式]
基于ARM920T+Linux架构的SOHO路由器设计
0 引言 随着通信技术、网络技术的迅速发展,大量网络设备接入网络,互联网用户数量正以几何级数增长。研究表明,IPv4 地址空间将在2011 年前耗尽,因此IPv4 地址资源非常紧缺。SOHO 路由器利用私有网络IP 地址有效地缓解目前 IP 地址短缺的危机,为公司、家庭等小型局域网提供高效、廉价的共享上网方案。当前SOHO 路由器设计,采用 ARM7TDMI+μClinux 设计架构,ARM7 内核微处理器工作频率为50M 左右,而以太网控制芯片工作频率一般为100M,处理器速度难以满足高速接入网用户要求;μClinux 操作系统,不具有内存保护机制,任何程序都有可能导致内核崩溃,系统稳定性较差。本文采用ARM920T 内核微
[单片机]
Linux内核在S3C2410上移植的研究
嵌入式系统就是以应用为中心,以计算机技术为基础的软、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。Linux操作系统是一种性能优良、源码公开且被广泛应用的免费操作系统,由于其体积小,可裁减,运行速度高等优点,因此可以作为研究嵌入式操作系统和非实时操作系统的典范。EL-ARM-830+型教学实验系统是一种综合的教学实验系统,该系统采用了ARM92 0T核,32位微处理器,实现了多模块的应用实验。在实验板上有丰富的外围扩展资源,可以完成ARM的基础实验、算法实验和数据通信实验、以太网实验。 1 Linux的实验环境搭建 1.1 Redhat9.0操作系统的安装 安装Redhat9.0前,先
[单片机]
Linux kernel的中断子系统之(六):ARM中断处理过程
一、前言 本文主要以ARM体系结构下的中断处理为例,讲述整个中断处理过程中的硬件行为和软件动作。具体整个处理过程分成三个步骤来描述: 1、第二章描述了中断处理的准备过程 2、第三章描述了当发生中的时候,ARM硬件的行为 3、第四章描述了ARM的中断进入过程 4、第五章描述了ARM的中断退出过程 本文涉及的代码来自3.14内核。另外,本文注意描述ARM指令集的内容,有些source code为了简短一些,删除了THUMB相关的代码,除此之外,有些debug相关的内容也会删除。 二、中断处理的准备过程 1、中断模式的stack准备 ARM处理器有多种processor mode,例如user mod
[单片机]
基于ARM9处理器S3C2410的LCD显示系统设计
引言
S3C2410是三星公司生产的基于ARM920T内核的RISC微处理器,其主频可达203MHz ,适用于信息家电、PDA、手持设备、移动终端等领域,本文介绍了基于S3C2410的显示系统的硬件电路及驱动软件设计方法。
TFT-LCD模块的时序要求
本显示模块选用的LQ080V3DG01是Sharp公司的TFT-LCD器件,该器件的分辨率为640%26;#215;480,控制时序图如图1所示,时间参数如表1所列 。
硬件电路设计
在该显示系统的硬件电路中,S3C2410与LCD模块的连接是关键,S3C2410内部自带一个LCD驱动控制器,其接口可以与单色、
[应用]
一款基于嵌入式Linux的触摸屏自助点菜机
引言 随着人民生活水平的提高和生活方式的转变,餐饮业的市场急剧扩大,利润飞速增长,被称为中国的黄金产业。而电子点菜系统的应用,提高了餐馆档次和营业效率、优化了业务流程,为餐饮行业带来崭新的管理理念与服务手段。目前较为流行的点菜终端主要分为2 种模式。第一种采用 单片机 单片机 单片机是单片微型计算机(Single-Chip MICrocomputer)的简称,是一种将中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)采用超大规模集成电路技术集成到一块硅片上构成的微型计算机系统。 和无线模块
[单片机]
OK6410A 开发板 (八) 47 linux-5.11 OK6410A 物理虚拟内存的管理
物理虚拟内存管理理论 在 mmu 开启之后, 存在了两种内存 物理内存 虚拟内存 就需要对 这两种内存 进行管理 我们用内存的时候,需要 1. 物理内存 2. 虚拟内存 // 与 物理内存对应的虚拟内存 对物理内存的管理方法有4种(根据内存模型不同而不同) CONFIG_FLATMEM CONFIG_DISCONTIGMEM CONFIG_SPARSEMEM_VMEMMAP CONFIG_SPARSEMEM 对虚拟内存的管理方法有4种,我们关注以下过程 直接映射区 vmalloc 动态映射区 持久映射区 kmap 临时映射区 fixmap (kma
[单片机]