基于uCOS-II的UDP网络编程
---------------------------------------------------------
Author :tiger-john
WebSite :blog.csdn.net/tigerjb
Email :jibo.tiger@gmail.com
开发环境 硬件环境:LPC2200
操作系统:UC/OS-II操作系统
编译环境:ADS1.2
Update-Time : 2011年2月21日星期一
Tiger声明:本人鄙视直接复制本人文章而不加出处的个人或团体,
但不排斥别人转载tiger-john的文章,只是请您注明出处并和本人
联系或留言给我。3Q
---------------------------------------------------------
一. 基于UCOS-II操作系统的UDP网络编程
1.UDP网络编程的组成部分
Ø 启动任务:负责UDP的初始化,创建通信工具和轮训检测是否有数据报到来。
Ø UDP数据处理任务:负责UDP报文的处理
Ø UDP服务例程:实现数据的收发。
二. 启动任务
1. 启动任务的功能
l 负责初始化UDP。
l 创建UDP数据处理处理任务和UDP服务例程。
l 轮训检测是否有数据到来。
2.UDP初始化由那及部分组成
1>初始化网络端口地址
通过调用SetNetPort()函数来设置主机IP地址网关地址,子网掩码和主机物理地址。
SetNetPort();
2>初始化RTL8019芯片
通过调用InitNic()函数初始化RTL9019以太网芯片对RTL8019芯片的工作寄存器进行设置。
InitNic(0);
3>初始化ARP函数
通过调用Initial_arp()函数初始化ARP。
Initial_arp();
4>初始化UDP
通过调用Udp_Initial函数初始化UDP。
Udp_Initial();
3.启动任务程序
/********************************************************************
** Function name: TASK0
** Descriptions: 创建任务TASK1(udp数据处理任务)、TASK2(udp服务例程),分配信号量
** input parameters: 无
** output parameters: 无
** Returned value: 无
********************************************************************/
void Task0(void *pdata)
{
UBYTE iii;
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
TargetInit();
OSTaskCreate(Task1,(void *)0, &TaskStk1[1000 - 1],3);
OSTaskCreate(Task2,(void *)0, &TaskStk2[1000 - 1],4);
UDP_INIT();
SetNetPort();
InitNic(0); //RTL8019芯片初始化,在global.c中定义
Initial_arp();
Udp_Initial();
while(1)
{
OSTimeDly(4);
do
{