新四季網

一種usb接口的驅動方法

2023-12-09 07:25:01

專利名稱:一種usb接口的驅動方法
技術領域:
本發明涉及一種USB接口的驅動方法,尤其涉及一種基於ARM 7312處理器的USB接口的驅動方法。
背景技術:
USB(Universal Serial Bus,通用串行總線)是電腦系統與其周邊裝置連接或通信的標準接口,現在在使用Windows作業系統的電腦系統中使用較廣泛的版本是USB1.1,但是在Linux作業系統中,尤其是使用ARM7312處理器的電話機中目前還沒有可以實現USB1.1傳輸的,而隨著Linux作業系統使用的日漸廣泛,不能實現USB1.1傳輸的基於Linux作業系統的產品存在使用不便的缺點。

發明內容為了克服現有的使用ARM 7312的電話機不能實現USB1.1傳輸的缺點,本發明提供一種基於ARM 7312處理器的USB接口及其驅動方法,其能使使用ARM 7312處理器的電話機實現USB1.1傳輸。
為實現本發明的目的,本發明所採用的技術方案是提供一種USB接口的驅動方法,其包括以下步驟初始化USB總線,包括初始化根集線器,其中初始化根集線器包括配置根集線器、提交USB請求塊到中斷服務子程序隊列當中以及創建USB接入設備內核守護進程;每個通用主控制器接口的時間片結束會產生中斷信號,每次產生中斷會掃描掛在驅動骨架程序上的每個裝有數據的傳送盒,輪流執行中斷服務子程序隊列中的應用程式,並且通知USB總線上連接的設備;
執行根集線器中斷,周期性喚醒USB接入設備內核守護進程,並掃描根集線器的各個埠;周期性檢查根集線器的埠是否有設備接入;若有USB設備接入,則對USB設備的配置或者設備的描述進行讀取;為新加入的USB設備綁定驅動程序,並且開始初始化USB設備。
本發明的有益效果是使在ARM 7312嵌入式處理器上實現USB1.1傳輸,因此可使使用ARM 7312嵌入式處理器的電話機理想地連接多種外設。。

圖1是本發明基於ARM 7312處理器的USB接口的電路原理圖。
圖2是圖1所示的USB接口的驅動方法的流程圖。
圖3是初始化USB設備的流程圖。
圖4是USB傳輸的中斷處理流程圖。
具體實施方式請參閱圖1,本發明的基於ARM 7312處理器的USB接口是用於基於Linux作業系統且是使用ARM 7312處理器的電話機。在ARM 7312處理器上實現USB1.1傳輸是採用CYPRESS公司生產的SL811HST(USB-HOST)接口晶片,SL811HST是SL811的主控制晶片,它的主要工作就是支持SL811的USB HOST協議,這個晶片實現了等時傳輸、塊傳輸和中斷傳輸等方式,在SL811HST晶片中有一個USB傳輸的緩衝區隊列和掃描執行隊列,驅動程序只需要把數據掛在緩衝區的隊列上,並且設定具體的傳輸方式,就可以執行主機和USB設備之間的數據交互。
SL811HST晶片的D
是數據總線,這些數據總線直接連接到ARM 7312嵌入式處理器的第0-7位;A0為數據/控制器總線,直接連接到ARM 7312的A0地址線上;nCS3、nMWE和nMOE分別連接到ARM 7312的片選3、讀和寫信號線上;在nCS3上要加一個15K的上拉電阻R21,由於SL811和ARM 7312的口輸出/輸入能力不能匹配,所以需要使用一個上拉,這樣就不會出現半高電平的可能性;EINT1是SL811HST晶片的中斷信號線,這裡由於是低中斷有效,所以要通過一個74HC04反向門把信號電平反向;nRST是SL811HST晶片的復位信號線,由於在規格書中規定該信號線需要接到一個GPIO口上,但是事實上GPIO口不能穩定實現一個延遲200ms的脈衝,所以和ARM 7312使用同一個復位腳比較好,可以正確讓它復位;SL811HST晶片的D-埠和D+埠分別與一濾波電路連接,與D-埠連接的濾波電路由電感L10和電阻R23串聯而成,電感L10的一端與SL811HST晶片的D-埠連接,另一端與從設備USB-A的D-埠連接,與D+埠連接的濾波電路由電感L11和電阻R22串聯而成,電感L11的一端與SL811HST晶片的D+埠連接,另一端與從設備USB-A的D+埠連接,L11和L10兩個電感(取值在10-100uH以內)和R22和R23兩個電阻(取值在15K-18K以內)必須要加上,如果沒有,則在USB等時傳輸時會造成大量的錯誤,而且整個USB系統的EMC能力也會降低;SL811HST晶片的X1和X2埠均與晶振電路連接,該晶振電路中的晶振Y1沒有選用規格書中的48MHz,而選用了12MHz,原因是如果使用48MHz三次和四次的雜波非常高,造成在USB等時傳輸的時候出現嚴重的誤碼,該晶振電路中的電容C22和C23必須在15-50pF之間,同樣也是因為等時傳輸的原因,如果不在該範圍內等時傳輸出錯率在10倍以上;RYC8220-2M晶片是一個USB的電源晶片,負責給USB的從設備,例如USB-A,提供電源。
Cypress公司的SL811HST晶片在Linux內核的源碼目錄中提供了一個最基礎的USB驅動程序,即USB驅動骨架程序(usb-skeleton),通過該USB驅動骨架程序我們僅需要修改極少的部分,就可以完成一個USB設備的驅動。該USB驅動骨架程序是以PCI(Peripheral Component Interconnection,周邊元件擴展接口)骨架為模板的。
Linux USB驅動程序需要做的第一件事情就是在Linux USB子系統裡註冊,並提供一些相關信息,例如這個驅動程序支持哪種設備,當被支持的設備從系統插入或拔出時,會有哪些動作,所有這些信息都傳送到USB子系統中。
USB驅動骨架程序的關鍵幾點如下1.USB驅動的註冊和註銷USB驅動程序在註冊時會做usb_register的函數處理;當要從系統卸載驅動程序時,需要註銷USB子系統,即需要usb_unregister函數處理;當USB設備插入時,為了使Linux的熱插拔(Linux中PCI、USB等設備熱插拔支持)系統自動裝載驅動程序,則需要創建一個MODULE_DEVICE_TABLE(模塊設備表)。
USB_DEVICE宏(USB設備宏)利用廠商ID和產品ID為我們提供了一個設備的唯一標識,SL811HST採用了Cypress專有的ID號或者設備標識。當系統插入一個ID匹配的USB設備到USB總線時,驅動會在USB內核中註冊。驅動程序中probe(探針)函數也就會被調用。usb_device(USB設備)結構指針、接口號和接口ID都會被傳遞到函數中。
驅動程序需要確認插入的設備是否可以被接受,如果不接受,或者在初始化的過程中發生任何錯誤,probe函數返回一個NULL(空)值,否則返回一個含有設備驅動程序狀態的指針,通過這個指針,就可以訪問所有結構中的回調函數。
在骨架驅動程序裡,最後一點是要註冊devfs(設備文件系統)。我們創建一個緩衝用來保存那些被發送給USB設備的數據和那些從USB設備上接收的數據,同時USB urb(USB request blocks,USB請求塊)被初始化,並且我們在devfs子系統中註冊設備,允許devfs用戶訪問我們的設備。
如果devfs註冊函數失敗,devfs子系統會將此情況報告給用戶。
當然最後,如果設備從usb總線拔掉,設備指針會調用disconnect(斷開)函數。驅動程序就需要清除那些被分配了的所有私有數據、關閉urbs,並且從devfs上註銷自己。
此時,USB驅動骨架程序就已經和USB設備綁定上了,任何用戶態程序要操作此設備都可以通過file_operations(文件操作)結構所定義的函數進行了。
首先,我們要打開此USB設備。當USB設備打開後,讀、寫函數就可以收、發數據了。
2.USB驅動骨架程序的讀、寫函數該讀、寫函數是完成驅動對讀寫等操作的響應。
3.skel_disconnect(USB驅動骨架程序的斷開)函數當我們釋放設備文件句柄時,這個函數會被調用。首先確認當前是否有其它的程序正在訪問這個設備,如果是最後一個用戶在使用,我們可以關閉任何正在發生的寫。
如果程序有一個打開的設備句柄,在當前結構裡,我們只要把它賦值為空,就像它已經消失了。對於每一次設備讀寫等其它函數操作,我們都要檢查usb_device結構是否存在。如果不存在,就表明設備已經消失,並返回一個錯誤給用戶程序。當最終我們調用release(釋放)函數時,在沒有文件打開這個設備時,無論usb_device結構是否存在、它都會清空skel_disconnect函數所作工作。
請參閱圖2,上述基於ARM 7312處理器的USB接口的驅動方法包括以下步驟初始化USB總線,包括初始化根集線器,初始化根集線器包括配置根集線器、提交URB到中斷服務子程序隊列當中以及創建khubd守護進程(USB接入設備內核守護進程),創建khubd守護進程的目的在於周期性掃描整個USB埠,在這裡調用了USB驅動的註冊和註銷;每個UHCI(Universal Host Controller Interface,通用主控制器接口)的時間片結束會產生中斷信號,每次產生中斷會掃描掛在驅動骨架程序上的每個裝有數據的傳送盒,輪流執行中斷服務子程序隊列中的應用程式(包括控制請求提交、中斷請求提交、或者是塊傳輸請求提交的程序),並且通知USB總線上連接的設備,也即調用USB驅動骨架程序的讀、寫函數;執行根集線器中斷,周期性喚醒khubd守護進程,並掃描根集線器的各個埠;周期性檢查根集線器的埠是否有設備接入;若有USB設備接入,則對USB設備的配置或者設備的描述進行讀取;為新加入的USB設備綁定驅動程序,並且開始初始化USB設備。
請參閱圖3,其中初始化USB設備包括以下步驟201.分配I/O空間和UCHI可以訪問的I/O地址;
202.設定各個傳輸隊列;203.創建USB總線;204.創建USB根集線器;205.啟動根集線器;206.周期性執行根集線器中斷服務子程序。
請參閱圖4,本發明基於ARM 7312處理器的USB接口的驅動方法還包括USB傳輸的中斷處理步驟,其包括301.喚醒根集線器的控制器;302.刪除等待隊列中沒有提交的請求;303.對等待隊列中的請求重新排隊;304.檢驗等時,成塊,中斷三個隊列中的請求結構;305.掃描整個請求器的隊列是否正確;306.判斷整個請求器內的請求是否在處理,若是,則直接執行步驟310,若不是,則執行步驟307;307.檢查每一個UHCI的傳輸單元是否找到有空閒的單元;308.判斷本階段是否為收到短的信息包,若是,則執行步驟309,若不是,則執行步驟310;309.重新通過發送控制消息,並且摘除原先的請求隊列;310.判斷本階段是否為請求處理中,若是,則同時執行313,若不是,則執行311;311.把完成的URB從相關的隊列中摘除;312.把完成的URB加入完成隊列中;
313.掃描當前的完成列表,檢查當中完成傳輸的URB;314.喚醒當前進程,準備讀取數據或者返回的狀態;315.調用DMA(Direct Memory Access,直接存儲器存取)同步,讓設備緩衝區和內存緩衝區數據相一致。
權利要求
1.一種USB接口的驅動方法,其特徵在於包括以下步驟初始化USB總線,包括初始化根集線器,其中初始化根集線器包括配置根集線器、提交USB請求塊到中斷服務子程序隊列當中以及創建USB接入設備內核守護進程;每個通用主控制器接口的時間片結束會產生中斷信號,每次產生中斷會掃描掛在驅動骨架程序上的每個裝有數據的傳送盒,輪流執行中斷服務子程序隊列中的應用程式,並且通知USB總線上連接的設備;執行根集線器中斷,周期性喚醒USB接入設備內核守護進程,並掃描根集線器的各個埠;周期性檢查根集線器的埠是否有設備接入;若有USB設備接入,則對USB設備的配置或者設備的描述進行讀取;為新加入的USB設備綁定驅動程序,並且開始初始化USB設備。
2.根據權利要求1所述的USB接口的驅動方法,其特徵在於該USB接入設備內核守護進程調用了USB驅動的註冊和註銷。
4.根據權利要求1所述的USB接口的驅動方法,其特徵在於該中斷服務子程序隊列中的應用程式包括控制請求提交、中斷請求提交、或者是塊傳輸請求提交的程序。
5.根據權利要求1所述的USB接口的驅動方法,其特徵在於該初始化USB設備包括以下步驟分配I/O空間和通用主控制器接口可以訪問的I/O地址;設定各個傳輸隊列;創建USB總線;創建USB根集線器;啟動根集線器;周期性執行根集線器中斷服務子程序。
6.根據權利要求1所述的USB接口的驅動方法,其特徵在於該USB接口的驅動方法還包括USB傳輸的中斷處理步驟,其包括(301).喚醒根集線器的控制器;(302).刪除等待隊列中沒有提交的請求;(303).對等待隊列中的請求重新排隊;(304).檢驗等時,成塊,中斷三個隊列中的請求結構;(305).掃描整個請求器的隊列是否正確;(306).判斷整個請求器內的請求是否在處理,若是,則直接執行步驟(310),若不是,則執行步驟(307);(307).檢查每一個通用主控制器接口的傳輸單元是否找到有空閒的單元;(308).判斷本階段是否為收到短的信息包,若是,則執行步驟(309),若不是,則執行步驟(310);(309).重新通過發送控制消息,並且摘除原先的請求隊列;(310).判斷本階段是否為請求處理中,若是,則同時執行(313),若不是,則執行(311);(311).把完成的USB請求塊從相關的隊列中摘除;(312).把完成的USB請求塊加入完成隊列中;(313).掃描當前的完成列表,檢查當中完成傳輸的USB請求塊;(314).喚醒當前進程,準備讀取數據或者返回的狀態;(315).調用直接存儲器存取同步,讓設備緩衝區和內存緩衝區數據相一致。
7.根據權利要求1至6中任一項所述的USB接口的驅動方法,其特徵在於該USB接口採用SL811HST作為接口主控晶片,該SL811HST晶片與ARM7312嵌入式處理器連接。
全文摘要
本發明公開了一種USB接口的驅動方法,其包括以下步驟初始化USB總線,包括初始化根集線器,其中初始化根集線器包括配置根集線器、提交USB請求塊到中斷服務子程序隊列當中以及創建USB接入設備內核守護進程;每個通用主控制器接口的時間片結束會產生中斷信號,每次產生中斷會掃描掛在驅動骨架程序上的每個裝有數據的傳送盒,輪流執行中斷服務子程序隊列中的應用程式,並且通知USB總線上連接的設備;執行根集線器中斷,周期性喚醒USB接入設備內核守護進程,並掃描根集線器的各個埠;周期性檢查根集線器的埠是否有設備接入;若有USB設備接入,則對USB設備的配置或者設備的描述進行讀取;為新加入的USB設備綁定驅動程序,並且開始初始化USB設備。
文檔編號G06F13/10GK1560748SQ20041001540
公開日2005年1月5日 申請日期2004年2月17日 優先權日2004年2月17日
發明者吳太和 申請人:威艾德通訊技術(深圳)有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀