以太网LED图文显示系统的设计 第8页
u16t毗est;/*rtt预测*/
u32一srtqe:*/成预测的序列号*/
s32)sa,sv;/*砒的平均值和方差*/
u32trt。;*/重传的超时值*/
u32tlastack;*/最后接收到的确认*/
us一dPuacks;*/复制的确认数量*/
u32一cwnd;u32)ssthresh;*/拥塞控制变量*/
u32一sndeeack,sn--d鲜t,sndW--nd,snd‘Wll,sndeew12,ns--dlbb;/*
发送变量*/
void(*reev)(void*arg,s加ctteP一bc*Pbc,sUrtetPbuf*P);
void*rec--varg;
sUrtetteP一egunsnet,unacked,ooseq;/*队列*/
};
rttest,srtqe,as,vs用于往返时间的预测。用于往返时间预测的段的序列号存放在
esq中,而段的发送时间存在rttest中。平均往返时间和往返时间差存放在as和vs中。这
变量用于计算超时重传时间,然后将结果存在rt。中。而lastack和dupacks用于实现重传
快速恢复。lastack域存放最后一个确认信号的序列号。d即acks中存放着lassttack中的
列号的收到的确认数。当前拥塞窗口被存放在cwnd域,而缓慢启动闽值存放在ssbrtesh
。sn--dack,snd‘nxt,snd‘wnd,sn--dwll,snd--wu,sn--dblb用于发送数据。函数指针
vc和erc--varg用于向应用层传送接收到的数据。在发送数据时用到三个队列:unsnet,
acked,ooesq。从应用程序接收到的但是没有发送的数据,则存放在unesnt队列中,未
认数据则放在unackde队列中,而超出队列的数据存放在oosqe队列中。
.
7wLIP在pC/05一11上的实现
7.1体系结构相关部分
/srezareu访euld/eaerh目录下ce.h、epu.h、per.fh中有一些与ePu或编译器相关的定
,
如数据长度,字节序等。这应该与用户实现环C/OS一11时定义的数据长度等参数是一
的[‘’j。per.rh在这里不需要修改。
对cc.h,增加对ini和unsingdenit的类型定义:
t即edefunsingedintu32一:
t冲edefsingedini532一;
对Pc.uh,因为ARM默认为小数端对齐所以增加定义:
基于以太网的ELD图文显示系统的设计
#defineBYTEORDERLITTLEENDIAN
由于C语言中是按32位对齐的,而LwPI中的结构是按数据长度来访问数据的,所
以在。.ch中,定义了一些宏用来使数据紧密的排在一起:
#definePAC--KSTRUCT一万EILD(x)x_atrtibut-e一(P(aeked))
#de五nePACK‘多TRUC--TSTRUCT_attribute一(印acked))
#definePACKSTRUCTBEGIN
#de五nePACKSTRUCTEND
3.7.2操作系统相关部分
操作系统相关部分在sys_aer.hh和ys砂rhc.c中实现。
(1)SyS-arhc.h在拜C/OS一11下的定义
#iufdefSYSARCHH
#defineSYSARCHH
#defineLWPISTKSZIE1024//Lw正进程的栈大小为1024B
#defineLW护eeTAS玫MAXS刀定义最多5个wL正任务
#defineLW护weSTAR几pRIOS泥w正进程优先级从5开始
#defineMAX‘QUEL〕ES20
#de血eM尤又QUEU卫eeENTRIES20//消息队列中最多消息数
t冲edefs恤et{
05一EVENT*pE;//拜C/OS一11中指向事件控制块的指针
void*pvQEntries[MAX一Q泥U卫we万NTR压s];//消息队列
}T几pESCR,*P电DESCR:
PytedefOSeeEVENT*sy--ssem--t;
pytedefP之DESCRsysesmbo犯t;
tPyedef创TSUsys‘threa--dt;
#Clldif
(2)sys-arch.e在拼C/05一11中的实现
①系统初始化ys--sni(ti)
sys一ntio需要在TCp/护进程创建前被调用。首先通过调用osMmeCreateO为消息队
列分配空间,其空间大小为系统定义的最大队列数,然后初始化每一个LwPI进程的定时
事件表。
②ys屯sem-t信号量
大连理工大学硕士学位论文
wL正中需要使用信号量通信,其提供了四个函数接口:ys--sserr--l-newo,
--ssemwerfeeo,sys一e--msi,a1o,sys_are--Shem-waitOll’}。由于拼e/05一xl己经实现了信
量05EVENT的各种操作,并且功能和LW正上面几个函数的目的功能是完全一样的,
以只要把环C/OS一11的函数重新包装成上面的函数,就可以直接使用了。
③yss--mbo--xt消息
wLP使用消息队列来缓冲、传递数据报文,因此要在sys-arhc中实现消息队列结构。
消息来说,需要实现sys-mbox-newo,syseembo--xerfe(),sys口mbox-posto,
ysaer--hmbo--xefoth()。队列本身的管理利用拼C/OS一n自己的OSQ操作完成,然后使用
O/S一H中的内存管理模块实现对消息的创建、使用、删除回收,两部分综合起来形成
LwPI的消息队列功能。
④s”-arC址timeouts函数
LW正中每个与外界网络连接的线程都有自己等待超时时间。这一点表现在每个线程
对应一个ys--stimocut结构体队列,包括这个线程的t加ocut时间长度,以及超时后应调
的timocut函数,该函数会做一些释放连接,回收资源的工作。如果一个线程对应的
--stimoeut为空,说明该线程对连接做永久的等待。timocut结构体己经由Lw正自己在
ysh中定义好了,而且对结构体队列的数据操作也由wL正负责。
⑤yss--threa-d-nwe创建新线程
wL正可以是单线程运行,即只有一个tPcip线程(tPcipeehrteda),负责处理所有的.
pu/Pc连接,各种网络程序都通过tPcPI线程与网络交互。但wL正也可以多线程运行,以
高效率,降低编程复杂度。
在林C/OS一n中,没有线程的概念,只有任务。它已经提供了创建新任务的系统调用
STaskCreate(),因此只要把OSTaskCreateO封装一下,就可以实现sys一threa--d珍ew。需
注意的是wL正中的hrtaed并没有拼C/OS一H中优先级的概念,实现时要由用户事先为
w正中创建的线程分配好优先级。
⑥网络设备驱动程序
详细的介绍在第五章。
基于以太网的LED图文显示系统的设计
4LEO屏幕显示系统的硬件设计
4.1系统总体设计
本设计的目标是实现一种可以通过htimeet控制的LED图文显示屏,以节省传统
LED显示系统需要铺设专用线路的成本。以太网E(htme)et是当今局域网采用的、最通用
的通用协议标准[‘8]。基于TCP皿协议的以太网使得整个网络只有一种底层通信协议,
可以满足控制系统各个层次的要求,可以便携地访问远程系统或与nItneret连接,从而
能够实现办公自动化网络与工业控制网络的无缝联接。近年来,以太网正在从不同的途
径进入到工业自动化和过程控制市场,应用范围也有很大的扩展[19〕。上述设计的ELD
屏幕显示系统一般作为一个独立的系统存在,通过接入以太网与PC机进行远距离的通
信,实现了只要有nIt的et的地方就能对显示屏进行控制。
基于ARM7核的32位高性能微处理器LPC2210作为显示屏控制器的核心部分,通
过外接一个以太网控制器RTL8019AS,实现了与网络通信的功能。RTL8019AS符合
EhtemetH与IEEE802.3,10BASES,10BASEZ,10BASET标准;具有睡眠模式,可有
效降低功耗;可在半双工或全双工模式下提供10N伪ps的以太网接入。
复复位电路路路电源和晶振电路路路串行口通信模块块
图4.1系统电路的整体框图
Fig.4.1Bloekdiagarmofsystmeeireuit
整个系统的结构图如图4.1所示,在该系统中,ARM微处理器LPC2210为主要部
件的LED显示屏控制器,可以看作是以太网上的一个独立的节点,在这个控制器上运
行以太网通信协议LwPI,以便进行网络通讯。同时通过在接入网络的上位机上运行本
设计中编写的应用程序,就可以实现对每一个接入nItemet上LED图文显示屏进行远程
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>