基于μC/OS-Ⅱ的USB OHCI主機協(xié)議棧的實現(xiàn)
發(fā)布時間:2020-12-10 12:44
通用串行總線(USB)是一種計算機外圍串行通信接口標(biāo)準(zhǔn),已經(jīng)成為現(xiàn)代計算機必備的接口之一。開放主機控制器接口(OHCI)是一個在嵌入式系統(tǒng)中得到廣泛應(yīng)用的USB主機控制器接口規(guī)范。μC/OS-Ⅱ是一個簡單高效的嵌入式實時操作系統(tǒng)。基于μC/OS-Ⅱ的USB OHCI主機協(xié)議棧占用系統(tǒng)資源少,適合應(yīng)用在資源緊張的嵌入式系統(tǒng)中,為產(chǎn)品提供USB設(shè)備接入功能。目前已有的USBOHCI主機協(xié)議棧在功能、資源占用、成本和可維護性等方面通常不能滿足商業(yè)化產(chǎn)品的需要。本文在AT91SAM9260硬件平臺上實現(xiàn)了一個較完整的基于μC/OS-Ⅱ操作系統(tǒng)的USB OHCI主機協(xié)議棧。首先進行了總體設(shè)計和模塊劃分,然后進行了主機控制器驅(qū)動模塊、USB驅(qū)動模塊和類驅(qū)動模塊的設(shè)計和實現(xiàn)。在主機控制器驅(qū)動模塊中,通過對主機控制器的管理和控制,實現(xiàn)了USB底層數(shù)據(jù)傳送功能。在USB驅(qū)動模塊中,實現(xiàn)了USB通信功能和USB設(shè)備管理功能。在類驅(qū)動模塊中,實現(xiàn)了大容量存儲類協(xié)議和人機接口設(shè)備類協(xié)議。最后,搭建了一個測試平臺,設(shè)計了一系列測試用例,驗證了主機協(xié)議棧的有效性。實驗結(jié)果表明,該USBOHCI主機協(xié)議棧的可行性和...
【文章來源】:西安電子科技大學(xué)陜西省 211工程院校 教育部直屬院校
【文章頁數(shù)】:71 頁
【學(xué)位級別】:碩士
【部分圖文】:
基于μC/OS-II 的 USB OHCI 主機協(xié)議棧的實現(xiàn)控制器驅(qū)動首先定位目標(biāo)端點的 ED,然后根據(jù) USB 驅(qū)動傳過 TD,插入到 ED 的 TD 隊列中,最后提交給主機控制器處理?刂苽魉偷奶幚肀容^簡單,只要把 URB 定義的數(shù)據(jù)分割成多 ED 的 TD 隊列中就可以了。傳送的情況有些特殊。如圖 4.7 所示,控制傳送分為三個階段 STATUS。在 SETUP 階段,主機向設(shè)備發(fā)送一個控制命令包(備請求)。在可選的 DATA 階段,主機和設(shè)備之間傳送零個或TATUS 階段,主機和設(shè)備之間傳送一個零字節(jié)的數(shù)據(jù)包,方向據(jù)傳送方向相反(對于沒有 DATA 階段的情況,方向為輸入)可以清楚地看出算法對控制傳送的處理情況:DATA 階段使用ETUP 階段和 STATUS 階段分別使用一個 TD。
圖 5.4 設(shè)備熱拔插處理流程設(shè)備熱拔插事件的處理過程分為以下幾步:1. 事件檢測:驅(qū)動監(jiān)視集線器的狀態(tài),當(dāng)集線器產(chǎn)生狀態(tài)改變事件指向集線器 USB 設(shè)備對象的指針發(fā)送到消息隊列。主機控制器驅(qū)監(jiān)視根集線器,集線器驅(qū)動負(fù)責(zé)監(jiān)視所有的普通集線器。2. 事件源確認(rèn):USB 主任務(wù)從消息隊列中取消息,判斷事件來自于線器設(shè)備。3. 事件處理:USB 主任務(wù)調(diào)用集線器驅(qū)動提供的事件處理程序處理設(shè)備產(chǎn)生的“連接狀態(tài)改變”事件,判斷事件類型,如果是“設(shè)事件”,向系統(tǒng)添加設(shè)備,反之,如果是“設(shè)備拔出”事件,則把系統(tǒng)中刪除。4. 重新開始事件檢測:對于除根集線器之外的其它普通集線器,US務(wù)向其狀態(tài)改變端點提交輪詢 URB,重新啟動集線器的事件檢測使集線器驅(qū)動繼續(xù)監(jiān)視集線器的狀態(tài)。根集線器的事件檢測通過斷實現(xiàn),不需要這一步驟。
【參考文獻】:
期刊論文
[1]USB設(shè)備啟動過程的分析與實現(xiàn)[J]. 張國云. 現(xiàn)代電子技術(shù). 2005(23)
[2]Open HCI for USB淺析[J]. 朱良. 計算機工程與科學(xué). 2005(09)
[3]基于Mass Storage協(xié)議的USB接口設(shè)計[J]. 田奕. 電子器件. 2005(03)
碩士論文
[1]USB OHCI主機協(xié)議棧設(shè)計及移植[D]. 李大鵬.東北大學(xué) 2009
[2]嵌入式下的USB協(xié)議棧設(shè)計與實現(xiàn)[D]. 阮寅.電子科技大學(xué) 2006
本文編號:2908715
【文章來源】:西安電子科技大學(xué)陜西省 211工程院校 教育部直屬院校
【文章頁數(shù)】:71 頁
【學(xué)位級別】:碩士
【部分圖文】:
基于μC/OS-II 的 USB OHCI 主機協(xié)議棧的實現(xiàn)控制器驅(qū)動首先定位目標(biāo)端點的 ED,然后根據(jù) USB 驅(qū)動傳過 TD,插入到 ED 的 TD 隊列中,最后提交給主機控制器處理?刂苽魉偷奶幚肀容^簡單,只要把 URB 定義的數(shù)據(jù)分割成多 ED 的 TD 隊列中就可以了。傳送的情況有些特殊。如圖 4.7 所示,控制傳送分為三個階段 STATUS。在 SETUP 階段,主機向設(shè)備發(fā)送一個控制命令包(備請求)。在可選的 DATA 階段,主機和設(shè)備之間傳送零個或TATUS 階段,主機和設(shè)備之間傳送一個零字節(jié)的數(shù)據(jù)包,方向據(jù)傳送方向相反(對于沒有 DATA 階段的情況,方向為輸入)可以清楚地看出算法對控制傳送的處理情況:DATA 階段使用ETUP 階段和 STATUS 階段分別使用一個 TD。
圖 5.4 設(shè)備熱拔插處理流程設(shè)備熱拔插事件的處理過程分為以下幾步:1. 事件檢測:驅(qū)動監(jiān)視集線器的狀態(tài),當(dāng)集線器產(chǎn)生狀態(tài)改變事件指向集線器 USB 設(shè)備對象的指針發(fā)送到消息隊列。主機控制器驅(qū)監(jiān)視根集線器,集線器驅(qū)動負(fù)責(zé)監(jiān)視所有的普通集線器。2. 事件源確認(rèn):USB 主任務(wù)從消息隊列中取消息,判斷事件來自于線器設(shè)備。3. 事件處理:USB 主任務(wù)調(diào)用集線器驅(qū)動提供的事件處理程序處理設(shè)備產(chǎn)生的“連接狀態(tài)改變”事件,判斷事件類型,如果是“設(shè)事件”,向系統(tǒng)添加設(shè)備,反之,如果是“設(shè)備拔出”事件,則把系統(tǒng)中刪除。4. 重新開始事件檢測:對于除根集線器之外的其它普通集線器,US務(wù)向其狀態(tài)改變端點提交輪詢 URB,重新啟動集線器的事件檢測使集線器驅(qū)動繼續(xù)監(jiān)視集線器的狀態(tài)。根集線器的事件檢測通過斷實現(xiàn),不需要這一步驟。
【參考文獻】:
期刊論文
[1]USB設(shè)備啟動過程的分析與實現(xiàn)[J]. 張國云. 現(xiàn)代電子技術(shù). 2005(23)
[2]Open HCI for USB淺析[J]. 朱良. 計算機工程與科學(xué). 2005(09)
[3]基于Mass Storage協(xié)議的USB接口設(shè)計[J]. 田奕. 電子器件. 2005(03)
碩士論文
[1]USB OHCI主機協(xié)議棧設(shè)計及移植[D]. 李大鵬.東北大學(xué) 2009
[2]嵌入式下的USB協(xié)議棧設(shè)計與實現(xiàn)[D]. 阮寅.電子科技大學(xué) 2006
本文編號:2908715
本文鏈接:http://www.lk138.cn/kejilunwen/jisuanjikexuelunwen/2908715.html
最近更新
教材專著