ARM课程设计——UDP通信
基于ARM与UDP通信协议的带传动实验仪控制系统的研究

摘要 : 绍 了利用 AR 内核 的 3 介 M 2位 单 片机 和 T PI C /P网络协 议 中的 UD P协议 , 并在嵌 入 式 实 时 操作 系统 v / c os—I 1支持 下 的 一 种新 型 带传 动 实 验 仪控制 系统 。该仪 器具 有数 据 采 集 与 分析 、 电机 控 制 、 盘输入 和液 晶输 出的人机 交互 的功 能, 键 并且 能通过 以太 网与主控 计 算机 相 连 接 , 成 一 个 高性 构
关键 词 : RM; A UDP协 议 ; c os—I; 传 动 u/ I带
实验
中图分 类号 : 33 TP 9 文献标识 码 : A
Ke r s ARM ; y wo d : UDP p o o o ; c/ r t c l u os—I; I
b hw o k e pe i e e r x rm nt
价 比 的 带传 动 实 验 系 统 。
p o o o n u p re y RTOS( c/ r t c la d s p o t d b u os —I ) I.
Th s i t u e s f lowi unc i t n— i ns r m ntha o l ng f ton wih ma
带 传动 在 机械 工 程 中有 着广 泛 的应 用 , 一种 是 重要 的机 械传动 方式 。因此 带传 动实验 是大学 课程 《 械设计 》 机 的必 做实验 之一[ 。传统 的带 传动 实验 1 ] 仪 的测 试 控 制 部分 一般 通 过 8位 单 片 机 来 采 集 数
据 , 通过 R 2 2 口把 2 7 2 1 ) 0— 0 7一 4 1 0 —2 5 (0 0 1 0 0 O
Ab t a t Th s sr c : i pa e de c i s n w b l pr s rbe a e e t— d i n c n r 1 s t m 。 s d by 3 rve o t o ys e u e 2一 b t M CU o e i c r o fARM nd UDP p o o olo a r t c fTCP a P ne wo k nd I t r
UDP通讯 实验报告

物理与电子工程学院《嵌入式系统设计》设计性实验报告题目UDP通讯实验系别物电学院电子信息工程年级2009 专业电子信息工程班级Y091 学号Y10109139学生姓名吴晓婷指导教师浦炜实验时间2012/10/9目录课题要求 (2)1.本课题的目的 (2)2.运行环境 (2)正文 (2)一.课题分析 (2)二.系统设计 (3)三.技术实现问题 (6)四.总结与体会 (7)设计性实验报告成绩:指导教师签名: (7)课题要求1.本课题的目的学习UDP 通讯原理并掌握Socket编程方法。
编程实现嵌入式开发平台和计算机之间的UDP 通讯。
通过触摸屏进行画图,使其在液晶屏上显示,同时通过网络传输数据,使其在计算机屏幕上显示;由计算机控制清除液晶屏上的图形。
在此基础上,通过小键盘控制在触摸屏上绘制的图形,如按键后控制绘矩形或圆形等,通过双击清屏等功能。
2.运行环境硬件:ARM 嵌入式开发板、ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上。
软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序正文一.课题分析1.UDP 协议简介UDP 协议即用户数据报协议(User Datagram Protocol),它与我们所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。
根据OSI(开放系统互连)参考模型,UDP 和TCP 都属于传输层协议。
UDP 协议的主要作用是将网络数据流压缩成数据报的形式。
一个典型的数据报就是一个二进制数据的传输单位。
每一个数据报的前8 个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。
UDP 报头由4 个域组成,其中每个域各占用2 个字节。
UDP 协议使用端口号为不同的应用保留其各自的数据传输通道。
UDP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。
实验二UDP通信实验

网络程序设计实验报告实验名称: UDP通信实验指导教师: 贾浩专业班级:姓名:学号:实验地点:实验日期:实验成绩:________________1、实验目的● 进一步理解Winsock编程接口的调用方法。
● 了解UDP协议的工作原理,掌握UDP服务端程序和客户端程序的编写过程,熟悉程序的测试方法2、实验设计1、服务端和客户端相关API函数1)创建套接字函数socket()SOCKET socket(int af,int type,int protocol);由于采用数据报套接字进行数据传输,因此type参数必须设置为 SOCK_DGRAM,protocol参数必须设置为IPPROTO_UDP2)绑定本地地址到所创建的套接字函数bind()int bind(SOCKET s,const struct sockaddr* name,int namelen);在实际编程时可以省略该函数,系统会自动绑定3)接收数据函数recvfrom()int recvfrom(SOCKET s,char* buf,int len,int flags,struct sockaddr* from,int* fromlen);4)发送数据函数sendto()int sendto(SOCKET s,const char* buf,int len,int flags,const struct sockaddr* to,int* tolen);5)关闭套接字函数closesocket()int closesocket(SOCKET s);2、数据报套接字编程模型时序和流程三、实验过程1.调试实验带的代码,使之能运行。
2.修改代码使服务端和客户端能互发信息,并能正确接受到。
3.进一步修改代码,当任何一方发送字符“bye” 程序就结束错误1.客户端的字符比较函数放错位置了,本来是放在接受函数之后,我没注意放在了发送函数之后,所以客户端发送了BYE之后,客户端并不能结束程序。
udp通信原理

udp通信原理UDP(用户数据报协议)是一种无连接的网络协议,属于传输层。
相对于TCP(传输控制协议),UDP具有传输速度快、不可靠、无拥塞控制等特点。
UDP主要用于不需要可靠数据传输的应用场景,如视频直播、VoIP等。
UDP通信原理:UDP通信过程分为两个部分:发送数据和接收数据。
1.发送数据发送数据时,需要指定目标主机的IP地址和端口号。
UDP没有连接的概念,所以只能通过此方式进行标识。
数据包由以下几个部分构成:源端口号:发送方发送数据的端口号。
目标端口号:接收方接收数据的端口号。
长度:UDP数据包的长度。
检验和:用于校验数据包是否有误。
数据:实际要传输的数据。
发送数据的过程如下:1.创建UDP套接字在发送数据前需要创建一个UDP套接字,通过socket()函数创建。
套接字可以理解为通信的端点,发送方和接收方都需要创建套接字。
2.设置目标IP地址和端口号发送方需要知道目标主机IP地址和端口号。
可以通过通过gethostbyname()函数获取主机IP地址,通过inet_addr()函数将主机IP地址转换为网络字节序。
3.封装数据包将要发送的数据加上源端口号和目标端口号、长度和检验和,封装成数据包。
4.发送数据包通过sendto()函数将数据包发送给目标主机。
2.接收数据接收数据时,需要指定本机的IP地址和端口号。
数据包由以下几个部分构成:源端口号:发送方发送数据的端口号。
目标端口号:接收方接收数据的端口号。
长度:UDP数据包的长度。
检验和:用于校验数据包是否有误。
数据:实际要传输的数据。
接收数据的过程如下:1.创建UDP套接字在接收数据前需要创建一个UDP套接字,通过socket()函数创建。
套接字可以理解为通信的端点,发送方和接收方都需要创建套接字。
2.绑定本地IP地址和端口号接收方需要知道本地IP地址和端口号,可以通过bind()函数绑定。
如果没有指定本地端口号,则系统会随机分配一个未使用的端口号。
udp通信流程

udp通信流程UDP通信流程UDP(User Datagram Protocol)是一种无连接的传输协议,它在计算机网络中提供了一种快速、简单的数据传输方式。
与TCP协议相比,UDP不提供可靠的数据传输,但它具有低延迟和高效率的特点,适用于对数据传输速度要求较高、对数据丢失不敏感的场景。
下面将介绍UDP通信的流程。
1. 创建UDP套接字UDP通信的第一步是创建一个UDP套接字。
套接字是网络编程中的一种抽象概念,用于表示网络通信的端点。
在创建UDP套接字时,需要指定IP地址和端口号,以便其他主机能够通过这个地址和端口与该套接字进行通信。
2. 绑定本地地址在进行UDP通信之前,需要将本地地址绑定到创建的UDP套接字上。
本地地址由IP地址和端口号组成,它是用于标识本机在网络上的唯一标识。
绑定本地地址的作用是告诉操作系统,该套接字将使用这个地址进行通信。
3. 接收数据UDP通信中的一个重要概念是数据报,它是UDP协议传输的基本单位。
数据报包含了发送方的IP地址、端口号、数据长度和实际数据。
在接收数据之前,需要创建一个缓冲区,用于存储接收到的数据。
然后,通过套接字的recvfrom()方法接收数据,并将数据存储到缓冲区中。
4. 处理数据接收到数据之后,需要对数据进行处理。
处理数据的方式取决于具体的应用场景。
例如,可以根据数据的内容进行逻辑判断,然后作出相应的响应。
另外,还可以对数据进行解析、转换或存储等操作。
5. 发送数据如果需要向其他主机发送数据,可以使用套接字的sendto()方法。
发送数据时,需要指定目标主机的IP地址和端口号,以及要发送的数据。
发送数据时,可以一次发送多个数据报,也可以分多次发送。
6. 关闭套接字当UDP通信完成后,需要关闭套接字。
关闭套接字的目的是释放系统资源,并通知操作系统不再接收或发送数据。
关闭套接字时,可以调用套接字的close()方法。
总结:UDP通信的流程包括创建UDP套接字、绑定本地地址、接收数据、处理数据、发送数据和关闭套接字。
udp服务器和客户端通信的基本过程

UDP(User Datagram Protocol)是一种无连接的传输层协议,它与TCP相比更加轻量级,并且并不保证数据传输的可靠性和顺序性。
UDP协议常常用于实时通信、流媒体传输等对数据完整性要求不是特别高的场景。
在UDP通信中,服务器和客户端的基本通信过程如下:1. 服务器和客户端的初始化在UDP通信中,服务器和客户端首先需要初始化自己的UDP套接字,并绑定自己的IP位置区域和端口号。
服务器需要等待客户端的连接请求,而客户端则需要知道服务器的位置区域和端口号。
2. 客户端向服务器发送数据当客户端需要向服务器发送数据时,它会创建一个UDP数据报文,并将数据报文发送给服务器。
在发送数据之前,客户端需要知道服务器的IP位置区域和端口号。
3. 服务器接收数据一旦服务器收到客户端发送的数据报文,它会提取出客户端的IP位置区域和端口号,并处理数据报文中的数据。
处理完毕后,服务器可以选择是否向客户端发送响应。
4. 服务器向客户端发送数据如果服务器需要向客户端发送数据,它会创建一个UDP数据报文,并将数据报文发送给客户端。
在发送数据之前,服务器需要知道客户端的IP位置区域和端口号。
5. 客户端接收数据客户端会陆续接收来自服务器的数据报文,并提取出服务器的IP位置区域和端口号。
接收到的数据报文中可能包含了服务器对客户端的响应,客户端需要处理来自服务器的数据。
6. 通信结束在UDP通信中,并没有显式的连接和断开过程,通信双方可以在任何时候发送和接收数据。
当通信完成或者不再需要发送数据时,通信双方可以选择关闭自己的UDP套接字,结束通信。
在UDP通信中,由于UDP协议的特点,数据报文的传输是不可靠的,可能会丢失、重复、乱序。
在设计基于UDP的通信系统时,需要考虑数据可靠性和顺序性的处理机制,比如超时重传、数据包序号等。
UDP服务器和客户端通信的基本过程符合上述流程,并且需要注意处理数据不可靠性和无连接的特点。
7. 数据可靠性处理由于UDP协议的不可靠性特点,数据在传输过程中可能会丢失或损坏。
ARM-Linux环境下UDP协议的通信应用研究
W u a ie s y o ce c n c n l g W u a 3 0 0 Ch n ) h n Un v r t f in e a d Te h oow, i S h n 4 0 0 , ia
A b tac :Th e de nd r c i e r eaiey ide e e t\he oI 1 nIaig u e D P— p ot o .t e e ec di ne g s sr t e s n r a e ev rae r lt l n p nd n v n c nn u c tn nd rU v r oc 1 he snd rrs n ng l %a e t r c i r tm e nse d ofc e t c ne to o e exe i s i ta rai ng a on cin.A ee r snd—m e ha s c nim t tt y—me sg sw e e s n ppm c nlutr i x d ha he ke sa e r e d by u o p c n f e i tm e v a s d i de o e]I i ott o tke i s esu e n O1 rt 1S lng n o l s y—m esg .Alh gh t ee A sa e t ou he r snd—i c ns c d elu e t a he k y一1 esg ”o d t ne ha im a ls r h tt e 1 sa e  ̄ uln
中圈 分 类号 : 3 3 TP 9
文 献标 识码 : A
文 章 编 号 : 0 9 3 4 (0 1 1 — 0 1 0 1 0 — 0 4 2 1 )3 3 0 — 3
UDP通讯
UDP通讯UDP 是User Datagram Protocol的简称,中文名是用户数据包协议,是OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
它是IETF RFC 768是UDP的正式规范。
UDP的报头UDP报头由4个域组成,其中每个域各占用2个字节,具体如下:源端口号目标端口号数据报长度校验值UDP协议使用端口号为不同的应用保留其各自的数据传输通道。
UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。
数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。
有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。
因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。
一般来说,大于49151的端口号都代表动态端口。
数据报的长度是指包括报头和数据部分在内的总字节数。
因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)。
数据报的最大长度根据操作环境的不同而各异。
从理论上说,包含报头在内的数据报的最大长度为65535字节。
不过,一些实际应用往往会限制数据报的大小,有时会降低到8192字节。
UDP协议使用报头中的校验值来保证数据的安全。
校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。
如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。
这与TCP协议是不同的,后者要求必须具有校验值。
许多链路层协议都提供错误检查,包括流行的以太网协议,也许想知道为什么UDP也要提供检查和。
其原因是链路层以下的协议在源端和终端之间的某些通道可能不提供错误检测。
虽然UDP提供有错误检测,但检测到错误时,UDP不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。
udp通信流程
udp通信流程UDP通信流程UDP(User Datagram Protocol)是一种无连接的传输协议,它以简单、快速和高效的方式进行数据传输。
与TCP不同,UDP不提供可靠性和错误检测,但它具有低延迟和高吞吐量的优势。
在本文中,我们将介绍UDP通信的基本流程。
UDP通信流程可以概括为以下几个步骤:1. 创建UDP套接字:在进行UDP通信之前,首先需要创建一个UDP套接字。
套接字是网络通信的基础,它负责发送和接收数据。
通过调用系统函数创建一个UDP套接字,我们可以利用该套接字进行数据传输。
2. 绑定IP地址和端口号:在进行UDP通信之前,需要将套接字绑定到本地的IP地址和端口号上。
IP地址用于标识网络中的设备,端口号用于标识设备中的进程。
通过将套接字与特定的IP地址和端口号绑定,我们可以确保数据传输的正确性和安全性。
3. 发送数据:一旦套接字绑定到了本地的IP地址和端口号上,就可以通过套接字发送数据了。
发送数据时,需要指定目标设备的IP地址和端口号。
UDP是无连接的,因此可以直接发送数据,而无需建立连接。
4. 接收数据:在发送数据之后,目标设备将接收到发送的数据。
接收数据时,需要创建一个用于接收数据的缓冲区,并指定最大接收数据的长度。
一旦接收到数据,就可以对数据进行处理和分析。
5. 关闭套接字:在完成数据传输后,需要关闭套接字以释放资源。
通过调用系统函数关闭套接字,可以确保资源的有效使用,并避免资源泄露的问题。
尽管UDP通信不提供可靠性和错误检测,但它在某些场景下非常有用。
例如,在实时应用中,如音频和视频传输,UDP可以提供低延迟和高吞吐量的优势。
此外,在某些应用中,如DNS(Domain Name System)查询,UDP也被广泛使用。
总结:UDP通信流程的基本步骤包括创建UDP套接字、绑定IP地址和端口号、发送数据、接收数据和关闭套接字。
尽管UDP不提供可靠性和错误检测,但它具有低延迟和高吞吐量的优势。
基于ARM9的UDP协议栈的设计与实现
2 0 1 3年 5月
计 算 机 技 术 与 发 展
C0MP UTE R TE CHNOL OGY AND DEVEL 0PME NT
Vo 1 . 23 No. 5 Ma v . 201 3
基于 A R M9的 U D P协 议 栈 的设 计 与 实现
数 据传 输速 度快 , 能够 满足 实际应 用需 求 。 关键词 : U D P协议 ; 通信 协议 ; 嵌入 式系 统 ; Y L P 2 4 4 0
中 图分 类 号 : T P 3 9 3 文 献标识 码 : A 文章编 号 : 1 6 7 3 — 6 2 9 X ( 2 0 1 3 ) 0 5 — 0 0 2 2 — 0 4
Ab s t r a c t : I n o r d e r t O me e t t h e r e q ui r e me n t f o r he t r a p i d t r a n s mi s s i o n o f l a r g e a mo u n t o f d a t a i n he t Et he me t c o mmu n i c a io t n p r o c e s s , s o me
ARP c o m
u n i c a i t o n i s t e s t e d, he t r e s u l t s s h o w ha t t UDP c o mmu ic n a t i o n s y s t e m i s r e l i a b l e a n d l e s s o v e r h e a d nd a f a s t s p e d, he t er p fo r m-
陈瑞 林 , 郑 羽
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UDP通信实验【摘要】利用基于嵌入式实时操作系统μC/OS-II的ZLG/IP软件包,利用实验板光盘提供的UDPtest软件可以实现实验板跟PC机的数据收发。
【关键词】ARM UDP μC/OS-II操作系统目录第1章硬件实现 (1)1.1RTL8019AS网络控制器介绍 (1)第2章µC/OS-II操作系统 (3)2.1µC/OS-II系统简介 (3)2.2µC/OS-II的特点 (3)2.3任务模式 (3)2.4支持的指令集 (4)2.5移植µC/OS-II (4)第3章ZLG/IP软件包结构和配置 (6)3.1ZLG/IP软件包结构 (6)第4章设计过程 (8)4.1设计步骤 (8)4.2实验程序 (10)4.2.1宏定义 (10)4.2.2RTL8019AS监听任务 (11)4.2.3UDP通信程序 (12)4.2.4创建系统任务并初始化 (14)4.2.5主程序 (15)4.2.6定时器中断控制 (16)第5章实验结果 (19)第6章课程设计体会 (21)第1章硬件实现1.1 RTL8019AS网络控制器介绍RTL8019AS是一种全双工即插即用的以太网控制器,它在一块芯片上集成了RTL8019内核和一个16KB的SDRAM存储器。
它兼容RTL8019控制软件和NE2000 8bit或16bit的传输,支持UTP,AUI,BNC和PNP自动检测模式,支持外接闪烁存储器读写操作,支持I/O口地址的完全解码,具有LED指示功能。
其接口符合Ethernet2和IEEE802.3(10Base5,10Base2,10BaseT)标准。
RTL8019AS采用100脚PQFP封装,其主要引角功能如下:引角1-4,97-100:中断控制INT0-7;引角33:复位控制;引脚34:使能控制角AEN,低电平有效;引脚6,7,70,89:数字电源,+5V;引脚14,28,83,86:数字地GND;引脚47,57:模拟电源:+5V;引脚44,52:模拟地;引脚7-13,15,16,18-27:ISA地址总线;引脚36-43,87,88,90-95:ISA数据总线;引脚31:Boot ROM读操作控制;引脚32:Boot ROM写操作控制;引脚62:RX接收数据显示LED1脚;引脚63:TX发送数据显示LED2脚;引脚58,59:接收数据TP IN+/-;引脚45,46:发送数据TP OUT+/-;引脚50,51:外接晶体。
图 1 RTL8019AS接线图第2章µC/OS-II操作系统2.1 µC/OS-II系统简介µC/OS-II读做“microCOS2”,意为“微控制器操作系统版本2”。
µC/OS-II是著名的、源码公开的实时内核,可用于各类8位、16位和32位单片机、arm或DSP等等。
µC/OS-II是一个完整的、可移植、可固化、可剪裁的占先式实时多任务内核。
应用程序处于整个系统的顶层.每个任务都可以认为自己独占了CPU,因而可以设计成为一个无限循环。
2.2 µC/OS-II的特点●可移植性(portable)●可固化(ROMmable)●可剪裁(scalable)●可剥夺(preemptive)●多任务●可确定性●任务栈●系统服务●中断管理●稳定性与可靠性多任务是指:µC/OS-II可以管理64 个任务,然而,µC/OS-II的作者建议用户保留8 个给µC/OS-II。
这样,留给用户的应用程序最多可有56 个任务。
系统服务指:µC/OS-II 提供很多系统服务,例如信号量、互斥信号量、时间标志、消息邮箱、消息队列、块大小固定的内存的申请与释放及时间管理函数等。
中断管理指:中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达255 层。
2.3 任务模式ARM7 处理器核具有用户、系统、管理、中止、未定义、中断和快中断七种模式。
用户模式(USER MODE)是ARM 通常执行状态,用于执行大多数应用程序;快速中断模式(FIQ MODE)支持数据传输或通道处理;中断模式(IRQ MODE)用于通用中断处理;超级用户模式(SVC MODE)是一种操作系统受保护的模式:数据中止模式(ABT MODE)指令预取指中止、数据中止时进入该模式;未定义模式(UND MODE)当执行未定义的指令时进入该模式;系统模式(SYS MODE)是操作系统一种特许的用户模式。
除了用户模式之外,其他模式都归为特权模式,特权模式用于中断服务、异常或者访问受保护的资源特权模式中除系统模式之外另5种模式又称为异常模式,在移植过程中必须设置中断向量表来处理异常。
uCOS II的移植主要处理标准中断(IRQ)、快速中断(FIQ)和软件中断(SWI)。
2.4 支持的指令集带T变量的ARM7处理器核具有两个指令集:标准32位ARM指令集和16位Thumb指令集,两种指令集有不同的应用范围,µC/OS-II包含了这些指令集的切换(TaskIsARM()和TaskIsTHUMB()用于改变指令集)。
2.5 移植µC/OS-IIµC/OS-II 要求所有.C 文件的都要包含都文件includes.h,这样使得用户项目中的每个.C文件不用分别去考虑它实际上需要哪些头文件。
使用includes.h的缺点是它可能会包含一些实际不相关的头文件,这意味着每个文件的编译时间可能会增加,但却增强了代码的可移植性。
在本移植中另外增加了一个头文件config.h,我们要求所有用户程序必须包含config.h,在config.h中包含includes.h 和特定的头文件和配置项。
而µC/OS-II 的系统文件依然只是包含includes.h,即µC/OS-II 的系统文件完全不必改动。
所有的配置改变包括头文件的增减均在config.h中进行,而includes.h定下来后不必改动(µC/OS-II 的系统文件需要包含的东西是固定的)。
这样,µC/OS-II 的系统文件需要编译的次数大大减少,编译时间随之减少。
µCOS-II 不使用C语言中的short、int、long等数据类型的定义,因为它们与处理器类型有关,隐含着不可移植性。
代之以移植性强的整数数据类型,这样,既直观又可移植。
在使用周立功提供的µC/OS-II模板的任何功能之前,必须调用函数OSInit(),它完成µC/OS-II的初始化并建立空闲任务。
在开始多任务之前,必须建立至少一个用户任务(不包括µC/OS-II的空闲任务),这是通过调用函数OSTaskCreate()或函数OSTaskCreateExt()实现。
最后函数main()调用函数OSStart()将控制权交给µC/OS-II内核main()函数也就结束了。
µC/OS-II应用程序主函数如下:程序清单 1int main (void){OSInit(); //初始化uC/OS-IIOSTaskCreate(TaskStart,(void *)0, &TaskStartStk[127], 3); //创建起动任务OSStart(); //开始多任务}第3章ZLG/IP软件包结构和配置3.1 ZLG/IP软件包结构为了使软件可移植性强、易维护,该软件包采用分层的方法编写。
包括网络传输用到的协议、硬件驱动及μC/OS-II的结构进行分层。
ZLG/IP包相关文件说明如表格 1表格 1 软件包相关文件说明传输层有两个协议传输数据:传输控制协议TCP和用户数据报协议UDP。
TCP协议是面向连接的一个协议,可靠性高,费用也高;UDP协议是提供最少服务和费用的传输层协议。
UDP是最简单的传输层协议,它具有以下特点:●无连接:UDP不基于连接来传输数据。
●不可靠:UDP的数据报发送时没有定序,所以UDP传送的数据是不可靠的,只有靠应用层协议中增加超时重发等功能才能提供可靠的服务。
●提供应用层协议标识:UDP报头有定义应用层协议标识和目标应用层标识。
●提供UDP报的校验和:UDP报头包含有整个UDP报(包括报头和有效负载)及伪报头的校验和,计算方法与计算IP数据报校验和的计算方法相同。
●缓冲:UDP协议不提供任何数据接收或发送的缓冲区。
缓冲区应该由应用层协议提供。
分段:UDP协议不提供分段传输方式,所以应用层协议要尽量发送小的包。
SOCKET接口函数是TCP/IP的API。
使用SOCKET API函数编写UDP通信的任务时,分为服务器方式两种。
服务器方式是先接收到数据再进行处理,而客户机则是先发生数据后等待回应处理,它们用到的SOCKET API函数都是相同的。
如图2所示就是UDP通信时服务器端和客户机通信函数应用过程图。
服务器端客户机端图 2 UDP通信是SOCKET API函数的应用第4章设计过程4.1 设计步骤由于使用DM9000的网络控制芯片的Magic2200的实验箱有点问题,后来我们改用使用RTL8019AS网络控制芯片的EasyARM2200教学实验平台。
1)启动ADS1.2,使用ARM Executable Image for µCOS-II (lpc22xx)工程模板建立一个工程shiyan。
2)把µCOS-II内核源码和移植文件,ZLG/IP软件包目录拷贝到已建工程目录下,如图3所示,arm目录为移植文件目录,Source 目录为µCOS-II内核源码,tcpip目录为ZLG/IP软件包目录。
图 3 项目目录结构3)修改tcpip\include\cfg_net.h文件,修改MAC地址为:0x00,0x14,0x97,0x0F,0x1F,0x9D、子网掩码为255.255.0.0、IP地址:172.30.172.77、本地网关地址为PC机IP:172.30.172.125。
如程序清单2程序清单 2 MAC和IP设置/************** first Net Port Config**************************/#define My_Mac_1ID {0x00,0x14,0x97,0x0F,0x1F,0x9D} //将RTL8019的物理地址存储在程序空间?#define IP_MARK_1ID {255,255,0,0}//255.255.255.0,子网掩码#define MY_IP_1ID {172,30,172,77}#define MY_GATEWAY_1ID {172,30,172,125}/**************End Net Port Config ***************/4)修改shiyan\src\os_cfg.h文件,OS_MAX_EVENTS改为42,OS_LOWEST_PRIO改为62,OS_MAX_QS改为10。