ARM11嵌入式系统实时网络通信和PWM波输出控制的实现*

2014-07-05 16:17田志强刘军卿原瑞宏
舰船电子工程 2014年12期
关键词:实时性寄存器网络通信

田志强 乔 莹 刘军卿 原瑞宏 于 鑫

(1.武汉军械士官学校枪械系 武汉 430075) (2.国家知识产权局专利局专利审查协作江苏中心 苏州 215000)

ARM11嵌入式系统实时网络通信和PWM波输出控制的实现*

田志强1乔 莹2刘军卿1原瑞宏1于 鑫1

(1.武汉军械士官学校枪械系 武汉 430075) (2.国家知识产权局专利局专利审查协作江苏中心 苏州 215000)

通过对ARM11嵌入式系统Linux下的实时网络通信和PWM波输出控制进行研究,分析了网络通信协议和PWM波的驱动方式。在ARM11嵌入式系统下设计了PWM波控制程序,并实现网络终端服务器和客户端双进程的工作模式,解决了网络通信实时性和可靠性的问题,以及双线程工作模式数据交互冲突的问题。实际应用表明:该方式网络通信实时性强可靠性好,ARM11和计算机的资源利用率高,可远程灵活控制PWM波的输出。

ARM11; 实时网络通信; 双进程; PWM波

Class Number TN27;TP399

1 引言

ARM11主频为533MHz~667MHz,与ARM7相比主频提高了十倍,拥有更丰富的片上资源,处理速度更快,功能更强[1]。而且ARM11嵌入式系统具有强大的网络通信能力,因此ARM11可完全适应实时性较强、功能较为复杂的网络终端的设计。嵌入式操作系统上可以采用比较成熟的Linux操作系统,Linux是一款开源、内核可自行裁剪和重新配置的操作系统,自1994年Linux1.0诞生以来,Linux的发展速度非常快[2~3],该操作系统拥有大小可裁减、移植性强、运行速度高、网络性能好等优点,ARM11与Linux操作系统的结合能够充分发挥ARM11的效能,满足要求较高的系统设计[4~5]。本文针对嵌入式系统终端以网络通信为基础的远程控制的实现进行研究,以运程控制PWM波的输出为例,以ARM11处理器S3C6410为平台,基于Linux操作系统设计了PWM波输出的驱动程序,并采用TCP/IP协议设计了一种同时做客户端和服务器的双进程工作模式,实现了实时网络通信和PWM波输出的远程控制。

2 ARM11嵌入式终端实时网络通信 特性分析

2.1 系统功能需求分析

ARM11嵌入式系统一个非常突出的特点就是具有强大的网络通信能力,可以实现网络的远场控制,在计算机与ARM11通信的系统中,计算机的处理速度和能力都比ARM11强,如果将数据处理等工作量大的任务分配给计算机去处理,则可大大减少ARM11的资源消耗,ARM11就可以更快地去响应其它操作,因此ARM11可以将要处理的数据交给计算机,计算机则按照ARM11数据要求处理好数据后通过网络下传到ARM11控制模块当中。以网络控制PWM波为例,ARM11控制模块要向计算机传输相关设备工作状态信息,计算机则要向网络终端传输PWM波的开关、频率和占空比的设置控制命令。

2.2 网络通信协议选择

网络通信必然涉及到通信协议的问题,目前普遍采用的网络协议主要有UDP协议和TCP/IP协议[6]。在实时性要求较高的网络通信中一般要求实时收发。两个协议中UDP由于无需建立连接绑定,因此比较符合实时性这个要求,但是它不能保证数据传输的有效性,即当数据较多,传输速度较快时会发生严重的丢包现象,尤其对数据较大而且传输频繁的数据,在某些可靠性要求较高的系统中数据丢失是不能被接受的。相比之下TCP/IP协议在通信前先要建立连接进行绑定,这样更能够保证数据传输的有效性。

采用TCP/IP协议的ARM11嵌入式终端如果是仅仅作为服务器或者客户端的工作模式是不能做到即时收发的,以作为服务器为例:当接收完计算机的数据后,如果计算机断开了连接,那么网络终端再想向计算机发送数据,就必须等到计算机再次作为客户端向终端发起连接才能重新建立连接,这样嵌入式终端就比较被动,不能即时发送数据。为了解决TCP/IP协议的这种问题,参考文献[7]中设计了网络终端和计算机既做客户端又做服务器的双线程工作模式,在这种工作模式下终端和计算机随时能发起和断开连接能做到即时收发,但是这种工作方式存在一个非常大的缺陷:在两线程间数据通信时,两个线程可能同时读写同一块存储区域时会发生冲突而导致程序运行出错。为了解决这一问题,本文提出了既做客户端又做服务器的双进程工作模式,两个进程间的数据交互可以通过管道进行通信,通过对管道的读写可以避免读写冲突的发生。

3 PWM波驱动设计

PWM波是占空比可控、频率可控的方波,可以作为测试信号或者控制信号。为了达到占空比可控和频率可控在驱动程序中必须设置修改占空比接口和修改频率接口,以及关闭PWM的接口。PWM驱动程序的结构如图1所示,述驱动程序主要包含三部分:设置频率函数、设置占空比函数、开关PWM输出函数。

图1 PWM驱动的程序结构

对于S3C6410平台PWM波的输出是专门的管脚GPF14和15,GPF14和15的控制寄存器S3C64XX_GPFCON的29、28和31、30位,若对应的控制寄存器两位为10则该IO口就作为PWM输出。开启PWM时就将相应的控制寄存器设置为10,表达式为

tmp |= (0x2U << 28);

writel(tmp, S3C64XX_GPFCON);

关闭PWM就将其GPF14的控制寄存器设置为00。

设置频率和设置占空比就是对PWM的专用控制寄存器和数据寄存器进行设置,两个定时器结构寄存器TCFG0和TCFG1共同设置输入定时器的时钟频率,TCFG0的低八位是定时器0和定时器1对PWM波时钟PCLK的预分频数,用P表示,TCFG1的低四位是对定时器0的时钟分频器,可以做1/1、1/2、1/4、1/8、1/16分频,对应的分频数记为d(值为1、2、4、8、16),那么设置好定时器0的这两个寄存器后,输入定时器0的时钟频率为

(1)

与PWM波频率和占空比直接相关的两个寄存器,一个是TCNTB0定时器0的计数寄存器(假设其值设为Tn),一个是TCMPB0定时器0的比较寄存器(假设其值设为Tc)。现定义PWM波的输出频率为f,占空比为S,那么它们的计算表达式如下:

(2)

(3)

最后设置定时器的控制寄存器TCON,它是定时器0~4的控制寄存器,其低四位对应的是定时器0,功能如表1所示[8]。

表1 定时器0的控制寄存器

完成上述三个主要功能函数后,写好系统调用结构体就完成了PWM波的驱动程序。

4 网络通信和远程控制PWM波输出的程序设计

在网络通信和远程控制PWM波输出的程序设计上,从数据传输的有效性和网络系统工作的实时性角度出发,本文拟采用TCP/IP协议设计服务器和客户端双进程工作模式,PWM波的频率和占空比等数据由计算机处理好后发送给ARM11客户端来实现。程序设计的流程图如图2所示。

图2 网络通信和控制PWM波输出流程图

软件首先通过使用fork()语句[9~10]创建服务器进程和客户端进程,并利用pipe()语句建立一个进程间数据通信管道。当进程建立后ARM11网络终端两个进程同时运行:服务器进程将一直等待客户端发起连接,当客户端有数据要发送时,只需发起连接便能建立网络连接,接收到客户端数据后先进行解码然后用于控制PWM波输出或者其它处理,处理完成后关闭连接然后回到等待客户端连接;客户端进程则一直扫描终端状态和从服务器进程中获取信息的状态,一旦有数据需要发送给服务器就马上发起连接,并发送数据,待数据发送完成后继续扫描。

以服务器进程为例,其核心代码如下:

………

void *server_function() //服务器线程

{

……

server=socket(AF_INET,SOCK_STREAM,0);

bind(server,(struct sockaddr*)&local,sizeof(local));

listen(server,10);

while(1)

{

client=accept(server,(struct sockaddr*)&from,&fromlen);//等待连接

t= recv(client,buffer,sizeof(buffer),0);//接收数据

recvPktProcess(t);//处理数据函数

close( client);

}

}

5 系统运行效果分析

在系统中网络终端和计算机的服务器进程一直处于工作状态,这样就保证了任何一端随时能作为客户端发起连接并连接成功,换个角度任何一端也能够随时收到客户端发送过来的数据,这样就实现了即时收发,达到了实时网络通信的实时性要求。

ARM11嵌入式终端上将较为复杂的数据处理通过网络交由计算机处理,计算机再将处理后的数据发送给嵌入式终端,大大减少ARM11的处理资源消耗,使得响应按键、开关等的速度更为迅速。PWM波频率和占空比的远程控制也较为容易的得以实现,PWM波输出波形如图3所示。

(a)5KHz的PWM方波显示照片

(b)占空比为1∶3的PWM方波图3 网络通信和控制PWM波输出波形

从图3可以看出PWM波频率和占空比都得到了控制,达到了设计目的。

6 结语

本文利用ARM11嵌入式系统以其体积小、处理速度快、功能强,能够满足实时性要求较高的网络组网和网络通信的特点,通过设计TCP/IP协议服务器客户端双进程工作模式的网络通信程序和PWM波的驱动程序,实现了可靠的实时网络通信和PWM波输出的远程控制,充分利用了计算机和ARM11的资源。同时该设计具有将强的移植性和扩展性,可应用到其它网络终端的工作,对ARM11嵌入式系统的应用具有借鉴意义,进一步开拓了嵌入式系统的应用前景。

[1] mini6410用户手册-20100814[S].广州友善之比计算机科技有限公司,2010:11-12.

[2] 罗宇,陈燕晖,文艳军.Linux操作系统实验教程[M].北京:电子工业出版社,2009:1-7.

[3] 杨树青,王欢.Linux环境下C编程指南[M].北京:清华大学出版社,2007:18-20.

[4] 宫虎波.Linux编程从入门到精通[M].北京:化学工业出版,2009:214-219.

[5] 董小喜,薛立勤,王功翠.Linux驱动开发研究[J].电脑知识与技术,2011,7(3):560-563.

[6] 张思民.嵌入式系统设计与应用[M].北京:清华大学出版社,2008:128-130.

[7] 张伽伟,周安栋,罗勇.ARM11嵌入式系统Linux下LCD的驱动设计[J].液晶与显示,2011,26(5):660-664.

[8] 张伽伟.ARM11嵌入式系统在通信装备状态监测中的应用[D].武汉:海军工程大学,2012.

[9] 孙欣贺,王晓辉,于月森.一种嵌入式linux操作系统的构建方法[J].工业控制计算机,2011,24(1):69-71.

[10] 钟诚,卢卫恒,李德勇.Linux进程调度分析[J].电脑知识与技术,2011,7(1):70-71.

Real-Time Networks Communication and PWM Wave Control Based on ARM11 Embeded System

TIAN Zhiqiang1QIAO Ying2LIU Junqing1YUAN Ruihong1YU Xin1

(1. Department of Firearm, Wuhan Ordnance Noncommissioned Officers Academy, Wuhan 430075) (2. Patent Examination Cooperation Jiangsu Center of Patent Office, SIPO, Suzhou 215000)

Based on research about the real-time network communication and the control of PWM wave in Linux based on ARM11 embedded system, this paper analyzed the network communication protocol and PWM driver. A work model of double process of both server and client was designed to meet the requirements of real-time and reliability of network communication and avoid the problem of date interactive of double thread work model. The application indicated that using this method had advantages of real-time and reliability, the utilization of ARM11 and computer was considerable, and the PWM wave was easily controlled.

ARM11, real-time network, double process, PWM wave

2014年6月7日,

2014年7月20日

田志强,男,博士,讲师,研究方向:步兵武器性能检测与维修。乔莹,女,硕士,研究方向:信号处理。刘军卿,男,硕士,副教授,研究方向:步兵武器性能检测与维修。原瑞宏,男,硕士,讲师,研究方向:步兵武器性能检测与维修。于鑫,男,讲师,研究方向:步兵武器性能检测与维修。

TN27;TP399

10.3969/j.issn1672-9730.2014.12.020

猜你喜欢
实时性寄存器网络通信
Lite寄存器模型的设计与实现
基于网络通信的智能照明系统设计
二进制翻译中动静结合的寄存器分配优化方法
计算机网络通信常见问题与技术发展研究
基于网络通信的校园智能音箱设计
移位寄存器及算术运算应用
谈计算机网络通信常见问题及技术发展
航空电子AFDX与AVB传输实时性抗干扰对比
计算机控制系统实时性的提高策略
可编程控制器的实时处理器的研究