摘要:在介紹IEEE802.11MAC協(xié)議結(jié)構(gòu)的基礎(chǔ)上,給出協(xié)議開放的方案和步驟,提出IEEE802.11MAC協(xié)議在32位ARM7TDMI微處理器S3C4510B上的一種移植方案,開發(fā)出了嵌入式IEEE802.11MAC協(xié)議的IP核。同時(shí),圍繞著IEEE802.11MAC協(xié)議的原理和移植過程中硬件相關(guān)部分,介紹ARM平臺(tái)的結(jié)構(gòu)、可用資源以及ARM的初始化過程等。
引言
無線局域網(wǎng)被認(rèn)為是下一代IT產(chǎn)業(yè)發(fā)展的是大推動(dòng)之一,被IT業(yè)賦予了極大的希望。無線局域網(wǎng)802.11系列標(biāo)準(zhǔn)的MAC協(xié)議是一樣的,只是在物理層上有差異,因此對(duì)802.11MAC協(xié)議的開發(fā),不論是在802.11b流行的今天,還是802.11g可能會(huì)成為主流的將來,都是很有意義的。當(dāng)然,ARM以其先進(jìn)的體系結(jié)構(gòu)已經(jīng)成為嵌入式市場的RISC標(biāo)準(zhǔn),因此基于ARM的IEEE802.11MAC協(xié)議的開發(fā)是很有現(xiàn)實(shí)意義的。
我們的開發(fā)流程如圖1所示。
PC軟件開發(fā)是指脫離硬件的嵌入式軟件開發(fā)階段。此階段可以在各種IDE環(huán)境下進(jìn)行開發(fā),并進(jìn)行軟仿真來驗(yàn)證軟件的邏輯正確性。然后將開發(fā)出來的PC軟件結(jié)合硬件所需要的硬件相關(guān)代碼向硬件平臺(tái)進(jìn)行移值調(diào)試。前兩個(gè)階段完成后就得到了開發(fā)的最終成品。
1 協(xié)議結(jié)構(gòu)
IEEE802.11MAC協(xié)議的SDL描述可以分為以下幾個(gè)功能模塊,如圖2所示。
*MAC數(shù)據(jù)服務(wù)模塊:向LLC層提供MAC層的數(shù)據(jù)服務(wù)接口。
*MPDU生成模塊:將MSDU(MMPDU)生成MPDU,并對(duì)MPDU分段、加密以及進(jìn)行排隊(duì)管理。
*協(xié)議控制模塊:完成DCF、PCF下的各種協(xié)議控制功能,包括RTS/CTS、ACK、ATIM、CF-ACK等,并根據(jù)信道狀態(tài)請(qǐng)求退避,在傳送數(shù)據(jù)挫敗后控制重傳等。該模塊還負(fù)責(zé)對(duì)所有接收到的MAC幀進(jìn)行分類,按不同的類型送到不同的模塊進(jìn)行處理。
*發(fā)送模塊:將MAC幀以字節(jié)流的形式發(fā)送到物理層,完成實(shí)際的發(fā)送過程。這個(gè)模塊中要完成對(duì)整個(gè)發(fā)送幀產(chǎn)生CRC校驗(yàn),向發(fā)送的beacon幀中加入時(shí)戳用來進(jìn)行時(shí)間同步。這個(gè)模塊還負(fù)責(zé)處理底層獲得的當(dāng)前信道的狀態(tài),完成協(xié)議要求的隨機(jī)退避功能。
*接收模塊:對(duì)從物理層接收到的幀進(jìn)行CRC校驗(yàn)。如果正確接收的話,則進(jìn)行地址過濾,丟棄目的地址不是自己的幀。如果數(shù)據(jù)是經(jīng)過分段的話,還有進(jìn)行數(shù)據(jù)分段的重裝,然后將接收幀送往協(xié)議控制模塊進(jìn)行分類處理。同時(shí),這個(gè)模塊還要提取接收幀中的信道保留信息,結(jié)合信道上有無載波的狀況綜合判斷信道的狀態(tài),并把信道的狀態(tài)送往發(fā)送模塊來協(xié)調(diào)退避功能的完成。
*MAC管理實(shí)體模塊:是管理核心,完成所有的管理功能,包括掃描、入網(wǎng)、認(rèn)證、解認(rèn)證、關(guān)聯(lián)、解關(guān)聯(lián)、重新關(guān)聯(lián)、beacon幀的發(fā)送、站點(diǎn)狀態(tài)管理等功能。
*MAC管理服務(wù)模塊:提供MAC管理接口,包括MIB庫的管理,對(duì)MIB庫的訪問,并將管理接口傳來的管理服務(wù)請(qǐng)求送到MLME模塊進(jìn)行實(shí)際處理,將結(jié)果返回給管理接口。
2 協(xié)議實(shí)現(xiàn)
IEEE802.11MAC協(xié)議的SDL流程中各模塊之間的交互是通過信號(hào)的方式來完成的,模塊之間通過交互信息來協(xié)調(diào)工作,并且完成各種MAC幀的結(jié)構(gòu)之間的傳遞。我們將信號(hào)定義為Signal(PID,SID,Param)參數(shù)PID用來標(biāo)準(zhǔn)信號(hào)的目的模塊,SID用來標(biāo)志信號(hào)在目的模塊中由哪個(gè)函數(shù)來處理,參數(shù)Param是一個(gè)指向存儲(chǔ)區(qū)的指針,存儲(chǔ)區(qū)里存放的是信號(hào)所要傳遞的信息。為了能使整個(gè)協(xié)議在信號(hào)的驅(qū)動(dòng)下運(yùn)行,需要由一個(gè)功能實(shí)體來完成信號(hào)的處理過程。這里采用的是一個(gè)循環(huán)隊(duì)列來存放產(chǎn)生的信號(hào),由主循環(huán)程序來不斷檢測隊(duì)列中的信號(hào),根據(jù)信號(hào)的PID和SID調(diào)用相應(yīng)模塊里的信號(hào)處理函數(shù)進(jìn)行處理。
協(xié)議中還涉及大量的比較判斷和定時(shí)操作,當(dāng)比較成立或定時(shí)到期后,進(jìn)入相應(yīng)的處理程序。其實(shí),我們可以認(rèn)為當(dāng)比較成立或時(shí)間到期產(chǎn)生相應(yīng)的信號(hào),然后由信號(hào)處理機(jī)制來完成后續(xù)的工作。我們所要做的只是定義一個(gè)比較隊(duì)列和一個(gè)定時(shí)隊(duì)列,比較操作加到比較隊(duì)列中,定時(shí)操作加到定時(shí)隊(duì)列中,由主循環(huán)檢測這兩個(gè)隊(duì)列。當(dāng)某個(gè)比較判斷成立時(shí)或某個(gè)定時(shí)期時(shí)從相應(yīng)的隊(duì)列中取出,然后再以信號(hào)方式加入到信號(hào)隊(duì)列中去。因此我們將比較操作和定時(shí)操作分別定義為:
Compare(PID,SID,Param11,Param12,Param21,Param22,Param31,Param32);
Timer(PID,SID,Time);
PID、SID標(biāo)志比較成立或定時(shí)到期時(shí)產(chǎn)生的信號(hào),Paramil、Parami2(i=1,2,3)為比較操作中需要進(jìn)行比較的幾對(duì)數(shù)據(jù)。Time為定時(shí)操作中設(shè)定的定時(shí)值。
上面介紹的機(jī)制建構(gòu)了協(xié)議框架,然后在這個(gè)框架基礎(chǔ)上按照SDL流程編寫相應(yīng)的信號(hào)處理函數(shù)就要吧實(shí)現(xiàn)整個(gè)協(xié)議。
前期協(xié)議開發(fā)了驗(yàn)證邏輯上的正確性。我們在Microsoft Visual C++環(huán)境下進(jìn)行開發(fā)并進(jìn)行了軟仿真,結(jié)果表明所開發(fā)的設(shè)計(jì)在邏輯上是正確可行的。
3 協(xié)議向ARM平臺(tái)的移植
我們所使用的ARM硬件平臺(tái)ARM anywhere II采用的是三星公司的ARM芯片S3C4510B。S3C4510B是采用ARM7TDMI核的高性價(jià)比RISC微控制器,特別適用于網(wǎng)絡(luò)應(yīng)用系統(tǒng)。
我們開發(fā)了一個(gè)軟件模塊PHY來模擬物理層收斂過程子層(PLCP),對(duì)于物理介質(zhì)依賴子層(PMD)我們沒有實(shí)現(xiàn)。這并不影響MAC協(xié)議的開發(fā)。LLC層的數(shù)據(jù)通過PC串口發(fā)送到ARM平臺(tái)來模擬,數(shù)據(jù)經(jīng)過MAC處理后送到PLCP子層,然后由PLCP子層直接發(fā)送。數(shù)據(jù)發(fā)送通過ARM的通用I/O來實(shí)現(xiàn),發(fā)送速率由S3C4510B的定時(shí)器來控制。
在將802.11MAC協(xié)議向ARM平臺(tái)的移植方案中,有一部分代碼的執(zhí)行是依賴于ARM平臺(tái)的。這部分代碼的移植工作需要特別注意,包括以下幾個(gè)方面:
①定時(shí)器。協(xié)議中要求的隨機(jī)退避過程需要底層周期性的送slot來進(jìn)行,這個(gè)周期性 slot需要用定時(shí)器來實(shí)現(xiàn)。協(xié)議中的網(wǎng)絡(luò)分析矢量NAV需要用定時(shí)器來實(shí)現(xiàn),以判斷NAV的狀態(tài)。協(xié)議中定義的幾種幀間隔IFS(SIFS、DIFS、PIFS、EIFS)也需要利用定時(shí)器來實(shí)現(xiàn)。
②外部中斷。802.11MAC協(xié)議中一個(gè)重要部分就是載波監(jiān)聽。當(dāng)信道狀態(tài)變化時(shí)(由忙到閑,由閑到忙)都要給負(fù)責(zé)監(jiān)聽信道狀態(tài)的模塊一個(gè)指示(CCA),指示當(dāng)前的信道狀態(tài)。這個(gè)過程可以由S3C4510B ARM芯片的外部中斷來很好地實(shí)現(xiàn)。由于S3C4510B ARM芯片可以對(duì)中斷檢測方式進(jìn)行配置,可以將中斷檢測方式配置為上升沿和下降沿均觸發(fā)中斷,這些就能很好地模塊協(xié)議的中物理載波監(jiān)聽(CS)。
③I/O。模擬PLCP子層的數(shù)據(jù)收發(fā),一共用到8個(gè)I/O端口,一次發(fā)送8位。在發(fā)送數(shù)據(jù)時(shí),還使用了一個(gè)I/O端口作為發(fā)送指示。這個(gè)I/O端口通過信道模擬器連接到其它節(jié)點(diǎn)的用來監(jiān)聽信道狀態(tài)的外部中斷引腳上。
④UART。我們用UART來實(shí)現(xiàn)PC和ARM的通信。一些管理命令,例如掃描、入網(wǎng)、認(rèn)證、關(guān)聯(lián)、解認(rèn)證、解關(guān)聯(lián),節(jié)點(diǎn)的配置信息例如MAC地址等都可以從串口來發(fā)送給ARM。另外,所有發(fā)送的數(shù)據(jù)都會(huì)通過串口傳送給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接口,就為實(shí)現(xiàn)這個(gè)有線的backbone提供了便利。
4 硬件仿真環(huán)境
圖3中,IEEE802.11MAC協(xié)議和PLCP子層模擬模塊都都在ARM平臺(tái)上,串口通信程序運(yùn)行在PC上。它和ARM的UART進(jìn)行通信用于模擬LLC層數(shù)據(jù)服務(wù)和上層的管理服務(wù),同時(shí)它還可以顯示節(jié)點(diǎn)的運(yùn)行狀態(tài)和當(dāng)前的網(wǎng)絡(luò)狀態(tài)。
下面介紹一下我們使用的簡易信道模擬器的原理。信道模擬器對(duì)應(yīng)每個(gè)節(jié)點(diǎn)(ARM平臺(tái))有一套接口,其中有8個(gè)I/O用于數(shù)據(jù)傳輸。由于無線信道是開放式的,一個(gè)節(jié)點(diǎn)發(fā)送時(shí)其它節(jié)點(diǎn)都能收到,因此在信道模擬器中每個(gè)節(jié)點(diǎn)的8個(gè)I/O是兩兩相通的,這樣就能保證一個(gè)節(jié)點(diǎn)發(fā)送時(shí)其它節(jié)點(diǎn)都能收到。另外,由于要模擬信道上的載波監(jiān)聽過程,我們用到了ARM上的外部中斷用做載波監(jiān)聽位(CS),然后用一個(gè)I/O發(fā)送指示(TR)。這樣,信道模擬器上要維持任何一個(gè)節(jié)點(diǎn)的CS位,都與其它節(jié)點(diǎn)的TR有一定的邏輯關(guān)系,例如,當(dāng)一個(gè)節(jié)點(diǎn)發(fā)送時(shí),將其TR置為0(0表示信道變忙,ARM引腳初始電平為高電平1),則這個(gè)0應(yīng)該立即能反映到其它節(jié)點(diǎn)的CS位上從而產(chǎn)生中斷,其它節(jié)點(diǎn)都會(huì)知道信道變忙而開始從信道接收數(shù)據(jù)。同時(shí),當(dāng)節(jié)點(diǎn)發(fā)送完畢后將TR置為1,其它節(jié)點(diǎn)就會(huì)產(chǎn)生中斷并且檢測到CS位為1從而知道信道變閑,接收結(jié)束。
實(shí)際的信道模擬支持兩個(gè)基本服務(wù)區(qū)(BSS)組成的分布式系統(tǒng)(DS),每個(gè)BBS內(nèi)支持1個(gè)AP和2個(gè)普通節(jié)點(diǎn)。這內(nèi)部的邏輯關(guān)系用可編程邏輯器件實(shí)現(xiàn)。
5 移植過程中的注意事項(xiàng)
PHY軟件模塊模擬PLCP子層,負(fù)責(zé)完成要求的載波監(jiān)聽和數(shù)據(jù)收發(fā)時(shí)的定時(shí)控制。這些功能都是采用中斷方式實(shí)現(xiàn)的,因此要求代碼執(zhí)行速率要快。這里使用匯編語言開發(fā)來提供代碼的執(zhí)行效率。
為了獲得較高的代碼執(zhí)行速率和快速的中斷響應(yīng),要求所有協(xié)議代碼和中斷服務(wù)程序都在SDRAM中執(zhí)行。這就涉及到在設(shè)計(jì)ARM的初始化代碼時(shí)要正確配置相應(yīng)的存儲(chǔ)區(qū)控制寄存器,并且完成代碼的搬移和地址的重映射。
圖3
ARM的初始化代碼包括:
*定義入口點(diǎn)(entry point)。
*定義異常向量表,用來處理各種CPU異常,其中包括中斷。
*配置SDRAM和Flash的地址范圍、時(shí)序等參數(shù),以使這些存儲(chǔ)器能正常工作。
*代碼搬移。程序代碼一般應(yīng)從Flash調(diào)入SDRAM中運(yùn)行,以提高系統(tǒng)的運(yùn)行速度。同時(shí),系統(tǒng)及用戶堆棧、運(yùn)行數(shù)據(jù)也都放在SDRAM中。
*對(duì)SDRAM進(jìn)行地址重映射,從初始時(shí)地址空間的高端搬移到0x0開始的位置。
*初始化堆棧。
*初始化存儲(chǔ)區(qū)。
*根據(jù)需要改變處理器工作模式。
*開中斷。
*到C程序代碼入口點(diǎn)開始執(zhí)行。
另外,移植過程中還要考慮的一個(gè)問題是內(nèi)存分配的問題。嵌入式系統(tǒng)中對(duì)內(nèi)存的分配,一般來說要求快速可靠并且有效,實(shí)際上就是在采用靜態(tài)分配內(nèi)存還是動(dòng)態(tài)分配存的問題。如果系統(tǒng)要求對(duì)實(shí)時(shí)性要求高并且不能容忍分配失敗,這時(shí)就需要采用靜態(tài)分配內(nèi)存。采用靜態(tài)分配一個(gè)不可避免的問題就是系統(tǒng)失去了靈活性,必須在設(shè)計(jì)階段就預(yù)先估計(jì)所需要的內(nèi)存并對(duì)其作出分配,并且要考慮到所有可能的情況。我們在移植過程中,考慮到實(shí)時(shí)生和可靠性是我們的主要目標(biāo),并且我們的ARM平臺(tái)具有較大的存儲(chǔ)區(qū),因而采用了靜態(tài)分配的方式。
結(jié)語
目前,嵌入式協(xié)議開發(fā)已經(jīng)非常普通,本文只是根據(jù)作者的實(shí)際經(jīng)驗(yàn),介紹了嵌入式802.11MAC協(xié)議開發(fā)的基本過程。目前開發(fā)的協(xié)議已經(jīng)在ARM平臺(tái)上成功運(yùn)行,并且性能良好?,F(xiàn)在所使用的ARM平臺(tái)是沒有操作系統(tǒng)支持的,所移植的協(xié)議硬件依賴性太大,下一步我們將在有操作系統(tǒng)的ARM平臺(tái)上進(jìn)行協(xié)議移植,通過全長操作系統(tǒng)提供的API接口來提供協(xié)議的可移植性。另外,繼續(xù)優(yōu)化代碼,提高代碼效率,提高實(shí)時(shí)性與可靠性,以更適合于嵌入式應(yīng)用環(huán)境也將是我們下一步的目標(biāo)。
- P核設(shè)計(jì)(5213)
256核!賽昉發(fā)布全新RISC-V眾核子系統(tǒng)IP平臺(tái)
IP核是指什么?分為哪幾種形式
IP核簡介
IP核簡介
MAC協(xié)議怎么分類?
ip核使用問題
ip與mac地址的綁定命令及方法
協(xié)議棧介紹
協(xié)議棧介紹--TCP/IP
FPGA實(shí)現(xiàn)路由、MAC層協(xié)議的困難在哪里?
FPGA的IP軟核使用技巧
ISEtri-mode ethernet MAC ip核的使用求助
TEMAC核有哪些功能
quartus2 調(diào)用以太網(wǎng)mac核 往上傳少了1個(gè)字節(jié)
【Combat FPGA開發(fā)板】基于FPGA的網(wǎng)口設(shè)計(jì)——MAC協(xié)議的開發(fā)
介紹在ARM系列MCU中使用精簡的TCP/IP協(xié)議的幾種方式
關(guān)于FPGA IP核
剖析:WIZnet以太網(wǎng)核心技術(shù)–全硬件TCP/IP協(xié)議棧
基于ARM的TCP/IP協(xié)議棧LwlP是如何實(shí)現(xiàn)的?
基于IP核的SoC接口技術(shù)
基于μC/OS—II的μC/IP協(xié)議棧在ARM系統(tǒng)中的實(shí)現(xiàn)
如何告訴TCP/IP協(xié)議棧使用自定義MAC的地址?
如何在zynq 702板上將IP核集成到ARM的項(xiàng)目?
開放核協(xié)議:IP核在SoC設(shè)計(jì)中的接口技術(shù)
有人知道為什么MIG IP核中的AXI協(xié)議。為什么沒有AXI_WID這個(gè)信號(hào)呢?
求助,所搭的IP軟核的通訊協(xié)議與總線支持的通訊協(xié)議(ICB)不同怎么轉(zhuǎn)換?
基于μC/OS II的μC/IP協(xié)議棧在ARM系統(tǒng)中的實(shí)現(xiàn)
26基于ARM 平臺(tái)的MAC 協(xié)議IP 核設(shè)計(jì)
10IP協(xié)議 (Internet協(xié)議中IP協(xié)議的概念及原理)
19面向SoC的開放式IP核接口協(xié)議OCP研究
14面向SoC的開放式IP核接口協(xié)議(OCP)研究
21USB設(shè)備接口IP核的設(shè)計(jì)
22開放核協(xié)議—IP核在SoC設(shè)計(jì)中的接口技術(shù)
945
開放核協(xié)議—IP核在SoC設(shè)計(jì)中的接口技術(shù)
2409ARM7和ARM9雙核平臺(tái)的技術(shù)分析
1033從Intel和ARM之爭看集成電路IP核的生態(tài)價(jià)值
925
網(wǎng)際協(xié)議(IP),網(wǎng)際協(xié)議(IP)是什么意思
2162AMBA總線IP核的設(shè)計(jì)
93tcp ip協(xié)議_什么是tcp ip協(xié)議
6605
Cadence驗(yàn)證IP為ARM AMBA 4協(xié)議大幅縮短驗(yàn)證周轉(zhuǎn)時(shí)間
1357PCI Express IP核應(yīng)用參考設(shè)計(jì)
14Xilinx Vivado的使用詳細(xì)介紹(3):使用IP核
3085
Linux驅(qū)動(dòng)開發(fā)筆記:對(duì)zynq PL部分IP核的驅(qū)動(dòng)開發(fā)過程
10289基于Modbus協(xié)議的ARM嵌入式監(jiān)測平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)
11基于ARM技術(shù)的遠(yuǎn)程圖像信息傳輸描述了tcp/ip協(xié)議實(shí)現(xiàn)圖像信息傳輸?shù)姆绞?/a>
10了解Vivado中IP核的原理與應(yīng)用
10746利用Xilinx FPGA 集成的萬兆MAC IP 核以及XAUI IP 核實(shí)現(xiàn)FPGA 片間可靠通信設(shè)計(jì)
17704
基于ARM+FPGA的開發(fā)平臺(tái)實(shí)現(xiàn)了基于CSMA/CA的MAC協(xié)議
3034
基于AMBA總線的DMA控制器IP核設(shè)計(jì)
4364
基于CSMA/CA的MAC協(xié)議設(shè)計(jì)實(shí)現(xiàn)
7658
mac地址和ip地址有什么區(qū)別
9024vivado調(diào)用IP核詳細(xì)介紹
38569千兆以太網(wǎng)的IP核接口和萬兆以太網(wǎng)IP核接口
4234Nimu如何修改成支持多個(gè)MAC IP
6e絡(luò)盟宣布與全球半導(dǎo)體IP領(lǐng)先供應(yīng)商ARM簽署分銷協(xié)議
2966蘋果Mac設(shè)備或會(huì)采用ARM高性能芯片
2504網(wǎng)絡(luò)通信技術(shù):IP地址和MAC地址的差異
5549
曝蘋果新款ARM架構(gòu)Mac芯片最高搭載32核CPU
2199基于ARM微處理器的嵌入式TCP-IP協(xié)議的實(shí)現(xiàn)與應(yīng)用
22ip核設(shè)計(jì)電路特點(diǎn)
3100基于ARM的IEEE802-11bMAC層協(xié)議IP核設(shè)計(jì)
4AXI4-Stream Video 協(xié)議和AXI_VDMA的IP核介紹
10566什么是IP協(xié)議
7467
SRIO IP核的三層協(xié)議的作用解析
2541
VCS獨(dú)立仿真Vivado IP核的問題補(bǔ)充
2875
全新 Arm IP Explorer 平臺(tái)助力 SoC 架構(gòu)師與設(shè)計(jì)廠商加速 IP 選擇
1036Vivado IP核Shared Logic選項(xiàng)配置
3015
集成電路IP核現(xiàn)狀,積體電路IP核現(xiàn)狀,Status of IC IP Core
1905HDLC協(xié)議IP核的設(shè)計(jì)與實(shí)現(xiàn)
5如何申請(qǐng)xilinx IP核的license
2275
芯驛電子ALINX推出全新IP核產(chǎn)品線
1164
芯驛電子 ALINX 推出全新 IP 核產(chǎn)品線,覆蓋 TCP/UDP/NVMe AXI IP 核
1459
Vivado中FFT IP核的使用教程
5641
怎么綁定IP地址和MAC地址
2895ALINX發(fā)布100G以太網(wǎng)UDP/IP協(xié)議棧IP核
1254
電子發(fā)燒友App


評(píng)論