專利名稱:基于嵌入式系統(tǒng)的usb功能的實(shí)現(xiàn)方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到USB功能的實(shí)現(xiàn)方法,特別涉及到一種基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)方法及裝置。
背景技術(shù):
由于USB接口具有傳輸速率高、可進(jìn)行熱插拔、即插即用和標(biāo)準(zhǔn)統(tǒng)一等特點(diǎn),使得其在許多設(shè)備上得以廣泛應(yīng)用。目前,USB接口已經(jīng)開始應(yīng)用在嵌入式產(chǎn)品中,嵌入式產(chǎn)品可以通過USB接口完成多種不同類型的USB功能,如海量存儲(chǔ)、人機(jī)交互設(shè)備及串口設(shè)備等類型。采用一個(gè)USB接口來完成這些類型的功能,既可以減少設(shè)備的接口,也可以減少用戶使用設(shè)備的復(fù)雜性。而現(xiàn)有的嵌入式產(chǎn)品通常通過較為復(fù)雜的處理器來實(shí)現(xiàn)USB接口功能,不便于后續(xù)USB功能的擴(kuò)展,并且不能在不同的系統(tǒng)平臺(tái)進(jìn)行工作。
發(fā)明內(nèi)容
本發(fā)明的主要目的為提供一種基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)方法,通過將USB系統(tǒng)簡化為相對(duì)獨(dú)立的層次化結(jié)構(gòu),可以方便于后續(xù)USB功能的擴(kuò)展,并且保證了嵌入式系統(tǒng)USB功能的良好的移植性。本發(fā)明提供一種基于嵌入式系統(tǒng)的 USB功能的實(shí)現(xiàn)方法,包括:加載USB從設(shè)備的驅(qū)動(dòng),配置所述USB從設(shè)備的控制器;根據(jù)所述USB從設(shè)備的功能類型加載功能驅(qū)動(dòng),并注冊(cè)相應(yīng)的消息處理函數(shù);使能所述USB從設(shè)備的控制器,并根據(jù)所述控制器的狀態(tài),通過調(diào)用所述消息處理函數(shù),完成相應(yīng)的USB功能。優(yōu)選地,所述配置USB從設(shè)備的控制器包括:配置所述USB從設(shè)備的控制寄存器和中斷寄存器。優(yōu)選地,所述根據(jù)USB從設(shè)備的功能類型加載功能驅(qū)動(dòng),并注冊(cè)相應(yīng)的消息處理函數(shù)包括:根據(jù)所述USB從設(shè)備的功能類型,加載其所對(duì)應(yīng)的功能驅(qū)動(dòng);根據(jù)所述功能類型,注冊(cè)所述功能類型所對(duì)應(yīng)的消息處理函數(shù),所述消息處理函數(shù)用于處理主機(jī)端發(fā)送到USB從設(shè)備的消息。優(yōu)選地,所述使能USB從設(shè)備的控制器,并根據(jù)所述控制器的狀態(tài),通過調(diào)用所述消息處理函數(shù),完成相應(yīng)的USB功能包括:使能所述USB從設(shè)備的控制器,接收主機(jī)端所發(fā)送的消息,并通過所述中斷寄存器對(duì)所述消息進(jìn)行響應(yīng);調(diào)用所述消息處理函數(shù),對(duì)所述主機(jī)端所發(fā)送的消息處理,以完成相應(yīng)的USB功倉泛。優(yōu)選地,所述通過調(diào)用消息處理函數(shù),完成相應(yīng)的USB功能包括海量存儲(chǔ)、人機(jī)交互設(shè)備及串口設(shè)備功能。
本發(fā)明還提供一種基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)裝置,其特征在于,包括通過接口依次連接的接口模塊、驅(qū)動(dòng)模塊、協(xié)議模塊、功能模塊和應(yīng)用模塊,其中:接口模塊,用于為USB從設(shè)備提供接口,并完成相應(yīng)的USB功能的物理數(shù)據(jù)傳輸;驅(qū)動(dòng)模塊,用于加載USB從設(shè)備的驅(qū)動(dòng),配置所述USB從設(shè)備的控制器;協(xié)議模塊,用于功能模塊根據(jù)所述USB從設(shè)備的功能類型注冊(cè)相應(yīng)的消息處理函數(shù);功能模塊,用于根據(jù)所述功能類型向協(xié)議模塊注冊(cè)相應(yīng)的消息處理函數(shù);使能所述USB從設(shè)備的控制器,以完成相應(yīng)的USB功能;應(yīng)用模塊,與所述功能模塊相連接,用于根據(jù)所述功能模塊提供的接口,完成相應(yīng)的USB功能的應(yīng)用。優(yōu)選地,所述驅(qū)動(dòng)模塊具體用于:配置所述USB從設(shè)備的控制寄存器和中斷寄存器。優(yōu)選地,所述協(xié)議模塊具體用于:為所述功能模塊提供接口,以供功能模塊將所述USB從設(shè)備的功能類型進(jìn)行保存,并注冊(cè)所述功能類型所對(duì)應(yīng)的消息處理函數(shù);實(shí)現(xiàn)USB標(biāo)準(zhǔn)協(xié)議,并完成USB協(xié)議中的狀態(tài)切換,處理主機(jī)端發(fā)送的消息。優(yōu)選地,所述功能模塊具體用于:·
通過所述協(xié)議模塊提供的接口,將所述USB從設(shè)備的功能類型保存至所述協(xié)議模塊;根據(jù)所述功能類型,向協(xié)議模塊注冊(cè)所述功能類型所對(duì)應(yīng)的消息處理函數(shù),所述消息處理函數(shù)用于處理主機(jī)端發(fā)送到USB從設(shè)備的消息。 優(yōu)選地,所述功能模塊還用于:使能所述USB從設(shè)備的控制器,接收主機(jī)端所發(fā)送的消息,并通過所述中斷寄存器對(duì)所述消息進(jìn)行響應(yīng);調(diào)用所述消息處理函數(shù),對(duì)所述主機(jī)端所發(fā)送的消息處理,以完成相應(yīng)的USB功倉泛。本發(fā)明所提供的基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)方法,通過將嵌入式產(chǎn)品多類型USB功能的實(shí)現(xiàn)劃分為實(shí)現(xiàn)硬件功能的硬件層和完成軟件功能的軟件層,并且硬件層和軟件層的每層架構(gòu)可以封閉地獨(dú)立完成特定的功能,每層架構(gòu)之間通過接口來實(shí)現(xiàn)通信。將硬件層與軟件層完全屏蔽開,這樣,如需對(duì)軟件部分中的USB功能進(jìn)行擴(kuò)展,便可以直接添加對(duì)應(yīng)的功能驅(qū)動(dòng)即可,而如果需要更換嵌入式產(chǎn)品的USB從設(shè)備控制器,也不需要對(duì)軟件層進(jìn)行二次開發(fā)。采用這種方法來實(shí)現(xiàn)嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn),可以方便于后續(xù)USB功能的擴(kuò)展,并且保證了嵌入式系統(tǒng)USB功能的良好的移植性。
圖1為本發(fā)明基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)方法一實(shí)施例的流程示意圖;圖2為本發(fā)明基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)方法一實(shí)施例中驅(qū)動(dòng)的流程示意圖;圖3為本發(fā)明基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)方法一實(shí)施例中保存及注冊(cè)的流程不意圖;圖4為本發(fā)明基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)方法一實(shí)施例中功能實(shí)現(xiàn)的流程示意圖;圖5為本發(fā)明基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)裝置一實(shí)施例的結(jié)構(gòu)示意圖。本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。
具體實(shí)施例方式應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。參照?qǐng)D1,提出本發(fā)明基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)方法一實(shí)施例,該方法包括:步驟S101,加載USB從設(shè)備的驅(qū)動(dòng),配置所述USB從設(shè)備的控制器;本發(fā)明 提供一種基于嵌入式產(chǎn)品實(shí)現(xiàn)USB功能的方法,將嵌入式產(chǎn)品多類型USB功能的實(shí)現(xiàn)劃分為三層軟件層和兩層硬件層,而軟件層和硬件層中的各層架構(gòu)可以封閉地獨(dú)立完成特定的功能,并且每層架構(gòu)之間通過接口來實(shí)現(xiàn)相互之間的通信。本實(shí)施例所提供的嵌入式設(shè)備的處理器中,集成了一個(gè)USB從設(shè)備控制器,該USB從設(shè)備控制器支持USB1.1協(xié)議,提供24個(gè)端點(diǎn)用于USB從設(shè)備功能的配置。為USB從設(shè)備提供USB接口的硬件層即為接口模塊,而用于驅(qū)動(dòng)USB從設(shè)備的即為驅(qū)動(dòng)模塊,這樣,接口模塊和驅(qū)動(dòng)模塊就共同構(gòu)成了嵌入式設(shè)備的硬件層;這兩層所完成的功能即為硬件層的功能,這兩層硬件層與上層的各軟件層之間通過接口來實(shí)現(xiàn)通信,并且與軟件層被完全屏蔽開,硬件層和軟件層的各層便可以獨(dú)立地完成其特定的功能。步驟S102,根據(jù)所述USB從設(shè)備的功能類型加載功能驅(qū)動(dòng),并注冊(cè)相應(yīng)的消息處理函數(shù);當(dāng)通過硬件層完成了對(duì)USB從設(shè)備的驅(qū)動(dòng)后,軟件層的各層就可以通過相互之間的接口來完成相應(yīng)的工作。本實(shí)施例中,可以將軟件層自下而上依次劃分為協(xié)議模塊、功能模塊和應(yīng)用模塊,并且相互之間通過接口連接。當(dāng)完成了對(duì)USB從設(shè)備的驅(qū)動(dòng)后,就可以將所記錄的USB從設(shè)備對(duì)應(yīng)的功能類型進(jìn)行讀取,并且利用協(xié)議模塊所提供的接口,將這個(gè)功能類型保存至協(xié)議模塊。當(dāng)?shù)玫搅舜藭r(shí)USB從設(shè)備所需要完成的功能后,就可以對(duì)其功能模塊進(jìn)行加載,以用于根據(jù)USB從設(shè)備的功能類型完成相應(yīng)的USB功能。加載完功能模塊后,功能模塊會(huì)根據(jù)USB從設(shè)備的功能類型,向協(xié)議模塊注冊(cè)一個(gè)與該功能類型所對(duì)應(yīng)的可以回調(diào)的消息處理函數(shù),通過調(diào)用這個(gè)回調(diào)函數(shù),就可以接收到協(xié)議模塊所傳遞的來自主機(jī)端的消息,以完成相應(yīng)的USB從設(shè)備所需要的USB功能。本實(shí)施例中,上述讀取USB從設(shè)備的功能類型,并向協(xié)議模塊注冊(cè)消息處理函數(shù)的功能是由功能模塊來完成的;而協(xié)議模塊是軟件層的最下層,其與下層硬件層的驅(qū)動(dòng)模塊之間通過接口實(shí)現(xiàn)相互的通信,協(xié)議模塊可以為功能模塊提供接口,以供功能模塊根據(jù)其所讀取的USB從設(shè)備的功能類型注冊(cè)消息處理函數(shù);以及實(shí)現(xiàn)USB標(biāo)準(zhǔn)協(xié)議,并完成USB協(xié)議中定義的 USB 從設(shè)備 Attach、Power、Default、Address、Configure 和 Suspend 等可見狀態(tài)的切換,處理主機(jī)端發(fā)送的消息的功能。步驟S103,使能所述USB從設(shè)備的控制器,并根據(jù)所述控制器的狀態(tài),通過調(diào)用所述消息處理函數(shù),完成相應(yīng)的USB功能。
當(dāng)完成了對(duì)USB從設(shè)備的硬件的驅(qū)動(dòng),并且根據(jù)所記錄的USB從設(shè)備的功能類型向協(xié)議模塊注冊(cè)了可供回調(diào)的消息處理函數(shù)后,會(huì)對(duì)USB從設(shè)備的控制器進(jìn)行使能,此時(shí)當(dāng)接收到協(xié)議模塊所轉(zhuǎn)發(fā)的主機(jī)端發(fā)送的消息后,這個(gè)消息便可以通過控制器以中斷的形式表現(xiàn)出來。根據(jù)控制器的中斷狀態(tài),功能模塊就可以在接收到協(xié)議模塊所轉(zhuǎn)發(fā)的消息,完成相應(yīng)的USB功能。在本實(shí)施例中,提供的基于嵌入式產(chǎn)品實(shí)現(xiàn)USB功能的方法,所完成的USB從設(shè)備所對(duì)應(yīng)的USB功能,可以為包括如海量存儲(chǔ)、人機(jī)交互設(shè)備及串口設(shè)備等的USB功能。功能模塊通過協(xié)議模塊所提供的接口完成了相應(yīng)的USB功能后,應(yīng)用模塊就會(huì)利用與功能模塊之間的接口,實(shí)現(xiàn)相應(yīng)的USB功能的應(yīng)用。應(yīng)用模塊是軟件層的最上層,在本實(shí)施例中,應(yīng)用模塊可以通過調(diào)用操作系統(tǒng)的標(biāo)準(zhǔn)API,來完成具體的USB功能的實(shí)現(xiàn),即將其應(yīng)用在如U盤、產(chǎn)線檢測(cè)工具及ActiveSync軟件等具體的USB功能。本發(fā)明所提供的基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)方法,通過將嵌入式產(chǎn)品多類型USB功能的實(shí)現(xiàn)劃分為實(shí)現(xiàn)硬件功能的硬件層和完成軟件功能的軟件層,并且硬件層和軟件層的每層架構(gòu)可以封閉地獨(dú)立完成特定的功能,每層架構(gòu)之間通過接口來實(shí)現(xiàn)通信。將硬件層與軟件層完全屏蔽開,這樣,如需對(duì)軟件部分中的USB功能進(jìn)行擴(kuò)展,便可以直接添加對(duì)應(yīng)的功能驅(qū)動(dòng)即可,而如果需要更換嵌入式產(chǎn)品的USB從設(shè)備控制器,也不需要對(duì)軟件層進(jìn)行二次開發(fā)。采用這種方法來實(shí)現(xiàn)嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn),可以方便于后續(xù)USB功能的擴(kuò)展,并且保證了嵌入式系統(tǒng)USB功能的良好的移植性。參照?qǐng)D2,在本發(fā)明基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)方法一實(shí)施例中,步驟SlOl具體包括:步驟S1011, 配置所述USB從設(shè)備的控制寄存器和中斷寄存器。由于在通常情況下,USB從設(shè)備的控制器可以包括中斷寄存器、控制寄存器、端點(diǎn)控制寄存器和端點(diǎn)數(shù)據(jù)寄存器等幾種,因此,通常意義上的配置USB從設(shè)備的控制器也即為對(duì)這些寄存器進(jìn)行配置。而在本實(shí)施例中,對(duì)USB從設(shè)備的控制器中的控制寄存器和中斷寄存器較為重要。此時(shí),可以通過中斷函數(shù)來對(duì)USB從設(shè)備的控制器的狀態(tài)進(jìn)行監(jiān)聽,并用于保存當(dāng)前USB從設(shè)備控制器的狀態(tài);同時(shí)通過中斷處理函數(shù)來對(duì)控制器所表現(xiàn)出的不同的狀態(tài)做相應(yīng)的處理。當(dāng)USB從設(shè)備啟動(dòng)后,對(duì)其控制寄存器和中斷寄存器進(jìn)行初始化配置,并且通過中斷函數(shù)來對(duì)USB從設(shè)備的控制器的狀態(tài)進(jìn)行監(jiān)聽,從而通過協(xié)議模塊來向上層功能模塊提供相應(yīng)的接口,以便功能模塊完成相應(yīng)的USB功能。這樣,就進(jìn)一步保證了軟件層和硬件層之間的屏蔽,使得后續(xù)的USB功能的擴(kuò)展,以及嵌入式系統(tǒng)USB功能的良好的移植性得以更好的保證。參照?qǐng)D3,在本發(fā)明基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)方法一實(shí)施例中,步驟S102包括:步驟S1021,根據(jù)所述USB從設(shè)備的功能類型,加載其所對(duì)應(yīng)的功能驅(qū)動(dòng);當(dāng)完成了對(duì)USB從設(shè)備的驅(qū)動(dòng)后,就可以將USB從設(shè)備對(duì)應(yīng)的功能類型進(jìn)行讀取,當(dāng)?shù)玫経SB從設(shè)備的功能類型后,便可以根據(jù)這個(gè)功能類型對(duì)功能模塊進(jìn)行加載,以便功能模塊可以根據(jù)USB從設(shè)備的功能類型來完成相應(yīng)的USB功能。然后,便需要利用協(xié)議模塊所提供的接口,將這個(gè)功能類型進(jìn)行保存,本實(shí)施例中,可以將其保存至協(xié)議模塊。
步驟S1022,根據(jù)所述功能類型,注冊(cè)所述功能類型所對(duì)應(yīng)的消息處理函數(shù),所述消息處理函數(shù)用于處理主機(jī)端發(fā)送到USB從設(shè)備的消息。當(dāng)?shù)玫搅舜藭r(shí)USB從設(shè)備所需要完成的功能,并根據(jù)其功能類型完成了對(duì)功能模塊的加載后,功能模塊會(huì)根據(jù)USB從設(shè)備的功能類型,向協(xié)議模塊注冊(cè)一個(gè)與該功能類型所對(duì)應(yīng)的可以回調(diào)的消息處理函數(shù),通過調(diào)用這個(gè)回調(diào)函數(shù),就可以在接收到協(xié)議模塊所傳遞的來自主機(jī)端的消息后,將該消息進(jìn)行相應(yīng)的處理,以完成相應(yīng)的USB從設(shè)備所需要的USB功能。通過對(duì)USB從設(shè)備所對(duì)應(yīng)的功能類型進(jìn)行讀取,就可以得到該USB從設(shè)備所需要完成的USB功能,然后通過功能模塊,并根據(jù)該功能類型向協(xié)議模塊注冊(cè)一個(gè)可供回調(diào)并用于處理主機(jī)端發(fā)送到USB從設(shè)備的消息的消息處理函數(shù),從而當(dāng)接收到協(xié)議模塊所轉(zhuǎn)發(fā)的來自主機(jī)端的消息后,就可以通過調(diào)用這個(gè)消息處理函數(shù),完成USB從設(shè)備所對(duì)應(yīng)的USB功能。這樣,便在很大程度上保證了軟件層的各層之間可以通過接口進(jìn)行通信,并且為USB功能的實(shí)現(xiàn)提供了很大的方便。參照?qǐng)D4,在本發(fā)明基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)方法一實(shí)施例中,步驟S103包括:步驟S1031,使能所述USB從設(shè)備的控制器,接收主機(jī)端所發(fā)送的消息,并通過所述中斷寄存器對(duì)所述消息進(jìn)行響應(yīng);當(dāng)完成了對(duì)USB從設(shè)備的硬件的驅(qū)動(dòng),并且根據(jù)所記錄的USB從設(shè)備的功能類型向協(xié)議模塊注冊(cè)了可供回調(diào)的消息處理函數(shù)后,需要對(duì)USB從設(shè)備的控制器進(jìn)行使能,然后等待主機(jī)端發(fā)送消息,協(xié)議模塊會(huì)從驅(qū)動(dòng)模塊將這個(gè)消息轉(zhuǎn)發(fā)至功能模塊,而這個(gè)消息便是通過USB從設(shè)備的控制器以中斷的形式表現(xiàn)出來的。本實(shí)施例中,是通過中斷寄存器來對(duì)USB從設(shè)備的控制器的狀態(tài)進(jìn)行監(jiān)聽的。當(dāng)接收到協(xié)議模塊所轉(zhuǎn)發(fā)的主機(jī)端發(fā)送的消息后,就可以通過中 斷處理函數(shù)來對(duì)控制器所表現(xiàn)出的中斷進(jìn)行響應(yīng),并對(duì)該消息做相應(yīng)的處理。步驟S1032,調(diào)用所述消息處理函數(shù),對(duì)所述主機(jī)端所發(fā)送的消息處理,以完成相應(yīng)的USB功能。當(dāng)通過中斷處理函數(shù)對(duì)主機(jī)端發(fā)送的消息進(jìn)行相應(yīng)的處理后,此時(shí),會(huì)將經(jīng)過處理后的消息進(jìn)行轉(zhuǎn)發(fā),即將其通過協(xié)議模塊轉(zhuǎn)發(fā)至功能模塊。此時(shí),功能模塊就會(huì)調(diào)用根據(jù)USB從設(shè)備的功能類型向協(xié)議模塊注冊(cè)的消息處理函數(shù),來完成相應(yīng)的USB功能。參照?qǐng)D5,提出本發(fā)明基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)裝置一實(shí)施例,該裝置包括通過接口依次連接的接口模塊10、驅(qū)動(dòng)模塊20、協(xié)議模塊30、功能模塊40和應(yīng)用模塊50,其中:接口模塊10,用于為USB從設(shè)備提供接口,并完成相應(yīng)的USB功能的物理數(shù)據(jù)傳輸;驅(qū)動(dòng)模塊20,用于加載USB從設(shè)備的驅(qū)動(dòng),配置所述USB從設(shè)備的控制器;協(xié)議模塊30,用于功能模塊根據(jù)所述USB從設(shè)備的功能類型注冊(cè)相應(yīng)的消息處理函數(shù);功能模塊40,用于根據(jù)所述功能類型向協(xié)議模塊注冊(cè)相應(yīng)的消息處理函數(shù);使能所述USB從設(shè)備的控制器,以完成相應(yīng)的USB功能;
應(yīng)用模塊50,與所述功能模塊相連接,用于根據(jù)所述功能模塊提供的接口,完成相應(yīng)的USB功能的應(yīng)用。本發(fā)明提供一種基于嵌入式產(chǎn)品實(shí)現(xiàn)USB功能的方法,將嵌入式產(chǎn)品多類型USB功能的實(shí)現(xiàn)劃分為三層軟件層和兩層硬件層,而軟件層和硬件層中的各層架構(gòu)可以封閉地獨(dú)立完成特定的功能,并且每層架構(gòu)之間通過接口來實(shí)現(xiàn)相互之間的通信。本實(shí)施例所提供的嵌入式設(shè)備的處理器中,集成了一個(gè)USB從設(shè)備控制器,該USB從設(shè)備控制器支持USB1.1協(xié)議,提供24個(gè)端點(diǎn)用于USB從設(shè)備功能的配置。所提供的控制器即為USB從設(shè)備的接口模塊10,該接口模塊10用于為USB從設(shè)備提供接口,并完成USB從設(shè)備所需要完成的相應(yīng)的USB功能的物理數(shù)據(jù)傳輸。為USB從設(shè)備提供USB接口的硬件層即為接口模塊10,而用于驅(qū)動(dòng)USB從設(shè)備的即為驅(qū)動(dòng)模塊20,這樣,接口模塊10和驅(qū)動(dòng)模塊20就共同構(gòu)成了嵌入式設(shè)備的硬件層;這兩層所完成的功能即為硬件層的功能,這兩層硬件層與上層的各軟件層之間通過接口來實(shí)現(xiàn)通信,并且與軟件層被完全屏蔽開,硬件層和軟件層的各層便可以獨(dú)立地完成其特定的功能。當(dāng)通過硬件層完成了對(duì)USB從設(shè)備的驅(qū)動(dòng)后,軟件層的各層就可以通過相互之間的接口來完成相應(yīng)的工作。本實(shí)施例中,可以將軟件層自下而上依次劃分為協(xié)議模塊30、功能模塊40和應(yīng)用模塊50,并且相互之間通過接口連接。協(xié)議模塊30是軟件層的最下層,其與下層硬件層的驅(qū)動(dòng)模塊20之間通過接口實(shí)現(xiàn)相互的通信,協(xié)議模塊30可以為功能模塊40提供接口,以供功能模塊40通過其所提供的接口,完成USB設(shè)備所對(duì)應(yīng)的USB功能。同時(shí),協(xié)議模塊30還可以實(shí)現(xiàn)USB標(biāo)準(zhǔn)協(xié)議,并完成 USB 協(xié)議中定義的 USB 從設(shè)備 Attach、Power、Default、Address、Conf igure 和 Suspend等可見狀態(tài)的切換,處理主機(jī)端發(fā)送的消息等功能。當(dāng)通過驅(qū)動(dòng)模塊20完成了對(duì)USB從設(shè)備的驅(qū)動(dòng)后,功能模塊40就可以將所記錄的USB從設(shè)備對(duì)應(yīng)的功能類型進(jìn)行讀取,并且利用協(xié)議模塊30所提供的接口,將這個(gè)功能類型保存至協(xié)議模塊30。當(dāng)?shù)玫搅舜藭r(shí)USB從設(shè)備所需要完成的功能后,就可以對(duì)其功能模塊40進(jìn)行加載,以用于根據(jù)USB從設(shè)備的功能類型完成相應(yīng)的USB功能。加載完功能模塊40后,功能模塊40會(huì)根據(jù)USB從設(shè)備的功能類型,向協(xié)議模塊30注冊(cè)一個(gè)與該功能類型所對(duì)應(yīng)的可以回調(diào)的消息處理函數(shù),通過調(diào)用這個(gè)回調(diào)函數(shù),就可以接收到協(xié)議模塊30所傳遞的來自主機(jī)端的消息,以完成相應(yīng)的USB從設(shè)備所需要的USB功能。當(dāng)完成了對(duì)USB從設(shè)備的硬件的驅(qū)動(dòng),并且根據(jù)所記錄的USB從設(shè)備的功能類型向協(xié)議模塊30注冊(cè)了可供回調(diào)的消息處理函數(shù)后,功能模塊40還會(huì)對(duì)USB從設(shè)備的控制器進(jìn)行使能,此時(shí)當(dāng)接收到協(xié)議模塊30所轉(zhuǎn)發(fā)的主機(jī)端發(fā)送的消息后,這個(gè)消息便可以通過USB從設(shè)備的控制器以中斷的形式表現(xiàn)出來。根據(jù)控制器的中斷狀態(tài),功能模塊40就可以在接收到協(xié)議模塊30所轉(zhuǎn)發(fā)的消息后,完成相應(yīng)的USB功能。在本實(shí)施例中,提供的基于嵌入式產(chǎn)品實(shí)現(xiàn)USB功能的方法,所完成的USB從設(shè)備所對(duì)應(yīng)的USB功能,可以為包括如海量存儲(chǔ)、人機(jī)交互設(shè)備及串口設(shè)備等的USB功能。功能模塊40通過協(xié)議模塊30所提供的接口完成了相應(yīng)的USB功能后,應(yīng)用模塊50就會(huì)利用與功能模塊40之間的接口,實(shí)現(xiàn) 相應(yīng)的USB功能的應(yīng)用。應(yīng)用模塊50是軟件層的最上層,在本實(shí)施例中,應(yīng)用模塊50可以通過調(diào)用操作系統(tǒng)的標(biāo)準(zhǔn)API,來完成具體的USB功能的實(shí)現(xiàn),即將其應(yīng)用在如U盤、產(chǎn)線檢測(cè)工具、ActiveSync軟件等具體的USB功能。本發(fā)明所提供的基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)裝置,通過將嵌入式產(chǎn)品多類型USB功能的實(shí)現(xiàn)劃分為實(shí)現(xiàn)硬件功能的硬件層和完成軟件功能的軟件層,并且硬件層和軟件層的每層架構(gòu)可以封閉地獨(dú)立完成特定的功能,每層架構(gòu)之間通過接口來實(shí)現(xiàn)通信。將硬件層與軟件層完全屏蔽開,這樣,如需對(duì)軟件部分中的USB功能進(jìn)行擴(kuò)展,便可以直接添加對(duì)應(yīng)的功能驅(qū)動(dòng)即可,而如果需要更換嵌入式產(chǎn)品的USB從設(shè)備控制器,也不需要對(duì)軟件層進(jìn)行二次開發(fā)。采用這種方法來實(shí)現(xiàn)嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn),可以方便于后續(xù)USB功能的擴(kuò)展,并且保證了嵌入式系統(tǒng)USB功能的良好的移植性。在本發(fā)明基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)裝置一實(shí)施例中,所述驅(qū)動(dòng)模塊20具體用于:配置所述USB從設(shè)備的控制寄存器和中斷寄存器;由于在通常情況下,USB從設(shè)備的控制器可以包括中斷寄存器、控制寄存器、端點(diǎn)控制寄存器和端點(diǎn)數(shù)據(jù)寄存器等幾種,因此,通常意義上的配置USB從設(shè)備的控制器也即為對(duì)這些寄存器進(jìn)行配置。而在本實(shí)施例中,對(duì)USB從設(shè)備的控制器中的控制寄存器和中斷寄存器較為重要。此時(shí),可以通過中斷函數(shù)來用于對(duì)USB從設(shè)備的控制器的狀態(tài)進(jìn)行監(jiān)聽,并用于保存當(dāng)前USB從設(shè)備控制器的狀態(tài);同時(shí)通過中斷處理函數(shù)來對(duì)控制器所表現(xiàn)出的不同的狀態(tài)做相應(yīng)的處理。當(dāng)USB從設(shè)備啟動(dòng)后,對(duì)其控制寄存器和中斷寄存器進(jìn)行初始化配置,并且通過中斷函數(shù)來對(duì)USB從設(shè)備的控制器的狀態(tài)進(jìn)行監(jiān)聽,從而通過協(xié)議模塊30來向上層功能模塊40提供相應(yīng)的接口,以便功能模塊40完成相應(yīng)的USB功能。這樣,就進(jìn)一步保證了軟件層和硬件層之間的屏蔽,使得后續(xù)的USB功能的擴(kuò)展,以及嵌入式系統(tǒng)USB功能的良好的移植性得以更好的保證。在本發(fā)明基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)裝置一實(shí)施例中,所述協(xié)議模塊30具體用于:為所述功能模塊提供接口,以供功能模塊將所述USB從設(shè)備的功能類型進(jìn)行保存,并注冊(cè)所述功能類型所對(duì)應(yīng)的消息處理函數(shù);實(shí)現(xiàn)USB標(biāo)準(zhǔn)協(xié)議,并完成USB協(xié)議中的狀態(tài)切換,處理主機(jī)端發(fā)送的消息。在上述實(shí)施例中,所述功能模塊40具體用于: 通過所述協(xié)議模塊30提供的接口,將所述USB從設(shè)備的功能類型保存至所述協(xié)議模塊30 ;根據(jù)所述功能類型,向協(xié)議模塊30注冊(cè)所述功能類型所對(duì)應(yīng)的消息處理函數(shù),所述消息處理函數(shù)用于處理主機(jī)端發(fā)送到USB從設(shè)備的消息。當(dāng)通過驅(qū)動(dòng)模塊20完成了對(duì)USB從設(shè)備的驅(qū)動(dòng)后,并且通過功能模塊40將USB從設(shè)備對(duì)應(yīng)的功能類型進(jìn)行讀取,從而得到了 USB從設(shè)備的功能類型后,功能模塊40便可以通過協(xié)議模塊30所提供的接口,將這個(gè)功能類型進(jìn)行保存,即將其保存至協(xié)議模塊30中;協(xié)議模塊30所提供的接口,還可以供功能模塊40根據(jù)USB從設(shè)備的功能類型,向協(xié)議模塊30注冊(cè)一個(gè)與該功能類型所對(duì)應(yīng)的可以回調(diào)的消息處理函數(shù),通過調(diào)用這個(gè)回調(diào)函數(shù),功能模塊40就可以在接收到協(xié)議模塊30所傳遞的來自主機(jī)端的消息后,將該消息進(jìn)行相應(yīng)的處理,以便完成 USB從設(shè)備所對(duì)應(yīng)的USB功能。
在本實(shí)施例中,協(xié)議模塊30還可以實(shí)現(xiàn)USB標(biāo)準(zhǔn)協(xié)議,并完成USB協(xié)議中定義的USB 從設(shè)備 Attach、Power、Default、Address、Configure 和 Suspend 等可見狀態(tài)的切換,處理主機(jī)端發(fā)送的消息等功能。通過功能模塊40對(duì)USB從設(shè)備所對(duì)應(yīng)的功能類型進(jìn)行讀取,就可以得到該USB從設(shè)備所需要完成的USB功能,然后將功能模塊40所讀取的功能類型保存至協(xié)議模塊30中,并且根據(jù)該功能類型向協(xié)議模塊30注冊(cè)消息處理函數(shù),當(dāng)接收到協(xié)議模塊30所轉(zhuǎn)發(fā)的來自主機(jī)端的消息后,就可以通過調(diào)用這個(gè)消息處理函數(shù),完成USB從設(shè)備所對(duì)應(yīng)的USB功能。這樣,便在很大程度上保證了軟件層的各層之間可以通過接口進(jìn)行通信,并且為USB功能的實(shí)現(xiàn)提供了很大的方便。在本發(fā)明基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)裝置一實(shí)施例中,所述功能模塊40還用于:使能所述USB從設(shè)備的控制器,接收主機(jī)端所發(fā)送的消息,并通過所述中斷寄存器對(duì)所述消息進(jìn)行響應(yīng);調(diào)用所述消息處理函數(shù),對(duì)所述主機(jī)端所發(fā)送的消息處理,以完成相應(yīng)的USB功倉泛。當(dāng)通過驅(qū)動(dòng)模塊20完成了對(duì)USB從設(shè)備的硬件的驅(qū)動(dòng),并且通過功能模塊40,根據(jù)所記錄的USB從設(shè)備的功能類型向協(xié)議模塊30注冊(cè)了可供回調(diào)的消息處理函數(shù)后,功能模塊40還需要對(duì)USB從設(shè)備的控制器進(jìn)行使能,然后等待主機(jī)端發(fā)送消息,這個(gè)消息會(huì)通過協(xié)議模塊30轉(zhuǎn)發(fā)至驅(qū)動(dòng)模塊20,而這個(gè)消息便是通過USB從設(shè)備的控制器以中斷的形式表現(xiàn)出來的,這時(shí)所表現(xiàn)出的即是USB從設(shè)備控制器當(dāng)前的狀態(tài)。本實(shí)施例中,是通過中斷寄存器來對(duì)USB從設(shè)備的控制器的狀態(tài)進(jìn)行監(jiān)聽的。這樣,當(dāng)功能模塊40接收到協(xié)議模塊30所轉(zhuǎn)發(fā)的主機(jī)端發(fā)送的消息 后,就可以通過中斷處理函數(shù)來對(duì)控制器所表現(xiàn)出的中斷進(jìn)行響應(yīng),并對(duì)該消息做相應(yīng)的處理。當(dāng)通過中斷處理函數(shù)對(duì)主機(jī)端發(fā)送的消息進(jìn)行相應(yīng)的處理后,此時(shí),會(huì)將經(jīng)過得理后的消息進(jìn)行轉(zhuǎn)發(fā),即將其通過協(xié)議模塊30轉(zhuǎn)發(fā)至功能模塊40。此時(shí),功能模塊40接收到這個(gè)消息后,就會(huì)調(diào)用根據(jù)USB從設(shè)備的功能類型向協(xié)議模塊30注冊(cè)的消息處理函數(shù),來完成相應(yīng)的USB功能。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍。
權(quán)利要求
1.一種基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)方法,其特征在于,包括: 加載USB從設(shè)備的驅(qū)動(dòng),配置所述USB從設(shè)備的控制器; 根據(jù)所述USB從設(shè)備的功能類型加載功能驅(qū)動(dòng),并注冊(cè)相應(yīng)的消息處理函數(shù); 使能所述USB從設(shè)備的控制器,并根據(jù)所述控制器的狀態(tài),通過調(diào)用所述消息處理函數(shù),完成相應(yīng)的USB功能。
2.如權(quán)利要求1所述的方法,其特征在于,所述配置USB從設(shè)備的控制器包括: 配置所述USB從設(shè)備的控制寄存器和中斷寄存器。
3.如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)USB從設(shè)備的功能類型加載功能驅(qū)動(dòng),并注冊(cè)相應(yīng)的消息處理函數(shù)包括: 根據(jù)所述USB從設(shè)備的功能類型,加載其所對(duì)應(yīng)的功能驅(qū)動(dòng); 根據(jù)所述功能類型,注冊(cè)所述功能類型所對(duì)應(yīng)的消息處理函數(shù),所述消息處理函數(shù)用于處理主機(jī)端發(fā)送 到USB從設(shè)備的消息。
4.如權(quán)利要求3所述的方法,其特征在于,所述使能USB從設(shè)備的控制器,并根據(jù)所述控制器的狀態(tài),通過調(diào)用所述消息處理函數(shù),完成相應(yīng)的USB功能包括: 使能所述USB從設(shè)備的控制器,接收主機(jī)端所發(fā)送的消息,并通過所述中斷寄存器對(duì)所述消息進(jìn)行響應(yīng); 調(diào)用所述消息處理函數(shù),對(duì)所述主機(jī)端所發(fā)送的消息處理,以完成相應(yīng)的USB功能。
5.如權(quán)利要求1至4中任一項(xiàng)所述的方法,其特征在于,所述通過調(diào)用消息處理函數(shù),完成相應(yīng)的USB功能包括海量存儲(chǔ)、人機(jī)交互設(shè)備及串口設(shè)備功能。
6.一種基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)裝置,其特征在于,包括通過接口依次連接的接口模塊、驅(qū)動(dòng)模塊、協(xié)議模塊、功能模塊和應(yīng)用模塊,其中: 接口模塊,用于為USB從設(shè)備提供接口,并完成相應(yīng)的USB功能的物理數(shù)據(jù)傳輸; 驅(qū)動(dòng)模塊,用于加載USB從設(shè)備的驅(qū)動(dòng),配置所述USB從設(shè)備的控制器; 協(xié)議模塊,用于功能模塊根據(jù)所述USB從設(shè)備的功能類型注冊(cè)相應(yīng)的消息處理函數(shù);功能模塊,用于根據(jù)所述功能類型向協(xié)議模塊注冊(cè)相應(yīng)的消息處理函數(shù);使能所述USB從設(shè)備的控制器,以完成相應(yīng)的USB功能; 應(yīng)用模塊,與所述功能模塊相連接,用于根據(jù)所述功能模塊提供的接口,完成相應(yīng)的USB功能的應(yīng)用。
7.如權(quán)利要求6所述的裝置,其特征在于,所述驅(qū)動(dòng)模塊具體用于: 配置所述USB從設(shè)備的控制寄存器和中斷寄存器。
8.如權(quán)利要求7所述的裝置,其特征在于,所述協(xié)議模塊具體用于: 為所述功能模塊提供接口,以供功能模塊將所述USB從設(shè)備的功能類型進(jìn)行保存,并注冊(cè)所述功能類型所對(duì)應(yīng)的消息處理函數(shù); 實(shí)現(xiàn)USB標(biāo)準(zhǔn)協(xié)議,并完成USB協(xié)議中的狀態(tài)切換,處理主機(jī)端發(fā)送的消息。
9.如權(quán)利要求8所述的裝置,其特征在于,所述功能模塊具體用于: 通過所述協(xié)議模塊提供的接口,將所述USB從設(shè)備的功能類型保存至所述協(xié)議模塊;根據(jù)所述功能類型,向協(xié)議模塊注冊(cè)所述功能類型所對(duì)應(yīng)的消息處理函數(shù),所述消息處理函數(shù)用于處理主機(jī)端發(fā)送到USB從設(shè)備的消息。
10.如權(quán)利要求9所述的裝置,其特征在于,所述功能模塊還用于:使能所述USB從設(shè)備的控制器,接收主機(jī)端所發(fā)送的消息,并通過所述中斷寄存器對(duì)所述消息進(jìn)行響應(yīng); 調(diào)用所述消息處理函 數(shù),對(duì)所述主機(jī)端所發(fā)送的消息處理,以完成相應(yīng)的USB功能。
全文摘要
本發(fā)明公開了一種基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)方法,包括加載USB從設(shè)備的驅(qū)動(dòng),配置所述USB從設(shè)備的控制器;根據(jù)所述USB從設(shè)備的功能類型加載功能驅(qū)動(dòng),并注冊(cè)相應(yīng)的消息處理函數(shù);使能所述USB從設(shè)備的控制器,并根據(jù)所述控制器的狀態(tài),通過調(diào)用所述消息處理函數(shù),完成相應(yīng)的USB功能。本發(fā)明還提供了相應(yīng)的裝置。本發(fā)明所提供的基于嵌入式系統(tǒng)的USB功能的實(shí)現(xiàn)方法,通過將USB系統(tǒng)簡化為相對(duì)獨(dú)立的層次結(jié)構(gòu),可以方便于后續(xù)USB功能的擴(kuò)展,并且保證了嵌入式系統(tǒng)USB功能的良好的移植性。
文檔編號(hào)G06F13/10GK103246618SQ20121002234
公開日2013年8月14日 申請(qǐng)日期2012年2月1日 優(yōu)先權(quán)日2012年2月1日
發(fā)明者劉建志, 趙靖, 汪旭光, 丁岳 申請(qǐng)人:中興通訊股份有限公司