ARM课程设计UDP通信.docx
《ARM课程设计UDP通信.docx》由会员分享,可在线阅读,更多相关《ARM课程设计UDP通信.docx(18页珍藏版)》请在冰豆网上搜索。
ARM课程设计UDP通信
UDP通信实验
【摘要】
利用基于嵌入式实时操作系统μC/OS-II的ZLG/IP软件包,利用实验板光盘提供的UDPtest软件可以实现实验板跟PC机的数据收发。
【关键词】
ARMUDPμ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-II4
第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.1RTL8019AS网络控制器介绍
RTL8019AS是一种全双工即插即用的以太网控制器,它在一块芯片上集成了RTL8019内核和一个16KB的SDRAM存储器。
它兼容RTL8019控制软件和NE20008bit或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:
BootROM读操作控制;
引脚32:
BootROM写操作控制;
引脚62:
RX接收数据显示LED1脚;
引脚63:
TX发送数据显示LED2脚;
引脚58,59:
接收数据TPIN+/-;
引脚45,46:
发送数据TPOUT+/-;
引脚50,51:
外接晶体。
图1RTL8019AS接线图
第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处理器核具有用户、系统、管理、中止、未定义、中断和快中断七种模式。
用户模式(USERMODE)是ARM通常执行状态,用于执行大多数应用程序;快速中断模式(FIQMODE)支持数据传输或通道处理;中断模式(IRQMODE)用于通用中断处理;超级用户模式(SVCMODE)是一种操作系统受保护的模式:
数据中止模式(ABTMODE)指令预取指中止、数据中止时进入该模式;未定义模式(UNDMODE)当执行未定义的指令时进入该模式;系统模式(SYSMODE)是操作系统一种特许的用户模式。
除了用户模式之外,其他模式都归为特权模式,特权模式用于中断服务、异常或者访问受保护的资源
特权模式中除系统模式之外另5种模式又称为异常模式,在移植过程中必须设置中断向量表来处理异常。
uCOSII的移植主要处理标准中断(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应用程序主函数如下:
程序清单1
intmain(void)
{
OSInit();//初始化uC/OS-II
OSTaskCreate(TaskStart,(void*)0,&TaskStartStk[127],3);//创建起动任务
OSStart();//开始多任务
}
第3章ZLG/IP软件包结构和配置
3.1ZLG/IP软件包结构
为了使软件可移植性强、易维护,该软件包采用分层的方法编写。
包括网络传输用到的协议、硬件驱动及μC/OS-II的结构进行分层。
ZLG/IP包相关文件说明如表格1
表格1软件包相关文件说明
文件名
简要说明
ARP.C
地址解析协议
CRC.C
循环冗余码校验
Ethernet.C
以太网标准
HARDWARE.C
硬件驱动
IP.C
网络互联协议
ICMP.C
因特网控制消息协议
Socket.C
本地端口协议
TCP.C
传输控制协议
UDP.C
用户数据包协议
传输层有两个协议传输数据:
传输控制协议TCP和用户数据报协议UDP。
TCP协议是面向连接的一个协议,可靠性高,费用也高;UDP协议是提供最少服务和费用的传输层协议。
UDP是最简单的传输层协议,它具有以下特点:
●无连接:
UDP不基于连接来传输数据。
●不可靠:
UDP的数据报发送时没有定序,所以UDP传送的数据是不可靠的,只有靠应用层协议中增加超时重发等功能才能提供可靠的服务。
●提供应用层协议标识:
UDP报头有定义应用层协议标识和目标应用层标识。
●提供UDP报的校验和:
UDP报头包含有整个UDP报(包括报头和有效负载)及伪报头的校验和,计算方法与计算IP数据报校验和的计算方法相同。
●缓冲:
UDP协议不提供任何数据接收或发送的缓冲区。
缓冲区应该由应用层协议提供。
●分段:
UDP协议不提供分段传输方式,所以应用层协议要尽量发送小的包。
SOCKET接口函数是TCP/IP的API。
使用SOCKETAPI函数编写UDP通信的任务时,分为服务器方式两种。
服务器方式是先接收到数据再进行处理,而客户机则是先发生数据后等待回应处理,它们用到的SOCKETAPI函数都是相同的。
如图2所示就是UDP通信时服务器端和客户机通信函数应用过程图。
图2UDP通信是SOCKETAPI函数的应用
第4章设计过程
4.1设计步骤
由于使用DM9000的网络控制芯片的Magic2200的实验箱有点问题,后来我们改用使用RTL8019AS网络控制芯片的EasyARM2200教学实验平台。
1)启动ADS1.2,使用ARMExecutableImageforµ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
程序清单2MAC和IP设置
/**************firstNetPortConfig**************************/
#defineMy_Mac_1ID{0x00,0x14,0x97,0x0F,0x1F,0x9D}//将RTL8019的物理地址存储在程序空间?
#defineIP_MARK_1ID{255,255,0,0}//255.255.255.0,子网掩码
#defineMY_IP_1ID{172,30,172,77}
#defineMY_GATEWAY_1ID{172,30,172,125}
/**************EndNetPortConfig***************/
4)修改shiyan\src\os_cfg.h文件,OS_MAX_EVENTS改为42,OS_LOWEST_PRIO改为62,OS_MAX_QS改为10。
5)在ADS的项目窗口中添加TCPIP的文件组;然后把tcpip\目录下的ARP\Arp.c、ETHERNET\Ethernet.c、HA