歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 基於uCOS-II的UDP網絡編程

基於uCOS-II的UDP網絡編程

日期:2017/3/1 10:20:51   编辑:Linux編程
一. 基於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

{

iii=Rec_Packet();//監控是否有數據到來

}

while(iii!=0);

}

}

Copyright © Linux教程網 All Rights Reserved