【正文】
網(wǎng)絡(luò)接口層最終需要實(shí)現(xiàn)三個底層操作,分別是設(shè)備初始化,數(shù)據(jù)包接收和數(shù)據(jù)包發(fā)送,分別對應(yīng)的實(shí)現(xiàn) 本 科 畢 業(yè) 設(shè) 計 第 27 頁 共 47 頁 函數(shù)為 low_level_init, low_level_input 和 low_level_output, low_level_init 初始化中主要完成 MAC地址的讀取, low_level_input 中主要是 將從 USB 中獲取的 幀進(jìn)行處理,在此函數(shù)中會調(diào)用 協(xié)議棧處理函數(shù),如果收到數(shù)據(jù)包會申請內(nèi)存空間,經(jīng)過此函數(shù)處理后的數(shù)據(jù)包會從 數(shù)據(jù)包變?yōu)?標(biāo)準(zhǔn)的以太網(wǎng)數(shù)據(jù)包 ;low_level_output 中的處理正好相反,是把上層的以太網(wǎng)的數(shù)據(jù)幀的頭部轉(zhuǎn)化成無線WIFI 的數(shù)據(jù)幀的格式,然后通過網(wǎng)卡發(fā)送出去。和前后臺程序相對應(yīng)的一種程序結(jié)構(gòu)是基于實(shí)時操作系統(tǒng) (RTOS)的結(jié)構(gòu),這個時候最底層 運(yùn)行的是 RTOS, 每當(dāng)有數(shù)據(jù)中斷發(fā)生時,數(shù)據(jù)處理任務(wù)一般處于一個較高的優(yōu)先級中,所以會搶占正在運(yùn)行的低優(yōu)先級的任務(wù)的 CPU時間,此時中斷中的數(shù)據(jù)就會得到立即 響應(yīng)。 d) 協(xié)議棧處理 協(xié)議棧處理部分是整個驅(qū)動程序協(xié)議棧處理的核 心,因?yàn)檫@里沒有實(shí)現(xiàn)linux中類似的 MLME和 CMD核心線程, 所以一些類似的管理幀都由接收時的協(xié)議棧處理 。W P A 。 RT73SetupEEprom 進(jìn)行 eeprom 中的默認(rèn)配置的讀取, 其中就包括了射頻芯片信息的讀取,每個信道發(fā)射功率的配置, MAC 地址等信息。 RT73 無線網(wǎng)卡驅(qū)動的裁剪和改寫 本節(jié)進(jìn)行 RT73 單片機(jī)驅(qū)動程序的具體移植,目標(biāo)如下: a) 實(shí)現(xiàn)對 RT73 無線網(wǎng)卡的初始化操作,進(jìn)行基本設(shè)置并讀取 MAC地址。 ACK 位,是否需要 ACK 應(yīng)答,因?yàn)闊o線媒介的不確定性,一般都需要進(jìn)行應(yīng)答 。 RT73 無線網(wǎng)卡的數(shù)據(jù)發(fā)送和接受流程 ,如圖 u s b _ r t u s b _ s e n d p k t開 始 數(shù) 據(jù) 發(fā) 送R T M P S e n d P a c k e t s完 成 實(shí) 際 的 發(fā) 送 功 能R T M P S e n d P a c k e t 將 不 同 類 型的 數(shù) 據(jù) 包 放 入 不 同 的 發(fā) 送 隊(duì)列 中調(diào) 用R T M P D e Q u e u e P a c k e t 將 隊(duì) 列中 待 發(fā) 送 的 元 素 出 列 并 放 入環(huán) 形 緩 沖 區(qū) 中R T U S B K i c k B u l k O u t對 環(huán) 形 緩 沖 區(qū) 中 的 數(shù) 據(jù) 調(diào) 用U S B 發(fā) 送 出 去* s k b 傳 入 開 始 發(fā) 送發(fā) 送 完 畢R T U S B H a r d T r a n s m i t完 成 實(shí) 際 的 8 0 2 . 1 1 幀 頭 和T X D _ S T R U C 結(jié) 構(gòu) 體 的 封 裝調(diào) 用D a t a P a c k e t C o m p l e t e回 調(diào) 函 數(shù) , 釋 放 緩 沖 區(qū) 空 間 ,查 看 是 否 還 有 數(shù) 據(jù) 需 要 發(fā) 送調(diào) 用 回 調(diào) 函 數(shù)如 果 需 要 繼 續(xù) 發(fā) 送 圖 數(shù)據(jù)發(fā)送流程圖 在 usb的 probe 函數(shù)里,會初始化發(fā)送和接收相關(guān)的數(shù)據(jù)結(jié)構(gòu): 。 usb_rtusb_init_device 函數(shù)實(shí)現(xiàn)了網(wǎng)卡具體的初始化過程。 / / 設(shè) 備 打 開u s b _ r t u s b _ c l o s e 。代碼 分析 的重點(diǎn) 在于網(wǎng)卡的初始化過程和 TCP/IP 數(shù)據(jù)包 的 封裝和 通過 USB 的發(fā)送 過程 。無線接入點(diǎn)收到此管理幀后,發(fā)出同類型的管理幀, 回應(yīng)身份驗(yàn)證的請求。 g) Association Response 幀與 Reassociation Response 幀 :當(dāng)工作站試圖連接接入點(diǎn)時,接入點(diǎn)會回復(fù)一個 Association Response 幀或 Reassociation Response 幀,響應(yīng)過程中,接入點(diǎn)會指定一個 Association ID(關(guān)聯(lián)標(biāo)識符)。定期傳送的信標(biāo)可讓移動式工作站得知該網(wǎng)絡(luò)的存在, 從而調(diào)整加入該網(wǎng)絡(luò)所必需的參數(shù) 。 5) Frame Body 字段 此部分為幀主體,該字段內(nèi)容封裝的是上層的數(shù)據(jù)單元,長度從 02312 個字節(jié),從此可以看 出, 最大幀長度為 2346 個字節(jié)??紤]到成本問題, 芯片組廠家一般采用的是虛擬載波監(jiān)聽技術(shù),虛擬載波 監(jiān)聽使用網(wǎng)絡(luò)分配 本 科 畢 業(yè) 設(shè) 計 第 12 頁 共 47 頁 矢量 (Network Allocation Vector,簡稱 NAV )實(shí)現(xiàn)。 是其中的成員之一。 (當(dāng)一次 USB 數(shù)據(jù)傳輸結(jié)束后觸發(fā) )。以下為重要的 API 傳輸控制函數(shù): a) USBHostRead() 此函數(shù)初始化一次 IN 事務(wù)傳輸 ,注意僅僅為為初始化,真正的 read事務(wù)傳輸開始是在 USB 中斷進(jìn)行的,因?yàn)榇藭r USB 外設(shè)有可能正在進(jìn)行 USB 信息包的傳輸,所以不能立即開始,此函數(shù)僅僅 在端點(diǎn)描述符鏈表中查找指定的端點(diǎn)并設(shè)置其狀態(tài)為需要 USB事務(wù)傳輸。客戶機(jī)驅(qū)動程序應(yīng)該以一種抽象的方式對功能建模,從而讓主機(jī)應(yīng)用不需要了解設(shè)備的工作細(xì)節(jié)。 USB 主機(jī)層是 Microchip 公司提供的主機(jī)棧,是整個 USB 軟件協(xié)議的最低成和核心,負(fù)責(zé) PIC32USB 外設(shè)的直接控制 ,同時對上層的 USB 事務(wù)直接控制; USB客戶機(jī)驅(qū)動程序?qū)邮轻槍τ谔囟ǖ?USB 外設(shè)的軟件層,比如 U盤, USBSerial 線 , USB網(wǎng)卡 等設(shè)備,它們具體的 USB 事務(wù)傳輸時不同的,但它們都可以利用同一 USB 主機(jī)層軟件, 應(yīng)用程序?qū)?利用下面兩層提供的 API 和一些服務(wù)程序 進(jìn)行操作,是用戶實(shí)現(xiàn)的具體功能 。 由于課題中 MCU是 USB 主機(jī),以上簡單的介紹了 USB 總線中的基本概念和設(shè)備枚舉過程,對這些過程的了解能夠?qū)筮吚斫夂鸵浦?USBHOST 協(xié)議棧起到積極作用。主機(jī)可以通過 0地址與其通訊。 USB 規(guī)范了四種基本的傳輸模式: a) 控制傳輸:主要用于在設(shè)備連接時對設(shè)備進(jìn)行枚舉以及其他因設(shè)備而已的特定 操作 b) 中斷傳輸:用于對延遲要求嚴(yán)格、小量數(shù)據(jù)的可靠傳輸,如鍵盤、游戲手柄等。 本 科 畢 業(yè) 設(shè) 計 第 6 頁 共 47 頁 PIC32 最小系統(tǒng)設(shè)計 PMD5/RE51PMD6/RE62PMD7/RE73SCK2/CN8/RG6/PMA54SDI2/CN9/RG7/PMA45SDO2/CN10/RG8/PMA36MCLR7SS2/CN11/RG9/PMA28VSS9VDD10C11N+/AN5/CN7/RB5/VBUSON11C11N/AN4/CN6/RB412C21N+/AN3/CN5/RB313C21N/AN2/CN4/RB214AN1/VREF/CN3/RB115AN0/VREF+/CN2/RB0/PMA616OS2/RD1/U1RTS49OC3/U1RX/RD250OC4/U1TX/RD351PMWR/OC5/IC5/CN13/RD452PMRD/CN14/RD553CN15/RD654CN16/RD755VDDCORE56ENVREG57RF058RF159PMD0/RE060PMD1/RE161PMD2/RE262PMD3/RE363PMD4/RE464PGC2/AN6/RB6/OCFA17PGD2/AN7/RB718AVDD19AVSS20U2CTS/C1OUT/AN8/RB821C2OUT/AN9/RB9/PMA722TMS/AN10/RB10/CVREFOUT23TDO/AN11/RB1124VSS25VDD26TCK/AN12/RB1227TDI/AN13/RB1328U2RTS/AN14/RB14/PMA129AN15/CN12/RB15/OCFB/PMA030U2RX/SDA2/RF4/CN17/PMA931U2TX/SCL2/RF5/CN18/PMA832USBID/RF333VBUS34VUSB35D/RG336D+/RG237VDD38OSC1/CLKI/RC1239OSC2/CLKO/RC1540VSS41IC1/RTCC/INT1/RD842IC2/U1CTS/SDA1/INT2/RD943IC3/PMCS2/PMA15/SCL1/INT3/RD1044IC4/PMCS1/PMA14/INT4/RD1145OC1/INT0/RD046SOSCI/CN0/RC1347SOSCO/T1CK/CN0/RC1448J?PIC32MX440F512HPIN1PIN2PIN3PIN4PIN5PIN6PIN7PIN8PIN9PIN10PIN11PIN12PIN13PIN14PIN15PIN16PGC PGD + GND PIN21 PIN22 PIN23 PIN24 GND + PIN27 PIN28 PIN29 PIN30 PIN31 PIN32PIN34PIN33PIN35PIN36PIN37+OSC1OSC2GNDPIN42PIN43PIN44PIN45PIN46PIN47PIN48PIN49PIN50PIN51PIN52PIN53PIN54PIN55VCAP+104C1VPP330R2104C2104C3330R512Y?XTAL22PFC422PFC5104C31104C32104C33+ 圖 PIC32MX440最小系統(tǒng) 如上圖 PIC32 最小系統(tǒng),此電路較為簡單,和一般的 MCU 一樣,同樣有復(fù)位電路和供電電路,單片機(jī)選用了外部晶振,晶振頻率為 8MHZ。 MCU 對收發(fā)的 數(shù)據(jù)幀進(jìn)行處理,負(fù)責(zé)無線 通信連接的建立和斷開和實(shí)際的數(shù)據(jù)傳送。RT73 無線模組同樣支持 協(xié)議 ,故 USB 總線采用全速傳輸?shù)姆绞?,傳輸速率?2Mbps。 WIFI 網(wǎng)卡一般的接口為 PCI 接口或 USB接口,比如雷凌公司的 RT7 RT2070 和 RT3070 等,這些都是和 PC 機(jī)上的接口相對應(yīng)的。 PIC32MX 單片機(jī)( MCU)是一款基于 MIPS174。 主控部分主要完成如下的控制功能: a) 數(shù)據(jù)采集和處理。在開放性區(qū)域通訊距離可達(dá) 305m, 在封閉性區(qū)域通訊距離 76 ~ 122m,方便與現(xiàn)有的有線以太網(wǎng)整合,組網(wǎng)的成本更低。現(xiàn)階段,通信技術(shù)正面臨一場深刻的變革, 傳統(tǒng)的有線網(wǎng)絡(luò)已不能滿足日益增長的通信需要。 WIFI是由 AP ( Access Point)和無線網(wǎng)卡組成的無線網(wǎng)絡(luò)。在這種情況下,需尋找一種可替代的方案,要求是對性能要求不高,但是單個節(jié)點(diǎn)的成本要低。 b) 無線數(shù)據(jù)從媒介控制層到物理層的映射,完成實(shí)際的數(shù)據(jù)收發(fā)。片上 USBHOST 外設(shè)具有如下特性: USB 全速支持;2. 低速主機(jī)支持; 3. USB OnTheGo( OTG)支持; 4. 集成信號傳輸電阻; 5. 用于 VBUS 監(jiān)視的集成模擬比較器 ; 6. 集成 USB 收發(fā)器; 7. 硬件執(zhí)行的事務(wù)握手;8. 可在系統(tǒng) RAM 中任意位置進(jìn)行端點(diǎn)緩沖; 9. 集成用于訪問系統(tǒng) RAM 和閃存的總線主控; 10. USB 模塊工作時不需要使用 PIC32 DMA 模塊 。 d) 支持 6, 9, 12, 18, 24, 36, 48, 54Mbps 的通信速率。 當(dāng) RT73 模塊完成配置后,隨即轉(zhuǎn)為正常的收發(fā)工作模式,此時 MCU 需要和 RT73 的兩個 BULK 端點(diǎn)進(jìn)行通信, 如果 MCU需要發(fā)送 幀,則將發(fā)起 BULK OUT 傳輸事務(wù)。 以上的三個軟件組件聯(lián)系 緊密:首先,處于最底層的是 USB 協(xié)議棧,此部分負(fù)責(zé) MCU 和 USB 無線網(wǎng)卡之間的 幀通信, USB 總線是一種主從輪詢式總線 ,所以相對于 PCI 或其他同步總線來說耗費(fèi) CPU 時間較多,尤其是在接收數(shù)據(jù)時,不能采用中斷的方式通知 CPU,而只能采用不斷試探輪詢的方法來確 本 科 畢 業(yè) 設(shè) 計 第 5 頁 共 47 頁 認(rèn)有數(shù)據(jù)到達(dá),所以此 USB 部分的通信效率就比較重要;第二,在 USB 上層是 無線通信協(xié)議棧, 幀通過 USB 總線進(jìn)行傳輸, 協(xié)議棧解析 幀數(shù)據(jù)并作出響應(yīng)的響應(yīng);第三,最上層為 TCP/IP 協(xié)議棧,此部分接收 TCP/IP 幀進(jìn)行處理。 其中,令牌階段表示事務(wù)處理的開始,并定義了傳輸類型;數(shù)據(jù)階段負(fù)責(zé)傳輸相關(guān)的數(shù)據(jù);握手階段用于報告事務(wù)處理的狀態(tài) ,以表明數(shù)據(jù)接收是否成功。 c) 主機(jī)等待(至少 100mS)設(shè)備上電穩(wěn)定,然后向 HUB 發(fā)送請求,復(fù)位并使能該 d) PORT。 j) 主機(jī)通過新地址向