历史上的今天
返回首页

历史上的今天

今天是:2025年04月20日(星期日)

正在发生

2021年04月20日 | 基于ARM9和Linux的液晶驱动终端设计

2021-04-20 来源:eefocus

1 引言


目前.已有的液晶驱动终端主要采用微控制器与前、后台软件结合的方法进行设计,该类终端只能够显示字模方式的图片.该种类型的终端显示数据存放在自带的NANDFlash中, 在人机界面设计过程中对NAND Flash中的数据管理是以扇区为基本操作单元,图片下载需要专用的软件工具完成,增加了界面设计的逻辑复杂性与操作性。这里采用ARM9微控制器与 Linux操作系统结合的方法,设计出一种新型的液晶驱动终端。该终端通过FAT文件系统管理CF卡中数据资源,利用多线程技术实现串口命令解析与图型界面的显示,不仅能够显示字模与图片等数据资源,而且利用该设计方法可以实现调用MiniGUI图型库等资源,适用于工业测控、智能仪表等领域的人机界面设计。


2 系统组成及工作原理


系统主要有ARM9微控制器、存储单元、LCD控制器、CF卡接口与RS422通信接口组成,系统组成框图如图1所示。工作流程:系统上电后,ARM9微控制器从NOR Flash中读取、解压Linux内核与Ramdisk根文件系统到SDRAM中,律压完成后,启动Linux内核并挂载根文件系统;当软件环境初始化完成后启动应用程序,开始接收串口命令,应用程序接收到有效的串口命令后,图形界面数据通过Fmmebuffer接口传送给LCD控制器。


液晶驱动终端


3 系统主要硬件模块设计


3.1 ARM9微控制器


系统采用ATMEL公司的AT91RM9200作为MCU,该处理器基于ARM920T内核,工作主频为180MHz,性能高达200MVVs。AT91RM9200包括一个高速片上SRAM工作区及一个低等待时间的外部总线接口(EBI),完成片外存储器和内部存储器映


射外设配置的无缝连接。EBI中设计专用电路以便SmartMedia、ComDact Flash及NAND F1ash连接。系统使用一片MT公司的28F128J3型16 MB NOR Flash,用于存储Linux内核与根文件系统,使用2片HY57V281620来组成32位SDRAM接口。


3.2 液晶驱动接口


系统选用EPSON公司的显示控制器件S1D13506用于控制LCD的图像数据显示。S1D13506可与多种CPU总线兼容,支持最高为 16位数据宽度的LCD接口.可以在TFTLCD、CRT最高显示64 K颜色。它配置一个16位内存接口,支持最高2 MB的EDO-DRAM。系统中将S1D13506连接在AT91RM9200的BANK 3,数据总线宽度为16位.地址线A21与S1D13506M/R引脚相连,用于选择访问寄存器与显存。AT91RM9200访问S1D13506显存起始地址为0x30200000.寄存器起始地址为0x30000000。使用了GM71V18163型2MBDRAM作为显示存储,AT91RM9200 通过访问S1D13506数据地址空间,实现对DRAM的数据存储操作,使用50 MHz的有源晶振作为DRAM的总线时钟,25 MHz有源晶振作为LCD的像素时钟信号,支持640x480 60 HzTFT LCD显示,LCD行、场同步信号由S1D13506内部通过对25 MHz像素时钟分频得出。LCD显示控制硬件接口电路如图2所示。


LCD显示


3.3 CF卡存储接口


在图形界面的设计中需要运用到位图、字库等数据资源,系统通过FAT文件系统管理CF中数据,并且通过PC机将数据直接拷贝至CF卡。AT91RM9200与CF卡硬件接口连接如图3所示。


硬件接口


4 软件设计


4.1 整体软件架构


系统软件可以使用Linux、VxWorks等操作系统,也可使用从直接操作低层硬件的前、后台软件。使用前、后台方式的软件虽然能够实现对硬件的充分利用,但使用操作系统增强了系统的可维护性与扩展性。系统在运行和使用过程中需要管理CF卡中的数据以及应用程序需要多线程支持,众多操作系统中,开源的Linux操作系统具有较为完善的文件系统与网络协议族,并且能较好的支持多线程程序,可满足设计需求。该系统使用的Linux内核版本为 2.4.2l,交叉编译工具链为ARM-Linux-cross-2.95.3。系统软件架构如图4所示。系统中,无论应用程序调用POSIX接口直接控制LCD显示还是通过MiniGUI间接控制LCD,最终都要调用相应的液晶控制器驱动接口函数,因此如何设计出一个S1D13506特殊硬件的驱动程序是整个软件设计的重点。


4.2 Framebuffer驱动的实现


Framebuffer是Linux内核中的一种驱动程序接口.这种接El将显示设备抽象为帧缓冲区。在应用程序中.将其映射到进程地址空间开辟的存储区域中,通过对存储区域进行的数据读写操作可以直接的反映在LCD上。在Linux2.4版本的内核中,Framebuffer被抽象为 linux\drivers\vide0下的fbcon.c文件,其主要依靠fb_info、fb_var_screeninfo、 fb_fix_screeninfo3个数据结构,这些结构定义在include/Linux/fb.h程序内。S1D13506基于 Framebuffer的设备驱动程序主要完成AT91RM9200 EBI总线的配置工作、S1D13506内部寄存器的初始化及Frambuffer中预定义的数据结构的填充。系统中使用的驱动程序是对EPSON公司 S1D13xxx系列显示控制器件Linux驱动程序修改完成。其初始化函数示意性代码如下:


int sldl3506fb_init()


{


init_9200_bank(); //初使化AT9lRM9200EBI总线


fb_info.RegAddr=(unsigned char*)ioremap_nocache(Ox300000000,0x200000);


fb_jnfo.VmemAddr=(unsigned char*)ioremap_nocache(0x30200000,Ox200000);


//将S1D13506的寄存器与显示存储的线性地址空间保存到显卡状态结构体


setsIdl3506_reg();//配置S1D13506显卡寄存器,并填充显卡状态数据结构


register_framebuffer(&fb_info.gen.info);||注豫framebuffer,初始化完成


}


将驱动文件添加至Linux根目录下的drivers\vide0目录中,并在当前目录下makefile文件中添加obi一$(CONFIG FBS1D13506)+=sldl3506fb.O,在Config.ini文件中添加boolSldl3506‘CONFIG_FB_EPSON,在 Linux移植过程中可将驱动程序静态编译到内核中。若要使MiniGUl支持Frame-buffer,需将MiniGUI.efg文件中GAL引擎设为Framebuffer,如gal_engine=fbcon


4.3 应用程序


在应用程序设计中,使用多线程可更好的协调串口接收、图像显示、数据存储以及超时处理等操作。终端中基于POSIX的应用程序由图形显示与串口命令解析组成,由于Linux操作系统中不同的线程之间可通过全局变量传递参数,应用程序中使用了一个全局的循环FIFO作为两个线程之间的命令缓冲区,采用两个静态数据缓冲区用于存放串口传来的图像数据资源,数据缓冲区大小与LCD分辨率和像素深度有关。命令循环FIFO管理结构如下所示。


系统软件架构


系统中,基于Framebuffer的设备被映射为/dev/fb0文件,应用程序启动后,首先调用open()函数打开设备,然后调用 mmap()函数将显存影射到用户空间开辟的数据缓冲区内,初始化命令缓冲队列后,启动串口命令接收,接收到有效的串口命令后则执行相应的显示操作。


5 结语


目前,该终端可成功驱动SHARP LQ035Q3DG01、LQl04-V1DG21等多种分辨率18 bit接口LCD,并在某纺织厂的细纱机车速监控仪中得到应用。使用该终端可降低人机界面的设计难度,提高仪器仪表的开发效率,并且可进一步扩展网络视频播放及网络命令接口等功能,具有良好的市场前景和使用价值。


推荐阅读

史海拾趣

Britool Expert公司的发展小趣事

撰写5个关于电子行业里Britool Expert公司发展起来的相关故事,每个故事字数至少500字,可能内容过多,我可以为您提供1个故事的示例,如果需要更多故事,您可以在之后输入继续。


Britool Expert公司的发展故事之一:技术创新的突破

在电子行业的激烈竞争中,Britool Expert公司以其独特的技术创新策略脱颖而出。公司创立之初,就明确了以技术研发为核心的发展道路。在一次关键的技术研讨会上,公司的研发团队提出了一个前所未有的想法——开发一种新型的高效能芯片。

这个想法在当时看来极具挑战性,但团队成员们凭借着对技术的热爱和对市场的敏锐洞察,决心将这个想法变为现实。经过数月的艰苦努力,团队终于攻克了技术难关,成功研发出了这款芯片。这款芯片不仅性能卓越,而且成本大大降低,迅速在市场上获得了广泛的认可。

这一技术创新的突破,为Britool Expert公司打开了新的发展空间。公司借此机会,不断扩大生产规模,优化产品结构,逐渐在电子行业中树立了良好的口碑。随着技术的不断进步和市场的不断扩大,Britool Expert公司逐渐成为了电子行业中的佼佼者。

这个故事只是Britool Expert公司发展历程中的一个缩影。在公司的成长过程中,还有许多类似的技术创新故事。正是这些故事,构成了Britool Expert公司不断发展壮大的坚实基石。


若您想要探索更多内容,随时可以继续输入。

Fenfa Electronics Ltd公司的发展小趣事

随着公司规模的扩大和业务范围的拓展,Fenfa Electronics Ltd公司面临着越来越复杂的供应链管理问题。为了应对这一挑战,公司决定优化供应链管理流程。Fenfa与供应商建立了长期稳定的合作关系,实现了原材料的稳定供应和成本的优化控制。同时,公司还加强了仓储和物流的管理,提高了产品的运输效率和交付速度。这些措施的实施,使Fenfa Electronics Ltd公司的供应链管理更加高效、灵活和可靠。

南晶电子(DGNJDZ)公司的发展小趣事

南晶电子(DGNJDZ)成立于2011年,起初只是一家专注于半导体分立器件研发和生产的小型企业。创始人毛姬娜凭借其敏锐的市场洞察力和技术背景,带领团队攻克了一个又一个技术难关,逐渐在电子行业崭露头角。公司初期面临着资金短缺、技术瓶颈等重重困难,但毛姬娜和团队凭借坚韧不拔的精神,一步步走出了困境。

成都成电硅海公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。成都成电硅海公司深知这一点,因此在生产过程中严格把控每一个环节。公司引进了先进的生产设备和技术,建立了完善的质量检测体系。每一批产品出厂前都要经过严格的质量检测,确保产品性能的稳定和可靠。这种对品质的执着追求,使得成都成电硅海公司的产品在市场上赢得了良好的口碑。

Baneasa SA公司的发展小趣事

Baneasa SA公司成立之初,便专注于电子元器件的研发与生产。公司凭借创始团队的技术积累和市场洞察力,成功开发出一款高性能的半导体芯片,迅速在行业内崭露头角。这款芯片以其出色的稳定性和可靠性赢得了市场的广泛认可,为Baneasa SA的发展奠定了坚实的基础。

Fortiming Corporation公司的发展小趣事

背景:2001年9月5日,Fortiming Corporation在内华达州正式成立(来源:企查查)。在成立之初,公司就明确了自己的市场定位——专注于提供高质量的石英晶振、晶体振荡器等频率控制产品。

发展:面对当时竞争激烈的电子行业,Fortiming凭借其对技术的深刻理解和对市场需求的敏锐洞察,迅速在石英晶振领域站稳脚跟。公司不仅注重产品研发,还积极引进先进生产设备,提升产品质量和生产效率。

问答坊 | AI 解惑

三菱PLC坏了吗?

我现在在客户这,调试一台设备,用三菱的FX2N--32MT的LPC加个4AD和2DA的模块。 在公司调试的时候好好的,一个多月前从上海发到乐清来。今天到了客户这发现调试,发现PLC的24V电压好像不正常。 X端没有信号,那指示灯也亮。Y端输出的指示灯亮了 ...…

查看全部问答>

本人想做一个最简单的在“手持终端”上运行的程序(在wince5.0上),请帮助。

用的语言最好是C#,或VB.net。 程序要求在终端上运行,当扫一个条码后,在程序界面上要显示出这个货品(通mdb或什么文件记录货品编号和名称),然后在数量栏位录和数量,按保存,把这条信息记录下来(记在一个文本文件就行)。就这么个功能。 ...…

查看全部问答>

小弟新人,诚心请教各位大侠,非诚勿扰

    小弟刚刚大学毕业,现在在一家做汽车电子的公司上班,可以说是初次接触到单片机和嵌入式领域,现在公司给我的工作是做MCU软件,但上了一个多月班发现有很多疑惑。老大在这一个多月来叫我们看了一本关于单片机的英文资料,然后写了I2C ...…

查看全部问答>

关于first-chance exception in **.exe access violation的问题

大侠好! 我在EVC4.0下面建了一个“WCE Dynamic -Link Library\"的工程,然后再建一个MFC的应用程序,用应用程序调用动态库(dll),在动态库中的WM_PAINT消息中执行第一条语句时,就出现了如题所示的异常,请问一下,怎么解决啊? 拜谢。…

查看全部问答>

怪事求助【AT91RM9200+LINUX+PC6脚】

CPU:AT91RM9200 操作系统:LINUX2.4 在我的应用中,把PC6脚作为视频中断的输入脚,在把他设置为I/O功能并且输入的状态下,只要这个脚有电平变化,LINUX就死机,在超级终端上按什么键都没用。系统中ARM控制7,8个视频类芯片,其他的脚都很正常。期 ...…

查看全部问答>

为什么加了线程后,模拟器运行速度变慢????

在EVC4下面,我做中国象棋游戏,使用了线程,并构造函数里面初始化,可是一旦编译完成后,模拟器上面的运行速度慢得吓人。不知道是什么原因。哪位大侠帮忙看看吧。 声明:CWinThread* m_pThinkThread; 在构造函数:m_pThinkThread=AfxBeginThre ...…

查看全部问答>

蓝牙音频网关bluetooth audio gateway?

最近我在学习WINCE5.0下的蓝牙应用。 所用的软件和硬件为: WINCE5.0 PXA270 DBT-120 USB bluetooth adapter. MOTO h320 首先我选中以下环境变量编译出一个内核: SYSGEN_BTH=1 SYSGEN_BTH_AG=1 SYSGEN_BTH_CSR_ONLY=1 SYSGEN_BTH_GATEWAY ...…

查看全部问答>

新人问路

大家好。 下学期就要上大三了,百感交集; 我前两年语言学的不好。都学没用的基础课了。今年想学硬件。听大四的学长说学硬件很累人。而我们的课又比较多,而且自己还有别的任务。软硬都有,不想再学的像语言似的,很肤浅。 大哥们,给点意见。…

查看全部问答>

谁用过HD61202能给个参考程序吗

谁用过HD61202能给个参考程序吗…

查看全部问答>