基于ARM9&Linux的液晶驱动终端设计_第1页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于arm9linux的液晶驱动终端设计液晶驱动终端是将液晶控制器、微控制器等集成在一起并将液晶控制与图形界面显示等功能通过软件封装在一起为用户开放操作接口、屏蔽液晶的控制详情,用法户通过认识的接口(如rs232接口)发送预定义指令即可控制液晶显示,举行图形界面开发工作。目前已有的液晶驱动终端主要采纳微控制器与前、后台软件结合的办法举行设计,该类终端只能够显示字模方式的该种类型的终端显示数据存放在自带的nandflash中,在人机界面设计过程中对nand flash中的数据管理是以扇区为基本操作单元,下载需要专用的软件工具完成,增强了界面设计的规律复杂性与操作性。这里采纳9微控制器与操作系统结

2、合的办法,设计出一种新型的液晶驱动终端。该终端通过fat文件系统管理cf卡中数据资源,利用多线程技术实现串口指令解析与图型界面的显示,不仅能够显示字模与等数据资源,而且利用该设计办法可以实现调用minigui图型库等资源,适用于工业测控、智能仪表等领域的人机界面设计。2 系统组成及工作原理系统主要有arm9微控制器、存储单元、控制器、cf卡接口与rs422通信接口组成,系统组成框图l所示。工作流程:系统上电后,arm9微控制器从nor flash中读取、解压linux内核与ramdisk根文件系统到sdram中,律压完成后,启动linux内核并挂载根文件系统;当软件环境初始化完成后启动应用程序

3、,开头接收串口指令,应用程序接收到有效的串口指令后,图形界面数据通过fmmebuffer接口传送给lcd控制器。3 系统主要硬件模块设计31 arm9微控制器系统采纳atmel公司的at91rm9200作为,该处理器基于arm920t内核,工作主频为180mhz,性能高达200mvvs。at91rm9200包括一个高速片上sram工作区及一个低等待时光的外部接口(ebi),完成片外存储器和内部存储器映射外设配置的无缝衔接。ebi中设计专用以便smartmedia、comt flash及nand f1ash衔接。系统用法一片mt公司的28f128j3型16 mb nor flash,用于存储li

4、nux内核与根文件系统,用法2片hy57v281620来组成32位sdram接口。32 液晶驱动接口系统选用epson公司的显示控制器件s1d13506用于控制lcd的图像数据显示。s1d13506可与多种cpu总线兼容,支持最高为16位数据宽度的lcd接口可以在tftlcd、crt最高显示64 k色彩。它配置一个16位内存接口,支持最高2 mb的edo-dram。系统中将s1d13506衔接在at91rm9200的bank 3,数据总线宽度为16位地址线a21与s1d13506mr引脚相连,用于挑选拜访寄存器与显存。at91rm9200拜访s1d13506显存起始地址为0x30200000寄

5、存器起始地址为0x30000000。用法了gm71v18163型2mbdram作为显示存储,at91rm9200通过拜访s1d13506数据地址空间,实现对dram的数据存储操作,用法50 mhz的有源晶振奋为dram的总线时钟,25 mhz有源晶振奋为lcd的像素时钟信号,支持640x480 60 hztft lcd显示,lcd行、场同步信号由s1d13506内部通过对25 mhz像素时钟分频得出。lcd显示控制硬件接口电路2所示。33 cf卡存储接口在图形界面的设计中需要运用到位图、字库等数据资源,系统通过fat文件系统管理cf中数据,并且通过pc机将数据挺直拷贝至cf卡。at91rm92

6、00与cf卡硬件接口衔接3所示。4 软件设计41 整体软件架构系统软件可以用法linux、等操作系统,也可用法从挺直操作低层硬件的前、后台软件。用法前、后台方式的软件虽然能够实现对硬件的充分利用,但用法操作系统增加了系统的可维护性与扩展性。系统在运行和用法过程中需要管理cf卡中的数据以及应用程序需要多线程支持,众多操作系统中,开源的linux操作系统具有较为完美的文件系统与网络协议族,并且能较好的支持多线程程序,可满足设计需求。该系统用法的linux内核版本为2.42l,交错编译工具链为arm-linux-cross-2953。系统软件架构4所示。系统中,无论应用程序调用posix接口挺直控制

7、lcd显示还是通过minigui间接控制lcd,终于都要调用相应的液晶控制器驱动接口函数,因此如何设计出一个s1d13506特别硬件的驱动程序是囫囵软件设计的重点。42 framebuffer驱动的实现framebuffer是linux内核中的一种驱动程序接口这种接el将显示设备抽象为帧缓冲区。在应用程序中将其映射到进程地址空间开拓的存储区域中,通过对存储区域举行的数据读写操作可以挺直的反映在lcd上。在linux24版本的内核中,framebuffer被抽象为linuxdriversvide0下的fbconc文件,其主要依赖fb_info、fb_var_screeninfo、fb_fix_s

8、creeninfo3个数据结构,这些结构定义在includelinuxfbh程序内。s1d13506基于framebuffer的设备驱动程序主要完成at91rm9200 ebi总线的配置工作、s1d13506内部寄存器的初始化及frambuffer中预定义的数据结构的填充。系统中用法的驱动程序是对epson公司s1d13xxx系列显示控制器件linux驱动程序修改完成。其初始化函数暗示性代码如下:int sldl3506fb_init()init_9200_bank(); 初使化at9lrm9200ebi总线fb_inforegaddr=(unsigned char*)ioremap_noca

9、che(ox300000000,0x200000);fb_jnfovmemaddr=(unsigned char*)ioremap_nocache(0x30200000,ox200000);/将s1d13506的寄存器与显示存储的线性地址空间保存到显卡状态结构体setsidl3506_reg();/配置s1d13506显卡寄存器,并填充显卡状态数据结构register_framebuffer(&fb_infogeninfo);|注豫framebuffer,初始化完成将驱动文件添加至linux根名目下的driversvide0名目中,并在当前名目下makefile文件中添加obi一$(c

10、onfig fbs1d13506)+=sldl3506fbo,在configini文件中添加boolsldl3506'config_fb_epson,在linux移植过程中可将驱动程序静态编译到内核中。若要使minigul支持frame-buffer,需将miniguiefg文件中gal引擎设为framebuffer,如gal_engine=fbcon。43 应用程序在应用程序设计中,用法多线程可更好的协调串口接收、图像显示、数据存储以及超时处理等操作。终端中基于posix的应用程序由图形显示与串口指令解析组成,因为linux操作系统中不同的线程之间可通过全局变量传递参数,应用程序中用法了一个全局的循环fifo作为两个线程之间的指令缓冲区,采纳两个静态数据缓冲区用于存放串口传来的图像数据资源,数据缓冲区大小与lcd辨别率和像素深度有关。指令循环fifo管理结构如下所示。系统中,基于framebuffer的设备被映射为devfb0文件,应用程序启动后,首先调用open()函数打开设备,然后调用 mmap()函数将显存影射到用户空间开拓的数据缓冲区内,初始化指令缓冲队列后,启动串口指令接收,接收到有效的串口指令后则执行相应的显

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论