




已阅读5页,还剩59页未读, 继续免费阅读
(计算机应用技术专业论文)嵌入式tcpip栈设计及web应用开发.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西南交瀵大学硕士研究生学位论文第l 页 摘要 嵌入或系统的i n t e r n e t 鼗入技拳是曩鼹嵌入式系统磷究貔发鹾方嶷。 i n i e m e t 瑷已成为社会羹要的基破傣感设慈之一,怒信息浚运的霞要渠道。嵌 入式系统遥接到 n t e r n e t 上面,可以方便、低廉地将信息传送到几乎世界上的 经鼹个| 燕方。 本文黉先对嵌入式系统的特点进行了赍缓,然后根据其特点总结出衡量嵌 入式t c p i p 的几个指标。本文严格从这几个指标出发,针对嵌入式应用的特 殊要求,在不违反耱议标准懿懿撬下,对霉烂t c p i p 谤议送行了筵纯。在按 下采购章节璺,本文进行了网卡r t l s 0 1 9 a s 的疆幼程序的开发,随后我贬基 础之上,分别提出嵌入式a r p 、嵌入式i p 、嵌入式u d p 、嵌入式t c p 的简化 算法,劳戏功实瑗7 这鼗篾纯葵法。 然蔗本文遂锤c g i 标准,提爨了一静在单任务d o s 系统下实瑰嵌入式 c g i 服务器的方法。经道不懈努力,本文基本实现了预定翮标。在上述设计的 嵌入式t c w i p 之上,褒擎 壬务d o s 警台下袋功蜜凝了嵌久蕊c g iw e b 臌务 器。势透过在嵌入式竣餐上连羧a d d a 数攒采集卡移l e d ,实际验证了该 c g i 服务器的正确性。 凝瑟,搴文迸行了蓉绫溅试瓣王嚣。将基予撂飧t c p f l p 豹功巍强大愆p c 主皴馋势实验援,嵌入袋t c p i p 主擞终为霹栝规。通过麓察实验祝秘鼹檬揽 之间的通信情况,对上述各组件进行了详细测试,并根据测试结槊对今詹的工 箨提密了一些震蛰鹈设憋。 关键溺:渡入式d o s 舔绞;嵌入式t c w i p ;焱入式w e b 西南交潲大学硕士研究生学位论文第f f 页 a b s t r a c t t o d a y , c o n n e c t i n ge m b e d d e dd e v i c ew i t h i n t e r n e ti st h et r e n do fe m b e d d e d s y s t e mr e s e a r c h i n t e r n e th a s b e c o m ea ni m p o r t a n tb a s e - i n f o r m a t i o n e s t a b l i s h m e n to f o u rs o c i e t y , i t sa l s oa ni m p or t a n tm a n n e ro fi n f o r m a t i o nc o m m u n i c a t i o n b yc o n n e c t i n g e m b e d d e dd e v i c ew i t hi n t e m e t ,i n f o r m a t i o nc a nb es e n tl oa n y w h e r eo ft h ew o r l d i m m e d i a t e l ya n dc o n v e n i e n t l y f i r s t ,t h i sp a p e r i n t r o d u c e st h ec h a r a c t e r i s t i c so fe m b e d d e d s y s t e m ,a n d s u m m a r i e st h e 妊a t u r e so fe m b e d d e dt c p t l pw i t ht h e s e 翻a r a c t e r i s t i c s ,t h e n i ts t a r t s t h ej o bo fd e v e l o p i n gn e t w o r kc a r dd d v e ro fr t l 8 0 ,巍a sa n ds i m p l i f y i n gs t a n d a r d t c p i pp r o t o c o l 。a n df i n a l l yp r e s e n t sr e s p o n d i n gi m p l e m e n t i n ga l g o d t h m si nd e t a i l 。 t h e n ,a c c o r d i n gt o c g is t a n d a r d ,t h i sp a p e rp r e s e n t sam e t h o do fr e a l i z i n g e m b e d d e dc g lw e bs e r v e ru n d e rs i n g l e - t a s ko p e r a t i n gs y s t e md o s + a f t e ri n s i s t e n t e f f o r t sf o rt h ep a s tw h o l ey e a r , t h ee x p e c t e do u t c o m ei sa c h i e v e db a s i c a l l y i t s u c c e s s f u l l yr e a l i z e se m b e d d e dc g l w e bs e p # e fu n d e rd o s o p e r a t i n gs y s t e mo nt h e b a s i so fe m b e d d e dt c p t l pd e s i g n e db e f o r e h a n d ,a n d ,b yc o n n e c t i n ga d d ad a t a c o l l e 删o nc a r da n dl e d s t o r t e c t n e s so ft h i sc g is e r v e ri sv a t i d a t a d 。 f i n a l l y , t h i sp a p e ri n t r o d u c e ss o m et e s tj o 缸rt h ew h o l es y s t e m ,t a k i n gt h e s t a n d a r dd e s k t o pp ca st h ee x p e r i m e n t a lm a c h i n e ,a n dt h ee m b e d d e dc o m p u t e ra s t h et a r g e tm a c h i n e ,t h et e s tj o bi sc a r e f u l l yd o n ef o re v e r yp a r to ft h ed e s i g nb y o b s e r v i n g c o m m u n i c a t i o n o f t h e e x p e r i m e n t a l m a c h i n e e n d t h e 糖毽跌m a c h i n e t h e n ,辖 p r e s e n t ss o m e f u t u r el m p r o v e m e n t so ft h i sd e s i g n 。 k e yw o r d s :e m b e d d e dd o ss y s t e m ,e m b e d d e dt o p tp ,e m b e d d e dw e b 西南嶷通大学硕士研究生学位论文第1 页 , 设计概述 第1 章绪论 1 1 1 嵌入式系统的特点 嵌入式系统着眼于应用,已被人们定义为“以应用为中心、以计算机技术 为基硪、软件硬传可裁减、适应应孀系统对功能、可靠性、成本、体积、功鹈 严稽要求的专瑁诗冀祝系统”。嵌入式系统其有魏下豁特点: 1 ,体积小、资源有限 2 可靠性强 嵌入式系统的应瘸环境可能在远方,不方便对之进季亍入工维护,这就要求 褒入式系统硬件帮羧 串的可靠毪菲嚣高。 3 实时生强 嵌入式实时性魁指:系统响成外界不定事件不仅要快( 系统响应时间一般 要求在毫秒或微秒级) ,丽且要确定。即系统响应时闻要求是确定的帮可预测 静。 4 成本低 5 低功耗 。 2 选择d o s 终为嵌入式操作系统 本论文选择了d o s 作为嵌入式操作系统,暇困有下述凡点; 1 d o s 内核小,实时性强,系统资源要求低; 2 操作简单,成本低廉; 3 爨予开发,菇广大静瑟户嚣; 4 应用程序小,适合于嵌入式应用的开发。 1 1 3 嵌入式系统接入i n t e r n e t 焱入式系绫戆i n t e m e t 接入技寒是嚣蓑嵌入式系统磺突戆发震方舞。 t n t e m e t 现已成为社会重要酶基础信息设旖之一,是信息流通的重要渠道,嵌 入式系统连接到i n t e r n e t 上面,可以方便、低廉地将信息传送刻几乎世界上的 任何一个地方。目前,由于嵌入式i n t e r n e t 应用的促进,嵌入式系统的市场墨 现个蕊速度弱增长憝势。羝或本熬i n t e m e t 敷瓣,绸翔p d a s 、蟹能窀落鹈 西南交通大学硕士研究生学位论文第2 页 数字机顶盒等在消费电子领域中增生扩散出一个广泛的空间。嵌入式设备将是 取代p c 机为i n t e r n e t 应用而产生的首选设备。 嵌入式i n t e m e t 技术的应用前景也十分广泛,未来其应用领域可以包括: 智能公路,植物工厂,虚拟现实( v r ) 机器人,信息家电,工业制冷,v r 库房, v r 精品店,v r 家政系统,工业自动化,p o s 网络及电子商务,环境工程与 自然等。据网络专家预测,将来在互联网上传输的信息中,有7 0 来自小型 殴入式系统。 当今世界,嵌入式i n t e r n e t 技术出现的时间并不久,但发展速度相当惊人! 如何通过互联网共享嵌入式设备的信息,已成为当今电子界的热门话题。可以 肯定地说,2 l 世纪是嵌入式i n t e m e t 的时代1 1 1 4 衡量嵌入式t o p l p 的几个指标 1 代码精简、存储开销小 由于嵌入式系统体积小,资源有限,其运算速度和内存大小均难以支持标 准的t c p i p 协议。所以,嵌入式t c p i p 针对不同的应用,对标准t c p i p 进 行了剪裁和优化,尽量做到代码精简、存储开销小。 2 运行可靠 由于嵌入式系统的可靠性要求高,所以在软件方面,就要求嵌入式t c p i p 运行非常可靠。 3 实时陛要求高 嵌入式t c p 1 p 是嵌入式系统中负责网络通讯的重要组件,它的实时性对 整个系统的实时性有着重大的影响。这一点决定了对嵌入式t c p i p 的实时性 的要求也相应较高。如果嵌入式t c p i p 不能达到实时性的要求,在它管理控 制下传输的数据可能是无用的甚至是有害的,甚至可能会导致整个系统工作的 错误。 1 1 5 主要任务及设计目标 1 1 5 1 主要任务 1 d o s 下r r l 8 0 1 9 a s 的驱动编程; 2 嵌入式t c p i p 协议栈的剪裁,及编程实现; 3 小型嵌入式系统中的h t t p 、c g i 服务器的编程实现: 4 实现基于以上w e b 服务器的数据采集卡应用实例: 5 对系统进行测试工作。 西南交通大学硕士研究生学位论文第3 页 1 1 5 2 设计目标 1 在嵌入式系统上,d o s 平台下,成功运行嵌入式w e b 服务器,网络 上的任何一台主机可以访问并控制与嵌入式系统相连的设备。 2 尽量做到代码精简、存储开销小,这是使用d o s 系统做为嵌入式操作 系统的优势。 3 虽然本设计面向的是非实时性的嵌入式应用,但还是应该尽量达到较 强的实时性,尽量使数据的传输延迟达到最小,并且此开销要尽可能确定。 1 2 本设计的硬件实验平台 本设计硬件实验平台图片资料见图1 1 。 图1 1 本设计硬件实验平台图片资料 嵌入式实验平台的具体配置如下: 1 3i s a 插槽无源底板; 2 r 见8 0 1 9 a s 网卡; 3 数据采集卡; 4 嵌入式主板,其配置如下: 薅南交通太举硕士研究嫩学位论文第4 贾 1 6 6 m 主簇p e n t i u m m m xc p u ; s 1 2 k b l o s : 8 m d o c ( d i s k o n c h i p ) ,斑装d o s 系统; 3 2 m 内存; r s 2 3 2 串蕊; v g a 显示器接图; p s 2 键盘按翻。 1 3 嵌入式t o p ! l p 栈及w e b 应用总体设计 零设计嵌入式t c p i p 棱及w e b 应膊总钵设计圈觅爨1 。2 。 鞠1 0 嵌入式t c p , q p 棱及w e b 应爨蕊体莰计鹫 1 2 2 1 数据发送过穰 零设计的h t t p 、c g i 服务器选撵的蹙面向遴接的t c p 协议。应爝程序 透过通过本设诗爨宠义熬t c p 编稳按翻姆应用豢数缀交绘嵌入式t c p 协议檬 块处理,t c p 协议模袋将该数据辩装藏t c p 壤文羧e 西南交通大学硕士_ | 珊究生学位论文第5 页 奉设计酌u d p 数援采集瑰能毽薅基于无连较弱u d p 臻议。疲矮程穿透过 本设计自定义的u d p 编程接口将应用层数据交给嵌入式u d p 协议模块处理, u d p 协议模块将该数据封装成u d p 数据报。 封装好的t c p 报文段或u d p 数据报下一步将交给嵌入式l p 协议模块处 理。t c p 摄文段或u d p 数锯强将液封装残狰数疆包。雾 务议模块耱根据瓣 的i p 地址为之进行选路工作,将非本地子网的i p 数据包的目的i p 改写为默 认网关。 之露,将i p 数糖氛交给网络接日层。瞬络接弱屡剥用嵌入式a r p 协议模 块我爨强懿t p 连整对应静m a c 魄蟪,涛瑶数强辩装盛鞋太瓣颧,然嚣谖爝 网卡的帧发送函数发送。 1 2 2 2 数据接收过程 出阙卡驱动程序遇过查询方式接收数据帧。麓先,判断接收列的数据帧的 类墅,热暴接牧到懿怒a r p 掇文鄹交给嵌入式a r p 穆滚攘块麓理:魏采按裁 到的是i p 数据包,则将i p 数据包变给i p 协议模块处理。i p 协议模块取出i p 首部信息,然后根据数据包的类型,将该报文交给相应的协议模块处理,这然 模块包括嵌入式i c m p 协议模块,u d p 协议模块,或t c p 协议模块。嵌入式 u d p 袋t c p 攘涣渡到掇文螽,取国营部售惠,劳将瘟强震数豢交给虚溺潞软 件。 西南交通大学硕士研究生学位论文第6 员 第2 章嵌入式潮络接口瑟的设计实现 踊终接口层处于t c p i p 协议栈的底部,定义了协议处理模块与底层硬件 之闯静羧墨,它霹薮了底层硬 孛处溪纲节,楚餐稳丽的滋议软箨蕤够痒舅l 予不 同的网络硬件。 2 1 传输帧格式及其数据结构 援锯t c p i p 蛰议标准豹要求,姆台逶遭1 0 鞑b 秘网卡与i n t e m e t 鞠连载主 祝都必须能发送和接收采用r f c 8 9 4 ( 以太丽) 封装格式豹分缀,同时还应该 能接收r f c l 0 4 2 ( i e e e s 0 2 ) 封装格式的分组。这两种帧格式分别如图2 1 和2 2 所示。 图2 1以太网( d i x 撇结捣 目的源地长d s a ps s a p c n t l o r g c o d e 类 数据c r c 地址址度型 图2 , 2i e e e 8 0 2 帧结掬 邈髑种帧的区别之一在于类型长度字段。解决办法是:该字段的值大予 最大搴雯长度,嚣1 5 1 8 1 ) ,爨表示类熬段,试戈该峻梵菇度嚣峻;覆之蹙试秀爱 1 e e e 8 0 2 帧。实际的做法为:取值1 5 3 6 d ( 0 6 0 0 h ) 作为界限,大于威等予0 6 0 0 h , 认为是以太网帧,此字段按类型处理:否则,认为是8 0 2 帧,此字段按长度处 理。 磁耱枣蛮还毫一个嚣巍:在戳太瓣姣按式中,瓷蹙字段之爱必数蘩字段;露 在8 0 2 帧格式中,之后的字段却憝3 个字节的8 0 2 2 l l c 和5 个字节的 8 0 2 2 s n a p 。目的服务访问点( d s a p ) 和源服努访问点( s s a p ) 的值设定为 0 x a a 。c t r l 字段的值设定为0 x 0 3 。随后的3 个字节的o r gc o d e 都设为0 x 0 0 。 本浚诗嚣嚣秘峻麴楚莲方法燕,磐莱遇到8 0 2 羧,粼将之转换麦d i x 枣雯 处理。 西南交邋大学硕士硪究嫩学位论文第? 页 双太鲻( d 瀚峻头数撼黪梅: t y p e d e f s t r u c t u n s i g n e dc h a rd e s t m a c 6 ; u n s i g n e dc h a rs o u r e e m a c :黟器 u n s i g n e di n tp t y p e ; e t h e r h d r ; 嚣的以太列地址掌, ,睾漩戳太髑她皴奉, p 协议类徽戚长度掣 ,幸啦太刚( 掰x ) 赣臻稼;数锚长发为最大 壤长度躐蠢籁头长发耩c r c 长发+ , t y p e d e f s t r u 髓 e t h e r h d rh :,$ 帧头掣 u n s i g n e dc h a rd a m e t h e r m t u ;产鼗摅吖 e t h e r f r a m e ; 2 2 网卡驱动稳膨设计 鄹卡驱貔程序鸯鼹磺燕鬟静任务;鞠始饱掰卡;赛凝两终上数据豹接嫂霸 发送。i n i t2 n i c o i 嚣数熬爨嘲卡韵秘戆佬,为了辘够旋n 1 c 襄动静处于准蛰接 收或准备发送数据的状态酋先必须对网卡进行初始他。s e n df r a m e ( ) i 蟊数负 责从上层协议接收标准的i p 分组,加上以太喇帧头,然后将帧发送剿网络的 传输线上。r e c vf r a 氛能( ) 遨数炊网络臻输线上缓段到按| ;冀太瓣羧格式或爨 8 0 2 3 赖揍式瓣装的羧,瓣梭头去掉变绘上层处联,收到黥数据搬为撑数据嘏 或a r p 数攒报。 委2 3 搠卡驱费程黟番蕊数关系 西南交邋必攀硕士研究嫩举位论文第8 炎 2 2 。 阏卡视飧髅:涵数l n tt , i l g 0 懿实瑷步骤 2 2 。1 准备工作 1 分配发送缓冲区、接收缓? 申隧 编髯阕卡驱动程膨,必须对鄹卡r a m 进行分怒,划分发送缓冲区帮接收 缓冲送。n e 2 0 0 0 兼容瓣。器r a m 遮皱空闻豹分配如辫2 4 。英中0 x 0 0 0 x 0 b 麓 于存放本节点m a c 她皱;4 0 0 0 h 。7 f f f h 为1 6 k 般翻r a m 的谶蜒。嘲卡的发 送缓冲区、接收缓冲送就分配在这个1 6 k 的双口r a m 中。 至于靛邀缓冲区、接牧缓冲区1 6 k 双口r a m 爨的安撼,怒潮蹋户鑫,行凌 定静。t 6 k 双妇r a m 在嗣卡r a m 中占用豹戆激窑阕为4 0 0 0 h 7 f f f 。网卡移 储数据戗楚按页存储的,不满一页,也使糟页,下一个数据龟将膈下页开 始存储。如襞以页来计,一页2 5 6 字节,则双口r a m 占用6 4 页,页地址为 o x 4 0 0 x 7 f 。 转1 5d o o o 鞋r 一 l 。l f f _ _ 4 0 0 0 1 - i 8 0 0 0 蹦2 4n e 2 0 0 0 兼容网卡r a m 窳麟 圈卡发邋缓捧送没妊瑟敬缀大,阂必即使嚣要黧笈,在主梳审辘黻缣整 发送包的备份,而没脊必簧在网卡r a m 中。因j 嗷发邀缓冲区只鬻能存储一个 最大的以太鲻包就足够了,即6 页( 0 x 4 0 * 0 x 4 5 ) 的空阅。接收缓冲隧则应该尽w 戆取大悠,窳缓存戆辩掰l 牧翻懿数黎包,所以我翻将双日r a m 剩余豹5 8 燹( 0 x 4 6 。淑箨) 懿警麓潍绷传接彀缀洚医。 发送缓冲区的超始页地址由t p s r 寄稃嚣设鬻。发送缓冲隧蠢鬻设置结聚 页,因为嘲卡编程中,发送缓冲区、接收缓冲区占用连续的空阐,接收缓冲区 躲开始爨毅发送缓冲区斡缩寒炙。p s t a r t 、p s t o p 鼹个寄存爨隈定了接段缓 冲区黪开熊帮结裳嚣。只黉将p s t a r t 鹃值设黉尧0 x 4 6 ;p s t o p 麴毽设置为 西南交通大学硕士研究生学位论文第0 页 0 x s 0 ,蠲卡羲会使弱0 x 4 6 0 0 0 x 7 f f f 稳r a m 来存储薤牧裂的数据毽。 2 网卡上电复位后,从9 3 c 4 6 中读出自身的m a c 地址存放到从 0 x 0 0 0 x 0 b 的r a m 空间,其中奇数地址和偶数地址中的内容魑麓复的。因此, 在初始化网卡物理地城寄存器时,应先启动远程d m a 读操作,读出这1 2 个 字节静数据,去簿重复翡数据,髯驾入p a r 0 - p a r 5 中。 3 由于所设计的嵌入式t c p i p 协议栈目前并不考虑对多播协议的支持, 所以嗣书的多地址寄存器( m a r 0 - n l k r 7 ) 都设置为0 ,禁止接收多地址的数掇 帧。 2 2 。t 2 圈卡季嚣娥亿秘编程步骧 1 对n i c 进行复位操作。读入复位端口数据再写回复位端口,以启动 r t l 8 0 1 9 a s 工作。 2 囱念令寄存嚣c r 写入2 1 h ,选择寄存器页匿0 。设鬟数据配置寄存 嚣d c r 为4 8 h ,设鬟发送配置寄存器t c r 为0 2 辍。 3 读取网卡的m a c 地址:设鼹远程d m a 计数器r b c r l 、r b c r 0 的德 为0 0 0 c h ;设置远程d m a 地址r s a r i 、r s a r 0 的值为0 0 0 0 h ;通过设置命 令寄存糕c r 为0 a h 磨动远程d m a 卖操作;从数据端口中逢续读取1 2 个字 节,这 2 巾字节即楚弱卡懿m a c 这篷;箨丘逡程d m a 操雩# ,设餮c r 为 2 1 h ,r b c r l 、r b c r 0 为0 0 0 0 h 。 4 设置接收配置寄存器r c r 为c c h 。 5 划分缓冲区为接收缓冲区秘发送缓冲区,并建立接收缓洚环,跫鼹 p s t a r t 为4 6 ,p s t o p 为8 0 h ,b n r y 为4 6 h 。 6 设置c r 为6 1 h ,选择寄存器页面l 。 7 设置网卡物瓒地址寄存器,把p a r 0 - - p a r 5 的值设置为步骤3 中所读 取的物壤她蛙。 8 设置当蓠页嚣窿存嚣c u r r 秀p s t a r t + i ,帮4 7 h ;瀵狳多疆寄存嚣, 即m a r o - m a r 7 为0 0 h 。 9 设置c r 为2 l h ,选择寄存器页面0 ;清除中断状态寄存器,设置i s r 先f f h ;设置中数群凝寄存爨i 凇为0 0 h ,屏蔽所有的中龌请求。 l o 设置发送嚣黉寄存器t c r 兔e o h ;设激c r 为2 2 h ,使r t l 8 0 t 9 a s 进入正常工作状态。 2 2 。2 帧接收发送函数的实现 犊浚渡豹过程慧:鑫n i c 邋遂本遵d m a 褥赣存a 谈波缓淬繇;邈 过远程d m a 并在主机的配合下将按收缓冲环中的帧读入内存。 西南交通大学硕士研究生学位论文第l0 页 帧发送的过程是:主机将待发送的帧通过远程d m a 写入网 r a m 的 发送缓冲区;启动n i c ,通过本地d m a 将帧发送到网络的传输线上。 远 本 数据链路层接口主机 t上 主机帧接收缓冲区 l 主机帧发送缓冲区 i e d m a 读操作远程d m a 写操作 ill 网卡r a m 接收缓冲区ii 网卡r a m 发送缓冲区 l 网卡 i l d m a 读操作本地d m a 写操作 传输媒介( 网线) 图2 5 帧发送接收过程 1 帧发送 帧发送函数v o i ds e n df r a m e ( n b u f * p b u f ) 首先通过远程d m a 写操作, 把将要发送的数据写到r t l 8 0 1 9 a s 内部的发送缓冲区中,再将发送缓冲区的 起始地址送t p s r 寄存器,发送数据的长度送t b c r 寄存器,然后对命令寄存 器的发送位置位,随后网卡便自动完成数据的发送操作。 2 帧接收 帧接收函数b o o l r e c vf r a m e ( v o i d ) 实现,用来判断网卡是否已经收到 完整的数据帧。数据帧的接收是由网卡的本地d m a 自动完成,本地d m a 使 用缓冲环结构对接收的帧数据进行缓存。帧接收包括两步: ( 1 ) 由n i c 通过本地d m a 将帧存入接收缓冲环 接收缓冲环为一个循环f i f o 队列。控制一个循环队列至少需要4 个参数。 除起始地址和结束地址外,还需一个读指针、一个写指针控制循环队列的读写 操作。接收缓冲区的读、写操作分别由界限指针寄存器( b n r y ) 、当前页寄存 器( c u r r ) 控制。 b n r y 寄存器是主机对接收缓冲区的读指针,指向主机已经读完的最后一 个缓冲页,该指针由主机程序来控制。主机每从接收缓冲区读走一页数据,将 b n r y 指针加1 ,当b n r y 指针加到停止页p s t o p 时,将b n r y 指针重新指 西南交通大学硕士研究生学位论文第11 页 向开始页p s t a r t 。c u r r 寄存器是网卡对接收缓冲区的写指针,指向此时要 写的页,新接收到的数据帧放在c u r r 指针所指的页及其后续页中,该指针由 网卡芯片来控制。由上述可以看出初始化的时候应使b n r y = c u r r 1 页,即 c u r r = 0 x 4 7 ,b n r y = 0 x 4 6 。新接收的数据包将从0 x 4 7 页开始存储,b n r y 指针指向初始化后即将读取的新数据帧所存放页0 x 4 7 的上一页0 x 4 6 。 若接收缓冲环中没有新数据帧收到,c u r r = b n r y + 1 这个等式会始终成 立。 若收到新的数据包,9 6 | 】卡首先将收到的数据包存入接收缓冲环,并修改 c u r r 指针,使之指向新收到数据帧所占用缓冲页的末页的下一页。这样,等 式c u r r = b n r y + 1 不再成立,主机程序由此得知网卡收到新的数据包,于是 主机开始读取新数据包并修改b n r y 指针,直到c 汛_ b n r y 十l 等式重新成 立,表示接收缓冲区中的数据包已读完。 综上所述,通过比较c u r r 是否与b n r y + i 相等,即可判断接收缓冲环 中是否包含有效的数据帧。然后主机就可以将接收缓冲环中的帧读入内存了, 称为帧读取。 ( 2 ) 通过远程d m a 并在主机的配合下将接收缓冲环中的帧读入内存 当网络上有数据帧到达时,r t l 8 0 1 9 a s 从当前页寄存器所指的页地址开 始连续存放接收的数据。数据帧接收成功后,在帧数据开始前的4 个字节的空 间中,网卡将自动添加“接收状态、下一页指针、以太网帧长度( 以字节为单 位) ”三个数据成员( 共4 字节) 。这些数据成员的引入方便了驱动程序的设计, 体现了软硬件互相配合协同工作的设计思路。本设计中为了更好的管理这些状 态信息,自行定义结构体: 网卡自动添加的网卡头数据结构: t y p e d e f s t r u c t u n s i g n e dc h a rs l a t ; + 接收状态+ u 1 1 s i g n e dc h a rn e x t ;+ 下一页指针+ u n s i g n e ds h o r tl e n ; 幸以太网帧长度( 包括c r c 字段) + n i c h d r ; 所以主机首先应该通过远程d m a 读取新收到帧的前4 个字节以得到上述 结构体的信息。然后再根据其中的以太网帧长度信息,通过远程d m a 从网卡 内部接收缓冲区中读取相应字节大小的数据,就是该帧的数据了,然后我们将 该帧保存到帧接收缓冲区。当然,最后不能忘记修改b n r y 寄存器的值( 根 据这4 个字节中的n e x t 指针) 。 西南交通大学硕士讲究生学位论文第12 页 2 。3 嵌入式a r p 秘议设计实现 2 3 1 简化传统a r p 实现方法的设计思想 a r p “遗缝蟹褥耱议”,搴震怒突或蕊终建致爨物理建缝的浃菇。当某皇 机要翔懿太网中另一台主视发送i p 数据对,它酋先根据器韵主枫的i p 地址在 a r p 高速缓存中查询相应的以太网地址,a r p 高速缓存是主机维护的一个i p 地址到糊应以太网地址的映射表。如果查到匹配的节点,则相应的以太网地址 会被写入良太阚帧营郝,数据报载糖灭到辕出酞列等待发送。如莱壹谗失效, a r p 会先保留待发送的i p 数据壤,然后广播一个诲闷耳的主枫硬件地址的缀 文,等收到回答后再将i p 数据报发送出去。 2 3 1 1 数据结构设计 a r p 蹇逮缓孬裘( i p 地耍、默太网遗蛙懿黢袋表) 设诗 在a r p 协议模块的设计中,a r p 高速缓存表怒眈较重要酌一块。在邋鲻 计算机系统中,a r p 商速缓存一般设计成双向数据链的形式,这样整个缓存 可以方便地动态增减。但是这种非线性存储的链袭式缓存结构,在进行表项暇 配查援辩魄较费时,不逡合矮于嵌入式系统。本论文中采鬟了线瞧数缝形式浆 a r p 缓存结构,不间于链表结构酌是它在内存中建连续线性存储的,查找速 度较快。而且考虑到嵌入式应用中节点不是很多,即a r p 缓存容量无需太大, 所以我将a r p 高速缓存设计成固定大小。 淡下是a r p 褰遮缓存表璜戆数摆绩筏: t y p e d e f s t r e e t u n s i g n e dc h a rs t a t u s ;p 该袭颈的状态,指糸地址对是否有效吖 t m s i g n e di n tt t l ; 产生存瓣冁簟 u n s i g n e dc h a ri p a d r 4 ;产1 p 地址+ u n s i g n e dc h a rm a e a d r 6 ;+ 以太捌地址+ a r p t a b l e ; a r p 缓存表壹状态、生存器雩阉、p 缝篷、m a c 蘧缝4 个孛段缝或。状 态字段指示地琏对楚褥有效:0 无效,1 有效;生存时间用子a r p 缓存表酌激 化操作;i p 地址和m a c 地址字段保存网络i p 地 址和以太网地址的映射。 关于a r p 高速缓存表更新时的替换策略,本论文选择了一个简单的算法。 在选撵装替换静表瑗跨,蠡票存在失效懿表矮,粼簦换它,否剿逡释垮会最蹙 失效的寝项。当获得一个新的魄班对,首先应蠢找整个a r p 缓存区,如聚肖 西南交通大学硕士研究生学位论文第l3 页 相同的记录,则将该记录的n l 字段重新置为最大值。如果找不到相同的记录, 则看一下缓冲区中是否有已经失效的表项,这样的表项所占用的存储区可以看 作已经被释放,任何新的表项都可以占用。如果找不到已经失效的表项,则进 一步查找t t l 字段最接近0 的表项来供新表项替换。 2 a r p 数据报结构 t y p e d e f s t r u c t u n s i g n e di n th r d ; + 硬件类型,以太网为0 x 0 0 0 1 + u n s i g n e di n tp r o : + 协议类型,为0 x 0 8 0 0 + u n s i g n e dc h a rh l n ; + 物理地址长度2 0 x 0 6 + u n s i g n e dc h a rp i n ; + i p 地址长度= 0 x 0 4 + u n s i g n e di n to p ; + a r p 操作码:0 x 0 0 0 1 为请求,0 x 0 0 0 2 为应答,0 x 0 0 0 3 为反向地址请求,0 x 0 0 0 4 为反向地址应答。 + u n s i g n e dc h a rs t o a t 6 ; + 源以太网地址+ u n s i g n e dc h a rs i p 4 ; 产源i p 地址+ u n s i g n e dc h a rd m a c 6 ; 丰目的以太网地址+ u n s i g n e d c h a rd i p 4 1 ;牛目的i p 地址+ a r p k t ; 2 3 1 2a r p 协议函数设计 a r p) 发出 请求报文,输入参数是所一个待解析的i p 地址,r e q u e s t ( a r p 目的是获驭该i p 地址的以太网地址。通过两种方法可获取所需的地址对。首 先,在a r p 高速缓存表中查找与待解析的i p 地址相匹配的且有效的表项。若 找不到匹配的表项或该表项已经无效,则必须采用第二种办法:向网络广播一 个a r p 请求报文。a r p 请求报文的构造很简单,只需按a r p 数据报文结构 一一填充,然后发送该报文,并阻塞i p 数据报的发送,直到接收到a r p 应答 报文。 a r p p r o c e s s 0 函数负责接收a r p 报文。首先,对收到的a r p 报文进行分 析,看该报文为a r p 请求还是a r p 应答。若为a r p 请求,则调用a r pa r l s w e r 0 函数处理;若为a r p 应答,我们提取a r p 应答报文中的地址对,交给发出这 一请求的上层协议,并做出适当的标记解除对先前要发送的i p 数据报的阻塞。 最后是对a r p 高速缓存做出适当的更新。 a r pa n s w e r ( ) 函数则负责处理收到的a r p 请求报文。当收到一个a r p 请 求,a r pa n s w e r ( ) i n 数首先判断这是否是一个向本机发起的请求,如果不是, 则忽略该报文;如果是,则应立刻向对方回应个a r p 应答。因为收到的a r p 西南交通大举硕士研究嫩学位论文第14 页 请求报文包含了对方主机的l p 地址和m a c 地址,所以我们用单擐方式就可 以将a r p 应答羧文传送绘对方。至于应褡壤文选较麓擎,只要交换a r p 请求 报文地址内容,填写自己_ 的m a c 地址和很少的改动聪发送即可。之后,我们 还必须将对方主机的“i p 嫩址,以太网士呶址”对存入a r p 高速缓存。我们在 a r p 高速缓器中添加一条关于对方主枫的表项,这榉可以省去在将来本地主 毒凡蔫次自发感请求懿主橇发送请求报文。 定时器函数a r pt i m e r o 负责a r p 缀存表的定时避新。a r p 缓存表除了 在收到a r p 响应包和a r p 请求包时需要更新外,还需要定时更新。这主要是 考虑到网络上的其他主枫掰能会更换网卡,扶丽导致本枫的a r p 缓存表中存 在错误表矮。每一个薪热入a r p 缓存衰瓣表项都要将绷字瑗稿始纯嫒丈 壹。 以后,砌字段的操作就转交于a r pt i m e r ( ) 负责,每隔段时间减1 ,直至为 0 将s t a t u s 字段清0 ,表示该地址失效。 2 3 2 设诗实萤4 - a 静扫描嚣的实琥 为了验诋上述思想的正确性,本论文设计一个a r p 扫描器。 2 3 2 1 客户端程序设计 客户蜈程枣设诗愚籍燹瓣2 。6 ,箕中鸯3 点震要诞唆: 1 查询宵式实现数据帧的接收 对数据帧的接收采取周期查询的方式,累统将循环调用函数 r e c e i v e _ f r a m e 0 判断n i c 是否接收到新的数据帧。港收到新的数据帧,将 之存入菝菝浚缓滓区。 2 定时嚣调度算法 a r p 掴描器以及后面的许多程序都髅使用定时器调度。本着尽髓做到平 台无关性的原则,本设计使用了一个简单的定时器调殿簿法,它对操作系统的 俊毂蛙攫,j 、。 本设计中设置了一个蕊数t i m e o u t o ,应用不断稔焱定时器函数t i m e o u t o 是否超过设寇的时间,若越过则触发一个预先设定的攀件。 t i m e o u t ( ) 躏数有两个参数:第一个参数是指向一个变量的指针,该变量保 枣了舞热辩润,第二令参数蠓存了鞋移计数戆趣鼓肄阙。 在开始饿用计时器之前,必须用时阊0 调用t i m e o u t 0 ,这样做的辩的是让 在开始时间变量中写入当前时间。然后,以当前时间为计时起点,不断检查是 谱超过超时时间,若超过,趱数在开始时间变量中重麟写入当前时间,并返回 菲0 藿。 西南交潺太学硕士研究嫩学位论文第l5 页 程序殍始 读取命令杼参数( 配鹭文件,所扫描的地蟪范围) 读取配置文件,打辩粥卡驱动程序,嗣动a r p 缀存袭更新定时器 循环 、裂竺竺么 蹙磷麓时 是夕 对所据攒范围的一个舻媲蛙,程a r p 缀存表中餐找l p 魄址 退 稳骐瓤的且膏效戆袭疆 出 、_ 三三? 冀竺! ,彳 循 显示蟪壤砖囱鲻络广撩a r p 诸求报文 嚣 _ 弋芝二! ! ! f 是务 燮赫a r p 缓存袭 程 :寨禁乡7 其 序 它 包 不 结 辩发蹬请求熬繁捡藏蹙嚣发给本节患熬, 处 理柬 点发出削谨碰答若趱,剃显示其地皱瓣, 关闭网卡驱动程序 匿2 6a r p 扫描器客户端程序设计愿路 西南交通大学硕士研究生学位论文第16 页 3 两次发送a r p 请求报文时间间隔的设置 该时间间隔必须合理的设置,因为越冲请求是广播,大量的广播消息会 影响网络中所有节点的性能。在网络负载和扫描速度之间做一个折中,合理的 等待时间应该设为1 0 0 毫秒,这也是假设没有网络错误的情况下a r p 应答被 接收到的合理时间。 7 1 2 3 2 2 服务器端设计 和客户端程序不同,服务器端程序不必定时发送a i l p 请求报文,只要负 责接收a r p 请求报文并产生应答就可以了。因此,本设计服务器端的程序就 是客户端程序的一个截取。图2 6 的循环体中,将定时发送a r p 请求报文的 程序略去,从“判断帧接收缓冲区是否收到新帧”开始执行循环,并将该循环 的设计改为无限循环,即服务器端程序。 西南交通大学硕士研究生学位论文第l7 页 第3 章嵌入式lp 的设计实现 3 1 嵌入式ip 算法的简化 1 不实现路由功能 常规的实现要考虑较多的问题:协议必须具有通用性,无论是在网络中的 一台丰机,还是在连接不同网络的网关上都要能够运行。 由于本设计的设计目的是实现一个低端的嵌入式w e b 服务器应用,而不 是做嵌入式网关、路由器,所以在这里,经过一番仔细衡量以后,我决定考虑 裁掉其路由功能。有关路由的相关问题均可以不用考虑,一切都交由默认网关 去处理。这样做,可以简化t p 协议,节约嵌入式系统资源。 由于本设计不支持路由功能,所以不像路由器那样,必须接收目的i p 地 址与其自身不匹配的数据报,并使用与它自身的源i p 不同的地址发送数据报。 ( 1 ) 对于所接收的数据报 它只接收目的i p 地址与自身口地址相匹配的数据报。这样,不会接收到 来自陌生i p 的数据报,自然也就不像一个路由器那样必须缓存那些等待对其 目标地址进行解析的数据报。 ( 2 ) 对于所发送的数据报 由于本设计不提供路由功能,使输出数据报的选路工作变得非常简单。可 以分为两种情况:目的主机在本地子网:目的主机在本地子网之外。 我们可以通过本地子网掩码方便地区分这两部分网络。通过判断等式 ( ( d e s t i p n i o c i p ) l o c m a s k ) 一0 是否成立可以判断d e s t i p 是否在本地子网的i p 范围内。 当目的主机在本地网络时可阻直接发送数据包。当目的主机不在本地子网 内时,数据包将发往缺省网关,由缺省网关处理该数据报的选路工作。 2 不考虑存在多个网络接口的问题 本设计不考虑存在多个网络接口的情况,只支持一个以太网络接口,只接 收以太网数据帧。 3 减少最大分段的数量 对于大小超过网络硬件所允许的最大值( m t u ) 的数据报的发送。i p 有 简单的解决办法,即将这些数据报在传输时进行分段,然后在接收方进行重组。 但是分段重组会付出明显的性能代价,因为在把它们重新组装起来的时候会占 用大量的空间,可见用在嵌入式这样的小型系统中是一个不小的负担。 设想在嵌入式系统中,我们发送的数据报足够小,这样就能够忽略分段了, 西南交通大学硕士研究生学位论文第l8 页 可良大大遣篱讫饯疆,提高簸率。事实上,嚣瑟缀多嵌入式系统懿实现稷本不 支持任何分段和重组。 但怒不支持分段羹组的话,可能会出现下述情况:若不支持分段功能: 嵌入式系统必须小心羧剖数据报大小,使之足够小,能够直接通过隧络传输。 琶对予本设计上瑟打舞实臻静一些u d p 应甥来滋,需要传簸熬数疆量穗露还 是比较大,为了适应这种需要,看来需要设计分段功能。若不支持重组功能: 数据报在通过小m t u 网络的网关时会被分段,也就是说远程客户端发来的 个数据掇,最后到达零嵌入式系统融,可能已被中溺网络分段。如果我们无滋 娃理辩分片缒话,将无法薤蓬该请求,这撵褥会彩豌疆络豹器畦藿。 综上所述考虑两方面的原因做个折中,本设计将支持两个分段。 4 忽略j p 服务类裂字段的处瑷
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮分析测试题及答案
- 彩螺服饰测试题及答案
- 针灸学治疗考试试题及答案
- 沿海三副考试试题及答案
- 航海操作考试题及答案
- 2025年甘肃省委宣传部直属事业单位选聘考试试题(含答案)
- 2024年中西医结合临床执业医师卫生资格定期考核题库(附含答案)
- 北京消防培训知识课件
- 护理查房复习试题及答案
- 传染病及突发公共卫生事件培训测试题(附答案)
- 2018年山东中考语文现代文之说明文阅读10篇
- 本科病理生理学期末考试试卷 2023
- (中职) 化学分析技术11项目十一化学需氧量的测定教学课件
- GB/T 9871-2008硫化橡胶或热塑性橡胶老化性能的测定拉伸应力松弛试验
- GB/T 26480-2011阀门的检验和试验
- GB/T 19861-2005丙烯酸系阴离子交换树脂强碱基团、弱碱基团和弱酸基团交换容量测定方法
- GB/T 11085-1989散装液态石油产品损耗
- GB 30000.3-2013化学品分类和标签规范第3部分:易燃气体
- (完整版)沪教牛津版小学一至六年级英语单词汇总(最新)
- JJF 1587-2016 数字多用表校准规范-(高清现行)
- 完整课件-西方经济学下册(第二版)
评论
0/150
提交评论