日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于OHCI的USB主机 —— OHCI(设计思路)

發布時間:2025/6/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于OHCI的USB主机 —— OHCI(设计思路) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在OHCI層,主要完成如下功能: l??通過控制端口讀寫數據(包含SETUPDATASTATUS3TD); l??通過控制端口發送設置命令(沒有DATATD); l??通過批量端口讀數據; l??通過批量端口寫數據; l??中斷處理程序; 本層將OHCIEDTD作為自己內部的對象進行包裝,上層對象通過調用本層接口完成所需要的功能,而不必關心EDTD的細節。 通過OHCI接口進行數據收發,最主要的工作就是確定EDTD隊列。在網上廣為流傳的周立功公司的相關資料以及該公司出版的《ARM嵌入式系統軟件開發實例》(一)、(二)中,關于EDTD的處理非常復雜,甚至為此建立了一個管理機制,包括隊列的建立、插入、刪除、釋放等一系列操作。 其實對于一般的嵌入式系統來說,沒有必要把EDTD搞得這么復雜。在我們的系統中,EDTD的管理非常簡單:把待處理的命令構建為EDTD隊列,然后執行,等到執行完畢再根據上層代碼的需要構建新的隊列。也就是說只有等到上一個命令全部執行完畢后,才可以執行下一個命令。這樣的處理機制完全可以適應絕大多數的嵌入式系統了。 基本上來說,每個端點使用一個ED,譬如對于控制端口的命令,使用一個ED即可,而對于批量端口,則會使用到兩個ED,分別對應批量出和批量入端口。 對于端點來說,代碼中需要注意的參數有如下幾個: l??EDToggleCarry 用來確定ED使用哪個數據區收發收據,對于控制端點來說,根據USB規范,每個控制命令總是從Data0開始的,后面再進行切換。因此控制端點的ToggleCarry字段隨便設置,而批量端點的該字段需要得到上一次傳送完畢后的ToggleCarry的值。 l??TDDataToggle 用來確定TD使用哪個數據區收發數據。該字段有2個比特,高位=0表示使用EDToggleCarry字段的值作為要使用的數據區,=1表示自己控制使用哪一個數據區。根據USB規范,對于控制端點收發數據來說,需要TD自己控制使用哪一個數據區。而對于批量端點,不需要TD自己控制,交由ED進行控制。



本文轉自 tywali 51CTO博客,原文鏈接:http://blog.51cto.com/lancelot/243412,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的基于OHCI的USB主机 —— OHCI(设计思路)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。