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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于pic單片機(jī)的wifi控制系統(tǒng)(已改無錯字)

2023-01-13 17:06:17 本頁面
  

【正文】 驅(qū)動程序會根據(jù) VID 和 PID 來判斷是否支持當(dāng)前插入的設(shè)備。 本 科 畢 業(yè) 設(shè) 計(jì) 第 17 頁 共 47 頁 PRTMP_ADAPTER 是無線網(wǎng)卡的核心結(jié)構(gòu),包含了網(wǎng)絡(luò)驅(qū)動層所需要的一切信息,如果需要一些設(shè)備信息,只需得到 PRTMP_ADAPTER 的指針即可。 網(wǎng)絡(luò)操作 函數(shù)注冊到內(nèi)核后,內(nèi)核就可以使用網(wǎng)絡(luò)驅(qū)動程序提供的一系列的服務(wù),usb_rtusb_sendpkt 此函數(shù)很重要,當(dāng)有網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送時(shí)會調(diào)用此函數(shù)。 usb_rtusb_init_device 函數(shù)是 RT73 模塊真正的初始化過程,一些配置信息和核心線程都是在這個函數(shù)中實(shí)現(xiàn)的。 usb_rtusb_init_device 函數(shù)實(shí)現(xiàn)了網(wǎng)卡具體的初始化過程。 課題關(guān)注的是網(wǎng)卡的初始化過程, 網(wǎng)卡的基帶芯片是一個 8051 核的微控制器,為了保證處理速度,網(wǎng)卡的內(nèi)置程序并沒有固化在基帶芯片中,而是需要在每一次上電后由 USB 的 Control 傳輸下載到 基帶芯片中的 SRAM 中,所以網(wǎng)卡初始化的第一步就是下載固化程序,而基帶芯片的工作狀態(tài)和配置信息都存放在特定的控制寄存器中,所以控制寄存器也是初始化的重點(diǎn)。 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 e中 斷 b u t t o m h a l f 初 始 化P o r t C f g I n i t無 線 網(wǎng) 卡 配 置 信 息 初 始 化初 始 化 環(huán) 形 發(fā) 送 隊(duì) 列 結(jié) 構(gòu) 體 和接 收 結(jié) 構(gòu) 體R T 2 5 7 1 硬 件 初 始 化a ) 等 待 R T 7 3 無 線 網(wǎng) 卡 到 穩(wěn) 定 .b ) 下 載 R T 7 3 無 線 網(wǎng) 卡 的 固 件 程 序 .c ) 初 始 化 功 能 寄 存 器d ) 讀 取 E E P R O M 中 的 配 置 信 息f ) 讀 取 網(wǎng) 卡 物 理 地 址g ) 配 置 物 理 層 ( a , b o r n )h ) 設(shè) 置 傳 輸 速 率初 始 化 M l m e T h r e a d 和R T U S B C m d T h r e a d 線 程結(jié) 束 圖 網(wǎng)卡初始化流程圖 RTUSBBulkRxHandle 函數(shù)處理收到的 數(shù)據(jù)包并進(jìn)行初步處理,當(dāng)收到數(shù)據(jù)包后,隨即將此函數(shù)作為 tasklet 被調(diào)度,在系統(tǒng)某個特定的安全事件運(yùn)行在軟件中斷的執(zhí)行現(xiàn)場。 無線網(wǎng)卡的配置信息一般來自于用戶的配置文件,當(dāng)然也會有一些 默認(rèn)的配置。在網(wǎng)卡初始化時(shí),這些配置信息會被引用。 無論是發(fā)送和接收網(wǎng)卡驅(qū)動都實(shí)現(xiàn)了一些數(shù)據(jù)結(jié)構(gòu)來維護(hù)需要發(fā)送的數(shù)據(jù),這樣可以保證數(shù)據(jù)發(fā)送的輕重緩急,更有效的進(jìn)行數(shù)據(jù)通信。 本 科 畢 業(yè) 設(shè) 計(jì) 第 18 頁 共 47 頁 RT2571 硬件初始化部分是關(guān)注的重點(diǎn),當(dāng)采用 MCU 驅(qū)動無線網(wǎng)卡時(shí),同樣需要進(jìn)行硬件的初始化操作,所以這部分的流程是一樣的。 Mlme 線程用于連接路由的操作,本身是一個復(fù)雜的狀態(tài)機(jī), Cmd 線程是命令隊(duì)列線程,這個線程會將用戶的操作轉(zhuǎn)換為命令發(fā)送到 Mlme 線程中,來改變網(wǎng)絡(luò)運(yùn)行狀態(tài)。 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): 。 驅(qū)動程序?qū)崿F(xiàn)了幾個發(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ù)。 以上是典型的多任務(wù)處理機(jī)制。 這里比較重要的函數(shù)是 RTUSBHardTransmit 函數(shù),此函數(shù)完成了 幀頭,和RT73 發(fā)送描述符的封裝,也就是說要搞清楚 RT73 無線網(wǎng)卡的工作原理,這個函數(shù)提供了詳細(xì)的信息 。 RTUSBHardTransmit 函數(shù)會根據(jù)上層的信息決定如何封裝 幀頭和發(fā)送描述符幀頭。 _TXD_STRUC 結(jié)構(gòu)體說明了 RT73 發(fā)送描述符, RT73 發(fā)送描述符一共占用 6 個字節(jié),它處于整個發(fā)送幀的最前面。發(fā)送描述符描述了此發(fā)送幀對 RT2571 基帶芯片具體的發(fā)送要求,基帶芯片會根據(jù)發(fā)送描述符改變發(fā)送狀態(tài),最終將數(shù)據(jù)幀發(fā)送 本 科 畢 業(yè) 設(shè) 計(jì) 第 19 頁 共 47 頁 出去, 重要的位說明: MoreFrag 位,是否有更多的數(shù)據(jù)片等待發(fā)送,對于超過 最大幀長度的數(shù)據(jù)幀,需要將數(shù)據(jù)幀分成 片。不過一般而言上層的 TCP/IP 協(xié)議可以設(shè)置網(wǎng)絡(luò)包最大長度,所以可以將 TCP/IP 包最大長度設(shè)置為一個 數(shù)據(jù)幀最大長度之內(nèi),這樣就消除了數(shù)據(jù)分片的可 能性。 ACK 位,是否需要 ACK 應(yīng)答,因?yàn)闊o線媒介的不確定性,一般都需要進(jìn)行應(yīng)答 。 DataByteCnt 域,指明數(shù)據(jù)幀的長度。 CipherAlg 域,指明此幀的加密方式,根據(jù)加密方式的不同,基帶芯片會進(jìn)行不同的加密處理。 接收數(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ù)流程圖 接收過程,采用了 tasklet 機(jī)制 ,這是 一種比較常見的機(jī)制,通常用于減少中斷處理的時(shí)間, 為了最大程度的避免中斷處理時(shí)間過長而導(dǎo)致中斷丟失,有時(shí)候內(nèi)核需要把一些在中斷處理中不是非常 緊急的任務(wù)放在后面執(zhí)行,而讓中斷處理程序盡快返回 將本應(yīng)該是在中斷服務(wù)程序中完成的任務(wù)轉(zhuǎn)化成軟中斷完成。 當(dāng) RT73 網(wǎng)卡連接上時(shí), 內(nèi)核調(diào)用 probe 函數(shù)時(shí)裝載了 RTUSBBulkRxHandle 軟中斷例程, 這個軟中斷會在系統(tǒng)空閑的時(shí)候運(yùn)行, 隨后 RTUSBBulkRxHandle 接收參數(shù) pAd, 這個指針指向了包含了網(wǎng)卡的信息的關(guān)鍵數(shù)據(jù)結(jié)構(gòu) PRTMP_ADAPTER,由這個數(shù)據(jù)接收可以獲得任何信息,也包括現(xiàn)在正在進(jìn)行 BULKIN 的 urb的信息,這里可以判斷正在進(jìn)行的 urb 數(shù)據(jù)請求 已啟動,如果已啟動這時(shí)需調(diào)用 RTUSBBulkRcecive 函數(shù)進(jìn)行實(shí)際的 urb 傳輸,反之,如果 urb 已完成, 本 科 畢 業(yè) 設(shè) 計(jì) 第 20 頁 共 47 頁 則需調(diào)用 RTUSBRxPacket 函數(shù)進(jìn)行 協(xié)議棧的處理,并將處理后的數(shù)據(jù)包傳送到網(wǎng)絡(luò)系統(tǒng)的上層,通常是 TCP/IP 層,這里 RTUSBRxPacket 完畢后再調(diào)用 urb 傳輸。 Urb 傳輸完畢后,內(nèi)核會調(diào)用 RTUSBBulkRxComplete 函數(shù),此函數(shù)會檢測此次 urb是否成功,然后重新裝載 tasklet。 由上圖可以看出,接收流程圖 是一個封閉的回路,一旦開始接收例程后,接收操作就不會停止, 在接收的上下文中會進(jìn)行 協(xié)議棧的處理,所以 RTUSBRxPacket 是重要的處理函數(shù)。 另外兩個核心的內(nèi)核線程 MLMEthread 和 CMDthread 主要是完成一些管理操作,這里不去深究,因?yàn)檎n題主要的目標(biāo)是實(shí)現(xiàn)底層的通信移植。 RT73 無線網(wǎng)卡驅(qū)動的裁剪和改寫 本節(jié)進(jìn)行 RT73 單片機(jī)驅(qū)動程序的具體移植,目標(biāo)如下: a) 實(shí)現(xiàn)對 RT73 無線網(wǎng)卡的初始化操作,進(jìn)行基本設(shè)置并讀取 MAC地址。 b) 實(shí)現(xiàn) RT73 無線網(wǎng)卡基本數(shù)據(jù)幀的收發(fā)操作,對一些重要而根本的 幀進(jìn)行解析。 c) 實(shí)現(xiàn) RT73 模塊 連接無線 AP 的功能 ( AP 模式為 不需加密,不需 認(rèn)證 )。 RT73 無線網(wǎng)卡驅(qū)動程序整體結(jié)構(gòu) : 整個軟件分為底層的 USB部分和 協(xié)議處理部分, USB 部分主要處理 RT73 無線網(wǎng)卡的初始化和 BULK 數(shù)據(jù)傳輸, 部分處理和整個協(xié)議相關(guān)的功能,主要有連接 AP和 封裝數(shù)據(jù)幀的功能。 根據(jù) 無線網(wǎng)絡(luò)的工作方式,可以建立如下的狀態(tài)機(jī)模型: enum { RT73_S_BROKEN, RT73_S_IDLE, RT73_S_SCAN, RT73_S_CONNECTING, RT73_S_CONNECTED, RT73_S_MASTER, }。 默認(rèn)情況下,剛剛初始化完畢的驅(qū)動程序處于 IDLE 狀態(tài) ,此時(shí)用戶發(fā)出一個 SCAN 本 科 畢 業(yè) 設(shè) 計(jì) 第 21 頁 共 47 頁 指令,此時(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)。 下面分述具體的 代碼 部分: a) RT73 無線網(wǎng)卡 初始化 RT73 的初始化 如下流程圖: U S B 協(xié) 議 棧 初 始化U S B T a s k s檢 測 熱 插 拔( 需 定 時(shí) 調(diào) 用 )檢 測 到 熱 插 拔否R T 7 3 i n i t執(zhí) 行 R T 7 3 初 始 化 操作回 調(diào)初 始 化 完 畢 圖 單片機(jī) RT73熱插拔流程圖 RT73 初始化在 USB 任務(wù)的中斷上下文中進(jìn)行, USBTask 被系統(tǒng) 每隔一段 段時(shí)間輪詢調(diào)用, 當(dāng)系統(tǒng)檢測到 USB連接中斷時(shí),會通知 USBTask 進(jìn)行設(shè)備枚舉操作, USBTask 會獲得 USB 設(shè)備的描述符信息,進(jìn)行 VID 和 PID 比對后,此時(shí)確認(rèn)為 RT73 無線網(wǎng)卡,然后 USBTask 會回調(diào) RT73 驅(qū)動程序的初始化例程,開始網(wǎng)卡芯片的初始化。 初 始 化 開 始RT73SetupRT73SetupEEpromrt2501_switch_channelieee80211_init初 始 化 結(jié) 束 圖 單片機(jī)網(wǎng)卡初始化流程圖 本 科 畢 業(yè) 設(shè) 計(jì) 第 22 頁 共 47 頁 RT73Setup 進(jìn)行 RT2571 基帶芯片本身初始化, 包括固件下載, 這里的固件是被放在一個 const 型的數(shù)組中的,所以直接調(diào)用 此數(shù)組發(fā)送到 RT2571 芯片即可 ;等待基帶芯片正常運(yùn)行,通過反復(fù)檢測一個狀態(tài)寄存器進(jìn)行;初始化基帶芯片控制寄存器為默認(rèn)值。 RT73SetupEEpr
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1