歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

基於uCOS-II的UDP網絡編程

一.    基於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