www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式硬件

摘要:針對實時操作系統(tǒng) μC/OS-II沒有自己的網(wǎng)絡協(xié)議棧,提出了基于 ARM7TDMI處理器的 μC/OS-II操作系統(tǒng)上輕型 PPP協(xié)議的設計與實現(xiàn),對 μC/OS-II與處理器相關(guān)的代碼部分進行了修改與編譯,實現(xiàn)了 μC/OS-II在 ARM開發(fā)板上移植,為 PPP協(xié)議的設計與實現(xiàn)提供了系統(tǒng)軟件開發(fā)平臺。通過編寫了 PPP協(xié)議main主模塊、LCP模塊、PAP模塊、NCP模塊和PPP等模塊代碼,在μC/OS-II操作系統(tǒng)中實現(xiàn)了輕型 PPP協(xié)議。通過測試,驗證了 ARM開發(fā)板的 PPP協(xié)議的網(wǎng)絡通信功能。

1 引言

隨著嵌入式技術(shù)的發(fā)展,讓嵌入式設備接入 Internet,實現(xiàn)網(wǎng)絡資源共享,是未來發(fā)展的必然趨勢,μC/OS-II操作系統(tǒng)中沒有完備的網(wǎng)絡協(xié)議棧[1,2],要實現(xiàn)嵌入式設備網(wǎng)絡通信,必須要有自己的網(wǎng)絡協(xié)議。鑒于目前 PPP協(xié)議使用的普遍性和廣泛性[3,4],本文提出了基于 ARM7TDMI處理器的 μC/OS-II操作系統(tǒng)上 PPP協(xié)議的設計與實現(xiàn)。通過 PPP協(xié)議在 μC/OS-II上的實現(xiàn)[5,6],能讓嵌入式設備接入 Internet,進行信息互訪,為未來的“普適計算”的發(fā)展提供了一個有利條件。

2 μC/OS-II移植實現(xiàn)

2.1編寫 ARM7TDMI的啟動程序

啟動代碼是芯片復位后進入 C語言的 main()函數(shù)前執(zhí)行的一段代碼,啟動代碼主要有 4個文件: Vectors.s、Init.s、Target.c和 Target.h。Vectors.s主要包括了異常向量表、堆棧初始化 InitStack和中斷服務程序與 C程序的接口。而 Init.s主要是指系統(tǒng)初始化代碼,執(zhí)行的順序是初始化堆棧,目標設備初始化和執(zhí)行 Main模塊。對于 Target.c和 Target.h來說,主要包含了異常處理程序和目標板初始化程序。

2.2 μC/OS-II的移植

OS_CPU.H中函數(shù)軟中斷 SWI機制[7],為了使底層接口函數(shù)與處理器狀態(tài)無關(guān),同時在對底層函數(shù)調(diào)用不需要知道函數(shù)的位置,因此在 uC/OS移植中,使用軟中斷指令 SWI[1]作為底層接口,通過不同的功能號來區(qū)分不同的函數(shù),其軟功能分配號如表 1所示。


用軟中斷作為操作系統(tǒng)的底層接口就需要在 C語言中使用 SWI指令。在 ADS中,有一個關(guān)鍵字_swi,用它聲明一個不存在的函數(shù),若在用戶任務中調(diào)用這個函數(shù)就在調(diào)用這個函數(shù)的任務代碼中地方插入一條 SWI指令,并且指定了功能號。

OS_CPU.H中關(guān)中斷 OS_ENTER_CRITICAL()和開中斷 OS_EXIT_CRITICAL()都是用來保護臨界資源代碼[8]。移植使用軟中斷指令 SWI使處理器進入管理模式和 ARM指令狀態(tài),并通過調(diào)用功能號 0x02和 Ox03來關(guān)中斷和開中斷。但在 C語言中,仍然使用 OS_ENTER_CRITICAL()關(guān)中斷,而使用 OS_EXIT_CRITICAL()開中斷。

OS_CPU.H中通過使用結(jié)構(gòu)常量 OS_STK_GROWTH中值來指定堆棧的生長方式:當 OS_STK_GROWTH置為 1時,表示在堆棧存儲時,是從上到下的方式存儲。當 OS_STK_GROWTH置為 0時,表示在堆棧存儲時,是從下向上的方式存儲。

OS_CPU_A.S中OS_TASK_SW()是在μC/OS-II中從低優(yōu)先級任務切換到最高優(yōu)先級任務時被調(diào)用的。在 ARM移植使用軟中斷指令 SWI使處理器進入管理模式和 ARM指令狀態(tài),并調(diào)用功能號 0實現(xiàn) OS_TASK_SW()的功能。但在 C語言中,仍然使用 OS_TASK_SW()函數(shù)進行任務切換功能。

OS_CPU_A.S中 OSStartHighRdy():在多任務環(huán)境下, OSStart()最終調(diào)用 OSStartHighRdy()函數(shù)運行多任務啟動優(yōu)先級最高的任務。移植中使用軟中斷指令 SWI使處理器進入管理模式和 ARM指令狀態(tài),并使用功能號 1實現(xiàn) OSStartHighRdy()功能。在調(diào)用 OSStartHighRdy()函數(shù)之前, OSTCBHighRdy指向的是優(yōu)先級最高的任務的任務控制塊。

OS_CPU_C.C中斷服務子程序的算法如下: void XxxISR(void) {OS_ENTER_CRITICAL()或直接給變量 OSIntSum賦 1;

清除中斷源(與具體的外設有關(guān));通知中斷控制器中斷結(jié)束:VICVectAddr=0;開中斷:OS_EXIT_CRITICAL();用戶處理程序;}

OS_CPU_C.C中任務堆棧的初始化函數(shù) OSTaskStkInit() OS_STK *OSTaskStkInit() {模擬帶參數(shù)(pdata)的函數(shù)調(diào)用;

模擬 ISR向量;按照預先所設定的寄存器值初始化堆棧結(jié)構(gòu);返回棧頂指針給調(diào)用該函數(shù)的函數(shù);}

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

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

Main主模塊:該模塊控制著整個 PPP守護進程的程序流程。當PPP連接成功后,它使 PPP守護進程進入休眠狀態(tài),一直到管理員斷開或者外部事件引起斷開時它負責斷開 PPP連接。在 PPP成功建立連接后,建立一個信號量,由 PPP模塊處理任務不斷檢測這個信號量;若檢測到有調(diào)制解調(diào)器中斷復服務程序發(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é)商正式結(jié)束。

認證協(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é)商過程結(jié)束,鏈路建立成功。

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ā)生;再次判斷這個事件是什么事件,若是接送事件,則調(diào)用 Receive()接收PPP數(shù)據(jù)幀,放到 SRAM接收緩沖區(qū),若接收后,判斷接收緩沖區(qū)是否正確地接收到數(shù)據(jù),若正確地接收到PPP數(shù)據(jù)幀時,則調(diào)用 PPPInput()進行對PPP數(shù)據(jù)幀的解析。若幀類型是 IP則調(diào)用 IP數(shù)據(jù)包的處理例程;若幀類型是 LCP則調(diào)用LCP數(shù)據(jù)幀的處理例程;若幀類型是 PAP、NCP則分別調(diào)用這兩種類型數(shù)據(jù)包的處理例程。若是發(fā)送事件,則調(diào)用Send()發(fā)送PPP數(shù)據(jù)幀。

4 輕型 PPP協(xié)議模塊的測試和性能分析

根據(jù)點對點通信的特點,分別在 PC和ARM板兩端安裝一個Modem,通過一個交換機,或直接用電話線連接起來。由 PC端通過撥號軟件,進行與 ARM開發(fā)板端的連接后,分別通過雙方的協(xié)商,建立數(shù)據(jù)通信;在ARM開發(fā)板端,建立一個Test_task測試任務模塊,將一個信息“ hello world”封裝成 UDP包,再經(jīng) PPP模塊的封裝,發(fā)送到 PC機端,PC機端若與ARM板連接成功,在 Modem狀態(tài)對話框中,能夠正確的顯示出對方所發(fā)送來的字符數(shù)和自己發(fā)送給對方字節(jié)數(shù)以及連接狀態(tài);若 PC端顯示出這個信息,說明PPP模塊得以實現(xiàn)。通過測試后,其 Modem狀態(tài)連接圖如圖 1所示。


從PC端的Modem狀態(tài)連接圖可知,該 PC機端已經(jīng)通過了相互協(xié)商,建立連接,處于數(shù)據(jù)幀的接收狀態(tài)。已經(jīng)正確地接收到由 ARM開發(fā)板所發(fā)送的PPP數(shù)據(jù)幀,進行了相互通信,表明 ARM板上PPP協(xié)議成功的得到了實現(xiàn)。

5 結(jié)束語

本文作者創(chuàng)新點在于從uCOS—II內(nèi)核工作原理入手 ,以ARM開發(fā)板為平臺,簡述了系統(tǒng)硬件平臺 ARM7TDMI處理器的體系結(jié)構(gòu)和相應的指令集。對與處理器相關(guān)的代碼部分進行了修改與編譯,實現(xiàn)了μC/OS-II在ARM開發(fā)板上移植;在該系統(tǒng)平臺上重點的介紹了輕型PPP協(xié)議設計與實現(xiàn)的具體過程,主要對main主模塊、LCP模塊、PAP模塊、NCP模塊和PPP模塊等五個方面的設計與代碼編寫。通過測試,驗證了ARM開發(fā)板的PPP協(xié)議的網(wǎng)絡通信功能。



可可

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉