当前位置:首页 >> >>

TCP/IP协议在嵌入式操作系统μCOS-Ⅱ中的实现_图文

维普资讯 http://www.cqvip.com

山西 电子 技术  20 06年第 3期 

网络 时空 

T PI C /P协议 在 嵌入 式  作 系统 C S Ⅱ中的 实现  操 O 一
孙 林  钱 峰  蒋 青 
( 大连海事大学研 究生院, 辽宁 大连 162 ) 106 
摘 要: 嵌入式设备以其稳定、 可靠性高的特点, 正在取代传统 P C机成为 It nt ne e 的中心。介绍了一种技术: r  
以 W7 e1 B为核 心 , 85 6 结合 网卡芯 片 R L 0 9 S 实现 了嵌入式 T P T 8 1A , C AP协议。  
关键 词 :CD Ⅱ; C /P W7 e1 B R S 1A   tAS  ̄ T P I ; 85 6 ; TL 0 9 S

中图分 类号 : N 1 .4 T 9 50  

文献标识码 : A 

随着科技的发展 , 现在 已经进入 了以嵌入式和网络化为 

式系统来说, 要相对简单一些, 网卡芯片与 MC U融为一体,   由于没涉及到多任务访问机制, 使得底层的操作可以直接进 
行 。驱动程序主要有 3 部分 : 芯片初 始化 、 接收数据 、 发送数 
据。  

代表 的后 P C时代。而嵌入式 I e e更是成 为最近各大 高 nm t t  
校 以及科研院所研究 的热点。本文采用 了一个完整 的 , 可移  植, 固化 , 裁减的抢 占式实 时多任务 内核 b OS I作 为软件  t -I C 平 台, 实现了嵌入式 TC /P协议栈 。 PI  

12 1 网卡的初始化过程  ..

1 Ete t 口控 制模 块的 实现    hme接
11 系统 结 构  .

为 了使网卡处 于在线工作状 态 , 能够接收 和发 送数据 ,  

必须对相关的寄存器进行初始化。主要有 C 、C 、 B R  R D RR C 、
P TART 、 S S P TOP、I R、I S MR 、P D P R M   一 AR5  AR — l 5、 6 A   M 、

W7 I 1 B是 WI  ̄ N 8L 6 - 5 NL D公 司生 产 的增 强 型 5 O l单片  机 , 6K的 AP O 和 4 带 4 RM K的 L R D OM, 以实现 IP I  可 S (n . ss m porn nn ) 能… 。网 络 控 制 模 块 采 用  ̄3 S yt rga  ̄ i 功 e g (D -   Ⅱ 实 现 了 多 任 务 方 式 。使 用 了 以 太 网 控 制 芯 片   J R L 0 9 S 可将 数据 包 发 到 以太 网上 , 过 以 太 网接 入  T 8 1A , 通 Itre, nent实现真正的嵌入式 T P I C /P设备 。系统控制模块结  构如图 l所示 。  

C 瓜R T R R R 等 寄 存 器 , 始 化 由 函 数 vi i  I .C 、 C 初 o  n d i
t TL 0 9 vl) R S 1 ( d 实现。 o   12 2 发送 、 .  接收函数  网卡 芯 片 的接 收 函 数 以及 发 送 函 数 由 us nd i   ni e n g t R 8 l d pl vi) v i I 3 ldv sn (o ) TL 0 9  一 ol o 和 o   L 0 9 e — ed vi 实  ( d d d

现, 具体实现如下[ : 3] ? 
u s ndi  T S 1 dv plv i) ni e  t L 0 9 e — l d  g nR o ( o

{ ni e  t aktegh  us ndi   ceL n t; g np
pc e egh= R 8 1bgn akt e e e ) akt n t L TL 0 9eiP ceR t i ( ; rv  

i f (!mc L n t    ̄tegh)
rtr   : eu 0  n

i pc e egh > UI — I lE ) f akt n t ( L P B  Z  

{T 81eda e ee e) R L09nPc t t i (; k R rv  
rtm     e u 0;

}  
图 1 系统 结 构 图 

R L 0 9er vP ce aa i— u, ak tegh)  T 8 1rt ie ak t t(up br pceLa t ; e D l

针对底层硬件 的编 程 主要包括 二部 分 : 对 81A   一是 09 S 的操作 , 主要包括 :T 8 1 的初 始化 、 R L0 9 数据 帧的发送 、 接收  过程 : 二是对 W7E 1B底层设 备的控 制以及数 据的 采集、 8 56  
TPI C /P协议栈的实现 、 对数据的逐层打包封帧传送流程 , 其  次还有网络应用层与底层 硬件的接 口的实现过程 。  
12 网卡芯片 R L 0 9 . T S 1AS驱动的实现 

R L 09nPce e e e) T 8 1ed a t t i ( ; k R rv  
rtr  ak t e gh; eun p c eL n t  

}  

其 中 UI— U SZ P B FI E是用户缓 冲区的大小 ,i bf u — u是  p
用户缓 冲区。  
vi  T 8 l d 一e dv i) odR L 09   sn ( d  o

R L09 S T 8 1A 的软件设计 主要 是 网卡 驱 动程序 的实 现。   在操作 系统 中, 动程序 作为一 组子程序 , 驱 屏蔽 了底层 硬件 
处理细节 , 同时向上层软件提供硬件无关接 口。而对 于嵌入 
收稿 日期 :0 6— 3 2 修回 日期 :0 6一o 一l  2 0 0 ~2 20 4 3

{  
R L 0 9eiP ce ̄n (i~e ) T S 1bg akt d up l ; n n  
i i—e < ; 1 f pl (u n DTA   EA E L l TH ) L H D R— E G N  

第一作者

孙林  男 2 4岁  硕士研 究生 

维普资讯 http://www.cqvip.com

3  2



西







术 

20 0 6盘 

即 I TC P和 P在同一个函数 u — rcs( 中实现 。uP的 I  i po ̄s) p I P
R S 1 sn P ceD t(l  u,u 1 ) TL 0 9e d akt a up b r i e ; a p. n  

层代码有两个职责 : 输入包 的 I 验证 P头的正确性 和 IMP  C 、 T P协议之 间多路 复用 。用 函数 R L09e— o( 来接  C T 81dv pl ) l 【

}  
es   le

收数据帧, 用函数 R L 09 e s d ) T S 1dv e (来接收数据帧。   n  
2 2 I MP协 议 的 实 现  .  C R ’ 0 9ed ak taa ( i b f F T   TL 1snP ceI t up u, O AL 8 Y    

{I—e 一= T AL HE D R E GT   up l n OT   A E  L N H;
HE E  L NG AD R E TH) ;  

在uP 只有一种 IMP信息实现了:C l 里, C IMP回响信  ;
息。IMP回响信息 常用 于 p g程序 里的检 查主机是 否在  C i n 线。在 uP里 ,C l IMP回 响处 理 在一 个 非常 简 单 的 方 式。  

R I 1sn P c el a ( rind ca *) i— T N0 9e d ak t Nt ( uLg e  hr s up 

ap aa up e )  pd t, l n ;  l

II 类 型字段的改变是从 \ h 类 型到 \e or l 类  CI V P     c  p" h ey
型。 从而 I MP调 整校 验和。 C  
2 3 传输控制协议 T P实现  . C

}   R S 1 e d akte d ) TL 0 9 n P c eSn ( ;   }   其 中 up e 要发 送 数据长 度 , O AL H A E   l n为  l TT —EDR LNT E G H为 以太 网帧的 首部 长度 ,i u 为发 送缓 冲 区, u  b f p   up 印I a 为 要发送数据指针 。 i )t da  

为了减少储存 器的使用 ,I uP里的 T P没有实现发送和  C
接 收数据 的调整窗 口。输 人的 TC P段 不会 通过 uP缓 存 , l   但必须立 即由应用 程序处 理。但 这不 能避免 应用 程序 自己   缓 冲数据 。输 出数据时 ,I uP不能 在每个 连接有超 过一个未  解决 的 T P段。 C  
2 4 A P协议 的实现  .  R

2 嵌 入式 T( /P协 议栈 的实现  、 I P
uPT P I I C / P协议 栈是 使 用于 8 位或 1 位 微处理 器 的 6  


个可实现的极小的 T P I 协议栈。现时,I C /P uP代码的大 

A P协议软件 由六 个 函 数组 成 : i ap ik( 、 i— R u p. r —n ) up 
ap ii( 、i— r . ri( 、i r  u( 、i— r — pae r —pn ) u ap. pn )up p o t) u ap ud t p a  a p  

小和 RA 的需求 比其它 一般的 T P 1 M C /P栈要 小。uP的实  I

现目 标是保持 代码 大小 和储存 器使 用量 最 小。u l 以看  P可
作是 一个代码 库为 系统 提供确定 的函数 。应 用程 序必须 提  供一 个回应函数给 uP I。当网络或定 时事件 发生 时, 调用 回  应 函数 。uP提供许多 函数 和堆栈 交互 。要 注意的就是 uP l I  提供 的大部分函数是作 为 C的宏命令实现 的, 主要是为了速 

( 、i— r — me( 。u — r —nt ) )up ap t r ) i ap i ( 函数 的功 能是对 A P i p l R  表的初 始化。up ap i n ) i— r —p  ̄函数处理的是以太网送来 的 I  i  P 包, 如果 I P包来 自远 程主 机用 u — r— pae ) i ap u d t( 函数 更新  p

A P R 表或者在 A P 中不存在则插入一个新的映射。u — R 表 i  p a —ri ) r a n 函数接 收来 自以太网的 A P , p p( R 包 如果是 A P请  R 求包 , 则构造 A P应答 有 网络接 口函数 R L09e—ed R T 81dv s   n
( 发送 出去。u — p o t) ) i a — u( 函数 主要 的功能是 当有要发送  pr 的 I 时, P包 检查 以太 网的首部 , 如果发送 的 I P包的 MA C地  址在 A P表 中 , 接添加 , 果 不在 AR R 直 如 P表 中, 送 A P 发 R  请求包获得 M C地 址 。up ap t r( 函数每 十秒调 用  A i— r —i me )


度, 代码大小 , 率 和堆 栈的使 用。表 l uP提 供的所有  效 为 l
函数 。  
表 1 uP所提供的所有 函数    I

系 接E 统 l  
u 一 i) i ;t  p n( 初始化u   I P 6 —nt) 处理输人包 p p ( l  t  

测  数 试  
u —  t) 远 i n a  程主机已经发出数据 p (   u —d ) i a ( p   确应发出的数据 

u —Hmc 处理周期计时事件 u  【 口 ) iI ( p )   i o n ( p m  当前连接刚连上  

次, 用来更新 AR P表 。  

应 程 接口 用 序   t in) 开 听 口 n le   始监 端   p s( t
p o 州( —[ ) Ⅱ  连接到 远程主机 
u i p


u 一 d  当 连 刚 闭 i妇 ( p ) 前 接 关   u — 0 ) 当 连 刚中   i af   前 接 止 p b  (
u i p血删 ( 当前连接刚超时  )  

3 网络 接 口层 的 实现 
任务 函 数 T K—Ui c ( 、 AS AS p Re ) T K—UiPo ̄s 、 p rc,()  I S Up i O t) 实现上 层协议 与 以太 网卡驱动 程序  ' K— iTme u( , A

邮一 ( 在当 接 送 据 i— X t   )   前连 发 数  t ll   m e  ̄ ae ( 输 数 的 小 t ) 人 据 大     u_D) . p( p l  l 其   它 u    ) in( p   t  k ( 关 当 连   i 瑁) r cc  p 闭 前 接 u ~  ( 中 当 连   ia ) p   止 前 接 u  卸( is ) p  
u  ] p  

数 重   据 发 应 程 循 运   用 序 环 行 获 前 接的 大的 大   得当 连 虽 段 小

之间的接 口。这样做一 是有 利于 网络协议 栈与 网络连接设 

备问的透明性; 二是方便实现多个用户任务在收发数据帧的  
过程 中互斥的共享 网卡设备 。   考虑到 MC U的处理能力 , 任务 T S — p e( 采用周  A K Ui c ) R 期查询的方式 : 务调用 网卡 驱动 函数 R L 09 e 一 1) 任 T 8 1dv  ( 

停 当 连   止 前 接

i d ) 将Ⅱ地 结 打   f r  ) ( a d J址 构 包

l— 【 。 ) 找 接 否 止 h (,o ( 在 机 网 之 转 字 黜  l sp( i [ d 查 连 是 停   t ) ts   主 和 络 间 换 节 p p c nh)  ̄
( 重新启动当前连接  )  

从 系统的立场看 , l 3个 C函数 up mi ) u —n  uP有 i— t ,l i. ( p 一 p t) u — ei c ) l nt ) u( , i pr p Mi( 。u  ii 函数 用于初 始化 uP堆栈  p ( l

判断是否 已接收 到数据 帧并 将数 据帧存 贮到 t   u 缓 冲 i r p f   区里 , 将数据帧 的长度存 储 到 u —e i l p n变量 中 , 如有则 利用 

和在 系统 启动期间 调用 。当网络设备驱动器读 一个 I P包到  包缓存 时 , 调用 函数 u —nu( 。周 期性运 行是 调用 u — i i t) p p i  p
pr d ( , 表 的是 ~秒 一次。调 用 uP函数 是系统 的职  ei i )代 oc I 责。uP与嵌入 式实 时操 作 系统 以及应 用层 的接 口通 过调  l 用上表所 列函数来实现 。  
2 1 I 的实现  .  P层

U / SⅡ内核提供的  CO -

t) ( 函数发送信号量 S 一 哪  

P  ̄sakg 表示有 事件发生 。 mcs cae P   任务 T K  p mc s ) 过 调用 Cx m P n ( ㈣ 一 AS UiP  ̄ ( 通 E% aed S  

Poe Pcae 0 &e ) rcaakg, , r 获得该信 号量 , 检查 以太 网帧  s r 然后
的te y 字段 , p 如果是 I P包则调用 u ~ res( P— A A) i poe UI D T   p s

交给上层协议 对数据进 行处理 , 中 UI — A A表示输入  其 PDT

为 了节省代码 空间 , 协议 的实现采 取 紧密结 合的方式 ,  

缓冲区有输人数 据。如果 是 A P包是 实现 发送 A P的应  R R

维普资讯 http://www.cqvip.com

第3 期 
答。  

孙林 , :C /P   T P I 协议在嵌入式操作系统  ̄ O - C S Ⅱ中的实现 

3  3

协议 。在程序实现中由于受到内部 R M 的限制 , A 尽量避免  了过多的参数传递。参数传递的过程要浪费程序代码空间。   也降低单片机执行速度。同时设置了必要的全局变最, 尽可  能使用了结构体、 链表等变量单元, 有效地提高了不同协议 
层之 间相互调用的速度 。  

任务 T S Up ie u(, 是用来 处理数 据 包的超  A K— i m O t)它 T

时重发, 周期计时是用于驱动所有 uP内部时钟事件, l 当周 
期计 时激发 , 一个 T P连接应该 调用 uP函数 u —   . 每 C l i p   p oi ) d (来处理周 期计 时事件 , u — eoi ) c 当 i prd ( 函数 返 回, p i c 输 
出的 I 要放在包缓存 里 , 后调用 R L 0 9 e— e d ) P包 然 T 8 1dv sn (  将I P包发送到以太 网上 。这里重发的实现并不是将 已经发 

参考文献  [] 魏眷杰, 1 尚晨旭. C0 - U / 8 Ⅱ在 5 单片机 的移植应用 1   [ ]大连海事大学研究生科技创新论文集, 0. G. 2 4 0  
[] 邵 贝 贝. C C 2 U /B一 源码公 开 的 实时嵌入 式操 作 系统  [ . M]北京 : 中国电力 出版社 ,0 1 20 .  

送的还没应答的数据包保存在一个队列中, 而是不保存包的 
内容采用设置一个标志表示重发包 , 应用程序检查这个 包并 

产生先前发送 过 的包 同样的数 据 , 样可 以有效 的 节省 资  这
源。  

4 结束语 
本文基于嵌 入式 实时操作系统 p OS 1实现 了 T P I  t -I C C /P

【] 赖麒史. 5 单片机 C语言开发环境实务与设计【   3 8 1 0 M] 北京: 科学出版社,02 20 .   [] 胡大可, 4 李培弘, 方路平. 基于单片机 85 的嵌入式开 01  
发指南[ . M]北京 : 电子工业 出版社 , 0 . 2 3 0  

Rel aino  C /P i  C - mb ddOp r t gS se ai t  fT P I   I OS ⅡE e e  eai  ytm  z o n ̄ n
S nLn Qe  eg J n  n u   i  i Fn   i gQi n a  

( otrd aeSho ,Da a  r i eUnvrt Da a  io i  10 6 Ai   P s a u t col g   l nMai m   iesy, l nLa nn 16 2 ,C n i t i i g a)
Ab ta tEmb d d dvc eo st ecne fItme e e do  tScaa t  fsa izt na dhg  e e d bl yised s c: r e e  eieb cme h  e tro ne td p n  ni’ h rce o  tblai  n   ihd p n a it  ta   r i o i n

o  C.Thsp p riu  ̄ cso etcn lg  h t ae  nW 7 E 1 B  t  TL 0 9     l ntteE e e   P/P. fP i a e  cle  n  eh oo y ta  sd o   8 5 6 wi R 8 1 AS t i e   n u b h o mp me  h   mb d dTC I  

K yw rs :S  ; P I ; 7 e1 B RT S 1A   e  od : O i TC /P w 8 5 6 ; L 0 9 S   I

( 上接 第 2 6页)  

作, 也是笔者进一 步的研究 目标 。   参考文献 

据源 , 通过数 据源 获得 C ne i ( 接对 象 )得 到连  然后 o co 连 tn ,
接对象后 , 就可 以依 次生成 S t et语句 ) 象 和 R sl  te n ( am 对 eut —

[ 赵勇超, 1 ] 郑宁, 葛瀛龙.a Jv a中连接池的设计 与实现 
[]计算机应用研 究 , 0 ()20 J. 2 46 : . 0 2 

St e 结果集) ( 对象 , 进行相应的数据库操作。   前两个步骤是在启动 Wel is v  d i cn 的界  b g   r A m n ml o ce e r   o
面下完成的 , 第三 步骤 是在应用 编 程 中通过 J ̄B a aa en来 实 
现。  

[] LneA dr n JB T 4 0Seiai [ ]JR 2 ac n e e.D C M  .  pci tn S .S     s f o c
2 .0 5— 1 21 2 0 2— 1 . 4 

[] 田翔 川, 3  田忠和, 谢志宇. l JP S 数据库连接 池的设计 [ . J  ]
计算机 应用研 究,04 2 :9 . 2 0 () 1 8  

4 结束语 
由于 Jv 言 自身 的优 越 性 ,D C连接 池成 了大 型  aa语 JB

[] 朱长生, 4 沈云付. 适应数据库连接池的研究[]计算 自 J.  
机工程与应 用 ,o 3 3 ) 18  2 o (6 :8 .

we 应用的核心技术。通过优化连接池的性能, b 能大大地提 
高用户访 问 We 数据库的效率。在信息技术 飞速发展 的今  b

[] Dn y y sJv 服务器高级鳊程[ . 5 a Ae. a n r a M]曾国平, 北  译.
京 : 械 工 业 出版 ,o 1 机 2o.  

天, b we 信息成指数级增长, 在动态分布的计算环境中, 如何 
使用现有技术动态优 化连接池 是一件 富有挑战性 的研究 工 

[] 赵强, 6 乔新亮. E J E应用开发[ . 2 M]北京: 电子工业出  
版 社 ,o 4  2o .

Op i z t n frJ C  n e t n P o  o e  n  t  p iain o   e   t miai  o  DB Co n ci   o lM d la d IsAp l to  n W b o o c
Xi  h o h n  Xi g Ho g g i eZ a - l e a   n - u2 n  

( . o “o Cne , a n nMei l ol e C nh u inx 4 0 0 C ia; 1 C mp t" et G n a r dc C lg ,, zo J g i3 10 , n   a e a a A

2 鼬   o o ue . u n dn   iesyo e nl y,G a gh uGu nd n  1 0 0 hn ) . fC mp t G a g ogUnvr t fTc o g r i h o u n zo  a g og 50 9 ,C ia  
A s atT ip prnrd c   em dl f h  B   n et npo adi aip nil.I e eil rFss o eot bt c: hs ae  t ue t   o e o  eJ Cc n co  oln   s s  r c e t pc l p00e  m  pi r   i o s h   t D o i   tb c i p   s ay s  
miigmeh d 0 h   o n cin P o  y a ay ig t ec nrlp rmee fteOg _ ̄ o    ̄1 I h lst  rv  h   Ao — S   to sfrt eC n e t   o lb  n lsn  h  o to  aa tro h  OLot n l o. t ep oi o et ew- r  n o n i x   mp ma c f cmet np l n  x ale  eef i c  c es OteW e  aa ae ial id sr e   ecn io  f o n cinp o  n eo    ci  I ,a del l s t  fce yacs   h   bd tb s .Fn l t eci st   dt o  n et  o l c o  l h' c h in t y,   b h o i n c o

i  bapi t na dte r ayd vlp gpoes f h D Ca p ct n nWe p lai ,n     i r ee i  r s o  J B   lai . c o h pm on c   t e p i o 
K yw r sJ B cn et n p(  o e; p i z t n W e   pi t n e   od : C; o n ci   。 1 d l o t ai ; b p l ai   D o )m mi o a c o