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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于pic單片機(jī)的wifi控制系統(tǒng)(存儲(chǔ)版)

  

【正文】 設(shè)備發(fā)送其他 get_configuration 請(qǐng)求,獲取設(shè)備的配置描述符。集成的上拉和下拉電阻省去了對(duì)外部信號(hào)傳輸元件的需要。 b) USB 客戶(hù)機(jī)驅(qū)動(dòng)程序?qū)? 每個(gè) USB 外部設(shè)備實(shí)現(xiàn)一個(gè)具體的功能,有 些設(shè)備可能有多重功能。如果是支持的設(shè)備,主機(jī)層將初始化相應(yīng)的客戶(hù)機(jī)驅(qū)動(dòng)程序 USB 主機(jī)層主要維護(hù) 了一個(gè) USB 主機(jī)狀態(tài)機(jī),負(fù)責(zé)完成設(shè)備上電枚舉時(shí)的狀態(tài)遷移,以及各種 USB 外設(shè)事件的處理。 所有的 USB 中斷共用一個(gè)中斷號(hào),所以中斷處理程序中需要判斷中斷的類(lèi)型并合理處理。 d) USB 主機(jī)棧需要調(diào)用 USBInitialize()函數(shù)進(jìn)行初始化,并且 USBTasks()函數(shù)需要定 期調(diào)用,以對(duì)設(shè)備進(jìn)行枚舉和初始化操作,這里可以選擇多種方式來(lái)定期調(diào)用,比如放在大循環(huán)中或是利用 中斷定時(shí)調(diào)用。方案采用了第二種組網(wǎng)方式,這種方式組網(wǎng)方便,程序編寫(xiě)較容易。 3) Address 字段 地址字段包含不同類(lèi)型的 MAC 地址,地址的類(lèi)型取決于發(fā)送幀的類(lèi)型。 2) 控制幀 控制幀主要用于協(xié)助數(shù)據(jù)幀的傳遞,所有控制幀都使用相同的 Frame Control 字段 。 d) Disassociation 幀與 Deauthentication 幀 :Disassociation (取消關(guān)聯(lián))幀用來(lái)終結(jié)一段關(guān)聯(lián)關(guān)系,而 Deauthentication(解除身份驗(yàn)證)幀則用來(lái)終結(jié)一段認(rèn)證關(guān)系 。 d) ScanType:主動(dòng)掃描會(huì)主動(dòng)傳送 Probe Request 幀以識(shí)別該區(qū)域的網(wǎng)絡(luò) e) 被動(dòng)掃描則是被動(dòng)聆聽(tīng) Beacon 幀以節(jié)省電力 f) ChannelList:進(jìn)行掃描時(shí),工作站通過(guò)指定所要嘗試的信道列表來(lái)對(duì)某個(gè)信道進(jìn)行探測(cè)或聆聽(tīng) g) ProbeDelay:主動(dòng)探測(cè)某個(gè)信道時(shí),為了避免一直等不到 Probe Response 幀而設(shè)定的延時(shí)定時(shí)器,以微妙為單位 本 科 畢 業(yè) 設(shè) 計(jì) 第 15 頁(yè) 共 47 頁(yè) h) MinChannelTime 與 MaxChannelTime:指在掃描每個(gè)特定信道時(shí)所使用的最小與最大的時(shí)間量 2) 身份驗(yàn)證 規(guī)范要求工作站在傳送幀之前必須確認(rèn)身份,以取得網(wǎng)絡(luò)資源的使用權(quán), 當(dāng)通過(guò)了“低級(jí)”的身份驗(yàn)證后,才能進(jìn)行高級(jí)的 身份驗(yàn)證 。 關(guān)聯(lián)過(guò)程涉及三個(gè)步驟: 首先移動(dòng)工作站發(fā)送 Association Request(關(guān)聯(lián)請(qǐng)求 )幀。 struct usb_driver rtusb_driver = { .name=rt73, // 網(wǎng)卡驅(qū)動(dòng)標(biāo)識(shí) .probe=usb_rtusb_probe, // RT73 連接時(shí)調(diào)用的函數(shù) .disconnect=usb_rtusb_disconnect, // RT73 斷開(kāi)時(shí)調(diào)用的函數(shù) .id_table=rtusb_usb_id, // USB 驅(qū)動(dòng)支持的設(shè)備列表 ifdef CONFIG_PM .suspend = rt73_suspend, // 電源管理相關(guān)函數(shù) .resume = rt73_resume, endif }。 本 科 畢 業(yè) 設(shè) 計(jì) 第 17 頁(yè) 共 47 頁(yè) PRTMP_ADAPTER 是無(wú)線(xiàn)網(wǎng)卡的核心結(jié)構(gòu),包含了網(wǎng)絡(luò)驅(qū)動(dòng)層所需要的一切信息,如果需要一些設(shè)備信息,只需得到 PRTMP_ADAPTER 的指針即可。 無(wú)論是發(fā)送和接收網(wǎng)卡驅(qū)動(dòng)都實(shí)現(xiàn)了一些數(shù)據(jù)結(jié)構(gòu)來(lái)維護(hù)需要發(fā)送的數(shù)據(jù),這樣可以保證數(shù)據(jù)發(fā)送的輕重緩急,更有效的進(jìn)行數(shù)據(jù)通信。 _TXD_STRUC 結(jié)構(gòu)體說(shuō)明了 RT73 發(fā)送描述符, RT73 發(fā)送描述符一共占用 6 個(gè)字節(jié),它處于整個(gè)發(fā)送幀的最前面。 Urb 傳輸完畢后,內(nèi)核會(huì)調(diào)用 RTUSBBulkRxComplete 函數(shù),此函數(shù)會(huì)檢測(cè)此次 urb是否成功,然后重新裝載 tasklet。 默認(rèn)情況下,剛剛初始化完畢的驅(qū)動(dòng)程序處于 IDLE 狀態(tài) ,此時(shí)用戶(hù)發(fā)出一個(gè) SCAN 本 科 畢 業(yè) 設(shè) 計(jì) 第 21 頁(yè) 共 47 頁(yè) 指令,此時(shí) PIC32 會(huì)發(fā)出 probe requset 幀,無(wú)線(xiàn) AP 收到 probe 幀后,會(huì)返回 probe response 幀, 當(dāng)收到 需要連接到的 AP 的 response 幀后, PIC32 會(huì)發(fā)出 association request 幀, 相應(yīng)的 AP 會(huì)發(fā)出 association response 幀, PIC32 收到 response 幀后轉(zhuǎn)為 CONNECTED 狀態(tài)。 數(shù)據(jù) 幀發(fā)送的一般流程: 上 層 封 裝 好 的 數(shù) 據(jù)一 般 為 以 太 網(wǎng) 幀r t 2 5 0 1 _ s e n d執(zhí) 行 對(duì) 數(shù) 據(jù) 幀 的 封 裝是 否 已 連接 到 A P開(kāi) 始加 密 模 式 ?( 未 實(shí) 現(xiàn) )N O N E 。 c) 幀數(shù)據(jù)的接收 和數(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è)中斷的過(guò)程,而 USB 總線(xiàn)的特點(diǎn)是主機(jī)輪詢(xún),所以當(dāng)有數(shù)據(jù)幀放入基帶芯片的緩沖區(qū)中時(shí), 基帶芯片不能主動(dòng)通知 PIC32,而需要 PIC32 主動(dòng)試探,當(dāng)沒(méi)有數(shù)據(jù)時(shí),基帶芯片返回 NAK 握手包,直到有數(shù)據(jù)才返回?cái)?shù)據(jù), 這樣 PIC32 的輪詢(xún)頻率就是一個(gè)關(guān)鍵的變量,輪詢(xún)的時(shí)間間隔不能過(guò)小,過(guò)小會(huì)導(dǎo)致 CPU 負(fù)荷較重,也不能間隔過(guò)大,過(guò)大會(huì)使數(shù)據(jù)通信延遲 變大 , 綜合考慮將 BULKIN,傳輸設(shè)置為 1ms 進(jìn)行一次, 也就是每次 sof包后立即進(jìn)行一次 BULKIN 傳輸。 這 里并沒(méi)有進(jìn)行數(shù)據(jù)的拷貝,主要是效率的考慮,直接利用 USBIN 傳輸?shù)慕邮站彌_區(qū),所以在以太網(wǎng)幀封裝好后立即進(jìn)行 TCP/IP 層的處理。 LWIP 協(xié)議棧的移植 LWIP 的作者已經(jīng)為移植提供了框架和接口,移植需要改動(dòng)以下的文件: a) 這個(gè)文件中實(shí)現(xiàn)了操作系統(tǒng)模擬層, LWIP 可以被配置為在 RTOS 中運(yùn)行,它內(nèi)部會(huì)有一個(gè)核心 TCP/IP 線(xiàn)程,這個(gè) TCP/IP 線(xiàn)程在沒(méi)有數(shù)據(jù)包收到時(shí)處于阻塞狀態(tài),一旦有數(shù)據(jù)包收到,此時(shí)網(wǎng)卡接口層會(huì)向 TCP/IP 線(xiàn)程發(fā)送數(shù)據(jù)包的指針, TCP/IP 線(xiàn)程接收到數(shù)據(jù)包指針開(kāi)始處理收到的數(shù)據(jù)幀。 另外一部分就是數(shù)據(jù)包收發(fā)所占用的緩存空間,這部分空間雖然對(duì)于網(wǎng)絡(luò)應(yīng)用算是小的了 ,但是對(duì)于 RAM 只有 32K 的 PIC單片機(jī)來(lái)說(shuō)是非常有限的,所以在配置的時(shí)候要是。 根據(jù)系統(tǒng)的需要和系統(tǒng)資源的限制,對(duì) LWIP 進(jìn)行了裁剪和配置。 當(dāng)收到 beacon 幀或 probe response 幀后,如果無(wú)線(xiàn) 網(wǎng)卡處于 SCAN 狀態(tài)下,會(huì)將處理后的 beacon 幀結(jié)果傳入 scan_callback 回調(diào)函數(shù)中,在這個(gè)回調(diào)函數(shù)中,單片機(jī)會(huì)發(fā)送 association 幀,最終會(huì)和無(wú)線(xiàn) AP 建立鏈路層的連接。 將所有數(shù)據(jù)裝填好后,就可以調(diào)用 USB 發(fā)送函數(shù)發(fā)送數(shù)據(jù)了,真正的發(fā)送過(guò)程在中斷中啟動(dòng),并在中斷中確認(rèn)結(jié)束,這里可以選用兩種方案進(jìn)行 USB 發(fā)送過(guò)程, 一種是等待 USB發(fā)送過(guò)程的結(jié)束,一種是發(fā)送完畢后通知主程序。 b) 幀數(shù)據(jù)的發(fā)送 根據(jù) 幀的類(lèi)型的不同,可以分為控制幀,管理幀,和數(shù)據(jù)幀,其中管理幀和數(shù)據(jù)幀是必須使用到的,所以驅(qū)動(dòng)程序必須實(shí)現(xiàn)對(duì)管理幀和數(shù)據(jù)幀的處理。 RT73 無(wú)線(xiàn)網(wǎng)卡驅(qū)動(dòng)程序整體結(jié)構(gòu) : 整個(gè)軟件分為底層的 USB部分和 協(xié)議處理部分, USB 部分主要處理 RT73 無(wú)線(xiàn)網(wǎng)卡的初始化和 BULK 數(shù)據(jù)傳輸, 部分處理和整個(gè)協(xié)議相關(guān)的功能,主要有連接 AP和 封裝數(shù)據(jù)幀的功能。 接收數(shù)據(jù)流程: u s b _ r t u s b _ i n i t _ d e v i c e初 始 化 接 收 軟 中 斷 軟 中 斷 函 數(shù) : R T U S B B u l k R x H a n d l eR T U S B B u l k R x H a n d l e初 始 化 接 收 接 收在 系 統(tǒng) 空 閑 時(shí) , 安 全 的 運(yùn) 行R T U S B B u l k R x H a n d l e 函 數(shù)R T U S B B u l k R e c e i v e實(shí) 際 的 U S B I N 傳 輸設(shè) 置 接 收 回 調(diào) 函 數(shù)U S B I N 傳 輸 結(jié) 束R T U S B B u l k R x C o m p l e t e判 斷 此 次 U S B 傳 輸 成 功 與 否調(diào) 用 回 調(diào) 函 數(shù)R T U S B R x P a c k e t8 0 2 . 1 1 協(xié) 議 處 理 , 數(shù) 據(jù) 包 拷 貝到 上 層u r b 已 完 成調(diào) 用u r b 未 完 成調(diào) 用處 理 完 后 調(diào) 用t a s k l e t _ s c h e d u l e重 新 調(diào) 度 圖 接收數(shù)據(jù)流程圖 接收過(guò)程,采用了 tasklet 機(jī)制 ,這是 一種比較常見(jiàn)的機(jī)制,通常用于減少中斷處理的時(shí)間, 為了最大程度的避免中斷處理時(shí)間過(guò)長(zhǎng)而導(dǎo)致中斷丟失,有時(shí)候內(nèi)核需要把一些在中斷處理中不是非常 緊急的任務(wù)放在后面執(zhí)行,而讓中斷處理程序盡快返回 將本應(yīng)該是在中斷服務(wù)程序中完成的任務(wù)轉(zhuǎn)化成軟中斷完成。 這里比較重要的函數(shù)是 RTUSBHardTransmit 函數(shù),此函數(shù)完成了 幀頭,和RT73 發(fā)送描述符的封裝,也就是說(shuō)要搞清楚 RT73 無(wú)線(xiàn)網(wǎng)卡的工作原理,這個(gè)函數(shù)提供了詳細(xì)的信息 。 無(wú)線(xiàn)網(wǎng)卡的配置信息一般來(lái)自于用戶(hù)的配置文件,當(dāng)然也會(huì)有一些 默認(rèn)的配置。 / / 網(wǎng) 卡 狀 態(tài)r t 7 3 _ i o c t l 。 Module_init 將 RT73 網(wǎng)卡驅(qū)動(dòng)注冊(cè)到內(nèi)核中 , 以下的結(jié)構(gòu)體 會(huì)被注冊(cè)到 內(nèi)核中。關(guān)聯(lián)只限于 infrastructure(基礎(chǔ)結(jié)構(gòu)型 )網(wǎng)絡(luò),在邏輯上等同于在有線(xiàn)網(wǎng)絡(luò)中插入網(wǎng)線(xiàn),一旦完成此過(guò)程,無(wú)線(xiàn)工作站就可以通過(guò)分布式系 統(tǒng)與整個(gè)世界連接。 以下列出了最基本的管理操作: 1) 掃描 使用 網(wǎng)絡(luò)之前,必須找出網(wǎng)絡(luò)的存在,在無(wú)線(xiàn)領(lǐng)域中,工作站要加入任何兼容 網(wǎng)絡(luò)之前必須先經(jīng)過(guò)一番識(shí)別工作,在所在區(qū)域內(nèi)識(shí)別現(xiàn)有網(wǎng)絡(luò)的過(guò)程稱(chēng)為掃描 。 b) Probe Request 幀 : 工作站通過(guò) Probe Request 幀來(lái)掃描所在區(qū)域內(nèi)的 網(wǎng)絡(luò)。下面詳述各種幀的結(jié)構(gòu)和用途。 2) Duration/ID 字段 持續(xù)時(shí)間 /標(biāo)志, 2個(gè)字節(jié)。 a) 網(wǎng)絡(luò)類(lèi)型 無(wú)線(xiàn)網(wǎng)絡(luò)分為了兩種類(lèi)型 :一類(lèi)是獨(dú)立型網(wǎng)絡(luò) (independent BSS,簡(jiǎn)稱(chēng)IBSS)。 b) 將 RT73 模塊的廠(chǎng)商 ID 和產(chǎn)品 ID 加入 USB_TPL(目標(biāo)外設(shè)表 )中,這樣當(dāng) RT73 枚舉初始化時(shí),會(huì)根據(jù)的得到設(shè)備描述符和 USB_TPL 中的信息進(jìn)行比對(duì)以確定是否連接的是RT73 設(shè)備。 d) USBHostSetNAKTimeout() 此函數(shù)設(shè)置指定端點(diǎn)的 NAK的超時(shí)次數(shù),也就是說(shuō)如果主機(jī)連續(xù)得到了超過(guò)指定次數(shù)的 NAK 握手包,則指定端點(diǎn)會(huì)返回一個(gè)錯(cuò)誤狀態(tài)。 設(shè)備第一次連接到總線(xiàn)時(shí),主機(jī)層將從 設(shè)備讀取描述符,以確定設(shè)備類(lèi)型以及支持的功能。它是由用戶(hù)設(shè)計(jì)和實(shí)現(xiàn)的代碼,應(yīng)用程序?qū)涌梢酝ㄟ^(guò)一個(gè)或多個(gè) USB 客戶(hù)機(jī)驅(qū)動(dòng)程序,并在需要時(shí)使用系統(tǒng)中任何其他固 件,與 USB設(shè)備進(jìn)行通信。 USB 模塊由 時(shí)鐘發(fā)生器、 USB 電壓比較器、收發(fā)器、串行接口引擎( Serial Interface Engine,SIE)、專(zhuān)用 USBDMA 控制器、上拉和下拉電阻以及寄存器接口組成。 h) 主機(jī)通過(guò)標(biāo)準(zhǔn)請(qǐng)求 set_address 給設(shè)備分配地址。 USB 主機(jī)除負(fù)責(zé)基本的數(shù)據(jù)傳輸外,還對(duì)設(shè)備的熱插拔進(jìn)行了支持,每當(dāng)一個(gè)設(shè)備插入 USB 接口后, USB 主機(jī)檢測(cè)到外部信號(hào)線(xiàn)上電平的變化,由此判斷有設(shè)備插入,此時(shí) USB主機(jī)隨即對(duì)外設(shè)進(jìn)行枚舉并分配地址,具體的枚舉過(guò)程如下: a) 連接了設(shè)備的 HUB 在 HOST 查詢(xún)其狀態(tài)改變端點(diǎn) 狀態(tài)改變端點(diǎn) 狀態(tài)改 變端點(diǎn) 狀態(tài)改變端點(diǎn)時(shí)返回對(duì)應(yīng)的 bitmap,告知 HOST 某個(gè) PORT 狀態(tài)發(fā)生了改變。 USB 采用輪詢(xún)廣播的方式傳輸數(shù)據(jù),每一個(gè) USB 設(shè)備都有其自身的地址,所有的數(shù)據(jù)傳輸均由 USB主機(jī)發(fā)起,任何時(shí)刻整個(gè) USB 傳輸系統(tǒng)中只允許一個(gè)數(shù)據(jù)包進(jìn)行傳輸。 綜合以上分析,方案的硬件設(shè)計(jì)并不復(fù)雜,主要是系統(tǒng)的供電設(shè)計(jì)以及 PIC32 單片機(jī)最小系統(tǒng)設(shè)計(jì); USB 接口的設(shè)計(jì)等。 RT73 模塊需要在上電后進(jìn) 行初始化配置, 配置 通過(guò) USB 控制傳輸來(lái)進(jìn)行。 b) 采用 USB 接口作為和主 MCU 通信的接口, RT2571 芯片集成了一個(gè) USB 設(shè)備控制器,它擁有一個(gè)控制 0端點(diǎn),和一進(jìn)一出兩個(gè)批量傳輸端點(diǎn), USB 接口支持 本 科 畢 業(yè) 設(shè) 計(jì) 第 4 頁(yè) 共 47 頁(yè) 和 控制協(xié)議。本節(jié)概述 PIC32MX 系列單片機(jī)的 CPU 特性和系統(tǒng)架構(gòu)。此部分控制無(wú)線(xiàn)通信的具體過(guò)程,具體來(lái)說(shuō)就是 建立無(wú)線(xiàn)連接,傳送采集和處理后的數(shù)據(jù)。誠(chéng)然,以上兩種方案的優(yōu)勢(shì)明顯,主要體現(xiàn)在傳輸速度高,軟件編制容易等方面,缺點(diǎn)是單個(gè)節(jié)點(diǎn)造價(jià)較高。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1