摘要:在介紹IEEE802.11MAC協(xié)議結(jié)構(gòu)的基礎(chǔ)上,給出協(xié)議開放的方案和步驟,提出IEEE802.11MAC協(xié)議在32位ARM7TDMI微處理器S3C4510B上的一種移植方案,開發(fā)出了嵌入式IEEE802.11MAC協(xié)議的IP核。同時,圍繞著IEEE802.11MAC協(xié)議的原理和移植過程中硬件相關(guān)部分,介紹ARM平臺的結(jié)構(gòu)、可用資源以及ARM的初始化過程等。
引言
無線局域網(wǎng)被認(rèn)為是下一代IT產(chǎn)業(yè)發(fā)展的是大推動之一,被IT業(yè)賦予了極大的希望。無線局域網(wǎng)802.11系列標(biāo)準(zhǔn)的MAC協(xié)議是一樣的,只是在物理層上有差異,因此對802.11MAC協(xié)議的開發(fā),不論是在802.11b流行的今天,還是802.11g可能會成為主流的將來,都是很有意義的。當(dāng)然,ARM以其先進(jìn)的體系結(jié)構(gòu)已經(jīng)成為嵌入式市場的RISC標(biāo)準(zhǔn),因此基于ARM的IEEE802.11MAC協(xié)議的開發(fā)是很有現(xiàn)實意義的。
我們的開發(fā)流程如圖1所示。
PC軟件開發(fā)是指脫離硬件的嵌入式軟件開發(fā)階段。此階段可以在各種IDE環(huán)境下進(jìn)行開發(fā),并進(jìn)行軟仿真來驗證軟件的邏輯正確性。然后將開發(fā)出來的PC軟件結(jié)合硬件所需要的硬件相關(guān)代碼向硬件平臺進(jìn)行移值調(diào)試。前兩個階段完成后就得到了開發(fā)的最終成品。
1 協(xié)議結(jié)構(gòu)
IEEE802.11MAC協(xié)議的SDL描述可以分為以下幾個功能模塊,如圖2所示。
*MAC數(shù)據(jù)服務(wù)模塊:向LLC層提供MAC層的數(shù)據(jù)服務(wù)接口。
*MPDU生成模塊:將MSDU(MMPDU)生成MPDU,并對MPDU分段、加密以及進(jìn)行排隊管理。
*協(xié)議控制模塊:完成DCF、PCF下的各種協(xié)議控制功能,包括RTS/CTS、ACK、ATIM、CF-ACK等,并根據(jù)信道狀態(tài)請求退避,在傳送數(shù)據(jù)挫敗后控制重傳等。該模塊還負(fù)責(zé)對所有接收到的MAC幀進(jìn)行分類,按不同的類型送到不同的模塊進(jìn)行處理。
*發(fā)送模塊:將MAC幀以字節(jié)流的形式發(fā)送到物理層,完成實際的發(fā)送過程。這個模塊中要完成對整個發(fā)送幀產(chǎn)生CRC校驗,向發(fā)送的beacon幀中加入時戳用來進(jìn)行時間同步。這個模塊還負(fù)責(zé)處理底層獲得的當(dāng)前信道的狀態(tài),完成協(xié)議要求的隨機退避功能。
*接收模塊:對從物理層接收到的幀進(jìn)行CRC校驗。如果正確接收的話,則進(jìn)行地址過濾,丟棄目的地址不是自己的幀。如果數(shù)據(jù)是經(jīng)過分段的話,還有進(jìn)行數(shù)據(jù)分段的重裝,然后將接收幀送往協(xié)議控制模塊進(jìn)行分類處理。同時,這個模塊還要提取接收幀中的信道保留信息,結(jié)合信道上有無載波的狀況綜合判斷信道的狀態(tài),并把信道的狀態(tài)送往發(fā)送模塊來協(xié)調(diào)退避功能的完成。
*MAC管理實體模塊:是管理核心,完成所有的管理功能,包括掃描、入網(wǎng)、認(rèn)證、解認(rèn)證、關(guān)聯(lián)、解關(guān)聯(lián)、重新關(guān)聯(lián)、beacon幀的發(fā)送、站點狀態(tài)管理等功能。
*MAC管理服務(wù)模塊:提供MAC管理接口,包括MIB庫的管理,對MIB庫的訪問,并將管理接口傳來的管理服務(wù)請求送到MLME模塊進(jìn)行實際處理,將結(jié)果返回給管理接口。
2 協(xié)議實現(xiàn)
IEEE802.11MAC協(xié)議的SDL流程中各模塊之間的交互是通過信號的方式來完成的,模塊之間通過交互信息來協(xié)調(diào)工作,并且完成各種MAC幀的結(jié)構(gòu)之間的傳遞。我們將信號定義為Signal(PID,SID,Param)參數(shù)PID用來標(biāo)準(zhǔn)信號的目的模塊,SID用來標(biāo)志信號在目的模塊中由哪個函數(shù)來處理,參數(shù)Param是一個指向存儲區(qū)的指針,存儲區(qū)里存放的是信號所要傳遞的信息。為了能使整個協(xié)議在信號的驅(qū)動下運行,需要由一個功能實體來完成信號的處理過程。這里采用的是一個循環(huán)隊列來存放產(chǎn)生的信號,由主循環(huán)程序來不斷檢測隊列中的信號,根據(jù)信號的PID和SID調(diào)用相應(yīng)模塊里的信號處理函數(shù)進(jìn)行處理。
協(xié)議中還涉及大量的比較判斷和定時操作,當(dāng)比較成立或定時到期后,進(jìn)入相應(yīng)的處理程序。其實,我們可以認(rèn)為當(dāng)比較成立或時間到期產(chǎn)生相應(yīng)的信號,然后由信號處理機制來完成后續(xù)的工作。我們所要做的只是定義一個比較隊列和一個定時隊列,比較操作加到比較隊列中,定時操作加到定時隊列中,由主循環(huán)檢測這兩個隊列。當(dāng)某個比較判斷成立時或某個定時期時從相應(yīng)的隊列中取出,然后再以信號方式加入到信號隊列中去。因此我們將比較操作和定時操作分別定義為:
Compare(PID,SID,Param11,Param12,Param21,Param22,Param31,Param32);
Timer(PID,SID,Time);
PID、SID標(biāo)志比較成立或定時到期時產(chǎn)生的信號,Paramil、Parami2(i=1,2,3)為比較操作中需要進(jìn)行比較的幾對數(shù)據(jù)。Time為定時操作中設(shè)定的定時值。
上面介紹的機制建構(gòu)了協(xié)議框架,然后在這個框架基礎(chǔ)上按照SDL流程編寫相應(yīng)的信號處理函數(shù)就要吧實現(xiàn)整個協(xié)議。
前期協(xié)議開發(fā)了驗證邏輯上的正確性。我們在Microsoft Visual C++環(huán)境下進(jìn)行開發(fā)并進(jìn)行了軟仿真,結(jié)果表明所開發(fā)的設(shè)計在邏輯上是正確可行的。
3 協(xié)議向ARM平臺的移植
我們所使用的ARM硬件平臺ARM anywhere II采用的是三星公司的ARM芯片S3C4510B。S3C4510B是采用ARM7TDMI核的高性價比RISC微控制器,特別適用于網(wǎng)絡(luò)應(yīng)用系統(tǒng)。
我們開發(fā)了一個軟件模塊PHY來模擬物理層收斂過程子層(PLCP),對于物理介質(zhì)依賴子層(PMD)我們沒有實現(xiàn)。這并不影響MAC協(xié)議的開發(fā)。LLC層的數(shù)據(jù)通過PC串口發(fā)送到ARM平臺來模擬,數(shù)據(jù)經(jīng)過MAC處理后送到PLCP子層,然后由PLCP子層直接發(fā)送。數(shù)據(jù)發(fā)送通過ARM的通用I/O來實現(xiàn),發(fā)送速率由S3C4510B的定時器來控制。
在將802.11MAC協(xié)議向ARM平臺的移植方案中,有一部分代碼的執(zhí)行是依賴于ARM平臺的。這部分代碼的移植工作需要特別注意,包括以下幾個方面:
①定時器。協(xié)議中要求的隨機退避過程需要底層周期性的送slot來進(jìn)行,這個周期性 slot需要用定時器來實現(xiàn)。協(xié)議中的網(wǎng)絡(luò)分析矢量NAV需要用定時器來實現(xiàn),以判斷NAV的狀態(tài)。協(xié)議中定義的幾種幀間隔IFS(SIFS、DIFS、PIFS、EIFS)也需要利用定時器來實現(xiàn)。
②外部中斷。802.11MAC協(xié)議中一個重要部分就是載波監(jiān)聽。當(dāng)信道狀態(tài)變化時(由忙到閑,由閑到忙)都要給負(fù)責(zé)監(jiān)聽信道狀態(tài)的模塊一個指示(CCA),指示當(dāng)前的信道狀態(tài)。這個過程可以由S3C4510B ARM芯片的外部中斷來很好地實現(xiàn)。由于S3C4510B ARM芯片可以對中斷檢測方式進(jìn)行配置,可以將中斷檢測方式配置為上升沿和下降沿均觸發(fā)中斷,這些就能很好地模塊協(xié)議的中物理載波監(jiān)聽(CS)。
③I/O。模擬PLCP子層的數(shù)據(jù)收發(fā),一共用到8個I/O端口,一次發(fā)送8位。在發(fā)送數(shù)據(jù)時,還使用了一個I/O端口作為發(fā)送指示。這個I/O端口通過信道模擬器連接到其它節(jié)點的用來監(jiān)聽信道狀態(tài)的外部中斷引腳上。
④UART。我們用UART來實現(xiàn)PC和ARM的通信。一些管理命令,例如掃描、入網(wǎng)、認(rèn)證、關(guān)聯(lián)、解認(rèn)證、解關(guān)聯(lián),節(jié)點的配置信息例如MAC地址等都可以從串口來發(fā)送給ARM。另外,所有發(fā)送的數(shù)據(jù)都會通過串口傳送給ARM進(jìn)行發(fā)送,所有接收到的數(shù)據(jù)將通過串口回傳給PC。
⑤以太網(wǎng)控制器。以太網(wǎng)控制器在AP中是比較有用的。由于AP之間是通過有線的骨干網(wǎng)(backbone)來進(jìn)行連接的,從而組成了分布式系統(tǒng)(DS),以太網(wǎng)控制器已經(jīng)集成了IEEE802.11接口,就為實現(xiàn)這個有線的backbone提供了便利。
4 硬件仿真環(huán)境
圖3中,IEEE802.11MAC協(xié)議和PLCP子層模擬模塊都都在ARM平臺上,串口通信程序運行在PC上。它和ARM的UART進(jìn)行通信用于模擬LLC層數(shù)據(jù)服務(wù)和上層的管理服務(wù),同時它還可以顯示節(jié)點的運行狀態(tài)和當(dāng)前的網(wǎng)絡(luò)狀態(tài)。
下面介紹一下我們使用的簡易信道模擬器的原理。信道模擬器對應(yīng)每個節(jié)點(ARM平臺)有一套接口,其中有8個I/O用于數(shù)據(jù)傳輸。由于無線信道是開放式的,一個節(jié)點發(fā)送時其它節(jié)點都能收到,因此在信道模擬器中每個節(jié)點的8個I/O是兩兩相通的,這樣就能保證一個節(jié)點發(fā)送時其它節(jié)點都能收到。另外,由于要模擬信道上的載波監(jiān)聽過程,我們用到了ARM上的外部中斷用做載波監(jiān)聽位(CS),然后用一個I/O發(fā)送指示(TR)。這樣,信道模擬器上要維持任何一個節(jié)點的CS位,都與其它節(jié)點的TR有一定的邏輯關(guān)系,例如,當(dāng)一個節(jié)點發(fā)送時,將其TR置為0(0表示信道變忙,ARM引腳初始電平為高電平1),則這個0應(yīng)該立即能反映到其它節(jié)點的CS位上從而產(chǎn)生中斷,其它節(jié)點都會知道信道變忙而開始從信道接收數(shù)據(jù)。同時,當(dāng)節(jié)點發(fā)送完畢后將TR置為1,其它節(jié)點就會產(chǎn)生中斷并且檢測到CS位為1從而知道信道變閑,接收結(jié)束。
實際的信道模擬支持兩個基本服務(wù)區(qū)(BSS)組成的分布式系統(tǒng)(DS),每個BBS內(nèi)支持1個AP和2個普通節(jié)點。這內(nèi)部的邏輯關(guān)系用可編程邏輯器件實現(xiàn)。
5 移植過程中的注意事項
PHY軟件模塊模擬PLCP子層,負(fù)責(zé)完成要求的載波監(jiān)聽和數(shù)據(jù)收發(fā)時的定時控制。這些功能都是采用中斷方式實現(xiàn)的,因此要求代碼執(zhí)行速率要快。這里使用匯編語言開發(fā)來提供代碼的執(zhí)行效率。
為了獲得較高的代碼執(zhí)行速率和快速的中斷響應(yīng),要求所有協(xié)議代碼和中斷服務(wù)程序都在SDRAM中執(zhí)行。這就涉及到在設(shè)計ARM的初始化代碼時要正確配置相應(yīng)的存儲區(qū)控制寄存器,并且完成代碼的搬移和地址的重映射。
圖3
ARM的初始化代碼包括:
*定義入口點(entry point)。
*定義異常向量表,用來處理各種CPU異常,其中包括中斷。
*配置SDRAM和Flash的地址范圍、時序等參數(shù),以使這些存儲器能正常工作。
*代碼搬移。程序代碼一般應(yīng)從Flash調(diào)入SDRAM中運行,以提高系統(tǒng)的運行速度。同時,系統(tǒng)及用戶堆棧、運行數(shù)據(jù)也都放在SDRAM中。
*對SDRAM進(jìn)行地址重映射,從初始時地址空間的高端搬移到0x0開始的位置。
*初始化堆棧。
*初始化存儲區(qū)。
*根據(jù)需要改變處理器工作模式。
*開中斷。
*到C程序代碼入口點開始執(zhí)行。
另外,移植過程中還要考慮的一個問題是內(nèi)存分配的問題。嵌入式系統(tǒng)中對內(nèi)存的分配,一般來說要求快速可靠并且有效,實際上就是在采用靜態(tài)分配內(nèi)存還是動態(tài)分配存的問題。如果系統(tǒng)要求對實時性要求高并且不能容忍分配失敗,這時就需要采用靜態(tài)分配內(nèi)存。采用靜態(tài)分配一個不可避免的問題就是系統(tǒng)失去了靈活性,必須在設(shè)計階段就預(yù)先估計所需要的內(nèi)存并對其作出分配,并且要考慮到所有可能的情況。我們在移植過程中,考慮到實時生和可靠性是我們的主要目標(biāo),并且我們的ARM平臺具有較大的存儲區(qū),因而采用了靜態(tài)分配的方式。
結(jié)語
目前,嵌入式協(xié)議開發(fā)已經(jīng)非常普通,本文只是根據(jù)作者的實際經(jīng)驗,介紹了嵌入式802.11MAC協(xié)議開發(fā)的基本過程。目前開發(fā)的協(xié)議已經(jīng)在ARM平臺上成功運行,并且性能良好。現(xiàn)在所使用的ARM平臺是沒有操作系統(tǒng)支持的,所移植的協(xié)議硬件依賴性太大,下一步我們將在有操作系統(tǒng)的ARM平臺上進(jìn)行協(xié)議移植,通過全長操作系統(tǒng)提供的API接口來提供協(xié)議的可移植性。另外,繼續(xù)優(yōu)化代碼,提高代碼效率,提高實時性與可靠性,以更適合于嵌入式應(yīng)用環(huán)境也將是我們下一步的目標(biāo)。
- P核設(shè)計(5119)
相關(guān)推薦
全硬件TCP/IP協(xié)議棧學(xué)習(xí)筆記(第四天:全硬件TCP/IP協(xié)議模塊學(xué)習(xí))
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file1.elecfans.com//web2/M00/A7/17/wKgZomUMQlGAHoIXAAB7K8nr23k113.png)
256核!賽昉發(fā)布全新RISC-V眾核子系統(tǒng)IP平臺
ARM7&ARM9雙核平臺的技術(shù)分析
IP 基礎(chǔ)知識 —— IP 協(xié)議相關(guān)技術(shù)
IP核是指什么?分為哪幾種形式
IP核生成并導(dǎo)出到SDK平臺
IP核簡介
IP核簡介
MAC協(xié)議怎么分類?
ip核使用問題
ip與mac地址的綁定命令及方法
協(xié)議棧介紹
協(xié)議棧介紹
協(xié)議棧介紹--TCP/IP
AD9683的引腳如何與zynq 7015芯片中的JESD204 ip核端口對應(yīng)相連?
FPGA IP核的相關(guān)問題
FPGA千兆以太網(wǎng)項目課程案例分享
FPGA實現(xiàn)路由、MAC層協(xié)議的困難在哪里?
ISEtri-mode ethernet MAC ip核的使用求助
M0+MAC+TCP/IP 以太網(wǎng)單芯片方案 W7500EVB用戶手冊連載(18)--網(wǎng)絡(luò)篇
TEMAC核有哪些功能
Vivado生成IP核
[轉(zhuǎn)]互聯(lián)型嵌入式應(yīng)用ARM選型分享
quartus2 調(diào)用以太網(wǎng)mac核 往上傳少了1個字節(jié)
【Combat FPGA開發(fā)板】基于FPGA的網(wǎng)口設(shè)計——MAC協(xié)議的開發(fā)
介紹在ARM系列MCU中使用精簡的TCP/IP協(xié)議的幾種方式
修改arm下的mac地址和ip地址相關(guān)資料分享
關(guān)于IP核
關(guān)于fpga的IP核
剖析:WIZnet以太網(wǎng)核心技術(shù)–全硬件TCP/IP協(xié)議棧
基于ARM的TCP/IP協(xié)議棧LwlP是如何實現(xiàn)的?
基于IP核的SoC接口技術(shù)
基于FPGA的IP核的DDS信號發(fā)生器如何用IP核
基于μC/OS—II的μC/IP協(xié)議棧在ARM系統(tǒng)中的實現(xiàn)
如何告訴TCP/IP協(xié)議棧使用自定義MAC的地址?
如何在zynq 702板上將IP核集成到ARM的項目?
開放核協(xié)議:IP核在SoC設(shè)計中的接口技術(shù)
怎么實現(xiàn)的基于TCP/IP協(xié)議棧的簡易服務(wù)器?
承接各類FPGA/DSP/ARM/IP開發(fā)相關(guān)項目
有人知道為什么MIG IP核中的AXI協(xié)議。為什么沒有AXI_WID這個信號呢?
求助,所搭的IP軟核的通訊協(xié)議與總線支持的通訊協(xié)議(ICB)不同怎么轉(zhuǎn)換?
集成硬件TCP/IP協(xié)議棧網(wǎng)口芯片
基于μC/OS II的μC/IP協(xié)議棧在ARM系統(tǒng)中的實現(xiàn)
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于ARM 平臺的MAC 協(xié)議IP 核設(shè)計
![](https://skin.elecfans.com/images/2021-soft/load.png)
由網(wǎng)絡(luò)協(xié)議棧芯片W3100A 構(gòu)成的TCP IP處理平臺
![](https://skin.elecfans.com/images/2021-soft/load.png)
一種嵌入式TCP/IP協(xié)議的設(shè)計與實現(xiàn)
![](https://skin.elecfans.com/images/2021-soft/load.png)
IP協(xié)議 (Internet協(xié)議中IP協(xié)議的概念及原理)
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于ARM微處理器TCP IP協(xié)議棧LwlP實現(xiàn)
![](https://skin.elecfans.com/images/2021-soft/eye.png)
TCP/IP協(xié)議,TCP/IP協(xié)議內(nèi)容和作用是什么?
![](https://skin.elecfans.com/images/2021-soft/eye.png)
網(wǎng)際協(xié)議(IP),網(wǎng)際協(xié)議(IP)是什么意思
![](https://skin.elecfans.com/images/2021-soft/eye.png)
IP層協(xié)議,IP層協(xié)議的內(nèi)容有哪些?
![](https://skin.elecfans.com/images/2021-soft/eye.png)
燦芯半導(dǎo)體獲得ARM IP 授權(quán)
![](https://skin.elecfans.com/images/2021-soft/eye.png)
tcp ip協(xié)議_什么是tcp ip協(xié)議
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web1/M00/EB/A0/pIYBAGB86e2AA8i5AADGujP1HUI639.jpg)
基于Modbus協(xié)議的ARM嵌入式監(jiān)測平臺設(shè)計與實現(xiàn)
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于ARM技術(shù)的遠(yuǎn)程圖像信息傳輸描述了tcp/ip協(xié)議實現(xiàn)圖像信息傳輸?shù)姆绞?/a>
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于ARM+FPGA的開發(fā)平臺實現(xiàn)了基于CSMA/CA的MAC協(xié)議
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file1.elecfans.com//web2/M00/A6/FC/wKgZomUMQaSASNzZAAALgfPc_rM858.jpg)
基于CSMA/CA的MAC協(xié)議設(shè)計實現(xiàn)
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file1.elecfans.com//web2/M00/A7/38/wKgZomUMQxuAaEQ5AAAMiSbNbl4132.jpg)
mac地址和ip地址有什么區(qū)別
![](https://skin.elecfans.com/images/2021-soft/eye.png)
mac地址和ip地址是什么決定的
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web1/M00/46/84/o4YBAFqfrVyAEEuSAAB2SA7KCaw890.jpg)
Nimu如何修改成支持多個MAC IP
![](https://skin.elecfans.com/images/2021-soft/load.png)
e絡(luò)盟宣布與全球半導(dǎo)體IP領(lǐng)先供應(yīng)商ARM簽署分銷協(xié)議
![](https://skin.elecfans.com/images/2021-soft/eye.png)
蘋果Mac設(shè)備或會采用ARM高性能芯片
![](https://skin.elecfans.com/images/2021-soft/eye.png)
網(wǎng)絡(luò)通信技術(shù):IP地址和MAC地址的差異
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web1/M00/CB/67/o4YBAF-RL5yAfPb8AADjUmUbLNQ099.png)
基于ARM微處理器的嵌入式TCP-IP協(xié)議的實現(xiàn)與應(yīng)用
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于ARM的IEEE802-11bMAC層協(xié)議IP核設(shè)計
![](https://skin.elecfans.com/images/2021-soft/load.png)
Allegro網(wǎng)絡(luò)的MAC、DHCP 和 HTTP三種協(xié)議解析
![](https://skin.elecfans.com/images/2021-soft/eye.png)
什么是IP協(xié)議
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web2/M00/91/15/pYYBAGPq7lyAeWJNAABLoU-_BaI695.jpg)
全新 Arm IP Explorer 平臺助力 SoC 架構(gòu)師與設(shè)計廠商加速 IP 選擇
![](https://skin.elecfans.com/images/2021-soft/eye.png)
如何綁定ip地址與mac物理地址呢?
![](https://skin.elecfans.com/images/2021-soft/eye.png)
評論