(计算机科学与技术专业论文)ucosⅡ下tcpip协议栈研究与实现.pdf_第1页
(计算机科学与技术专业论文)ucosⅡ下tcpip协议栈研究与实现.pdf_第2页
(计算机科学与技术专业论文)ucosⅡ下tcpip协议栈研究与实现.pdf_第3页
(计算机科学与技术专业论文)ucosⅡ下tcpip协议栈研究与实现.pdf_第4页
(计算机科学与技术专业论文)ucosⅡ下tcpip协议栈研究与实现.pdf_第5页
已阅读5页,还剩81页未读 继续免费阅读

(计算机科学与技术专业论文)ucosⅡ下tcpip协议栈研究与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西北工业火学诧锺j 学位论文摘要 摘要 随着计算机系统在工业控制领域的广泛应用和发展,嵌入式计算机系统在工 控领域的应用也显示出其无可比拟的优势和良好的发展前景。本文根据实际工程 项目需要,对嵌入式实时操作系统u c o si i 操作系统加入了t c p i p 协议实现, 并提出了基于8 0 x 8 6 嵌入式系统的整体框架和解决方案,并着重讨论了网卡驱动 程序设计、t c p i p 协议相关协议的设计与整合等。 u c o si i 的移植主要针对8 0 x 8 6 平台;t c p i p 协议的设计以嵌入式系统特 点和实际工程应用需求为依据,在参考其它t c p i p 实现的基础上进行简化,并 与u c o si i 实现整合;为方便第三方用户使用,对底层a p i 进行进一步封装, 提供符合伯克利套接字风格的应用程序接口。 测试结果表明:在u c o si i 操作系统上已可以实现基本的t c p i p 协议,并 通过了通讯测试,具有良好的稳定性和移植性,达到了设计目标;同时为进一步 移植到单片机系统提供了较好的技术基础。 关键词:嵌入式系统 驱动程序 u c o si it c p 佃通信协议 工业控制 西北工业火学颂l 学位论史a b s t r a c t a b s t r a c t w i t ht h ea p p l i c a t i o na n dd e v e l o p m e n to fc o m p u t e rs y s t e mi nt h ea r e ao fi n d u s t r i a l c o n t r o ls y s t e m ,e m b e d d e dc o m p u t e rs y s t e ms h o w si t sa d v a n t a g ea n dp r o m i s i n g a p p l i c a t i o np r o s p e c t a c c o r d i n gt ot h ea c t u a ld e m a n d s ,t h i sp a p e rp r e s e n t st h e i m p l e m e n to ft c p i pp r o t o c o lf o ru c o si io p e r a t i n gs y s t e m ,a n di n d i c a t e st h e a r c h i t e c t u r ea n dt e c h n i q u eo ft h ei m p l e m e n tf o re m b e d d e ds y s t e mb a s e do n8 0 x 8 6 s e r i e s t h ed e s i g n i n go fn e t w o r kc a r dd r i v e ra n dc o m b i n gc o r r e l a t ep r o t o c o l sa l e e m p h a s i z e di nt h i sp a p e l t h ep o r t i n go fu c o si ia i m sa t8 0 x 8 6s e r i e sp l a t f o r m t h ec h a r a c t e r i s t i c so f e m b e d d e ds y s t e ma n dt h ea c t u a ld e m a n d sa l et h et w ob a s e sw h e nd e s i g n i n gt c p i p p r o t o c 0 1 i no r d e rt oc o m b i n et h ep r o t o c o lw i t hu c o si io p e r a t i n gs y s t e m ,m a n y u n n e c e s s a r yf u n c t i o n sa r ec u to u tr e l a t i v et oo t h e ri m p l e m e n to f t c p i pp r o t o c 0 1 t h e r a wa p ii sp a c k g e di nt h es y l eo fb e r k e l e ys o c k e ta p if o rt h ec o n v e n i e n c eo f 出i r d - p a r t yc u s t o m e l t h et e s t i n gr e s u l ts h o w st h a tt h eb a s i cf u n c t i o n so ft c p i pp r o t o c o lc a nw o r kv e r y w e l l t h es t a b i l i t ya n dt r a n s p l a n ta r ef a v o u r a b l e t h ep r o j e c tp r o v i d e st e c h n o l o g y f o u n d a t i o nf o ri n d u s t r i a le n g i n e e rt op o r t i n gt h ep r o t o c o lo ns i n g l e c h i pp l a t f o r m k e y w o r d s :e m b e d d e ds y s t e m d r i v e ra p p l i c a t i o n u c o si i t c p i pc o m m u n i c a t i o np r o t o c o l i n d u s t r i a lc o n t r o l 西北工业大学硕士学位论文第1 章绪论 第1 章绪论 本章介绍了u c o si i 操作系统及嵌入式t c p i p 协议的特点和优越性及其 发展前景,并概述了研究目的、主要研究内容和系统的性能指标等,并阐述了 所做的主要研究工作。 1 1u c o s 与嵌入式t c p i p 协议的发展状况 1 1 1u c o s | i 操作系统的特点和国内外发展概况 嵌入式操作系统u c o si i 是一个公开源代码的占先式多任务的微内核 r t o s ,其性能和安全性可以与许多高端商业软件产品相媲美,在某些性能上甚 至比它们还要好。 u c o si i 的特点可以概括为以下几个方面: 1 ) 公开源代码 u c o si i 所有的源代码都是公开的,代码结构清晰、明了,注释详尽, 组织有条理;用户可以通过对源代码的阅读,更好地理解和使用各项功能。 2 ) 可移植性好 源码大部分是用移植性很强的a n s ic 编写,与微处理器硬件相关的部 分是用汇编语言编写的。汇编语言编写部分已经压到最低限度,以便移植 到其他处理器上。 3 ) 可裁剪 用户可以根据要开发产品的功能对u c o si i 提供的多种功能进行剪 裁,以减少产品所需的存储器空间。 4 ) 可固化 只要具备合适的系列软件工具( 编译、链接、下载固化) ,就可以将 u c o si i 嵌入到产品中。 5 ) 可剥夺性 u c o si i 是完全可剥夺型的实时内核,它总是运行就需条件下优先级 l 西北工业大学硕士学位论文 第1 章绪论 最高的任务。大多数商业软件也是可剥夺型的,u c o si i 在性能上与它们 类似。 6 ) 多任务 u c o si i 可以管理6 4 个任务,用户应用程序最多可以创建5 6 个任务。 这些任务的优先级必须是不相同的,因为内核对任务调度是以优先级为参 考的,不支持时间片轮转调度法。 7 ) 完善的系统服务 u c o si i 提供很多系统服务,如信号量、互斥信号量、时间标志、消 息邮箱、消息队列、信号量、内存申请与释放及时间管理函数等。 8 ) 稳定性和可靠性 u c o si i 是基于u c o s 的,u c o s 自1 9 9 2 年以来已经有数百个商业应 用,实践表明u c o s 系统具有很好的稳定性和可靠性。u c o si i 与u c o s 是相同的内核,只是提供了更多的功能。在2 0 0 0 年7 月,u c o si i 在一 个航空项目中得到了美国联邦航空管理局( f e d e r a la v i a t i o n a d m i n i s t r a t i o n ) 对用于商用飞机的、符合r t c ad o - 1 7 8 b 标准的认证,这 一结论也表明,u c o si i 具有足够的安全性和稳定性。 通过上述特点可以看出,u c o si i 是非常适用嵌入式系统开发使用的。目 前u c o s 和u c o si i 已经被移植到4 0 多种不同的c p u 上,包括8 位、1 6 位、 3 2 位以至6 4 位微处理器、微控制器及数字信号处理器( d s p ) 等。国内外已有数 千人在各个领域中使用u c o s 和u c o si i ,这些领域包括:照相机行业、航空 业、高端音响、医疗器械、电子乐器、网络设备、自动提款机及工业机器人等。 1 ,1 2 嵌入式t o p l p 协议栈现状 t c p i p 协议栈的实现有较多版本,但大都是实现较为完善、体积过于庞大, 不利于移植到u c 0 si i 下。经过比较分析,确定l w i p 是比较合适的移植对象。 l w l p 是瑞典计算机科学院( s w e d i s hi n s t i t u t eo fc o m p u t e rs c i e n c e ) 的 a d a md u n k e l s 等开发的一套用于嵌入式系统的开放源代码t c p i p 协议栈。l w i p 的含义是l i g h tw e i g h t ( 轻型) i p 协议。l w i pt c p i p 实现的重点是在保持t c p 协议主要功能的基础上减少对r a m 的占用,般它只需要几十k 的r a m 和4 0 k 2 西北工业大学硕士学位论文第1 章绪论 左右的r o m 就可以运行,所以l w i p 协议栈很适合在低端嵌入式系统中使用。 1 2 在u c o si i 上实现t c p i p 协议目的和意义 1 2 1 分布式工控系统现状 工业测控系统主要用于对工业生产过程中关键流程的各类关键信号及时进 行采集和控制,并把相关信息直观地反映给操作人员,从而大大提高生产效率。 而工业生产现场通常个采集信号都较为分散,分布距离从几米到几公里都有可 能,而目前较为常见的分布式信号采集系统通常采用的联网方式主要有l o n 总 线、c a n 总线、以太网和r s 4 8 5 总线等,这几种总线各有优缺点,下面就其特点 作一比较。 1 ) l o n w o r k s 技术是美国e c h e l o n 公司于1 9 9 0 年1 2 月为支持l o n 总线推 出的全分布式智能控制网络技术,各节点地位均等,无主节点,其通信 速率从3 0 0 b p s 至1 5 m b p s 不等,直接通信距离可达2 7 0 0 m ,支持双绞 线、同轴电缆、光纤、射频等多种通信介质,走线简单,通信可靠性高, 目前已广泛地应用在工业、楼宇、能源等领域。但相对于其它总线( c a n 总线,r s 4 8 5 总线) 来说,l o n 总线应用价格比较高。 2 ) c a n 即控制器局域网络,最初是由德国b o s c h 公司专为汽车监测、控制 系统而设计的。c a n 为多主方式工作,网络上任一节点均可在任意时刻 主动地向网络上其他节点发送信息,而不分主从。但当有多个节点同时 向总线发送信息时,不能同时进行,而是采用优先级较低的节点主动退 出发送、最高优先级的节点继续发送的方式进行。由于c a n 总线的速度 比较快,可靠性比较好,其应用范围己扩展到纺织机械、机器人、数控 机床、医疗器械等领域。 3 ) r s 4 8 5 总线是一种国际性的开放式的现场总线标准,网络拓扑结构通常 采用总线方式,各节点公用一条通信链路,多机通讯需要按照一主多从 方式进行( 这一点与c a n 总线类似) 。由于4 8 5 总线的速度比较快,可 靠性好,价格便宜,已广泛地应用在工业、楼宇、能源、数控机床、医 疗器械等领域。 西北工业大学硕士学位论文第1 章绪论 4 ) 以太网则是当前主流的网络信息传输媒体,也是t c p i p 使用最普遍的 物理网络。t c p i p ( 传输控制协议网络协议) 是一个工业标准的协议 集,包括i p 、t c p 、u d p 等子协议,保证数据在网络上的正确传输。以 太网中各节点可以同时工作在全双工方式,网速可达l o o m b s 。以前以 太网存在的不确定性和实时性能欠佳的问题,在引入智能集线器的使 用、主动切换功能的实现、优先权的引入以及双工的布线等措施后基本 上得到了解决。目前以太网在工控、自动化等领域已经获得广泛应用。 通过以上比较可以看出,l o n 总线性能较好,但价格较高:c a n 总线和r s 4 8 5 总线在本质上都是半双工方式,每个节点要联入网络都需要增加对应适配器。 其中r s 4 8 5 速度相对较慢,组网时需要在一台( 或多台) 主机控制下才能实现 多机通讯,这也使得主机软件的开发难度大大增加。 以太网与前几种总线相比具有性价比高、通信速度快、各节点无主次之分 可全部工作在全双工方式等优势。另外,以太网对于工控厂商而言还具有以下 几项优势: 1 ) s o c k e t 通信对于大多软件技术人员都较为熟悉,开发难度低,厂商的开 发成本也相应降低。 2 ) 对基于s o c k e t 通信的工程进行移植将非常容易。 3 ) 大多数c p u 模块都带有集成n e 2 0 0 0 兼容的以太网控制器,无需增加转 接器:如常见的p c i 0 4 、d i m m p c 、s i n g l eb o a r dc o m p u t e r s 、c o m p a c tp c 等:即使是低端单片机系统也可以通过增加以太网控制芯片的方式实现 联网。 目前,各类测控设备都在向着低功耗、体积小、操作简单、携带方便等方 面发展,以前的便携式、台式或柜式更是不能适应外场检测需求,因此嵌入式 系统以其低功耗、体积小等优点受到越来越多厂商的关注,而嵌入式系统的联 网方式也就成了许多厂商的重点研究内容。 1 2 2u c o si i 实现t o p l p 协议的优越性 u c o si i 操作系统与其它常见的嵌入式系统相比,如w i n c e 、v x w o r k s 、p s o s 等,除u c o si i 自身的特点外,还因为对系统硬件资源需求非常低,可以在许 西北工业大学硕士学位论文 第1 章绪论 多低端处理器甚至是8 位单片机系统上运行,从而有效降低采集节点成本。这 些特点是许多常见商用操作系统都不具备的。而且u c o si i 开放源代码,开发 授权费用低廉,这些优势也使其更适合嵌入式工控设备开发。 1 2 一研究目的和意义 本论文的研究目的是在以i n t e l8 0 x 8 6 为c p u 的计算机系统上实现一个轻 量级t c p i p 实现,该实现可以方便地应用到以p c i 0 4 、d i m m - p c 或c o m p a c tp c 等模块为核心的分布式测控系统中的下位机上。 本论文所进行的研究可以作为以后在更低层次处理器( 如8 位单片机) 上 实现t c p i p 通信的技术基础。 1 3 论文主要工作 本论文针对现有的一块p c 一1 0 4 结构i n t e l 8 0 3 8 6c p u 板进行设计,主板板 载4 m 内存,集成显卡和网卡,1 个r s 2 3 2 ,一个r s 2 3 2 r s 4 8 5 ,存储介质为1 6 md o c , 板载网卡为与n e 2 0 0 0 兼容的r t l s o l 9 a s 。 本论文完成如下工作: 1 ) u c o si i 操作系统分析:在深入理解操作系统运转机理的基础上,充分 利用系统提供的各类服务,包括操作系统的任务调度、同步与通信等机 制等,设计相关任务和数据结构,为实现t c p i p 协议提供系统及支持。 2 ) r f c 相关文档的学习与理解:r f c 文档是t c p i p 协议的最权威描述,因 此在设计各协议实现时都需要以r f c 文档作为参考。不过鉴于本文讨论 的t c p i p 实现是针对嵌入式系统的,有些部分在设计时必须进行取舍, 所以在功能实现上不一定完全满足r f c 文档规定。 3 ) t c p i p 协议的实现:根据实际需求确定要实现的协议功能。通过对其他 t c p i p 协议实现的相关文档和代码的熟悉,设计相应部分的结构和流 程,并最终完成代码实现,并实现与u c o si i 操作系统的结合。 4 ) 网络接口驱动程序:u c o si i 操作系统本身并不提供网络接口驱动程序, 这部分需要参考其它操作系统驱动程序和接口芯片的数据手册进行设 5 西北工业大学硕士学位论文 第l 章绪论 计。根据实际工程应用,接口芯片r t l 8 0 1 9 a s 。 5 ) 设计与b e r k e l e y 套接字接口兼容的编程接口:为方便用户使用,对底 层接口函数进行进一步封装,使其与b e r k e l e y 套接字兼容。 西北工业大学硕士学位论文 第2 章u c j o s i i 系统分析与移植 第2 章u c o si i 系统分析与移植 本章对u c o si i 操作系统进行分析。本论文中使用u c o si i 操作系统版 本号为v 2 5 2 。 2 1u c o s 操作系统概述 u c o si i 是可剥夺型实时内核,它的性能并不亚于商业级r t o s ,不过商业 级软件通常都提供了包括编程、调试和下载等功能的完整的开发包,u c o s1 1 只是一个提供源代码的操作系统。它的开发环境目前在p c 平台上可以采用 b o r l a n dc c + + 3 1 1 或4 5 版本,下载则需要用到与存储介质配套的工具如编 程器。u c o si i 还可以在d o s 下运行,即系统先由d o s 启动,然后运行嵌入了 u c o si i 的应用程序,这一点与微软的w i n d o w s c e 类似。 u c o si i 主要是针对嵌入式应用,用户可以对它进行移植、裁剪和固化。 为了减小操作系统内核所占体积,用户可以根据实际使用情况来决定编译那些 部分,内核的目标代码可以裁减到1 5 k 。 u c o si i 是一个多任务实时操作系统,任务是系统执行和调度的基本单位。 这里的任务与其它操作系统中描述的进程基本类似。系统可以管理约6 0 个用户 任务,每个任务都有自己的栈空间,用户任务越多,需要到r a m 就越大。 任务设计为五种状态:睡眠状态、就绪状态、等待状态、运行状态和中断 服务状态。各状态之间的关系和转换途径如图2 1 所示。 任务的调度采用可剥夺式优先级调度。任务的优先级在任务创建时指定, 当任务运行时还可以通过o s t a s k c h a n g e p r i o0 函数进行修改。 u c o si i 总是运行进入就绪态任务中优先级最高的任务。就绪态的任务都 保存在o s r d y t b l 结构中,任务优先级的判定由调度函数o s s c h e d ( ) 确定。当 调度函数发现有更重要的任务需要运行,就通过调用函数o st a s ks w 0 实现任 务切换。 多任务系统中不可避免会出现任务同步问题。u c o si i 提供了信号量和互 西北工业大学硕士学位论文 第2 章u c o s i i 系统分析与移植 斥型信号量为任务同步提供支持。信号量和互斥量都提供- y 仓, j 建、删除、获取、 释放和查询等操作。 为方便多任务之间进行通信,u c o si i 提供了消息邮箱和消息队列。消息 邮箱和消息队列都提供了创建、删除、等待消息、发送消息、获取消息和查询 状态等操作;其中发送消息都可以发送广播消息。消息队列还提供了清空消息 方法。 图2 一l 任务状态迁移图 内存管理是操作系统的重要组成部分。嵌入式操作系统由于其硬件资源的 特殊性,通常不能频繁使用r e a l l o c 0 、f r e e 0 ;因为多次调用这两个函数,会 把原来很大的一块连续内存逐渐分割成许多非常小且彼此不相邻的内存块,即 内存碎片,而嵌入式操作系统通常也不会设计复杂的内存回收办法避免出现内 存碎片。为了简化内存管理,在u c o si i 中采用把连续的大块内存按分区来管 理的方式,每个分区包含整数个大小相同的内存块,如图2 2 所示。 当应用程序需要分配内存时,就从最接近的内存分区上取下一块;使用完 后再整块归还,这样就避免了内存碎片的出现,也简化了内存分配和回收过程。 u c o si i 还提供了时间管理、事件控制块和事件标志组等机制方便用户丌 8 西北工业大学硕士学位论文 第2 章u c o s i i 系统分析与移植 发使用。 图2 - 2 多个内存分区 2 2u c o s 文件结构与硬件关系 u c o si i 在设计时就充分考虑了可移植性。为方便移植,大部分代码是用 c 语言编写的。但由于读写处理器寄存器时,只能通过汇编语言访问,这些与处 理器硬件相关的代码都放在o s z c p u h 、o s c p u a a s m 和o s c p u c c 三个文件 中;而其它代码则与硬件无关,移植时不需要处理。u c o si i 文件结构与硬件 关系如图2 - 3 所示。 其中互斥量功能和事件标志功能是u c o si iv 2 5 2 版新增内容,这两项 功能的引入也使得操作系统更为完善,系统设计更为方便。 2 3 系统的调度时机 应用程序在系统进行调度时可能需要执行一些操作,所以对系统得调度时 机作一归纳。 系统的调度函数有三个:o s s c h e d ( ) 、o s i n t c t x s w ( ) 和o s i n t e x t ( ) 。 根据系统提供各部分调用关系,总结出系统调度时机如下: 1 ) 创建或删除任务时。 2 ) 挂起或恢复任务时。 3 ) 改变任务优先级时。 4 ) 使任务延时或恢复延时时。 9 西北工业大学硕士学位论文 第2 章u c o s l l 系统分析与移植 5 ) 发送或接收信号量或消息时。 6 ) 给调度任务开锁时。 7 ) 中断返回时。 u c o si i ( 与处理器无关代码) o sc o r e c o sf l a g c o sm b o x c o sm e m c o s m u t e x c o sq c o ss 既c o st 矗s k c o st i m e c u c o si i c 软件 硬件 图2 - 3u c o si i 文件结构与硬件关系 2 4u c o s 在8 0 x 8 6 上的移植 如前所述,与处理器硬件相关的代码都放在0 s - c p u h ,o s c p u a a s m 和 o sc p uc c 三个文件中,根据现有板卡,c p u 为i n t e l 8 0 3 8 6 ,需要修改这三个 文件以使其运行在8 0 x 8 6 处理器上。 由于在8 0 x 8 6 处理器上的移植工作已经有范例,本文就不再赘述。 1 0 西北工业大学硕士学位论文 第3 章嵌入式t c p i p 协议总体设计 第3 章嵌入式t c p i p 协议总体设计 本章从工程应用的角度出发,对嵌入式t c p i p 协议需要实现的功能进行了 分析,并给出系统的总体设计说明。为便于说明,后面简称嵌入式t c p i p 扔议 为u t c p 协议。u c ,o si i 系统把程序的执行体称为任务,而通常习惯上都称之为 进程,所以本文后面章节都使用进程来进行描述。 3 1 实际需求分析 t c p i p 协议通常分为四层:链路层、网络层、传输层和应用层。本文要实 现的u t c p 协议是为了在分布式工控系统中实现各下位机节点t c p i p 通讯,通 讯的内容主要是采集信息和控制命令等。本着实用的原则,对各层要实现的功 能进行分析: 1 ) 链路层 链路层主要负责把要发送的数据可靠的进行传输,把收到的有 效数据向网络层传递;对软件设计就是实现网卡的驱动程序。 2 ) 网络层 i p 是网络层的主要协议,同时还包含a r p 、r a r p 、i c m p 和i g m p 四个辅助协议。 其中r a r p 逆地址解析协议是为无盘工作站或动态分配i p 地址 所设计,在采集控制系统中各节点的i p 地址通常都是预先指定的, 因此这部分就不予实现。 i g m p 因特网组报文协议用来实现组播通信,这在嵌入式采集控 制系统中的优势并不突出。因为要实现组的管理,需要保存分组信 息,而且在判断报文接收者地址时,还需遍历本地分组信息。即使 确实需要进行分组通信也可以通过应用程序层予以实现,所以本着 节省资源得目的,i g m p 协议也不予实现。 a r p 地址解析协议实现了网卡m a c 地址到i p 地址的映射,i c m p 西北工业大学硕士学位论文 第3 章嵌入式t c p i p 协议总体设计 网间控制报文协议用于控制网络传输中出现的各种问题,这两个协 议都是本文需要研究的。 3 ) 传输层 传输层包括两个协议:t c p 和u d p 。这两个协议是u t c p 协议研 究的核心部分。对于u d p 协议,因为i p 层取消了i g m p 协议的实现, 而i g m p 是u d p 协议组播功能实现的重要条件,所以在实现u d p 协议 时就取消了组播功能的实现。 4 ) 应用层 应用层包括s m t p 、t e l n e t 、f t p 、h t t p 、n f s 等协议,这些协议 在嵌入式采集控制系统中的应用较少,且较占用资源,因此不予实 现。 另外,通常t c p i p 协议都支持多个网络接口的通信,但在工控系统中实现 各节点通常只会使用一个网络接口,上位机或主控机才有可能使用一个以上网 络接口。上位机或主控机通常还要负责与用户的交互操作、采集信息的控制分 析以及数据库的访问等,所以都会采用带有图形界面和已包含t c p i p 协议实现 的操作系统进行设计,如w i n d o w s 操作系统:所以在实现u t c p 协议时,只考虑 设计单网络接口。 3 2 系统基本框架设计 根据操作系统与应用程序、u t c p 协议、网络接口对象的关系,可以确定系 统的基本框架应该是以操作系统为核心,向上为应用程序提供系统调用,向下 与u t c p 协议及网络接口紧密结合:u t c p 通过网络接口对象进行收发数据。操作 系统为其它部分提供对主机时钟、端口、内存及显示等资源的访问支持,网络 接口对象通过驱动程序与网卡进行输入输出操作。所以确定基本框架如图3 - 1 所示。 网络数据流按照如图3 - 2 所示流程进行传送:对于发送数据,应用程序先 创建t c p 或u d p 接口,提交待发送的数据,数据按照t c p 或u d p 进行封装,再 传入i p 过程;i p 对数据包添加帧头后封装成i p 数据包,然后根据路由表为i p 西北工业大学硕士学位论文 第3 章嵌入式t c p i p 协议总体设计 数据包确定路由;若找不到路由,则通过i c m p 过程发送出错报文;若找到路由 则将i p 数据包传递给驱动程序;驱动程序通过a r p 协议把目的i p 地址对应到 物理地址,并封装成以太网帧,最后由网络接i z i 对象通过驱动程序控制网络接 e l 芯片把数据包发送出去。 图3 - 1 系统基本框架 对于接收数据,网络接口对象把驱动程序收到的有效的数据包根据包类型 传递给a r p 或是i p 过程:若是a r p 或i c m p 数据包,则进行相应处理后结束( 根 据需要可能会产生应答数据包) ;若是其它数据包,在i p 过程先判断是否是一 个完整的数据包,并检查端口号是否与本地应用t c p 或u d p 接收端口一致,若 不一致则通过i c m p 过程发送端口不可达报文,若一致则把有用数据交给t c p 或 u d p 接口,最后到达应用程序j 3 3 进程模型的确定 所谓进程模型就是指协议的实现是如何分解到不同进程中去。通常对 t c p i p 协议的实现采用多进程模型的方式。即协议功能严格分成若干层,每一 层协议都集中在一个进程中实现。这种模型的优势就是可以在运行时动态增添 协议,而且对代码的阅读和调试想对比较容易一些;但这种模型的缺点也是显 西北工业大学硕士学位论文 第3 章嵌入式t c p i p 协议总体设计 而易见的,数据在各层协议之间传递时,不可避免地会引起多次进程切换。比 如接收到一个t c p 消息包,先是从链路层的网卡驱动程序,传递到网络层的i p 过程,然后再送到t c p 进程,最后才- 到达应用层程序。对于大部分特别是嵌入 式操作系统,进程的切换还是相当耗时的。 图3 2u t c p 数据流图 另一种进程模型单一进程模型,即把各层协议集中在一个进程中实现。这 样做的好处是避免了进程切换,但对协议的增删必须在编译期间就定好,一旦 编译完成就不能再修改。应用程序可以与通讯协议进程集成在一起,也可以单 独作为一个进程。与通讯协议集成在一起可以直接使用接口函数和参数进行数 据传递;应用程序单独作为一个进程,可以使用共享内存或其它数据结构方式 进行数据传递,只是这时必须采用信号量或其它同步手段互斥地访问共享数据。 由此可见,后一种进程模型是非常适合嵌入式t c p i p 协议设计。因此,u t c p 1 4 西北工业大学硕士学位论文 第3 章嵌入式3 x :p i p 协议总体设计 协议采用单一进程模型。 3 4u t c p 与应用程序的结合方式 u t c p 按照单一进程设计,用户程序可以采用两种方式与u t c p 结合: 1 ) 独立进程方式 这种方式下,应用程序与u t c p 各自在不同进程中运行。这时必须设置 缓冲区以实现两个进程间数据交换,缓冲区的通知方式可以采用u c o si i 提供的邮箱机制。 2 ) 与u t c p 同一进程方式 当用户程序与u t c p 进程结合在一起设计时,两者都在一个进程中执行, 当进行收发数据时总是根据需要直接处理,没有必要在使用缓冲区。为了 提高方便有效的通信手段,可以采用回调函数方式进行数据交换和事件通 知,从而避免了进程间通信带来的延时。 用户在使用u t c p 协议进行设计时,不局限于某一种方式,可以根据需要采 用适合的方式进行设计。当数据量大且对时间特性不是非常敏感时可以采用独 立进程方式,反之可以采用第二种方式。 3 5 数据缓冲区结构总体设计 通常t c p i p 协议的实现是分层实现,每层协议都设计为线程或进程,当网 络接口收到数据需要向上传递或应用程序要向通过网络接口发送数据包时,必 须先放到缓冲中,然后收发双方按照预定缓冲结构进行处理。缓冲区通常可以 使用可动态增减但有长度限制的f i f o 单向链表结构或指定大小的循环缓冲结 构。 为了便于实现,在u t c p 中采用循环缓冲方式,循环缓冲的实现采用静态数 组结构。为避免u t c p 占用过多内存资源,并导致应用程序和操作系统执行效率 低下,设计了宏定义# d e f i n em a x r c v b u f l e n 和# d e f i n em a x _ s e n d b u f l e n 。 m a x r c v b u f l e n 和m a x _ s e n d b u f _ i 。e n 默认值都定为5 。 西北工业大学硕士学位论文第3 章嵌入式t c p i p 协议总体设计 t c p i p 协议中收发的数据包需要在各层之间传递,从底层向高层传递时会 逐层去掉相应的报文头部,反方向则是逐层增加报文头部。按照通常的实现, 每次增加或去除头部时,都采用申请新的内存块以适应要生成的数据包大小, 这个过程不可避免会带来频繁的内存申请、释放和内存拷贝,这对于嵌入式系 统是非常不利的。嵌入式系统通常都是运行在低端硬件平台,处理能力通常都 不是很强,因此要尽量减少无谓的操作,并尽量简化操作以提高处理能力。为 此,在设计缓冲区结构时,采用零拷贝的方式。所谓零拷贝就是数据包不论是 从底层传到高层还是反方向传送,都只申请一次内存,增加或去除头部数据时 都在同一块内存中操作。 3 6 与操作系统的接口总体设计 u t c p 协议的实现需要用到u c 0 si i 操作系统提供必要的系统功能,主要包 括以下3 部分: 1 ) 定时器 定时器主要用在t c p 通讯时的超时控制。u c o si i 本身只提供了延时 机制,没有象w i n d o w s 平台下形如s e t t i m e r 之类接口,这就需要在时钟中 断结束后进行手工处理;由于t c p 协议需要不止一个定时器,为便于管理, 把这些定时器采用链表形式连起来,同时按照超时时刻的先后排序,这样 在处理时只需要从最前面的节点向后检查,一旦查到比当前时刻靠后的节 点就可以不再继续。 2 ) 同步信号 同步信号用来设计对共享资源的访r = 7 控制。u c 0 si i 中提供了信号量 机制,所以在设计u t c p 时可以方便地使用信号量实现对共享数据的互斥访 问。 3 ) 进程通信机制 当用户程序采用独立进程方式设计时,需要在不同进程间进行数据传 递。u c o si i 中提供了邮箱机制,可以方便地实现不同进程问数据交换, 所以设计u t c p 与用户程序通信时采用邮箱方式。 西北工业大学硕士学位论文第3 章嵌入式t c p i p 协议总体设计 3 7 网络接口对象总体设计 为便于u t c p 协议修改和移植到其它网络接口芯片,对协议中用到的网络接 口相关函数或数据结构单独封装到一起,本文中称之为网络接口对象。这部分 并不是网络接口驱动程序的实现,而是对网络接口进行抽象,同时包含了部分 控制逻辑,比如根据数据报类型调用相应处理模块。这样实现使得u t c p 协议实 现与网络接口驱动程序实现分离,从而便于在不同网络接口芯片上进行移植。 参考相关t c p i p 设计实现,并根据u t c p 协议特点,定义了如下网络接口 对象结构。 s t r u c tn e t i f s t r u c ti p _ a d d ri p _ a d d r :网卡i p 地址 s t r u c ti p _ a d d rn e t m a s k :网卡子网掩码 s t r u c te t ha d d rh wa d d r :网卡物理地址 i n t l 6 ub a s ea d d r :网卡i o 操作基地址 i n t 8 ui r q _ i n d e x :n 卡中断号 i n t 8 u ( i n i t ) ( i n t l 6 ua d d r ,i n t 8 ui r q ) :网卡初始化 v o i d ( i n p u t ) ( ) : 收到数据 i n t 8 u ( 丰o u t p u t ) ( s t r u c td a t a b u f n o d e 木p ,发出数据 s t r u c ti p a d d r * d e s t i p ) : i n t l 6 um t u :最大传输单元 i n t 8 us t a t e :网卡当前状态 l : 其中s t r u c ti p _ a d d r 和s t r u c te t h a d d r 定义如下: s t r u c ti p a d d r i n t 8 ua d d r 4 :分别存放i p 地址中的4 个数字 ) : s t r u c te t h a d d r i n t 8 ua d d r 6 :分别存放物理地址中的6 个数字 ) : 西北工业大学硕士学位论文 第3 章嵌入式t c p i p 协议总体设计 本网络接口定义相对于其它操作系统下网卡驱动程序提供的接口定义相对 要简单得多,比如不考虑多网卡的情况,网络接口的名称,发送数据和接收数 据输入参数都不包含网卡对象指针等;因为这些特征在u t c p 协议的设计目标中 并不重要。去掉这些也不影响u t c p 协议功能的实现。 两北工业大学硕士学位论文 第4 章网络接口驱动程序设计与实现 第4 章网络接口驱动程序设计与实现 本章对网络接口设备在u c o si i 下的驱动程序设计进行说明。u t c p 协议中 网络接口对象只是规定了网络设备驱动的抽象描述,这一章介绍的是驱动程序 的设计与具体实现。如果使u t c p 运行在其它网络接口设备上,只需要修改这部 分驱动程序而不必修改网络接口对象的定义。 4 1 接口芯片工作原理 本系统使用r t l 8 0 1 9 a s 芯片实现网络接口。 r t l 8 0 1 9 a s 是台湾r e a l t e k 公司生产的高集成度以太网控制其芯片,它集 成了介质访问控制子层( m a c ) 和物理层的功能,可以方便地应用在基于i s a 总 线系统或单片机系统。另外,它还具有与n e 2 0 0 0 兼容、软件移植性好以及价格 低廉等优点。 r t l 8 0 1 9 a s 采用内部集成的1 6 k 双口r a m 实现芯片与主机之间的数据交换。 为了实现全双工工作,芯片内部设计了本地d m a 和远程d m a 两个控制器。 所谓“本地”是指8 0 1 9 硬件收发电路侧,“远程”是指主机与芯片接口这 一侧。而这里的d m a 与通常意义上的直接内存访问控制器也是不同的。本地d m a 可以由芯片控制器本身完成数据的操作;远程d m a 并不能自动把数据移到主机 内存中,丽是需要主机给出起始地址和长度,在对r a m 进行读操作。与普通r a m 操作不同,每操作一次r a m 地址会自动加一,不需要手工再修改r a m 地址。 当主机需要向以太网发送数据时,先将要发送数据通过远程d m a 通道送到 双口缓冲中,在给出发送命令;芯片控制器通过本地d m a 取出待发送数据,发 到网络线上。 当芯片控制器接收到数据后,先与本机m a c 地址比较,并检验其c r c 校验 码,然后将有效数据放到接收缓冲( 双口r a m ) ,再以中断或缓冲器标志形式通 知主机,二亡机通过远程d m a 取出数据。 旦坐三兰竺! ! ! 塑:! 兰竺堡苎 笙! 里堕堑堡坚翌塑堡! 壁盐兰兰婴 4 2 以太网帧格式与收发帧格式 以太网协议不止一种,本文讨论的是r f c 8 9 4 中定义的以太网帧格式。它的 帧结构如图4 - i 所示。物理信道上的收发操作均使用这个帧格式。其中,前导 序列、帧起始位、c r c 校验由硬件自动添加删除,与上层软件无关。 = 1 5 0 0 字节 4 6 字节补03 2 b i t t y p e 说明:0 8 0 0i p 包;0 8 0 6 a r p 包;8 1 4 cs n m p 包;8 1 3 7i p x s p x : 小于0 6 0 0 1 - i 用于i e e e 8 0 2 帧,表示数据包长度。 d a t a 说明:d a + s a + t y p e = 1 4 字节,再加上d a t a = i s l 4 字节,印最大传输包1 5 1 4 字节。 p a d 说明:最小包跃度不小于6 0 字节,最小d a t a 长度4 6 字节,不够的补0 。 图4 - 1r f c 8 9 4 以太网帧结构 但经过8 0 1 9 处理过的数据包格式并不是以太网帧的真子集,而是如图4 2 所示。8 0 1 9 自动添加了“接收状态、下一页指针、以太网帧长度( 以字节为单 位) ”三个数据( 共4 字节) 。这些数据的引入方便了驱动程序的设计。 1 6 b i t = 1 5 0 0 字节 可选 3 2 b i t 图4 - 2r t l s 0 1 9 接收包帧结构 发送数据包的格式是8 0 2 3 帧的真子集,其前导序列、帧起始位、c r c 校 验在发送时由硬件自动添加。如图4 - 3 所示。 i 目的m a c 地址d aj 源m a c 地自ls a l 类型t y p e1 数据域d a t a1 填充p a d i 校验f c s i 4 8 b i t4 8 b i t1 6 b i t,= l5 0 0 字。1 j n可选 3 2 b i t 图4 - 3r t l 8 0 1 9 发送包帧结构 西北工业大学硕士学位论文 第4 章列络接口驱动程序设计与实现 4 3r t l 8 0 19 a s 寄存器地址映射图 为方便操作,r t l 8 0 1 9 a s 将控制器内1 6 个i o 地址上的寄存器映射到主机 i o 地址空间,如表4 一l 所示。寄存器分为4 页,通过修改c r 寄存器的p s o 和 p s l 指定要访问的页。 偏移 p a g e op a g e lp a r e 2p a g e 3 ( 1 t e x )读写读坞 读 读 写 0 0c rc rc rc rc rc r 0 l c l d a op s t a r tp a r op s t a r t9 3 4 6 c r 9 3 4 6 c r 0 2c l d a lp s t o pp a r lp s t o pb p a g eb p a g e 0 3b n r yb n r yp a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论