色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 輕型PPP協(xié)議在μC/OS-II操作系統(tǒng)中的實現(xiàn)

          輕型PPP協(xié)議在μC/OS-II操作系統(tǒng)中的實現(xiàn)

          作者: 時間:2012-03-21 來源:網(wǎng)絡 收藏

          OS_CPU_C.C中斷服務子程序的算法如下:

          void XxxISR(void)

          {OS_ENTER_CRITICAL()或直接給變量OSIntSum賦1;

          清除中斷源(與具體的外設有關);

          通知中斷控制器中斷結束:VICVectAddr=0;

          開中斷:OS_EXIT_CRITICAL();

          用戶處理程序;}

          OS_CPU_C.C中任務堆棧的初始化函數(shù)OSTaskStkInit()

          OS_STK *OSTaskStkInit()

          {模擬帶參數(shù)(pdata)的函數(shù)調用;

          模擬ISR向量;

          按照預先所設定的寄存器值初始化堆棧結構;

          返回棧頂指針給調用該函數(shù)的函數(shù);}

          3 輕型協(xié)議的設計與實現(xiàn)

          協(xié)議軟件模塊主要通過各層協(xié)商機制完成數(shù)據(jù)鏈路的建立、配置、測試、以及在鏈路連接建立后,將收到的數(shù)據(jù)幀解析,根據(jù)協(xié)議字段將數(shù)據(jù)信息交由不同的上層模塊進行處理;同時可根據(jù)系統(tǒng)的需要,將上層模塊傳來的信息打包成不同的PPP數(shù)據(jù)幀發(fā)送出去。

          Main主模塊:該模塊控制著整個PPP守護進程的程序流程。當PPP連接成功后,它使PPP守護進程進入休眠狀態(tài),一直到管理員斷開或者外部事件引起斷開時它負責斷開PPP連接。在PPP成功建立連接后,建立一個信號量,由PPP模塊處理任務不斷檢測這個信號量;若檢測到有調制解調器中斷復服務程序發(fā)來的信號量,則進行PPP數(shù)據(jù)幀的發(fā)送或接收。

          LCP模塊:該階段是通過交換配置數(shù)據(jù)包來建立和配置數(shù)據(jù)鏈路,發(fā)送LCP REQ數(shù)據(jù)包,將會收到客戶端的發(fā)送過來的LCP ACK數(shù)據(jù)包,客戶端還要回REQ數(shù)據(jù)包,服務器端接受到LCP REQ后,則向客戶端同樣發(fā)送一個LCP ACK數(shù)據(jù)包,至此鏈路協(xié)商正式結束。

          認證協(xié)商模塊(PAP):認證階段是可選的,如果在鏈路建立協(xié)商階段,服務器發(fā)送的第一個LCP REQ數(shù)據(jù)包中含有了認證的數(shù)據(jù)選項,而且其數(shù)據(jù)選項一直沒有被對方拒絕并且得到確認,則進入認證協(xié)商階段;否則,進入網(wǎng)絡層協(xié)商階段。

          網(wǎng)絡層協(xié)商模塊(NCP):NCP協(xié)商的主要目的是服務器首先讓客戶端確認自身的IP地址,然后給客戶端動態(tài)分配一個合法的IP地址。網(wǎng)絡層協(xié)商 NCP每次請求數(shù)據(jù)包必須含有服務器端的IP選項,并且此選項最終被確認。在客戶端回送了對服務器端的確認數(shù)據(jù)包后,開始進入客戶端向服務器端申請動態(tài)分配IP地址的階段,所以客戶端繼續(xù)向服務器端發(fā)送含有客戶端IP地址且值為0的NCP REQ數(shù)據(jù)包,服務器端接受到這個數(shù)據(jù)包后,從IP地址池中取出一個合法的IP地址,發(fā)送了一個NCP NAK數(shù)據(jù)包。在該數(shù)據(jù)包中,客戶端IP地址的數(shù)據(jù)選項中填入了從IP地址池中取出的IP地址的值,即給客戶端動態(tài)的分配IP地址的值。隨后,客戶端將接收到的NCP NAK中的IP地址值作為下一次回送的NCP REQ中的客戶端的IP地址值的選項。當服務器端再接收到此NCP REQ數(shù)據(jù)包后,便發(fā)送NCP ACK數(shù)據(jù)包,至此整個PPP協(xié)商過程結束,鏈路建立成功。

          PPP模塊:在協(xié)商好網(wǎng)絡協(xié)議,可以進行數(shù)據(jù)的傳輸。為了更實時的進行數(shù)據(jù)傳輸,在這里為PPP協(xié)議模塊建立一個信號量,當發(fā)生modem接受事件時,當Modem接收到數(shù)據(jù)時引發(fā)處理器的外部中斷。在外部中斷0處理函數(shù)中,將接收到的數(shù)據(jù)存入串口緩沖區(qū)中,如果緩沖區(qū)的數(shù)據(jù)已組成了一個完整的 PPP數(shù)據(jù)幀,則由中斷服務子程序通過μC/OS-II所提供的OSSemPost()向任務PPP模塊任務發(fā)送一個信號量。

          對PPP模塊任務來說,通過OSSemPend()函數(shù)等待由Modem中斷服務程序發(fā)出的信號量,當接收到這個信號量后,說明有事件發(fā)生;再次判斷這個事件是什么事件,若是接送事件,則調用Receive()接收PPP數(shù)據(jù)幀,放到SRAM接收緩沖區(qū),若接收后,判斷接收緩沖區(qū)是否正確地接收到數(shù)據(jù),若正確地接收到PPP數(shù)據(jù)幀時,則調用PPPInput()進行對PPP數(shù)據(jù)幀的解析。若幀類型是IP則調用IP數(shù)據(jù)包的處理例程;若幀類型是LCP則調用LCP數(shù)據(jù)幀的處理例程;若幀類型是PAP、NCP則分別調用這兩種類型數(shù)據(jù)包的處理例程。若是發(fā)送事件,則調用 Send()發(fā)送PPP數(shù)據(jù)幀。



          評論


          相關推薦

          技術專區(qū)

          關閉