freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于pic單片機(jī)的wifi控制系統(tǒng)設(shè)計(jì)-在線瀏覽

2025-03-07 17:29本頁面
  

【正文】 成RT73模塊的初始化。設(shè)備第一次連接到總線時(shí),主機(jī)層將從設(shè)備讀取描述符,以確定設(shè)備類型以及支持的功能。如果是支持的設(shè)備,主機(jī)層將初始化相應(yīng)的客戶機(jī)驅(qū)動程序USB主機(jī)層主要維護(hù)了一個(gè)USB主機(jī)狀態(tài)機(jī),負(fù)責(zé)完成設(shè)備上電枚舉時(shí)的狀態(tài)遷移,以及各種USB外設(shè)事件的處理。除了維護(hù)一個(gè)USB狀態(tài)機(jī)任務(wù)外,USB主機(jī)層還提供了一些可供驅(qū)動層和應(yīng)用層調(diào)用的API,這部分包含一系列的數(shù)據(jù)傳輸函數(shù),上層USB主機(jī)設(shè)備驅(qū)動可以直接調(diào)用此部分的API函數(shù)。b) USBHostWrite()函數(shù)進(jìn)行一次OUT事務(wù)傳輸,基本原理和USBHostRead()函數(shù)相同。d) USBHostSetNAKTimeout() 此函數(shù)設(shè)置指定端點(diǎn)的NAK的超時(shí)次數(shù),也就是說如果主機(jī)連續(xù)得到了超過指定次數(shù)的NAK握手包,則指定端點(diǎn)會返回一個(gè)錯(cuò)誤狀態(tài)。所有的USB中斷共用一個(gè)中斷號,所以中斷處理程序中需要判斷中斷的類型并合理處理。2. USB設(shè)備斷開中斷。 4. SOF幀中斷,正常情況下,USB主機(jī)會每隔1ms發(fā)送SOF幀,此時(shí)會產(chǎn)生中斷。b) 將RT73模塊的廠商ID和產(chǎn)品ID加入U(xiǎn)SB_TPL(目標(biāo)外設(shè)表)中,這樣當(dāng)RT73枚舉初始化時(shí),會根據(jù)的得到設(shè)備描述符和USB_TPL中的信息進(jìn)行比對以確定是否連接的是RT73設(shè)備。d) USB主機(jī)棧需要調(diào)用USBInitialize()函數(shù)進(jìn)行初始化,并且USBTasks()函數(shù)需要定期調(diào)用,以對設(shè)備進(jìn)行枚舉和初始化操作,這里可以選擇多種方式來定期調(diào)用,比如放在大循環(huán)中或是利用中斷定時(shí)調(diào)用。 IEEE802家族是由一系列局域網(wǎng)技術(shù)規(guī)范所組成的。通過USB總線提交數(shù)據(jù)是已經(jīng)處理好的數(shù)據(jù)幀。在IBSS中,工作站之間可以直接通信,一般是為了特定的目的而組成的臨時(shí)性的網(wǎng)絡(luò);一類是基礎(chǔ)結(jié)構(gòu)型網(wǎng)絡(luò),這是一種最常用的組網(wǎng)方式,在基礎(chǔ)結(jié)構(gòu)型網(wǎng)絡(luò)里,工作站必須先與接入點(diǎn)建立關(guān)聯(lián),才能取得網(wǎng)絡(luò)服務(wù),也就是說,各工作之間是由接入點(diǎn)數(shù)據(jù)轉(zhuǎn)發(fā)而建立通信的,無線接入點(diǎn)是基礎(chǔ)結(jié)構(gòu)型網(wǎng)絡(luò)的核心。b) ,為了使多個(gè)工作站能在同一信道上同時(shí)進(jìn)行無線通信,盡量減少數(shù)據(jù)的傳輸碰撞和重試發(fā)送,防止各站點(diǎn)無序地爭用信道,無線局域網(wǎng)中采用了與以太網(wǎng)CSMA/CD相類似的CSMA/CA(載波監(jiān)聽多路訪問/沖突避免)協(xié)議??紤]到成本問題,虛擬載波監(jiān)聽使用網(wǎng)絡(luò)分配矢量(Network Allocation Vector,簡稱 NAV )實(shí)現(xiàn)。c) 以下詳述各字段的含義:1) Frame Control 字段此字段為幀控制字段,2個(gè)字節(jié),這個(gè)字段包含了一些幀收發(fā)時(shí)候的控制信息。在大多數(shù)情況下,該字段被用來設(shè)定NAV。這些地址有如下不同的類型:a) 基本服務(wù)集標(biāo)識(BSSID)b) 來源地址(SA:發(fā)送數(shù)據(jù)包的MAC實(shí)體的地址)c) 目的地址(DA:數(shù)據(jù)報(bào)的最終地址)d) 接收地址(RA:接收幀的AP地址)e) 發(fā)送地址(TA:發(fā)送幀的AP地址)在Frame Control中的ToDs和FromDs的位域標(biāo)識了地址字段的具體含義,: ToDs,F(xiàn)romDs功能表功能ToDsFromDsAddress1Address2Address3Address4IBSS00DASABSSIDN/AToAP10BSSIDSADAN/AFromAP01DABSSIDSAN/AWDS11RATADASA注:,WDS只是在有WDS擴(kuò)展功能的AP上使用,DA,代表目的地址;SA,代表源地址。5) Frame Body 字段此部分為幀主體,該字段內(nèi)容封裝的是上層的數(shù)據(jù)單元,長度從02312個(gè)字節(jié),從此可以看出。d) ,分別為數(shù)據(jù)幀,控制幀和管理幀。1) 數(shù)據(jù)幀數(shù)據(jù)幀負(fù)責(zé)最主要的數(shù)據(jù)傳送工作,負(fù)責(zé)將上層協(xié)議放置在幀主體中加以傳遞。3) 管理幀管理幀負(fù)責(zé)在工作站和AP之間建立初始的通信,提供認(rèn)證和連接服務(wù),包括了連接請求/響應(yīng)、輪詢請求/響應(yīng)、Beacon幀等。定期傳送的信標(biāo)可讓移動式工作站得知該網(wǎng)絡(luò)的存在, 從而調(diào)整加入該網(wǎng)絡(luò)所必需的參數(shù)。IBSS網(wǎng)絡(luò)中,工作站輪流送出Beacon幀。c) Probe Response 幀:若Probe Request 幀探查的網(wǎng)絡(luò)與之兼容,該網(wǎng)絡(luò)就會回復(fù)Probe Response 幀給予響應(yīng)。e) Association Request 幀:一旦工作站找到兼容網(wǎng)絡(luò)并且通過身份驗(yàn)證,便會發(fā)送Association Request(關(guān)聯(lián)請求) 幀以試圖加入網(wǎng)絡(luò)。g) Association Response 幀與Reassociation Response 幀:當(dāng)工作站試圖連接接入點(diǎn)時(shí),接入點(diǎn)會回復(fù)一個(gè)Association Response 幀或Reassociation Response 幀,響應(yīng)過程中,接入點(diǎn)會指定一個(gè)Association ID(關(guān)聯(lián)標(biāo)識符)。d) ,基本上管理操作就是無線網(wǎng)絡(luò)設(shè)備在幕后進(jìn)行的所有操作,由此,無線網(wǎng)絡(luò)在連接感覺上就和其他類型的網(wǎng)絡(luò)沒什么兩樣。掃描過程中會用到的幾個(gè)參數(shù):a) BSSType:指定網(wǎng)絡(luò)屬于IBSS、基礎(chǔ)結(jié)構(gòu)或是同時(shí)搜索兩者b) BSSID:工作站可以掃描所要加入的特定網(wǎng)絡(luò),也可掃描允許它加入的所有網(wǎng)絡(luò)c) SSID:原來指定某個(gè)ESS的位字符串,這些字符串通常被設(shè)定為人們易于識別的網(wǎng)絡(luò)名稱。這里所謂的“低級”是指比較初步的身份驗(yàn)證,規(guī)范定義了如下幾種“低級”身份驗(yàn)證方法:a) 開放系統(tǒng)身份驗(yàn)證,開放系統(tǒng)身份驗(yàn)證,僅僅是一種一問一答的握手過程,所以只是一種網(wǎng)絡(luò)身份的初步表明。無線接入點(diǎn)收到此管理幀后,發(fā)出同類型的管理幀,回應(yīng)身份驗(yàn)證的請求。3) 關(guān)聯(lián)操作一旦完成身份驗(yàn)證,工作站就可以跟接入點(diǎn)進(jìn)行關(guān)聯(lián),以便獲得網(wǎng)絡(luò)的完全訪問權(quán)。 和身份驗(yàn)證一樣,關(guān)聯(lián)操作是由移動式工作站發(fā)起的。然后接入點(diǎn)隨后會對關(guān)聯(lián)請求進(jìn)行處理,最后接入點(diǎn)開始為移動工作站處理幀數(shù)據(jù)。代碼分析的重點(diǎn)在于網(wǎng)卡的初始化過程和TCP/IP數(shù)據(jù)包的封裝和通過USB的發(fā)送過程。模塊一般由module_init作為入口,module_exit作為出口。功能函數(shù)也會被內(nèi)核識別。當(dāng)RT73模塊連接后,內(nèi)核會調(diào)用響應(yīng)的usb_rtusb_probe函數(shù)來完成網(wǎng)卡的探測和初始化。PRTMP_ADAPTER是無線網(wǎng)卡的核心結(jié)構(gòu),包含了網(wǎng)絡(luò)驅(qū)動層所需要的一切信息,如果需要一些設(shè)備信息,只需得到PRTMP_ADAPTER的指針即可。usb_rtusb_init_device函數(shù)是RT73模塊真正的初始化過程,一些配置信息和核心線程都是在這個(gè)函數(shù)中實(shí)現(xiàn)的。課題關(guān)注的是網(wǎng)卡的初始化過程,網(wǎng)卡的基帶芯片是一個(gè)8051核的微控制器,為了保證處理速度,網(wǎng)卡的內(nèi)置程序并沒有固化在基帶芯片中,而是需要在每一次上電后由USB的Control傳輸下載到基帶芯片中的SRAM中,所以網(wǎng)卡初始化的第一步就是下載固化程序,而基帶芯片的工作狀態(tài)和配置信息都存放在特定的控制寄存器中,所以控制寄存器也是初始化的重點(diǎn)。無線網(wǎng)卡的配置信息一般來自于用戶的配置文件,當(dāng)然也會有一些默認(rèn)的配置。無論是發(fā)送和接收網(wǎng)卡驅(qū)動都實(shí)現(xiàn)了一些數(shù)據(jù)結(jié)構(gòu)來維護(hù)需要發(fā)送的數(shù)據(jù),這樣可以保證數(shù)據(jù)發(fā)送的輕重緩急,更有效的進(jìn)行數(shù)據(jù)通信。Mlme線程用于連接路由的操作,本身是一個(gè)復(fù)雜的狀態(tài)機(jī),Cmd線程是命令隊(duì)列線程,這個(gè)線程會將用戶的操作轉(zhuǎn)換為命令發(fā)送到Mlme線程中,來改變網(wǎng)絡(luò)運(yùn)行狀態(tài)。驅(qū)動程序?qū)崿F(xiàn)了幾個(gè)發(fā)送隊(duì)列,當(dāng)內(nèi)核調(diào)用網(wǎng)卡的發(fā)送函數(shù)后,送入的skb網(wǎng)絡(luò)數(shù)據(jù)將被傳入不同的發(fā)送隊(duì)列,這里的發(fā)送函數(shù)本身是異步的,是可以被內(nèi)核重入的,也就是說操作系統(tǒng)中運(yùn)行的不同函數(shù)有可能會“同時(shí)”調(diào)用發(fā)送函數(shù),所以這些由內(nèi)核發(fā)送來的skb數(shù)據(jù)包就會安放在發(fā)送隊(duì)列里等待發(fā)送,由上流程圖可以看出,每次skb數(shù)據(jù)包放入發(fā)送隊(duì)列后,隨即調(diào)用出列函數(shù)RTMPDeQueuePacket,此函數(shù)除了直接被RTMPSendPacket函數(shù)調(diào)用外,還會被發(fā)送完成的回調(diào)函數(shù)調(diào)用,來檢測是否有未發(fā)送完的數(shù)據(jù)。這里比較重要的函數(shù)是RTUSBHardTransmit函數(shù),和RT73發(fā)送描述符的封裝,也就是說要搞清楚RT73無線網(wǎng)卡的工作原理,這個(gè)函數(shù)提供了詳細(xì)的信息。_TXD_STRUC結(jié)構(gòu)體說明了RT73發(fā)送描述符,RT73發(fā)送描述符一共占用6個(gè)字節(jié),它處于整個(gè)發(fā)送幀的最前面。不過一般而言上層的TCP/IP協(xié)議可以設(shè)置網(wǎng)絡(luò)包最大長度,所以可以將TCP/,這樣就消除了數(shù)據(jù)分片的可能性。DataByteCnt 域,指明數(shù)據(jù)幀的長度。接收數(shù)據(jù)流程: 接收數(shù)據(jù)流程圖接收過程,采用了tasklet 機(jī)制,這是一種比較常見的機(jī)制,通常用于減少中斷處理的時(shí)間,為了最大程度的避免中斷處理時(shí)間過長而導(dǎo)致中斷丟失,有時(shí)候內(nèi)核需要把一些在中斷處理中不是非常緊急的任務(wù)放在后面執(zhí)行,而讓中斷處理程序盡快返回將本應(yīng)該是在中斷服務(wù)程序中完成的任務(wù)轉(zhuǎn)化成軟中斷完成。Urb傳輸完畢后,內(nèi)核會調(diào)用RTUSBBulkRxComplete函數(shù),此函數(shù)會檢測此次urb是否成功,然后重新裝載tasklet。另外兩個(gè)核心的內(nèi)核線程MLMEthread和CMDthread主要是完成一些管理操作,這里不去深究,因?yàn)檎n題主要的目標(biāo)是實(shí)現(xiàn)底層的通信移植。b) 實(shí)現(xiàn)RT73無線網(wǎng)卡基本數(shù)據(jù)幀的收發(fā)操作。RT73無線網(wǎng)卡驅(qū)動程序整體結(jié)構(gòu):,USB部分主要處理RT73無線網(wǎng)卡的初始化和BULK數(shù)據(jù)傳輸,主要有連接AP和封裝數(shù)據(jù)幀的功能。默認(rèn)情況下,剛剛初始化完畢的驅(qū)動程序處于IDLE狀態(tài),此時(shí)用戶發(fā)出一個(gè)SCAN指令,此時(shí)PIC32會發(fā)出probe requset幀,無線AP收到probe幀后,會返回probe response幀,當(dāng)收到需要連接到的AP的response幀后,PIC32會發(fā)出association request幀,相應(yīng)的AP會發(fā)出association response 幀,PIC32收到response幀后轉(zhuǎn)為CONNECTED狀態(tài)。 單片機(jī)網(wǎng)卡初始化流程圖RT73Setup 進(jìn)行RT2571基帶芯片本身初始化,包括固件下載,這里的固件是被放在一個(gè)const型的數(shù)組中的,所以直接調(diào)用此數(shù)組發(fā)送到RT2571芯片即可;等待基帶芯片正常運(yùn)行,通過反復(fù)檢測一個(gè)狀態(tài)寄存器進(jìn)行;初始化基帶芯片控制寄存器為默認(rèn)值。rt2501_switch_channel 進(jìn)行初步的信道選擇,不進(jìn)行此步驟也可以,這僅僅用來測試。b) ,可以分為控制幀,管理幀,和數(shù)據(jù)幀,其中管理幀和數(shù)據(jù)幀是必須使用到的,所以驅(qū)動程序必須實(shí)現(xiàn)對管理幀和數(shù)據(jù)幀的處理。: 上層封裝好的數(shù)據(jù)包一般是以太網(wǎng)數(shù)據(jù)包,因?yàn)樯蠈右话闶且粋€(gè)TCP/IP協(xié)議棧,故這里需要對以太網(wǎng)數(shù)據(jù)包進(jìn)行轉(zhuǎn)換,首先需去掉以太網(wǎng)幀頭,只保留IP包數(shù)據(jù),一是加密模式,因?yàn)榧用苣J降牟煌瑫绊懺S多域的設(shè)置,這里只實(shí)現(xiàn)了簡單的無加密模式的封裝方式,二是地址域的裝填,addr1裝填關(guān)聯(lián)到的路由的MAC地址,addr2裝填RT73無線網(wǎng)卡的MAC地址(源地址),addr3裝填以太幀中的目的地址。將所有數(shù)據(jù)裝填好后,就可以調(diào)用USB發(fā)送函數(shù)發(fā)送數(shù)據(jù)了,真正的發(fā)送過程在中斷中啟動,并在中斷中確認(rèn)結(jié)束,這里可以選用兩種方案進(jìn)行USB發(fā)送過程,一種是等待USB發(fā)送過程的結(jié)束,一種是發(fā)送完畢后通知主程序。c) 和數(shù)據(jù)幀的發(fā)送相比,數(shù)據(jù)幀的接收比較復(fù)雜,因?yàn)閿?shù)據(jù)幀的發(fā)送本質(zhì)上是異步的,當(dāng)有數(shù)據(jù)幀需要發(fā)送時(shí),隨即調(diào)用發(fā)送函數(shù)將數(shù)據(jù)幀發(fā)送出去,而數(shù)據(jù)幀的接收本質(zhì)是一個(gè)中斷的過程,而USB總線的特點(diǎn)是主機(jī)輪詢,所以當(dāng)有數(shù)據(jù)幀放入基帶芯片的緩沖區(qū)中時(shí),基帶芯片不能主動通知PIC32,而需要PIC32主動試探,當(dāng)沒有數(shù)據(jù)時(shí),基帶芯片返回NAK握手包,直到有數(shù)據(jù)才返回?cái)?shù)據(jù),這樣PIC32的輪詢頻率就是一個(gè)關(guān)鍵的變量,輪詢的時(shí)間間隔不能過小,過小會導(dǎo)致CPU負(fù)荷較重,也不能間隔過大,過大會使數(shù)據(jù)通信延遲變大,綜合考慮將BULKIN,傳輸設(shè)置為1ms進(jìn)行一次,也就是每次sof包后立即進(jìn)行一次BULKIN傳輸。: ,如果是管理幀,則我們直接進(jìn)行管理幀的封裝然后發(fā)送出去進(jìn)行響應(yīng),當(dāng)是網(wǎng)絡(luò)數(shù)據(jù)包時(shí),需要將數(shù)據(jù)包暫存起來然后經(jīng)由TCP/IP層協(xié)議處理。圖 處理程序根據(jù)不同的幀的類型轉(zhuǎn)到了不同的處理函數(shù)中, 管理幀處理進(jìn)入ieee80211_input_mgt處理后,首先根據(jù)subtype域判定收到的幀狀態(tài),根據(jù)不同的幀狀態(tài)執(zhí)行不同的處理。當(dāng)收到beacon幀或probe response幀后,如果無線網(wǎng)卡處于SCAN狀態(tài)下,會將處理后的beacon幀結(jié)果傳入scan_callback回調(diào)函數(shù)中,在這個(gè)回調(diào)函數(shù)中,單片機(jī)會發(fā)送association幀,最終會和無線AP建立鏈路層的連接。這里并沒有進(jìn)行數(shù)據(jù)的拷貝,主要是效率的考慮,直接利用USBIN傳輸?shù)慕邮站彌_區(qū),所以在以太網(wǎng)幀封裝好后立即進(jìn)行TCP/IP層的處理。前后臺程序,中斷處理程序?yàn)榍芭_程序,main函數(shù)中的循環(huán)為后臺程序,當(dāng)有數(shù)據(jù)中斷主循環(huán)時(shí),系統(tǒng)會跳至中斷程序中對中斷數(shù)據(jù)進(jìn)行處理,中斷程序會設(shè)置全局變量通知主循環(huán)中的函數(shù)對數(shù)據(jù)進(jìn)行處理,所以從數(shù)據(jù)中斷產(chǎn)生到對數(shù)據(jù)進(jìn)行處理之間有一個(gè)延遲,這個(gè)延遲決定于主循環(huán)的時(shí)間,如果主循環(huán)循環(huán)一次時(shí)間較長,或者有類似延時(shí)的阻塞代碼,此時(shí)響應(yīng)時(shí)間會大大增加。采用RTOS的缺點(diǎn)是RTOS本身就占用了一定的資源,所以RTOS一般用在資源相對豐富的嵌入式系統(tǒng)中。根據(jù)系統(tǒng)的需要和系統(tǒng)資源的限制,對LWIP進(jìn)行了裁剪和配置。 LWIP協(xié)議棧的移植LWIP的作者已經(jīng)為移植提供了框架和接口,移植需要改動以下的文件:a) 這個(gè)文件中實(shí)現(xiàn)了操作系統(tǒng)模擬層,LWIP可以被配置為在RTOS中運(yùn)行,它內(nèi)部會有一個(gè)核心TCP/IP線程,這個(gè)TCP/IP線程在沒有數(shù)據(jù)包收到時(shí)處于阻塞狀態(tài),一旦有數(shù)據(jù)包收到,此時(shí)網(wǎng)卡接口層會向TCP/IP線程發(fā)送數(shù)據(jù)包的指
點(diǎn)擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1