搜索
您的当前位置:首页正文

uC/OSⅡ下协议栈uIP的移植与应用

来源:好走旅游网
第22卷第9期 计算机技术与发展 COMPU I匿R TECHNOLOGY AND DEVELOPMENT 2012年9月 Vo1.22 No.9 Sep. 2012 uC/0S 11下协议栈uI P的移植与应用 刘春风 ,张代远 ' , (1.南京邮电大学计算机学院,江苏南京210003; 2.江苏省无线传感网高技术研究重点实验室,江苏南京210003; 3.南京邮电大学计算机技术研究所,江苏南京210003) 摘要:随着互联网的发展,各种家用电器从空调到冰箱,都产生了接人Internet的需求。针对这一要求,文中把一个轻量 级的TCP/IP协议栈ulP移植到基于三星的¥3C2410处理器和uC/OSⅡ操作系统的目标机上。移植步骤与方法如下:ulP 的配置,以太网接口芯片驱动程序的编程,¥3C2410定时器编程,uC/OS II操作系统的移植,基于ulP的应用程序设计。最 后将移植后的ulP应用到一个远程报警系统中,实现了远程报警功能。实验结果表明文中成功的在智能设备和Internet间 建立了通信链路,实现了智能设备与Intemet的互联。 关键词:TCP/IP;ulP;移植;uC/OS II 中国分类号:TP39 文献标识码:A 文章编号:1673-629X(2012)09-0143・-03 Porting and Application of ulP in uC/OSⅡ LIU Chun—feng。ZHANG Dai—yuan , ' .(1.College of Computer,Nanjing University of Posts and Telecommunications,Nanjing 210003,China; 2.Jiangsu High Technology Research Key Laboratory for Wireless Sensor Networks,Nanjing 210003,China; 3.Institute of Computer Technology,Nanjing University of Posts and Telecommunications, Nanjing 210003,China) Abstract:At present,with the rapid development of the Internet technology,a variety of household appliances,from air conditioning to the refrigerator,produced he tneeds of access to he tInternet.In response to this request,put a light weight TCP/IP protocol stack ulP por- ting to¥3C2410 processor based on uC/OS 1I operating system on the target board,the main work is as follows:ulP configuration,ether- net interface chip driver programming,¥3C2410 timer programming,uC/OS II porting,叩plication design based on ulP.Finally,applied ported ulP to a remote alarm system,ealrized the remote alarm.Experimental results show that the link between smart devices and Internet communications is successfully established to achieve the interconnection of them. Key words:TCP/IP;ulP;po ̄ing;uC/OS 11 0 引 言 在一个由32位嵌入式处理器构建的中、高端网络 接入嵌入式系统中,通常会运行一个集成TCP/IP -3j 协议栈的操作系统。但是对于系统资源有限、产品价 格要求严格的嵌入式系统,由于它所具有的处理能力 它实现的复杂性,从无到有构建一个协议栈是一项艰 巨的任务,并且缺少有效的调试工具。ulP协议栈是 一个能够运行于8位到32位微处理器的轻量级的 TCP/IP协议栈,它可以自由分发和应用于商业或非商 业目的。ulP协议栈是使用C语言编写,便于移植,并 且ulP协议栈编译后的代码大小对RAM的需求比其 十分有限,通常不在它里面运行操作系统,这就要求系 统开发者根据应用的要求选择合适的处理器并且构建 自己的TCP/IP协议栈。TCP/IP协议的透明性掩盖了 它一般的TCP/IP协议栈要小,这就使得它能够方便地 应用到各种低端系统上。 1 系统分析与移植步骤 收稿日期:2012—02—02;修回日期:2012—05—12 1.1配置ulP 基金项目:江苏高校优势学科建设工程资助项目(yxO02001) 作者简介:刘春风(1988一),女,江苏徐州人,硕士研究生,研究方向 移植ulP时,首先需要配置一些选项,目的是适应 具体的硬件平台,这里的选项就是一些宏定义,包括: UIPCONFBYTE———为智能计算技术与应用;张代远,教授,硕士生导师,研究方向为智 能计算理沧、方法与应用,计算机体系结构,计算机在通信中的应 用。 ORDER数据存储方式(大端或者小 端),UIP—CONF—BUFFER—SIZE(ulP缓冲区大小),主 ・144・ 计算机技术与发展 第22卷 机IP地址,主机MAC地址,默认路由,子网掩码,uIP 一在uip—buf中。RTLSO19收包采用查询模式,当发现 秒时间所需要中断数,基本数据类型的定义,UIP— RAM BUFFER接收缓冲区中有未处理的数据时,先读 取4字节,计算出数据的长度和下一帧的页地址,然后 启动远程读操作,将数据存放在uip—buf中。当然,还 可以根据网络的实际情况增加一些传输中产生错误 APPCALL定义uip—tcp—appstate_t定义 等。 1.2 以太网接口芯片编程 文中所用的以太网接口芯片是RTL8019AS 。 网卡驱动层与底层硬件密切联系,它为uIP提供服务, 屏蔽了硬件实现的细节,系统中各层次关系如图1所 (如接收缓存满)的处理代码。 以太网接口芯片在总线中的基地址必须配置正 示。对于文中的网卡驱动部分,只需实现三个函数: char rt18019as—确,这是访问以太网卡中其他寄存器的基础。以太网 接口芯片接收,发送数据包的流程如图2和图3所示。 init(void)网卡初始化函数;void rtl8019as—send(void)网卡发送数据包函数;unsigned int rtl8019as—read(void)网卡接收数据包函数。编程 知识可参考文献[6—8]。 应用层 ulP协议栈 硬件驱动 图1 系统中各层次之间的关系图 初始化:RTL8019的初始化主要设置接收和发送 缓存,设置读页指针和写页指针,配置接收和发送模 式,同时需要设置本机MAC地址。由于使用的是ulP 网络协议栈,因此网卡的MAC需要与协议层封装的 MAC统一,因此使用预先定义好的宏定义UIP—ETHA— DDRO—UIP—ETHADDR5。当然也可以从EEPROM中 读取,可实现动态修改MAC的功能。 发送数据包:对uIP网络协议栈来说,需要发送的 数据已经存放在全局内存uip_buf里,数据包长度大于 54字节(TCP+ETH头部)时,使用uip—appdata指向应 用层数据,而需要发送数据的长度使用uip—len记录。 因此,发送数据的步骤: (1)启动远程写,将uip—buf中的数据写到RAM BUFFER的发送缓冲区中。 (2)将发送的首页赋给TPSR,长度(小于6O时算 60)赋给TBCR1,TBCR0。启动发送。 当然,放在uip—buf的前14个字节按照以太网帧 的DA,SA,TYPE排列好的,这样可以发送到对应MAC 地址的网卡中。 接收数据包:uIP的数据接收后放在全局内存uip —buf中,接收的数据长度放在uip—len中,因此,发现一 个完好的以太网帧后,将前4个字节去掉后依次存放 图2 网卡发送数据流程图 图3 网卡接收数据流程图 1.3 s3C2410定时器编程 ¥3C2410共有5个定时器 ,其中0、1、2、3有 PWM功能,且有一个输出引脚,可以通过定时器来控 制引脚周期性的高、低电平变化;定时器4没有输出引 脚。 定时部件的时钟源为PCLK,首先通过两个8位预 分频器降低频率;定时器0、1共用第一个预分频器;定 时器2、3、4共用第二个预分频器;预分频器的输出将 进人第二级分频器,输出5种频率的时钟:2分频、4分 第9期 刘春凤等:uC/OS U下协议栈uIP的移植与应用 ・145・ 频、8分频、16分频、外部时钟TCLOKO/TCLK1;每个定 时器的工作时钟都可以在这5种频率中选择;系统中 PCLK的值50.7MHz,预分频值为120,二级分频值为 用程序接收到信号后,就读写缓存中的数据,并处理数 据,如果应用程序有数据要发送就向uip—buf[]缓存中 写入数据,并给uip—len赋值,当uIP处理时,如果发现 uip—16,这样,定时器定时1秒需要计数的值为50700000/ 120/16=26406。本系统中设置定时器3的初值为 26406/100,定时即为1/100秒,所以CLOCK—CONF— len的值大于0,说明应用程序有数据要发送,就调 系统刚启动时,应用程序任务处于休眠状态。当 用网卡驱动的发送函数进行数据发送。 SECOND的值即为100。 1.4移植uC/0S II 整个uC/OS II移植实现中,只需要提供一个汇编 语言文件,提供几个必须由汇编才能实现的函数,具体 可参考文献[10,11]。所需要实现的函数有: 1)0SStartH hRdy()。 操作系统启动之后负责启动优先级最高的进程, 该函数只会被调用一次。该函数的实现方法是从当前 就绪任务控制块中获取优先级最高的控制块指针(ad. dr_OSTCBHighRdy),通过该指针可以获得该任务的堆 栈指针sP,通过该栈指针依次弹出状态寄存器的值, 通用寄存器的值以及PC,LR的值,从而改变CPU现 场,使程序从弹出的Pc值处开始执行。 2)OSCtxSw()。 任务切换函数,主要工作是保存当前任务的CPU 现场,然后从当前优先级最高的任务控制块中取得任 务堆栈指针,恢复CPU现场,并执行。该函数的实现 方法是通过当前任务控制块指针和就绪队列中最高优 先级的任务控制块指针比较两个任务优先级,如果就 绪队列中任务的优先级高,那么就切换执行高优先级 任务,切换方法与函数一的实现类似。 3)OSIntExit()。 该函数是中断级的任务切换函数,在时钟中断 ISR中发现有高优先级任务在等待时,需要在中断退 出后不返回被中断的任务,而是直接调度就绪的高优 先级任务执行。其目的在于能够尽快让高优先级的任 务得到响应,保证系统的实时性能。 4)OSTieklSR() 该函数是时钟中断处理函数,主要任务是负责处 理时钟中断,调用系统实现的OSTimeTick函数,如果 有等待时钟信号的高优先级任务,则需要在中断级别 上调度其执行。另外两个相关函数是OSIntEnter()和 OSIntExit(),都需要在ISR中执行。 1.5 uIP应用 有了先前的准备工作,现在把各个模块整合起来, uIP模块、网卡驱动模块、定时模块、uC/OS 11模块都 已经成功移植进来。现在利用uC/OS II创建两个任 务,一个是网卡轮询任务,另一个是应用程序任务,当 网卡接收到数据并读进缓存后就给uip—len赋值,值就 为读进数据的长度。并向应用程序任务发出信号,应 网卡驱动程序任务接收到数据时,就唤醒应用程序,应 用程序任务收到信号后就从uip—buf中读取数据,如果 应用程序没有数据发送就直接返回,如果有数据要发 送就将数据存放到uip—appdata所指向的内存单元中, 再调用rtl8Ol9as—send()函数发送数据。与此同时,应 用程序需每隔l0秒对uIP的ARP表项进行更新,同时 每隔0.5秒对每个TCP连接进行轮询,看是否有需要 发送的数据,保证对每个连接的实时响应。系统应用 结构如图4所示。 图4报警系统流程图 2主要成果 (1)将ulP顺利地移植到uC/OS II中,使得互联 网上的嵌入式设备能够与PC机正常通信; (2)将该成果应用到一个报警系统中,只要远程 的Pc机运用TCP连接向目标设备发送“attention”字 符串,目标设备即可启动报警系统,实现远程报警。 3设计的创新点 通过使用PC机和目标板进行通信测试,证明该 系统实现了预先的设计要求,并且有以下几个创新点: (1)将一个小型的TCP/IP协议栈uIP移植到了嵌 入式设备上,从而该设备可以跟互联网上的Pc机进 行通信; (2)本系统代码编译后只有几百KB,占用极少的 内存资源; (3)该协议栈可配置性强,适应不同资源环境和 应用 场合; (4)可以应用于多种需要接入网络的工控系统 中。 (下转第149页) 第9期 向俊等:GIS矢量数据的拓扑空间模糊划分模型 ・149・ f1 D( ,),)= 一 formation Systems[M].Oxfod:Oxfod University Press,1998. ( ,y)={壁 。<。( ,y) (1。) L0其他情况 [2] Molenaar M.An introduction to the theory of spmiM object modeling[M].London:Taylor Fancis,1998. [3]刘文宝.GIS空间数据的不确定性理论[D].武汉:武汉测 绘科技大学,1995. [4] 刘文宝,邓 敏.GIS图上地理区域空间不确定性的分析 [J].遥感学报,2002,6(1):45-49. [5] 邓敏,李成名,林宗坚.GIS中模糊区域的形式化描述方 文中是在文献[12]研究的基础上对复杂空间模 糊面实体拓扑划分模型的改进,并给出相应的模糊隶 属函数,在理论上,运用严格的数学方法,进行了详细 的定义和形式化描述,该模型适用于不同复杂程度的 模糊地理实体,有利于读者对空间模糊实体的划分有 更加清晰的理解。 法探讨[J].测绘科学,2002,27(1):39—41. [6]唐新明,方[7]刘文宝,邓裕.模糊区域拓扑关系模型[J].地理与地理 敏.矢量GIS中模糊地理边界的分析[J].山 信息科学,2003,19(2):1—10. 东科技大学学报(自然科学版),2000,19(1):28—32. 4结束语 文中在已有的关于对GIS简单要素(如点和面) 的模糊形式化描述的基础上,进行了详细的分析和总 结。 [8] 郭庆胜,杜晓初.不确定性线状目标之间拓扑关系的描述 与判别[J].武汉大学学报・信息科学版,2004,29(9):827 -831. [9] 李大军,刘 波,程朋根,等.模糊空间对象拓扑关系的 Rough描述[J].测绘学报,2007,36(1):72—77. [10]Egenhofer M J,Franzosa R.Point-set topological spatial rela— tions[J].International Journal of Geographical Information Systems,1991,5(2):161—174. 针对现有的关于对模糊点和模糊面拓扑划分的描 述部分存在不足,文中在形式化描述和数学公式表达 方面进行更详细、准确的描述,最后完成了从简单实体 的模糊拓扑划分到描述复杂的地理实体的拓扑划分。 未来将进一步对在某个区域内存在多个不同地理 特征的更加复杂的地理现象进行研究,并通过试验进 行模糊空间划分。 参考文献: [1] Burorugh P A,McDonnell R A.Principles of Geographical In一 ・[11]邓 敏,刘文宝.GIS面目标间拓扑关系的形式化模型 [J].测绘学报,2005,34(1):85—89. [12]杜世宏.空间关系模糊描述及组合推理的理论和方法研究 [D].北京:中国科学院。2004. [13]陈学工,张驰伟,张文艺,等.度量参数与空间关系描述的 研究[J].计算机技术与发展,2007,17(5):187—190. +”+・・— -— (上接第145页) [5] Realtek Semi—conductor Co Ltd.Reahek Full—Duplex Ether- 4结束语 文中研究并实现了uIP协议栈在uC/OS下的移植 与应用,可以实现Internet上的智能设备跟网络中所有 net Controller with Plug and Play Function Speciifcation[S]. 20o1. [6] c程序设计[M].第4版.北京:清华大学出版社,2010:45 -268. 的Pc机进行通信,可以实现实时远程工业控制,而不 需要人为的手动干预,控制者不需要在现场就可实现 [7] 周作厚.c程序设计[M].北京:中国铁道出版社,2003:24 —150. 控制设备,大大减少了出差的次数,是未来嵌入式设备 发展的一个趋势。 参考文献: [1]谢希仁.计算机网络[M].第5版.北京:电子工业出版社, 2008:63—220. [8] 常玉龙.Turbo C 2.0实用大全[M].北京:北京航空航天 大学出版社,1994:l8—147. [9] ¥3C2410中文数据手册(Version 1.0)[M].杭州:杭州立 泰宇电子有限公司。2008. [1O] 邵贝贝.UC/OS一源码公开的实时嵌入式操作系统[M]. 北京:中国电力出版社,2001. [2] 沈辉.计算机网络工程与实训[M].北京:清华大学出版 [11] 陈是知.uC/OS一Ⅱ内核分析、移植与驱动程序开发[M]. 北京:人民邮电出版社,2007. 社.2002:40—125.  D E.计算机网络与因特网[M].第5版.北京:机械 [3] Comer工业出版社,2009:35—170. [12] 伊文斌,周贤娟,鄢化彪,等.uIP TCP/IP协议分析及其在 嵌入式系统中的应用[J].计算机技术与发展,2007,17 (9):240—243. [4] Dunkels A.The uIP 1.0 Reference Manual[D].Swedish: Swedish Institute of Computer Science,2006. 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top