專利名稱:通用串口總線主機(jī)控制器驅(qū)動(dòng)通用適配層實(shí)現(xiàn)方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其指一種USB(Universal Serial Bus,通用串口總線)HCD(Host Controller Driver,主機(jī)控制器驅(qū)動(dòng))的通用適配層實(shí)現(xiàn)方法及裝置。
背景技術(shù):
USB作為一種計(jì)算機(jī)外圍串行通訊接口標(biāo)準(zhǔn),具有即插即用、數(shù)據(jù)傳輸可靠、擴(kuò)展方便、低成本等優(yōu)點(diǎn),目前已成為計(jì)算機(jī)的必備接口之一。近年,隨著USB技術(shù)也逐漸應(yīng)用到嵌入式領(lǐng)域,諸如路由器、交換機(jī)等數(shù)通設(shè)備也開始通過(guò)USB接口實(shí)現(xiàn)外接USB設(shè)備的應(yīng)用。
圖1為現(xiàn)有技術(shù)中的USB通信模型層次結(jié)構(gòu)圖,如圖所示系統(tǒng)之間的通信由USB驅(qū)動(dòng)軟件維持,包括USB主機(jī)端驅(qū)動(dòng)軟件及USB設(shè)備驅(qū)動(dòng)軟件。從軟件的功能角度,USB系統(tǒng)屬于一種主從結(jié)構(gòu),由USB主機(jī)策動(dòng)系統(tǒng)的所有動(dòng)作,并協(xié)調(diào)不同設(shè)備的工作,而USB設(shè)備驅(qū)動(dòng)軟件在系統(tǒng)中只需對(duì)主機(jī)發(fā)出的命令做出解釋及響應(yīng),因此USB主機(jī)端驅(qū)動(dòng)軟件的功能尤為重要,其實(shí)現(xiàn)也比設(shè)備驅(qū)動(dòng)更加復(fù)雜。參照?qǐng)D1所示,USB主機(jī)端驅(qū)動(dòng)軟件由HCD、USBD(USB driver,USB主機(jī)驅(qū)動(dòng)程序)及客戶端驅(qū)動(dòng)程序組成,其中HCD主要完成對(duì)USB主機(jī)控制器硬件的驅(qū)動(dòng),直接面向硬件層并與上層軟件結(jié)合實(shí)現(xiàn)數(shù)據(jù)及命令的傳輸。目前在通用USB1.1主機(jī)控制器規(guī)范中,微軟提出的OHCI(Open Host Controller Interface Specification,微軟開放USB1.1主機(jī)控制器接口規(guī)范)從寄存器級(jí)對(duì)USB主機(jī)控制器進(jìn)行詳細(xì)描述,為主機(jī)控制器的軟件和硬件提供了統(tǒng)一的開放式接口標(biāo)準(zhǔn),且軟件驅(qū)動(dòng)較為簡(jiǎn)單,從而在嵌入式領(lǐng)域得到廣泛的應(yīng)用。除OHCI及Intel(英特爾)公司提出的UHCI(Universal Host Controller Interface Specification,Intel通用USB1.1主機(jī)控制器接口規(guī)范)之外,嵌入式領(lǐng)域也存在大量非標(biāo)準(zhǔn)的USB主機(jī)控制器,由于不同廠家開發(fā)的USB主機(jī)控制器硬件完成的功能不盡相同,因而HCD的實(shí)現(xiàn)也需要對(duì)應(yīng)進(jìn)行調(diào)整。
現(xiàn)有技術(shù)中對(duì)于采用非標(biāo)準(zhǔn)USB主機(jī)控制器的嵌入式USB應(yīng)用,通常是基于對(duì)應(yīng)USB協(xié)議棧的預(yù)留接口及具體非標(biāo)準(zhǔn)USB主機(jī)控制器的功能進(jìn)行完整HCD的單獨(dú)開發(fā),其存在設(shè)計(jì)復(fù)雜、開發(fā)工作量大及可重用性差等缺陷;或者是基于對(duì)應(yīng)USB協(xié)議棧的標(biāo)準(zhǔn)HCD,如OHCD(Open Host ControllerDriver,開放主機(jī)控制器驅(qū)動(dòng))或UHCD(Universal Host Controller Driver,通用主機(jī)控制器驅(qū)動(dòng)),進(jìn)行軟件適配層的開發(fā),從而在該適配層下僅實(shí)現(xiàn)對(duì)非標(biāo)準(zhǔn)USB主機(jī)控制器的基本控制操作,至于與USB規(guī)范相關(guān)的實(shí)現(xiàn)及與USB協(xié)議棧的接口則由對(duì)應(yīng)的標(biāo)準(zhǔn)HCD完成,其與前述方案相比可簡(jiǎn)化設(shè)計(jì)、降低工作量,但開發(fā)的軟件適配層不能實(shí)現(xiàn)在不同類型的非標(biāo)準(zhǔn)USB主機(jī)控制器中的通用,存在耦合性強(qiáng)及重用性差的缺陷。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種USB HCD通用適配層實(shí)現(xiàn)方法及裝置,以解決現(xiàn)有技術(shù)中非標(biāo)準(zhǔn)USB主機(jī)控制器的驅(qū)動(dòng)設(shè)計(jì)及開發(fā)困難或重用性差的缺陷。
為達(dá)到上述目的,本發(fā)明提出一種USB主機(jī)裝置,包括標(biāo)準(zhǔn)HCD單元、簡(jiǎn)化HCD單元及HC單元,還包括通用適配層單元,所述簡(jiǎn)化HCD單元,為所述HC單元提供驅(qū)動(dòng);所述通用適配層單元,與所述標(biāo)準(zhǔn)HCD單元連接,并為所述簡(jiǎn)化HCD單元提供虛擬標(biāo)準(zhǔn)接口以實(shí)現(xiàn)所述HC單元與所述標(biāo)準(zhǔn)HCD單元的交互。
所述通用適配層單元進(jìn)一步包括虛擬硬件寄存器、虛擬寄存器訪問(wèn)接口、數(shù)據(jù)結(jié)構(gòu)訪問(wèn)接口及虛擬中斷子單元,所述虛擬硬件寄存器,與所述簡(jiǎn)化HCD單元連接并根據(jù)所述標(biāo)準(zhǔn)HCD單元對(duì)標(biāo)準(zhǔn)定義的硬件寄存器進(jìn)行模擬;所述虛擬寄存器訪問(wèn)接口,與所述虛擬硬件寄存器連接并為所述簡(jiǎn)化HCD單元提供對(duì)所述虛擬硬件寄存器進(jìn)行讀寫的訪問(wèn)接口;所述數(shù)據(jù)結(jié)構(gòu)訪問(wèn)接口,用于實(shí)現(xiàn)所述簡(jiǎn)化HCD單元根據(jù)所述標(biāo)準(zhǔn)HCD單元對(duì)標(biāo)準(zhǔn)定義的數(shù)據(jù)結(jié)構(gòu)進(jìn)行訪問(wèn);所述虛擬中斷子單元,與所述標(biāo)準(zhǔn)HCD單元連接,用于根據(jù)所述標(biāo)準(zhǔn)HCD單元對(duì)標(biāo)準(zhǔn)定義的硬件中斷進(jìn)行模擬。
所述通用適配層單元還包括虛擬根集線器接口,根據(jù)所述標(biāo)準(zhǔn)HCD單元對(duì)標(biāo)準(zhǔn)定義的根集線器進(jìn)行模擬,并由所述簡(jiǎn)化HCD單元根據(jù)所述HC單元的根集線器功能進(jìn)行選擇調(diào)用。
所述通用適配層單元還包括傳輸通知接口,與所述簡(jiǎn)化HCD單元連接,用于向所述簡(jiǎn)化HCD單元通知數(shù)據(jù)傳輸?shù)膯?dòng)或停止。
所述通用適配層單元還包括初始化接口,與所述簡(jiǎn)化HCD單元連接,用于對(duì)所述虛擬硬件寄存器、簡(jiǎn)化HCD單元及HC單元進(jìn)行初始化。
本發(fā)明還提出一種USB HCD通用適配層實(shí)現(xiàn)方法,包括根據(jù)標(biāo)準(zhǔn)HCD設(shè)置通用適配層,為簡(jiǎn)化HCD提供虛擬的標(biāo)準(zhǔn)接口;HC利用所述簡(jiǎn)化HCD的驅(qū)動(dòng),通過(guò)所述通用適配層與所述標(biāo)準(zhǔn)HCD進(jìn)行交互。
所述根據(jù)標(biāo)準(zhǔn)HCD設(shè)置通用適配層進(jìn)一步包括根據(jù)所述標(biāo)準(zhǔn)HCD對(duì)標(biāo)準(zhǔn)定義的硬件寄存器進(jìn)行模擬,設(shè)置虛擬硬件寄存器;為所述簡(jiǎn)化HCD設(shè)置對(duì)所述虛擬硬件寄存器進(jìn)行讀寫的虛擬寄存器訪問(wèn)接口;設(shè)置數(shù)據(jù)結(jié)構(gòu)訪問(wèn)接口以實(shí)現(xiàn)所述簡(jiǎn)化HCD根據(jù)所述標(biāo)準(zhǔn)HCD對(duì)標(biāo)準(zhǔn)定義的數(shù)據(jù)結(jié)構(gòu)進(jìn)行訪問(wèn);根據(jù)所述標(biāo)準(zhǔn)HCD對(duì)標(biāo)準(zhǔn)定義的硬件中斷進(jìn)行模擬,設(shè)置虛擬中斷。
所述根據(jù)標(biāo)準(zhǔn)HCD設(shè)置通用適配層還包括設(shè)置虛擬根集線器接口,根據(jù)所述標(biāo)準(zhǔn)HCD對(duì)標(biāo)準(zhǔn)定義的根集線器進(jìn)行模擬,并由所述簡(jiǎn)化HCD根據(jù)所述HC的根集線器功能進(jìn)行選擇調(diào)用。
所述根據(jù)標(biāo)準(zhǔn)HCD設(shè)置通用適配層還包括設(shè)置數(shù)據(jù)傳輸通知接口,用于所述標(biāo)準(zhǔn)HCD向所述簡(jiǎn)化HCD通知數(shù)據(jù)傳輸?shù)膯?dòng)或停止。
所述根據(jù)標(biāo)準(zhǔn)HCD設(shè)置通用適配層還包括設(shè)置初始化接口,用于在所述標(biāo)準(zhǔn)HCD進(jìn)行初始化前對(duì)所述虛擬硬件寄存器、簡(jiǎn)化HCD及HC進(jìn)行初始化。
所述標(biāo)準(zhǔn)HCD為OHCD或UHCD。
與現(xiàn)有技術(shù)相比,本發(fā)明的裝置及方法實(shí)施例,通過(guò)對(duì)標(biāo)準(zhǔn)HCD定義的寄存器、接口及中斷等進(jìn)行模擬實(shí)現(xiàn)通用適配層,結(jié)合簡(jiǎn)化HCD可實(shí)現(xiàn)非標(biāo)準(zhǔn)HC的完整驅(qū)動(dòng),簡(jiǎn)化了非標(biāo)準(zhǔn)HC的驅(qū)動(dòng)設(shè)計(jì)及開發(fā)的工作量,并具有可重用性好的特點(diǎn),適合于同時(shí)支持多種非標(biāo)準(zhǔn)HC的驅(qū)動(dòng),從而有效節(jié)省開發(fā)及維護(hù)成本。
圖1為現(xiàn)有技術(shù)中的USB通信模型層次結(jié)構(gòu)圖;圖2為本發(fā)明USB主機(jī)裝置的實(shí)施例一示意圖;圖3為本發(fā)明USB主機(jī)裝置的實(shí)施例二示意圖;圖4為本發(fā)明USB HCD通用適配層實(shí)現(xiàn)方法的實(shí)施例流程圖。
具體實(shí)施例方式
下面以具體實(shí)施例結(jié)合附圖對(duì)本發(fā)明進(jìn)一步加以闡述。
本發(fā)明公開一種可實(shí)現(xiàn)USB HCD通用適配層的USB主機(jī)裝置,其實(shí)施例一如圖2所示,包括標(biāo)準(zhǔn)HCD單元210、簡(jiǎn)化HCD單元220及HC單元230,還包括通用適配層單元240。其中,簡(jiǎn)化HCD單元220用于根據(jù)非標(biāo)準(zhǔn)HC單元230的具體功能為其提供簡(jiǎn)易驅(qū)動(dòng);而通用適配層單元240,則設(shè)于標(biāo)準(zhǔn)HCD單元210與簡(jiǎn)化HCD單元220之間,并為簡(jiǎn)化HCD單元220提供虛擬標(biāo)準(zhǔn)接口以實(shí)現(xiàn)HC單元230與標(biāo)準(zhǔn)HCD單元210的交互。
上述實(shí)施例中,通用適配層單元240進(jìn)一步包括虛擬硬件寄存器241、虛擬寄存器訪問(wèn)接口242、數(shù)據(jù)結(jié)構(gòu)訪問(wèn)接口243及虛擬中斷子單元244。其中,虛擬硬件寄存器241,根據(jù)標(biāo)準(zhǔn)HCD單元210對(duì)標(biāo)準(zhǔn)定義的硬件寄存器進(jìn)行軟件模擬;虛擬寄存器訪問(wèn)接口242,與虛擬硬件寄存器241連接,并為簡(jiǎn)化HCD單元220提供對(duì)虛擬硬件寄存器241進(jìn)行讀寫的訪問(wèn)接口;數(shù)據(jù)結(jié)構(gòu)訪問(wèn)接口243則提供給簡(jiǎn)化HCD單元220以實(shí)現(xiàn)其對(duì)標(biāo)準(zhǔn)HCD單元210所維護(hù)的標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)進(jìn)行訪問(wèn);虛擬中斷子單元244,與標(biāo)準(zhǔn)HCD單元210連接,并用于根據(jù)標(biāo)準(zhǔn)HCD單元210對(duì)標(biāo)準(zhǔn)定義的硬件中斷進(jìn)行模擬。
上述本發(fā)明USB主機(jī)裝置的實(shí)施例,通過(guò)在標(biāo)準(zhǔn)HCD與為非標(biāo)準(zhǔn)HC提供簡(jiǎn)易驅(qū)動(dòng)的簡(jiǎn)化HCD之間設(shè)置軟件通用適配層,對(duì)標(biāo)準(zhǔn)定義的硬件寄存器、數(shù)據(jù)結(jié)構(gòu)及訪問(wèn)接口、硬件中斷進(jìn)行模擬實(shí)現(xiàn),可結(jié)合簡(jiǎn)化HCD實(shí)現(xiàn)HC與標(biāo)準(zhǔn)HCD之間的交互,從而實(shí)現(xiàn)非標(biāo)準(zhǔn)HC的完整驅(qū)動(dòng),可簡(jiǎn)化非標(biāo)準(zhǔn)HC驅(qū)動(dòng)設(shè)計(jì)與開發(fā)的工作量。
圖3為本發(fā)明USB主機(jī)裝置的實(shí)施例二示意圖,其在實(shí)施例一的基礎(chǔ)上增加了對(duì)根集線器功能及初始化等接口的支持,如圖所示,本實(shí)施例中USB主機(jī)裝置仍包括標(biāo)準(zhǔn)HCD單元210、簡(jiǎn)化HCD單元220及HC單元230,還包括通用適配層單元240。通用適配層單元240則進(jìn)一步包括虛擬硬件寄存器241、虛擬寄存器訪問(wèn)接口242、數(shù)據(jù)結(jié)構(gòu)訪問(wèn)接口243及虛擬中斷子單元244。上述單元及下屬子單元的功能及連接與實(shí)施例一所述相同,此處不加以贅述。
本實(shí)施例中,通用適配層單元240還包括虛擬根集線器接口245、傳輸通知接口246及初始化接口247。其中,虛擬根集線器接口245,根據(jù)標(biāo)準(zhǔn)HCD單元210對(duì)標(biāo)準(zhǔn)定義的根集線器進(jìn)行模擬,并由簡(jiǎn)化HCD單元220根據(jù)HC單元230具體的根集線器功能進(jìn)行選擇調(diào)用;傳輸通知接口246則與簡(jiǎn)化HCD單元220連接,用于向其通知數(shù)據(jù)傳輸?shù)膯?dòng)或停止;初始化接口247與簡(jiǎn)化HCD單元220連接,用于對(duì)虛擬硬件寄存器241、簡(jiǎn)化HCD單元220及HC單元230進(jìn)行初始化。
上述實(shí)施例中,在標(biāo)準(zhǔn)HCD及非標(biāo)準(zhǔn)HCD之間設(shè)置的通用適配層模擬實(shí)現(xiàn)了標(biāo)準(zhǔn)定義的硬件寄存器、數(shù)據(jù)結(jié)構(gòu)及訪問(wèn)接口、硬件中斷、根集線器功能、初始化接口及數(shù)據(jù)傳輸通知接口,從而完善了標(biāo)準(zhǔn)HCD通過(guò)適配層及非標(biāo)準(zhǔn)HCD與非標(biāo)準(zhǔn)HC之間的交互,實(shí)現(xiàn)了非標(biāo)準(zhǔn)HC的完整驅(qū)動(dòng)。上述通用適配層在USB主機(jī)裝置中的實(shí)現(xiàn)可簡(jiǎn)化非標(biāo)準(zhǔn)HC驅(qū)動(dòng)設(shè)計(jì)與開發(fā)的工作量,與USB協(xié)議棧的配合由標(biāo)準(zhǔn)HCD完成,與標(biāo)準(zhǔn)HCD間交互的實(shí)現(xiàn)則由通用適配層完成,從而針對(duì)不同HC提供的簡(jiǎn)化HCD的設(shè)計(jì)與開發(fā)則僅需考慮非標(biāo)準(zhǔn)HC具體的功能實(shí)現(xiàn);同時(shí)本發(fā)明實(shí)施例提供的通用適配層其可重用性好,適合于同時(shí)支持多中非標(biāo)準(zhǔn)HC的實(shí)現(xiàn),從而有效節(jié)省開發(fā)及維護(hù)成本。
本發(fā)明還公開一種USB HCD通用適配層實(shí)現(xiàn)方法,其一實(shí)施例如圖4所示,包括以下步驟S401、根據(jù)標(biāo)準(zhǔn)HCD對(duì)標(biāo)準(zhǔn)定義的硬件寄存器進(jìn)行模擬,設(shè)置虛擬硬件寄存器。
由于非標(biāo)準(zhǔn)HC定義的硬件寄存器可能與標(biāo)準(zhǔn)HCD定義的硬件寄存器全部或有部分不同,因此作為通用適配層必須實(shí)現(xiàn)全部標(biāo)準(zhǔn)HCD定義硬件寄存器的軟件模擬。通用適配層結(jié)合其下層的簡(jiǎn)化HCD,通過(guò)設(shè)置的虛擬硬件寄存器,可按照現(xiàn)有規(guī)范與標(biāo)準(zhǔn)HCD進(jìn)行交互。利用通用適配層結(jié)合簡(jiǎn)化HCD的驅(qū)動(dòng),標(biāo)準(zhǔn)HCD則按照標(biāo)準(zhǔn)USB HC對(duì)非標(biāo)準(zhǔn)HC進(jìn)行處理,從而不需要做任何修改。
另外,需要說(shuō)明的是,目前市面上通用的標(biāo)準(zhǔn)HCD包括OHCD及UHCD,針對(duì)嵌入式USB應(yīng)用的特點(diǎn),本發(fā)明方法實(shí)施例的后續(xù)描述中,采用OHCD對(duì)通用適配層的實(shí)現(xiàn)進(jìn)行描述,至于基于UHCD的通用適配層的設(shè)計(jì)也可根據(jù)本實(shí)施例提供的步驟進(jìn)行,但實(shí)現(xiàn)細(xì)節(jié)較OHCD通用適配層較為復(fù)雜,其應(yīng)涵蓋與本發(fā)明的保護(hù)范圍內(nèi),此處不加以贅述。
S402、為簡(jiǎn)化HCD設(shè)置對(duì)虛擬硬件寄存器進(jìn)行讀寫的虛擬寄存器訪問(wèn)接口。
OHCI規(guī)范按照小端模式定義OHCI硬件寄存器的bit位,而非標(biāo)準(zhǔn)HC的硬件寄存器則可能是按照大端或小端模式進(jìn)行讀寫,因此通用適配層需要封裝一套虛擬OHCI硬件寄存器的讀寫接口,并提供給非標(biāo)準(zhǔn)HC的簡(jiǎn)化HCD,以屏蔽大端模式和小端模式的區(qū)別,從而保證簡(jiǎn)化HCD可以對(duì)步驟S401所設(shè)置的虛擬硬件寄存器進(jìn)行正確訪問(wèn),同時(shí)實(shí)現(xiàn)通用適配層針對(duì)不同非標(biāo)準(zhǔn)HC的可重用性。
S403、設(shè)置數(shù)據(jù)結(jié)構(gòu)訪問(wèn)接口以實(shí)現(xiàn)簡(jiǎn)化HCD對(duì)標(biāo)準(zhǔn)HCD所維護(hù)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行訪問(wèn)。
OHCI規(guī)范按照小端模式定義標(biāo)準(zhǔn)的ED(Endpoint Descriptor,端點(diǎn)描述字)+TD(Transfer Descriptor,傳輸描述字)數(shù)據(jù)結(jié)構(gòu)中的bit位,為實(shí)現(xiàn)OHCD對(duì)標(biāo)準(zhǔn)ED+TD的正常訪問(wèn),通用適配層需要封裝一套ED+TD數(shù)據(jù)結(jié)構(gòu)的讀寫接口,并屏蔽大端模式和小端模式的區(qū)別,保證通用適配層的可重用性。為非標(biāo)準(zhǔn)HC提供簡(jiǎn)易驅(qū)動(dòng)的簡(jiǎn)化HCD,結(jié)合其上提供標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)訪問(wèn)接口的通用適配層,可進(jìn)一步通過(guò)虛擬硬件寄存器及標(biāo)準(zhǔn)的ED+TD數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)非標(biāo)準(zhǔn)HC按照OHCI規(guī)范的規(guī)定與OHCD進(jìn)行交互。
S404、設(shè)置數(shù)據(jù)傳輸通知接口,由標(biāo)準(zhǔn)HCD在啟動(dòng)或停止數(shù)據(jù)傳輸時(shí)通過(guò)該數(shù)據(jù)傳輸通知接口向簡(jiǎn)化HCD通知。
OHCI規(guī)范定義的USB數(shù)據(jù)傳輸實(shí)現(xiàn),是通過(guò)OHCD和OHCI HC配合完成,OHCD通過(guò)設(shè)置相應(yīng)寄存器和ED+TD結(jié)構(gòu)將數(shù)據(jù)的傳輸向OHCI HC通知,OHCI HC通過(guò)輪詢檢測(cè)到有數(shù)據(jù)要傳輸,則搜索ED+TD數(shù)據(jù)結(jié)構(gòu),獲知需要傳輸?shù)腡D,進(jìn)一步組成USB數(shù)據(jù)包進(jìn)行傳輸。
至于非標(biāo)準(zhǔn)HC數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn),一部分類似于OHCI HC通過(guò)輪詢方式獲知數(shù)據(jù)的傳輸,從而可以通過(guò)簡(jiǎn)化HCD輪詢?cè)L問(wèn)虛擬硬件寄存器和OHCD數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)。但另外一部分則無(wú)法實(shí)現(xiàn)輪詢,需要簡(jiǎn)化HCD直接設(shè)置特定寄存器來(lái)啟動(dòng)傳輸。因此,通用適配層需要提供數(shù)據(jù)傳輸啟動(dòng)/停止通知接口,并由簡(jiǎn)化HCD根據(jù)非標(biāo)準(zhǔn)HC的具體功能來(lái)選擇是否使用該接口。
S405、設(shè)置初始化接口,用于在標(biāo)準(zhǔn)HCD進(jìn)行初始化前對(duì)虛擬硬件寄存器、簡(jiǎn)化HCD及HC進(jìn)行初始化。
OHCD通用適配層需要在OHCD初始化部分中,添加三個(gè)給簡(jiǎn)化HCD的初始化接口。分別用于在OHCD初始化前,初始化步驟S401中設(shè)置的虛擬硬件寄存器,通用適配層下簡(jiǎn)化HCD的初始化,以及非標(biāo)準(zhǔn)HC硬件的初始化。
S406、根據(jù)標(biāo)準(zhǔn)HCD對(duì)標(biāo)準(zhǔn)定義的硬件中斷進(jìn)行模擬,設(shè)置虛擬中斷。
OHCI定義了完整的硬件中斷,OHCI HC通過(guò)該些硬件中斷通知OHCDUSB設(shè)備的插拔及USB數(shù)據(jù)傳輸完成等事件。非標(biāo)準(zhǔn)HC各自定義的硬件中斷,可能與OHCI定義的硬件中斷部分或全部不同,因此OHCD通用軟件適配層需要對(duì)標(biāo)準(zhǔn)定義的硬件中斷觸發(fā)程序進(jìn)行模擬。由不同的非標(biāo)準(zhǔn)HC在處理各自硬件中斷時(shí),按照OHCI的規(guī)范選擇觸發(fā)相應(yīng)的OHCI軟件中斷。
S407、設(shè)置虛擬根集線器接口,根據(jù)標(biāo)準(zhǔn)HCD對(duì)標(biāo)準(zhǔn)定義的根集線器進(jìn)行模擬,并由簡(jiǎn)化HCD根據(jù)HC的根集線器功能進(jìn)行選擇調(diào)用。
OHCI規(guī)范規(guī)定HC集成部分根集線器功能,OHCD則定義了一系列根集線器相關(guān)寄存器,便于管理根集線器功能的管理。非標(biāo)準(zhǔn)HC集成的根集線器功能與OHCI規(guī)范規(guī)定的不盡相同,OHCD通用適配層需要提供完整的OHCI集成根集線器的模擬,由不同的簡(jiǎn)化HCD根據(jù)具體非標(biāo)準(zhǔn)HC集成的根集線器的功能選擇調(diào)用。另外需要說(shuō)明的是,一些非標(biāo)準(zhǔn)的USB控制器需要外接USB PHY(Physical Layer,物理層)芯片來(lái)實(shí)現(xiàn)根集線器的功能,而通用適配層則可以將此類非標(biāo)準(zhǔn)HC+USB PHY芯片的組合視為內(nèi)部集成的根集線器,從而按本步驟進(jìn)行處理。
S408、HC利用簡(jiǎn)化HCD的驅(qū)動(dòng),通過(guò)通用適配層與標(biāo)準(zhǔn)HCD進(jìn)行交互。
通過(guò)步驟S401~S407對(duì)標(biāo)準(zhǔn)HCD定義的硬件寄存器、接口及中斷等進(jìn)行虛擬設(shè)置后,即在標(biāo)準(zhǔn)HCD與簡(jiǎn)化HCD之間完成通用適配層的實(shí)現(xiàn),進(jìn)一步結(jié)合其下的簡(jiǎn)化HCD即可完成非標(biāo)準(zhǔn)HC按照現(xiàn)有規(guī)范與標(biāo)準(zhǔn)HCD之間的交互,標(biāo)準(zhǔn)HCD也可以將非標(biāo)準(zhǔn)HC視為標(biāo)準(zhǔn)OHCI USB HC對(duì)其進(jìn)行處理。
上述本發(fā)明USB HCD通用適配層實(shí)現(xiàn)方法的實(shí)施例,通過(guò)對(duì)標(biāo)準(zhǔn)定義的硬件寄存器、數(shù)據(jù)結(jié)構(gòu)及訪問(wèn)接口、硬件中斷及根集線器功能進(jìn)行模擬,在標(biāo)準(zhǔn)HCD及簡(jiǎn)化HCD之間實(shí)現(xiàn)通用適配層,可進(jìn)一步結(jié)合簡(jiǎn)化HCD實(shí)現(xiàn)HC與標(biāo)準(zhǔn)HCD之間的交互,從而實(shí)現(xiàn)非標(biāo)準(zhǔn)HC的完整驅(qū)動(dòng),而簡(jiǎn)化非標(biāo)準(zhǔn)HC的驅(qū)動(dòng)設(shè)計(jì)與開發(fā)的工作量;該通用適配層并具有可重用性好的優(yōu)點(diǎn),適合于同時(shí)支持多種非標(biāo)準(zhǔn)HC的實(shí)現(xiàn),從而有效節(jié)省開發(fā)及維護(hù)成本。
以上公開的僅為本發(fā)明的幾個(gè)具體實(shí)施例,但是,本發(fā)明并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種USB主機(jī)裝置,包括標(biāo)準(zhǔn)HCD單元、簡(jiǎn)化HCD單元及HC單元,其特征在于,還包括通用適配層單元,所述簡(jiǎn)化HCD單元,為所述HC單元提供驅(qū)動(dòng);所述通用適配層單元,與所述標(biāo)準(zhǔn)HCD單元連接,并為所述簡(jiǎn)化HCD單元提供虛擬標(biāo)準(zhǔn)接口以實(shí)現(xiàn)所述HC單元與所述標(biāo)準(zhǔn)HCD單元的交互。
2.如權(quán)利要求1所述USB主機(jī)裝置,其特征在于,所述通用適配層單元進(jìn)一步包括虛擬硬件寄存器、虛擬寄存器訪問(wèn)接口、數(shù)據(jù)結(jié)構(gòu)訪問(wèn)接口及虛擬中斷子單元,所述虛擬硬件寄存器,與所述簡(jiǎn)化HCD單元連接并根據(jù)所述標(biāo)準(zhǔn)HCD單元對(duì)標(biāo)準(zhǔn)定義的硬件寄存器進(jìn)行模擬;所述虛擬寄存器訪問(wèn)接口,與所述虛擬硬件寄存器連接并為所述簡(jiǎn)化HCD單元提供對(duì)所述虛擬硬件寄存器進(jìn)行讀寫的訪問(wèn)接口;所述數(shù)據(jù)結(jié)構(gòu)訪問(wèn)接口,用于實(shí)現(xiàn)所述簡(jiǎn)化HCD單元根據(jù)所述標(biāo)準(zhǔn)HCD單元對(duì)標(biāo)準(zhǔn)定義的數(shù)據(jù)結(jié)構(gòu)進(jìn)行訪問(wèn);所述虛擬中斷子單元,與所述標(biāo)準(zhǔn)HCD單元連接,用于根據(jù)所述標(biāo)準(zhǔn)HCD單元對(duì)標(biāo)準(zhǔn)定義的硬件中斷進(jìn)行模擬。
3.如權(quán)利要求2所述USB主機(jī)裝置,其特征在于,所述通用適配層單元還包括虛擬根集線器接口,根據(jù)所述標(biāo)準(zhǔn)HCD單元對(duì)標(biāo)準(zhǔn)定義的根集線器進(jìn)行模擬,并由所述簡(jiǎn)化HCD單元根據(jù)所述HC單元的根集線器功能進(jìn)行選擇調(diào)用。
4.如權(quán)利要求2所述USB主機(jī)裝置,其特征在于,所述通用適配層單元還包括傳輸通知接口,與所述簡(jiǎn)化HCD單元連接,用于向所述簡(jiǎn)化HCD單元通知數(shù)據(jù)傳輸?shù)膯?dòng)或停止。
5.如權(quán)利要求2所述USB主機(jī)裝置,其特征在于,所述通用適配層單元還包括初始化接口,與所述簡(jiǎn)化HCD單元連接,用于對(duì)所述虛擬硬件寄存器、簡(jiǎn)化HCD單元及HC單元進(jìn)行初始化。
6.一種USB HCD通用適配層實(shí)現(xiàn)方法,其特征在于,包括根據(jù)標(biāo)準(zhǔn)HCD設(shè)置通用適配層,為簡(jiǎn)化HCD提供虛擬的標(biāo)準(zhǔn)接口;HC利用所述簡(jiǎn)化HCD的驅(qū)動(dòng),通過(guò)所述通用適配層與所述標(biāo)準(zhǔn)HCD進(jìn)行交互。
7.如權(quán)利要求6所述USB HCD通用適配層實(shí)現(xiàn)方法,其特征在于,所述根據(jù)標(biāo)準(zhǔn)HCD設(shè)置通用適配層進(jìn)一步包括根據(jù)所述標(biāo)準(zhǔn)HCD對(duì)標(biāo)準(zhǔn)定義的硬件寄存器進(jìn)行模擬,設(shè)置虛擬硬件寄存器;為所述簡(jiǎn)化HCD設(shè)置對(duì)所述虛擬硬件寄存器進(jìn)行讀寫的虛擬寄存器訪問(wèn)接口;設(shè)置數(shù)據(jù)結(jié)構(gòu)訪問(wèn)接口以實(shí)現(xiàn)所述簡(jiǎn)化HCD根據(jù)所述標(biāo)準(zhǔn)HCD對(duì)標(biāo)準(zhǔn)定義的數(shù)據(jù)結(jié)構(gòu)進(jìn)行訪問(wèn);根據(jù)所述標(biāo)準(zhǔn)HCD對(duì)標(biāo)準(zhǔn)定義的硬件中斷進(jìn)行模擬,設(shè)置虛擬中斷。
8.如權(quán)利要求7所述USB HCD通用適配層實(shí)現(xiàn)方法,其特征在于,所述根據(jù)標(biāo)準(zhǔn)HCD設(shè)置通用適配層還包括設(shè)置虛擬根集線器接口,根據(jù)所述標(biāo)準(zhǔn)HCD對(duì)標(biāo)準(zhǔn)定義的根集線器進(jìn)行模擬,并由所述簡(jiǎn)化HCD根據(jù)所述HC的根集線器功能進(jìn)行選擇調(diào)用。
9.如權(quán)利要求7所述USB HCD通用適配層實(shí)現(xiàn)方法,其特征在于,所述根據(jù)標(biāo)準(zhǔn)HCD設(shè)置通用適配層還包括設(shè)置數(shù)據(jù)傳輸通知接口,用于所述標(biāo)準(zhǔn)HCD向所述簡(jiǎn)化HCD通知數(shù)據(jù)傳輸?shù)膯?dòng)或停止。
10.如權(quán)利要求7所述USB HCD通用適配層實(shí)現(xiàn)方法,其特征在于,所述根據(jù)標(biāo)準(zhǔn)HCD設(shè)置通用適配層還包括設(shè)置初始化接口,用于在所述標(biāo)準(zhǔn)HCD進(jìn)行初始化前對(duì)所述虛擬硬件寄存器、簡(jiǎn)化HCD及HC進(jìn)行初始化。
11.如權(quán)利要求6至10任一項(xiàng)所述USB HCD通用適配層實(shí)現(xiàn)方法,其特征在于,所述標(biāo)準(zhǔn)HCD為OHCD或UHCD。
全文摘要
本發(fā)明提出了一種通用串口總線USB主機(jī)裝置,包括標(biāo)準(zhǔn)USB主機(jī)控制器驅(qū)動(dòng)HCD單元、簡(jiǎn)化HCD單元及主機(jī)控制器HC單元,還包括通用適配層單元。其中簡(jiǎn)化HCD單元用于為HC單元提供簡(jiǎn)易驅(qū)動(dòng);而通用適配層單元?jiǎng)t為該簡(jiǎn)化HCD單元提供虛擬標(biāo)準(zhǔn)接口以實(shí)現(xiàn)HC單元與標(biāo)準(zhǔn)HCD單元的交互。本發(fā)明還提出一種USB HCD通用適配層實(shí)現(xiàn)方法。應(yīng)用本發(fā)明USBHCD通用適配層實(shí)現(xiàn)方法及裝置,可簡(jiǎn)化非標(biāo)準(zhǔn)HC的驅(qū)動(dòng)設(shè)計(jì)及開發(fā)的工作量,同時(shí)具有可重用性好的特點(diǎn),從而有效節(jié)省開發(fā)和維護(hù)成本。
文檔編號(hào)G06F13/42GK101038576SQ200710098009
公開日2007年9月19日 申請(qǐng)日期2007年4月24日 優(yōu)先權(quán)日2007年4月24日
發(fā)明者趙志宇 申請(qǐng)人:杭州華為三康技術(shù)有限公司