在ARM11嵌入式系统下实时网络通信和LCD显示的实现

发布者:lidong4069最新更新时间:2018-02-19 来源: 21ic关键字:ARM11  网络通信  LCD显示 手机看文章 扫描二维码
随时随地手机看文章

    引言
    ARM11主频为533 MHz,最高可达667 MHz,较ARM7主频提高了10倍,且拥有更丰富的片上资源,处理速度更快,功能更强。基于上述特点,ARM11可完全适应实时性较强的网络终端的设计。
    在以ARM11为核心的网络终端设计中,需要LCD在终端实时显示网络通信的各项参数和设备工作状态,LCD的显示内容依靠网络传输数据中的指令来控制,而网络终端的操作数据也要通过网络传输到计算机,因此网络通信和LCD显示需要很强的实时性才能合理使用计算机和ARM11的资源,从而提高系统的运行效率。
    该文以ARM11处理器S3C6410为平台,基于Linux操作系统设计了一种在ARM11内核直接控制LCD显示的方法,并采用TCP/IP协议设计了一种同时作客户端和服务器的终端工作模式。

    1 ARM11网络终端实时通信特性分析
    1.1 数据流分析
    在计算机与ARM11通信的系统中,计算机的处理速度比ARM11快很多,如将数据处理等工作量大的任务分配给计算机去处理,则可大大减少ARM11的资源消耗,ARM11就可以更快地去响应其他操作,因此为了减少ARM11显示任务的时间,可以将ARM11要显示图片的数据处理交给计算机,计算机按照ARM11显示的数据要求处理好数据后再通过网络传到ARM11再完成LCD的显示。此外,ARM11网络终端还要向计算机传输设备工作状态信息,计算机则还要向网络终端传输一些控制命令。
    1.2 通信协议分析
    网络通信必然涉及到通信协议的问题,目前普遍采用的网络协议有UDP协议和TCP/IP协议。在实时性要求较高的网络通信中希望能做到想发就发,有数据就收。两个协议中UDP比较符合这个要求,但是它不能保证数据传输的有效性,当数据较多时很可能会发生严重的丢包现象,尤其是像LCD显示的图片数据这类数据较大而且传输频繁的数据,可能会严重影响液晶显示这是不能被接受的。相比之下TCP/IP协议能够保证数据传输的有效性。
    在TCP/IP协议ARM11网络终端作为服务器或者客户端是不能做到随时想发就发,有数据就收的,比如作为服务器接收完来自计算机的数据后,如果计算机断开了连接,那么网络终端再想向计算机发送数据,就必须等到计算机再次作为客户端向终端发起连接才行。为了解决TCP/IP协议的这种问题,本文设计了网络终端和计算机既作客户端又作服务器的双线程工作模式,在这种工作模式下终端和计算机随时能发起和断开连接,从而做到随时想发就发,有数据就收。

2 LCD显示的软件设计
2.1 LCD的显示方法分析
    (1)基于Framebuffer驱动方式。在Linux下有完善的Framebuffer驱动程序,所以可以利用ARM11集成的LCD控制器采用Framebuffer控制LCD,Framebuffer是显示设备抽象为帧缓冲区,用户通过内存映射将其映射到进程地址空间之后,就可以直接进行读写操作,而操作可以直接反应到屏幕上。该方法反应速度快、执行效率高,应用程序简单,但是底层硬件驱动复杂,硬件变更后编写难度大,不易实现。不带控制器的LCD通常采用这种方法。
    (2)直接读写GPIO驱动方式。目前有很多类型的液晶屏自带LCD控制器,ARM向控制器写控制指令和数据就可以完成对LCD的初始化和内容的显示。这种显示方法软件设计相对简单,占用的代码空间小,可以通过简单的控制芯片进行驱动。针对自带控制器的LCD,本文设计了直接读写GPIO驱动LCD的方法。该方法在底层驱动向LCD控制器和LCD的应用程序提供接口,LCD控制器的读写时序全部在底层驱动中完成,底层驱动向应用程序提供初始化接口和显示数据接口。该方法应用程序和内核的交互少,程序执行效率高。
2.2 LCD显示的实现
    通过上述分析,本文设计直接读写GPIO驱动带LCD控制器的液晶屏,该方法的程序结构如图1所示。

a.JPG


    在底层驱动中主要包括以下几个函数:
    (1)初始化函数s3c6410_inti。该函数包括2部分的初始化:一是对ARM11用于同LCD控制器相连GPIO口控制寄存器的初始化,核心语句是writel(tmp,S3C64XX_GPICON),其中writel是驱动层的写函数,tmp是写入控制寄存器的数据,S3C64XX_GPICON是S3C6410中第I组GPIO口的控制寄存器,如果采用别的GPIO口就改用别的控制寄存器宏定义;二是对LCD控制器初始化。
    (2)写数据函数s3c6410_WRData和写命令函数s3c6410_WRCommand。这2个函数按照具体LCD控制寄存器的写数据时序和写命令时序,完成对LCD控制器的写数据和写命令,向GPIO写数据的函数是writel(tmp,S3C64XX_GPIDAT),writel和tmp与上述相同,S3C64XX_GPIDAT是S3C64 10中第I组GPIO口的数据寄存器。
    (3)显示函数s3c6410_LCDdisplay。该函数通过调用写命令函数和写数据函数到达在液晶屏上具体位置显示具体图片或文字的效果。
    (4)系统调用接口函数s3c64xx_ioctl(structfile*file,int cmd,long int data)。该函数定义s3c6410_inti和s3c6410_LCDdisplay2个函数接口通过系统调用iotcl(fd,1,xx)和iotcl(fd,2,xx),以供应用程序调用,应用程序使用iotcl(fd,1,xx)就可初始化结晶屏,只需要向s3c6410_LCDdisplay的接口iotcl(fd,2,xx)中写数据就实现了数据的LCD显示。

3 网络通信和LCD显示的整体设计
    在网络通信和LCD显示的整体设计上,从LCD显示数据的有效性和网络系统工作的实时性角度出发,本文拟采用TCP/IP协议设计服务器和客户端双线程工作模式,液晶显示用直接读写GPIO的驱动方法,显示数据由计算机处理好后发送给ARM11客户端来实现。程序设计的流程图如图2所示。软件首先通过系统调用iotcl(fd,1,xx)调用函数底层驱动的液晶屏初始化函数初始化结晶屏,然后使用pthread_create()创建服务器线程和客户端线程。当线程建立后ARM11网络终端同时进入两个线程:服务器线程将一直等待客户端发起连接,当客户端有数据要发送时只要发起连接就能保证和它连接上,接收到客户端数据后用于LCD显示或者其他处理,处理完成后再回到等待客户端连接;客户端线程则一直扫描终端状态,一旦有数据需要发送给服务器就马上发起连接发送数据,数据发送完成后继续扫描。


c.JPG


    主程序核心代码如下:
b.JPG

4 系统运行效果分析
    在系统中网络终端和计算机的服务器线程一直处于工作状态,这样就保证了任何一端随时能作为客户端发起链接并链接成功,换个角度任何一端也能够随时收到客户端发送过来的数据,这样就实现了想发就发,有数据就收,达到了实时网络通信的实时性要求。
    ARM11网络终端上,将液晶显示的图片数据交由计算机处理,大大减少ARM11的处理时间,使得响应按键、开关等的速度更为迅速。LCD显示上采用直接读写GPIO,LCD控制器的读写时序全部在底层驱动中完成,应用程序和内核的交互少,试验证明内核的执行速度在数量级上大于应用程序的执行速度,程序运行效率高。

5 结语
    ARM11嵌入式系统以其体积小、处理速度快、功能强的特点,能实现实时性要求较高的网络组网和网络通信,从而进一步开拓了嵌入式系统的应用前景。本文通过设计TCP/IP协议服务器客户端双线程工作模式和直接读写GPIO驱动LCD,并将显示图片由网络交给计算机处理,提高了实时网络通信的可靠性和实时性,充分利用了计算机和ARM11的资源。同时该设计可移植性强,可应用到其他网络终端的工作,对ARM11嵌入式系统的应用具有借鉴意义。


关键字:ARM11  网络通信  LCD显示 引用地址:在ARM11嵌入式系统下实时网络通信和LCD显示的实现

上一篇:基于ARM的嵌入式USB图像采集与显示方案
下一篇:基于嵌入式系统的I2C触摸屏设计

推荐阅读最新更新时间:2024-03-16 15:55

STM32中LCD显示少量汉字
在STM32中怎样在LCD显示屏中对汉字进行显示(只是汉字),下面针对这个问题是我的一点小小的看法,如有问题希望读者留言; 以下程序主要针对STM32中库函数进行操作: 在LCD显示汉字,首先需要对汉字进行取模,我们都知道一个汉字所占用的空间大小是2B。接下来通过取模软件对所需要显示的汉字进行取模(注意有的取模软件可能存在问题)。 在这我们要补充一个知识就是汉字在计算机中存储形式: 输入码:汉字的字数繁多,字形复杂,常用的汉字有6000—7000个,比英文的26个字母要多得多。在计算机系统中使用汉字,首先遇到的问题就是如何把汉字输入到计算机内。为了能直接使用西文标准 键盘进行输入,必须为汉字设计相应的编码方法。汉字
[单片机]
MAX16928:汽车TFT-LCD显示器电源解决方案
    Maxim公司的MAX16928是具有升压转换器和栅极电压稳压器的汽车TFT-LCD显示器电源解决方案,集成了一个升压转换器,一个1.8V/3.3V稳压控制器和两个栅极电压稳压器(一个28V提供20mA,一个负栅极电压)。高达6W的大功率升压输出,输出电压高达18V,工作频率2MHz,主要用在汽车仪表盘,信息显示器和导航系统。 MAX16928是一个高度集成的适于汽车TFT - LCD应用的电源。该器件集成了一个升压转换器,一个1.8V/3.3V稳压控制器,两个栅极电压调节器。该器件有多个版本以满足通用汽车TFT- LCD电源的要求。升压转换器采用扩频调制以减少尖峰干扰和优化EMI性能。排序输入(SEQ)可以使得正栅极和负栅
[电源管理]
MAX16928:汽车TFT-<font color='red'>LCD显示</font>器电源解决方案
基于DSP的网络通信程序设计
摘要:通过分析网卡基本通信过程控制和数字信号处理器(DSP)对网卡直接编程方法,成功设计基于DSP的网络通信程序,从而最终实现DSP系统数字化和网络化的融合。 关键词:DSP 网络通信程序 通信协议 网卡 DSP芯片是专门为实现各种数字信号处理算法而设计的、具有特殊结构的微处理器,其卓越的性能、不断上升的性价比、日渐完善的开发方式使它的应用越来越广泛。将计算机网络技术引入以DSP为核心的嵌入式系统,使其成为数字化、网络化相结合,集通信、计算机和视听功能于一体的电子产品,必须大大提升DSP系统的应用价值和市场前景。将DSP技术与网络技术相结合,必须解决两个关键问题:一是实现DSP与网卡的硬件接口技术,二是基于DSP的网络通信程
[应用]
LCD显示屏出现闪烁的原因与解决
比较CRT与LCD两类显示屏时,其中一项最为普遍见到的差别是闪烁问题。一般都会以为CRT显示屏有闪烁,而LCD则没有,查实两类显示屏皆有某程度上的闪烁,机制上的差异和纠正方法影响到成功率。本文讲述LCD显示屏上出现闪烁的原因,并且提出避免闪烁的方法。 LCD显示技术 液晶体显示屏(LCD)於1973年出现於计算器上,首个LCD是嵌入有七段字画,让数字得以被显示。下一代LCD则於1980年面世,属於点阵式(dot-matrix)显示,除显示数字外,还有字符和图形,比如是简单的单色电脑显示屏或者流行的“电子宠物” 他妈哥池。这些矩阵设计藉著启动阵中的行与列的像素作为控制,取代了每一像素需一条独立的控制线。至1980年代末,彩色
[电源管理]
LabVIEW设计的远程控制实验系统
目前, 传统教育体系已经越来越不能适应当今科学技术和信息飞速发展的需要。传统的教育是以教师讲授为主,学生只是被动听讲,这种方式已经不适应培养人才的要求。另外,在实验设施不足的情况下,学生不能直接参与实验过程操作,不能很好地实现实验教学目标。传统的教学方式不利于充分发挥学生的想象力和创造力,也不利于及时追踪到最新的科技信息。随着计算机技术和网络技术的不断发展,近几年在教育领域提出了一种新的教学思路,即构建虚拟实验室的方法。而远程实验教学多数是利用虚拟技术实现,在这种虚拟实验中,实验者操纵的都不是实验设备实物,看到的只是一些利用三维技术做出来的动画,所获得的实验结果当然也不是远程设备的实际反映而是通过公式计算得到的数据 。针对这一
[测试测量]
LabVIEW设计的远程控制实验系统
基于Linux操作系统下的TCP/IP网络通信研究与应用
1 引言 Linux是一种自由的Unix类多用户,多任务的操作系统,可在运行在Intel 80386及更高档次的PC机、ARMS、MIPS和PowerPC等多种计算机平台,已成为应用广泛、可靠性高、功能强大的计算机操作系统,Linux具有内核小、效率高、源代码开放等优点,还内含了TCP/IP网络协议,很适合在服务器领域使用,而服务器主要用途之一就是进行网络通信,随着计算机办公自动化处理技术的应用与推广,网络的不断普及,传统的纸张式文件传输方式已经不再适合发展的需要,人们更期待一种便捷、高效、环保、安全的网络传输方式。 本文就是考虑到这一现状,结合基于Linux操作系统下的TCP/IP网络通信原理,给出了一种基于TCP/IP编程
[应用]
浅析汽车TFT-LCD显示器升压电源的解决方案
Maxim公司的MAX16928是高度集成的汽车TFT-LCD显示器电源,器件集成了一个升压转换器(高达6W,输出高达18V),一个1.8V/3.3V稳压控制器(500mA电流)和两个栅极电压稳压器,其中的正栅极电压稳压器能在28V时提供20mA电流,高频2.2MHz工作,提供软起动和超温关断等功能.主要用在汽车仪表盘,汽车中心信息显示器和汽车导航系统.本文介绍了MAX16928主要特性,方框图, 正输出和负输出电压的多级电荷泵电路以及典型应用电路. Automotive TFT-LCD Power Supply with Boost Converter and Gate Voltage Regulators The MA
[嵌入式]
STM32f4---TFTLCD显示实验代码(01)
本实验,我们用到FSMC驱动 LCD,通过前面的介绍,我们知道TFTLCD 的RS接在FSMC的 A6上面,CS 接在 FSMC_NE4 上,并且是16位数据总线。即我们使用的是FSMC 存储器1的第 4区,我们定义如下LCD 操作结构体(在lcd.h 里面定义): //LCD 操作结构体 typedef struct { vu16 LCD_REG; vu16 LCD_RAM; } LCD_TypeDef; //使用NOR/SRAM的 Bank1.sector4,地址位 HADDR =11 A6作为数据命令区分线 //注意16位数据总线时,STM32内部地址会右移一位对齐! #define LCD_BASE ((
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved