專利名稱:設(shè)備模擬的實(shí)現(xiàn)方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種設(shè)備模擬的實(shí)現(xiàn)方法和裝置。
背景技術(shù):
隨著社會信息化的不斷發(fā)展,嵌入式設(shè)備的應(yīng)用越來越普及。在這種趨勢下,不同 設(shè)備間的信息通訊功能將稱為實(shí)現(xiàn)這種設(shè)備間信息化的關(guān)鍵因素。 目前,通用串行總線(Universal Serial Bus,簡稱為USB)具有即插即用、數(shù)據(jù)傳 輸速率高等多種優(yōu)點(diǎn),并且已經(jīng)成為計(jì)算機(jī)與各種具有USB芯片的數(shù)字設(shè)備的首選通信方 式。 但是,考慮到成本問題,目前很多電氣設(shè)備的芯片不帶有USB客戶端控制器的功 能,也就導(dǎo)致這些設(shè)備即使插入U(xiǎn)SB插槽也不能被識別,對于如何使不帶有USB客戶端控制 器的設(shè)備被識別為USB設(shè)備從而基于USB協(xié)議進(jìn)行數(shù)據(jù)傳輸?shù)膯栴},目前尚未提出有效的 解決方案。
發(fā)明內(nèi)容
針對相關(guān)技術(shù)中無法使不帶有USB客戶端控制器的設(shè)備基于USB協(xié)議進(jìn)行數(shù)據(jù)傳 輸?shù)膯栴},本發(fā)明提出一種設(shè)備模擬的實(shí)現(xiàn)方法和裝置,能夠?qū)⒉粠в蠻SB客戶端控制器 的設(shè)備模擬為USB設(shè)備并基于USB協(xié)議進(jìn)行數(shù)據(jù)傳輸。
本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的 根據(jù)本發(fā)明的一個(gè)方面,提供了一種設(shè)備模擬的實(shí)現(xiàn)裝置,設(shè)置于從設(shè)備。 根據(jù)本發(fā)明的設(shè)備模擬的實(shí)現(xiàn)裝置包括功能層模塊,用于將從設(shè)備的鑒別信息
提供給與從設(shè)備連接的主設(shè)備,以及解析來自與主設(shè)備的命令;設(shè)備層模塊,用于根據(jù)解析
后的命令控制從設(shè)備的端點(diǎn)緩存器對主設(shè)備與從設(shè)備之間的傳輸?shù)臄?shù)據(jù)進(jìn)行保存;總線接
口層模塊,用于通過通用輸入輸出接口實(shí)現(xiàn)與從設(shè)備與主設(shè)備之間的數(shù)據(jù)傳輸。 其中,總線接口層模塊,通過兩個(gè)通用輸入輸出接口實(shí)現(xiàn)主設(shè)備與從設(shè)備之間的
數(shù)據(jù)傳輸,其中,兩個(gè)通用輸入輸出接口上的信號組成一對差分信號,并且從設(shè)備與主設(shè)備
之間傳輸?shù)臄?shù)據(jù)由一對差分信號的電壓表示。 并且,總線接口層模塊包括調(diào)壓器,用于調(diào)節(jié)由從設(shè)備向主設(shè)備發(fā)送的差分信號 的電壓,使調(diào)節(jié)后的電壓滿足預(yù)定要求。
具體地,上述預(yù)定要求是指通用串行總線USB協(xié)議對電壓的要求。
此外,總線接口層模塊還用于對主設(shè)備發(fā)送至從設(shè)備的數(shù)據(jù)進(jìn)行解碼和校驗(yàn),并
根據(jù)校驗(yàn)結(jié)果向主設(shè)備返回正確應(yīng)答消息或錯(cuò)誤應(yīng)答消息。 并且,總線接口層模塊還用于在主設(shè)備向從設(shè)備發(fā)送數(shù)據(jù)的情況下,觸發(fā)中斷檢 測,并在中斷檢測過程中接收主設(shè)備向從設(shè)備發(fā)送的數(shù)據(jù)。 此外,設(shè)備層模塊還用于維護(hù)端點(diǎn)緩存器的狀態(tài)、從設(shè)備的狀態(tài)以及主設(shè)備與從 設(shè)備之間傳輸?shù)臄?shù)據(jù)。
根據(jù)本發(fā)明的另一方面,提供了一種設(shè)備模擬的實(shí)現(xiàn)方法。 該方法包括從設(shè)備將鑒別信息提供給與從設(shè)備連接的主設(shè)備,并解析來自與主 設(shè)備的命令;根據(jù)解析后的命令,從設(shè)備通過通用輸入輸出接口實(shí)現(xiàn)與從設(shè)備與主設(shè)備之 間的數(shù)據(jù)傳輸,其中,從設(shè)備控制從設(shè)備的端點(diǎn)緩存器對主設(shè)備與從設(shè)備之間的傳輸?shù)臄?shù) 據(jù)進(jìn)行保存。 其中,通用輸入輸出接口的數(shù)量為兩個(gè),其中,兩個(gè)通用輸入輸出接口上的信號組 成一對差分信號,并且從設(shè)備與主設(shè)備之間傳輸?shù)臄?shù)據(jù)由一對差分信號的電壓表示。
并且,在從設(shè)備向主設(shè)備傳輸數(shù)據(jù)的情況下,還包括調(diào)節(jié)從設(shè)備向主設(shè)備發(fā)送的 差分信號的電壓,使調(diào)節(jié)后的電壓滿足預(yù)定要求,其中,預(yù)定要求是指通用串行總線USB協(xié) 議對電壓的要求。 借助于本發(fā)明,能夠在設(shè)備不具有USB client端控制器硬件的情況下,通過設(shè)備 芯片的GPIO接口模擬USB,使得主設(shè)備(即,該設(shè)備所插入的主機(jī),該主機(jī)可以包括計(jì)算機(jī) 等)能夠?qū)⒉迦氲脑O(shè)備(即,從設(shè)備)識別為USB設(shè)備,并實(shí)現(xiàn)主設(shè)備與從設(shè)備之間的數(shù)據(jù) 傳輸功能。
圖1是根據(jù)本發(fā)明實(shí)施例的設(shè)備模擬的實(shí)現(xiàn)裝置的框圖; 圖2是根據(jù)本發(fā)明實(shí)施例的設(shè)備模擬的實(shí)現(xiàn)裝置傳輸?shù)牟罘中盘柕碾妷呵€圖;
圖3是設(shè)備模擬的實(shí)現(xiàn)裝置中通過調(diào)壓器和電阻對DM和DP線的電壓進(jìn)行調(diào)節(jié)的 示意圖; 圖4是根據(jù)本發(fā)明實(shí)施例的設(shè)備模擬的實(shí)現(xiàn)裝置基于USB協(xié)議實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)南?息流程圖; 圖5是根據(jù)本發(fā)明實(shí)施例的設(shè)備模擬的實(shí)現(xiàn)裝置的總線接口模塊進(jìn)行數(shù)據(jù)發(fā)送 和接收的流程圖; 圖6是根據(jù)本發(fā)明實(shí)施例的設(shè)備模擬的實(shí)現(xiàn)方法的流程圖。
具體實(shí)施例方式
在相關(guān)技術(shù)中,不帶有USB客戶端控制器的設(shè)備將不能夠被識別為USB設(shè)備,針 對該問題,本發(fā)明考慮到USB通訊要求使用一對差分?jǐn)?shù)據(jù)線,作為雙向傳輸?shù)拿浇?,并?USB1. 1協(xié)議對USB設(shè)備的電氣特性有具體的要求,因此,本發(fā)明提出采用兩個(gè)同組通用輸 入輸出(General Purpose 1nput/0utput,簡稱為GPIO) 口傳輸差分信號,并且當(dāng)GPIO作為 輸入時(shí)可以獲得當(dāng)前的電壓數(shù)值作為數(shù)據(jù),這樣,就能夠使家用儀器、電力系統(tǒng)的巡檢設(shè)備 等各種設(shè)備能夠被識別為USB設(shè)備,并采用USB協(xié)議實(shí)現(xiàn)數(shù)據(jù)通信,有助于統(tǒng)一設(shè)備之間的 通信方式。 下面將詳細(xì)描述本發(fā)明的實(shí)施例。 根據(jù)本發(fā)明的實(shí)施例,提供了一種設(shè)備模擬的實(shí)現(xiàn)裝置,該裝置可以設(shè)置于從設(shè) 備。 如圖l所示,根據(jù)本發(fā)明實(shí)施例的設(shè)備模擬的實(shí)現(xiàn)裝置包括總線接口層模塊(還 可稱為USB BUS Interface Layer) 1,用于通過GPIO接口實(shí)現(xiàn)從設(shè)備連接的主設(shè)備與從設(shè)備之間的數(shù)據(jù)傳輸(包括接收來自主設(shè)備的USB總線數(shù)據(jù)以及向主設(shè)備發(fā)送USB總線 數(shù)據(jù));設(shè)備層模塊(還可稱為USB DeviceLayer)2,用于控制從設(shè)備的端點(diǎn)緩存器(端點(diǎn) buffer)對主設(shè)備與從設(shè)備之間的傳輸?shù)臄?shù)據(jù)進(jìn)行保存,其中,端點(diǎn)緩存器用于在設(shè)備層模 塊的控制下保存由主設(shè)備發(fā)送至從設(shè)備的數(shù)據(jù)、以及從設(shè)備將要發(fā)送至主設(shè)備的數(shù)據(jù),該 模塊主要可以支持Bulk和Control兩種傳輸模式;功能層模塊(還可稱為USBFunction Layer) 3,用于對從設(shè)備進(jìn)行枚舉,以及解析并執(zhí)行來自主設(shè)備的命令,并且能夠?qū)崿F(xiàn)數(shù)據(jù) 傳輸協(xié)議。 通過本發(fā)明的上述裝置,能夠在從設(shè)備不具有USB客戶端控制器硬件的情況下, 通過設(shè)備芯片的GPIO接口模擬USB的數(shù)據(jù)傳輸,使得主設(shè)備(即,該從設(shè)備所插入的主機(jī), 該主機(jī)可以包括計(jì)算機(jī)等)能夠?qū)⒉迦氲脑O(shè)備(即,從設(shè)備)識別為USB設(shè)備,考慮到從設(shè) 備基帶芯片的速率,能夠?qū)脑O(shè)備模擬為低速USB設(shè)備并基于USBl. 1協(xié)議實(shí)現(xiàn)主設(shè)備與從 設(shè)備之間的數(shù)據(jù)傳輸。 其中,總線接口層模塊具體可以通過兩個(gè)GPIO接口實(shí)現(xiàn)主設(shè)備與從設(shè)備之間的 數(shù)據(jù)傳輸,其中,兩個(gè)GPIO接口上的信號組成一對差分信號,并且從設(shè)備與主設(shè)備之間傳 輸?shù)臄?shù)據(jù)的內(nèi)容由這一對差分信號的電壓表示。 根據(jù)本發(fā)明的裝置能夠使用GPIO接口中斷功能來觸發(fā)從設(shè)備接收主設(shè)備發(fā)送過 來的信號,對于GPIO輸入功能,可以讀取電平信號的高低來識別為O或者1信號;而對于 GPIO輸出功能,可以讀取發(fā)送的端點(diǎn)緩存器的內(nèi)容并轉(zhuǎn)化為高低電平信號傳遞給主設(shè)備
丄山順。 由于本發(fā)明采用GPIO信號的上拉或下拉來實(shí)現(xiàn)信號的輸出,而USB協(xié)議對于信號 上升沿下降沿以及電平信號的穩(wěn)定時(shí)間都有嚴(yán)格的時(shí)間要求,因此需要調(diào)節(jié)GPIO扣的電 壓GPIO的電平的高低轉(zhuǎn)換,考慮到設(shè)備芯片基帶主頻,本發(fā)明可以模擬低速USB設(shè)備,例 如,可以實(shí)現(xiàn)USB1. 1協(xié)議的1. 5M/S的傳輸協(xié)議。 USB協(xié)議1. 1要求USB電壓需要滿足圖2所示的曲線,S卩,電壓最高值應(yīng)當(dāng)達(dá)到 4. 6V,最低值為-1. OV,最高值的持續(xù)時(shí)間最小應(yīng)當(dāng)為60ns,上升沿和下降沿的持續(xù)時(shí)間應(yīng) 當(dāng)為4-20ns, 一個(gè)周期的長度為166. 7ns,頻率為6MHz。 GPIO接口的最高輸出電壓為3. 3V, 為了使根據(jù)本實(shí)施例的USB模擬裝置的電壓能夠滿足圖2所示的電壓要求,在進(jìn)行USB模 擬時(shí),總線接口模塊可以采用具有中斷檢測、輸入輸出功能的兩個(gè)同組的GPIO來檢測或者 輸出差分信號,可以采用電阻或調(diào)壓設(shè)備來改變GPIO接口的電壓曲線,使電壓滿足圖2所 示的要求,并且,這2個(gè)GPIO接口可以作為DP和DM,并且可以基于匿和DP識別所模擬的 USB設(shè)備,例如,在匿上拉時(shí),根據(jù)USB協(xié)議將從設(shè)備識別為低速設(shè)備。例如,如圖3所示,從 設(shè)備的基帶芯片(baseband)通過匿、DP、以及總線VBUS與個(gè)人計(jì)算機(jī)(即,圖3中所示的 PC On-The-Go)連接,增加低壓降穩(wěn)定器(Low Drop-0ut regulator,簡稱為LDO)作為調(diào)壓 設(shè)備,從而提高輸出的電平值,并且可以另加增加兩個(gè)獨(dú)立的GPIO (圖3中所示的GPI0CTL1 和GPI0CTL2)來控制兩個(gè)LDO的開關(guān),并且LDO與電源管理(Power Management,簡稱為PM) 連接,并且,總線接口模塊能夠觸發(fā)中斷檢測,并在中斷檢測過程中接收主設(shè)備向從設(shè)備發(fā) 送的數(shù)據(jù)。 并且,如圖l所示,總線接口層模塊l還用于從端點(diǎn)緩存器中讀取主設(shè)備發(fā)送至 從設(shè)備的數(shù)據(jù),并對該數(shù)據(jù)進(jìn)行解碼和冗余循環(huán)校驗(yàn)(CyclicRed皿dancy Check,簡稱為CRC),并根據(jù)解碼后得到的進(jìn)程標(biāo)識(PID)向主設(shè)備返回正確應(yīng)答消息(ACK)或錯(cuò)誤應(yīng)答 消息(NAK),并對從設(shè)備發(fā)送給主設(shè)備的數(shù)據(jù)進(jìn)行編碼,此外,該模塊還能夠?qū)?shù)據(jù)收發(fā)出 錯(cuò)時(shí)進(jìn)行處理。 設(shè)備層模塊2可以用于進(jìn)行端點(diǎn)緩存器等各個(gè)端點(diǎn)的狀態(tài)、從設(shè)備的狀態(tài)、以 及主設(shè)備與從設(shè)備之間傳輸?shù)臄?shù)據(jù)的維護(hù)。具體地,該設(shè)備層模塊2可以根據(jù)總線數(shù)據(jù) 維護(hù)設(shè)備的狀態(tài)(Resume Reset Suspend)、維護(hù)兩種類型的中斷(設(shè)備、IN OUT中斷) (Enable、判斷中斷Endpoint)、維護(hù)分組(Packet)數(shù)據(jù)(Frame Co皿t、Current Endpoint、 Endpoint FIFO)、以及根據(jù)總線數(shù)據(jù)維護(hù)端點(diǎn)的狀態(tài)(sendstall sentstall FlushFIFO Inpktrdy Mode FIF0FULLFIF0N0TEMPTY),該模塊可以與總線接口層模塊1交互中斷要求 (InterruptRequest)維護(hù)全局變量數(shù)值。 并且,在根據(jù)本實(shí)施例的裝置中,端點(diǎn)緩存(S卩,端點(diǎn)Buffer)可以包括EP0、EPIN、 和EP0UT三個(gè)部分,其中,EPO可用于實(shí)現(xiàn)設(shè)備的鑒別,EPIN用于實(shí)現(xiàn)接收數(shù)據(jù),EPOUT用于 實(shí)現(xiàn)待發(fā)送數(shù)據(jù)的存儲,這樣,通過接收和發(fā)送Buffer的數(shù)據(jù),就能夠?qū)崿F(xiàn)USB Bus Layer 數(shù)據(jù)的接收和待發(fā)送數(shù)據(jù)的存儲。 功能層模塊3還能夠?qū)崿F(xiàn)設(shè)備枚舉的應(yīng)用程序編程接口 (ApplicationProgramming Interface,簡稱為API)以及設(shè)備讀寫扇區(qū)的API,功能層模塊 3可以與設(shè)備層模塊2進(jìn)行Cmd、 API交互。 圖4是根據(jù)本實(shí)施例的裝置的實(shí)現(xiàn)USB數(shù)據(jù)傳輸?shù)南⒘鞒虉D。 其中,總線接口層模塊中可以單獨(dú)配置終端服務(wù)程序(Interrupt
ServiceRoutine,簡稱為ISR),用于實(shí)現(xiàn)終端檢測。 如圖4所示,ISR能夠進(jìn)行USB中斷,接收數(shù)據(jù)并將數(shù)據(jù)保存到發(fā)送/接收緩存區(qū) 中,之后,可以激活高級ISR(HISR);響應(yīng)于事件的激活,設(shè)備層模塊可以查看數(shù)據(jù),并讀取 發(fā)送/接收緩存區(qū)中的數(shù)據(jù),對數(shù)據(jù)進(jìn)行內(nèi)部處理后保存到端點(diǎn)緩存區(qū)中,設(shè)備層模塊向 功能層模塊發(fā)送消息,功能層模塊讀取端點(diǎn)緩存區(qū)中的數(shù)據(jù)并進(jìn)行接收處理,之后將接收 的數(shù)據(jù)保存在端點(diǎn)緩存區(qū)中,并向設(shè)備層模塊發(fā)送消息;設(shè)備層模塊將數(shù)據(jù)填入發(fā)送/接 收緩存區(qū)中傳輸給ISR進(jìn)行數(shù)據(jù)發(fā)送,并且將通知消息發(fā)送給功能層模塊,由功能層模塊 進(jìn)行發(fā)送結(jié)束處理。 除了可以采用硬件方式實(shí)現(xiàn)上述模塊之外,對應(yīng)于USB協(xié)議規(guī)范提出的實(shí)現(xiàn)框 架,可以采用匯編語言編寫中斷服務(wù)程序來實(shí)現(xiàn)總線接口層模塊的功能。對于設(shè)備層模塊 和功能層模塊,可以分別通過線程實(shí)現(xiàn)其功能。 圖5示出了根據(jù)本實(shí)施例的裝置進(jìn)行數(shù)據(jù)接收和發(fā)送的處理流程圖。 如圖5所示,首先,需要建立三個(gè)接收和發(fā)送為13個(gè)字節(jié)的緩存區(qū),設(shè)置GPIO為
低電平中斷,并且可以通過scatter文件設(shè)置總線接口模塊的匯編代碼運(yùn)行在從設(shè)備基帶
芯片的內(nèi)部RAM上。 低速設(shè)備在控制傳輸時(shí),最大的Payload為8Byte,所以 一 幀最多的Bit為 PID+data+CRC16 = 8+64+bitstiff+16 = 88+bitstiff ,所以在該層申i青(12+1) byte的三 個(gè)Buffer,存儲接收或者發(fā)送的數(shù)據(jù)。l個(gè)字節(jié)保留8個(gè)位的同步信號。
在進(jìn)入中斷服務(wù)程序,USB總線中斷觸發(fā),設(shè)置ARM指令關(guān)閉IRQ、 FIQ中斷(即, 避免中斷檢測重復(fù)執(zhí)行)。設(shè)置GPIO為輸入方式,讀取電平數(shù)據(jù)。
6
檢測同步信號(Sync) 0x000001,如果是Reset信號,則由HISR通知設(shè)備層模塊; 如果是發(fā)送給從設(shè)備的USB幀,則進(jìn)行CRC校驗(yàn)、NRZI解碼、去除Bitstuff ,進(jìn)行USB幀的 解析,包括獲取幀類型、數(shù)據(jù)長度、數(shù)據(jù)內(nèi)容。 如果是Setup或者Out Token包,則表示該包為主設(shè)備發(fā)送的數(shù)據(jù),其后必然跟隨 由數(shù)據(jù)包;之后,對于DATA0/DATA1,查詢當(dāng)前是否有空的Buffer可以存儲,如果沒有的話, 則返回NAK握手信號,如果有,則保留此幀,同時(shí)發(fā)送HISR給設(shè)備層模塊。
如果USB幀解析后得到的是IN Token包,則表示此時(shí)主設(shè)備端在請求數(shù)據(jù),之后 查詢發(fā)送緩存區(qū)是否有空間,如果有,則添加Bitstuff ,進(jìn)行CRC16編碼,并進(jìn)行NRZI編碼 發(fā)送出去;如果沒有,則表示從設(shè)備的USB客戶端側(cè)沒有將數(shù)據(jù)準(zhǔn)備好,返回NAK握手信號。
如果從設(shè)備準(zhǔn)備好,可以發(fā)送數(shù)據(jù),則判斷當(dāng)前是否存在可以發(fā)送的數(shù)據(jù),如果不 存在,則返回NAK握手信號;如果存在,則讀取發(fā)送包數(shù)據(jù),NRZI編碼,添加同步信號后進(jìn)行 發(fā)送。 在返回NAK或發(fā)送數(shù)據(jù)之后,可以使能ARM中斷,并且設(shè)置GPIO為中斷檢測引腳。
在上述處理中,對該裝置需要滿足以下時(shí)序要求在傳輸一幀數(shù)據(jù)過程中的每位 之間的時(shí)序要求;在傳輸時(shí)的兩幀信號之間的時(shí)序要求;從設(shè)備對于主設(shè)備信號的回饋, 比如ACK、 NAK的時(shí)序要求;對于Reset信號,Suspend信號的采樣時(shí)序要求。
因?yàn)楸緦?shí)施例實(shí)現(xiàn)的是低速設(shè)備1. 5M/s,要求每1/1. 5M間隔發(fā)送一個(gè)bit,如果 用C語言的等待函數(shù),因?yàn)榈却龝r(shí)間是按照編譯成為匯編代碼后的所占據(jù)的機(jī)器指令周 期,然后乘上CPU的1/時(shí)鐘頻率。所以無法精確實(shí)現(xiàn)lbit/1. 5M,考慮使用ARM匯編語言來 接收和發(fā)送數(shù)據(jù),NOP指令來匹配這樣的時(shí)鐘要求,并且在此過程中,需要關(guān)閉所有中斷,保 證此過程不被外部事務(wù)打斷,來實(shí)現(xiàn)嚴(yán)格的時(shí)序要求。 在上述處理中,對于中斷響應(yīng)時(shí)間需要滿足以下要求所有的數(shù)據(jù)接收、NRZI編 碼、Bitstuff解碼、端點(diǎn)正確性判斷,以及發(fā)送握手信號,以及當(dāng)需要發(fā)送數(shù)據(jù)時(shí)都在中斷 里實(shí)現(xiàn),對于GPIO的中斷相應(yīng)時(shí)間有很高的要求,一幀數(shù)據(jù)前面是同步信號,在因?yàn)橹袛?相應(yīng)時(shí)間丟失掉2、3bit后,可以判斷出是否為同步信號,假如丟失掉5、6bit后,就無法判 斷,導(dǎo)致丟失掉正常的數(shù)據(jù),因而直接在ARM的中斷服務(wù)程序中添加服務(wù)程序來處理USB數(shù) 據(jù)校驗(yàn)、接收、發(fā)送等。所以IRQ的中斷反應(yīng)時(shí)間是很關(guān)鍵的一個(gè)條件,通常FIQ的響應(yīng)時(shí) 間為1. l-1.2us,根據(jù)USB低速設(shè)備的速度,此時(shí)應(yīng)該是SYNC包的第二位,所以可以讀取到 SYNC的后幾位; 對于CPU的運(yùn)行狀態(tài),在運(yùn)行期間需要禁止CPU進(jìn)入Sle印,同時(shí)也可以禁止動態(tài) 調(diào)頻(DCM)的功能,這樣可以確保CPU工作在一個(gè)特定的頻率下。 對于任務(wù)的執(zhí)行區(qū)域,如果代碼在NOR中,取值的時(shí)間會比較長,通常是指令運(yùn)行 速度的4-5倍,如果放在內(nèi)部SRAM中執(zhí)行的話,可以保證取指的過程不會影響到指令的執(zhí) 行速度,因此匯編代碼的執(zhí)行放在Baseband內(nèi)部的Ram中。需要注意此代碼不能過長,否 則很容易超出基帶芯片的內(nèi)部RAM大小。 在圖5所示的處理中,描述了總線接口層模塊的處理,對于設(shè)備層模塊所實(shí)現(xiàn)的 處理,首先建立三個(gè)端點(diǎn)EPO、 EPIN、 EPOUT。 EPO數(shù)據(jù)存貯的Buffer為12個(gè)字節(jié),EPIN/ EPOUT數(shù)據(jù)存貯的Buffer為16K。 在接收到中斷HISR發(fā)送的消息后,關(guān)閉系統(tǒng)動態(tài)調(diào)頻功能;對于接收的USB信號
7作進(jìn)一步處理,如果是Reset信號,那么復(fù)位設(shè)備狀態(tài),各端點(diǎn)的數(shù)據(jù)Buffer以及數(shù)據(jù)發(fā)送 接收相應(yīng)的變量;如果是數(shù)據(jù)包,將匯編接收的Buffer,進(jìn)一步解析,提取數(shù)據(jù)復(fù)制到端點(diǎn) 的m_deV_rx_buff [16k],釋放對應(yīng)的匯編Buffer,準(zhǔn)備接收下一幀數(shù)據(jù);如果是數(shù)據(jù)包,接 收到的數(shù)據(jù)長度為0,出錯(cuò),不予處理;如果接收到功能層模塊的消息,準(zhǔn)備發(fā)送數(shù)據(jù),則對 于數(shù)據(jù)包作進(jìn)一步處理,包括添加DATA0/DATA1的PID信息;七、打開系統(tǒng)動態(tài)調(diào)頻功能
對于功能層模塊所實(shí)現(xiàn)的處理,需要根據(jù)Token包的類型,假如在枚舉階段,根據(jù) USB協(xié)議,功能層模塊需要填充端點(diǎn)Buffer,發(fā)送消息給設(shè)備層模塊;假如在文件傳輸階 段,則調(diào)用相應(yīng)得文件系統(tǒng)函數(shù),存儲到Flash或者發(fā)送數(shù)據(jù)到的相應(yīng)得端點(diǎn)Buffer,發(fā)送 消息給設(shè)備層模塊。 在開發(fā)中可以使用數(shù)據(jù)存儲訪問在RAM文件系統(tǒng)的方式代替讀取存貯速度都較 低的Nor Flash或者Nand Flash,另外需要注意的是在發(fā)送數(shù)據(jù)到Host端時(shí),因?yàn)榈退俚?數(shù)據(jù)包最大的Payload為8個(gè)字節(jié),所以需要分多次來傳輸,并且要打包處理,需要首先回 復(fù)大量的NAK,告訴Host端仍在正常工作,但目前來不及發(fā)送數(shù)據(jù),這樣會消耗掉BB端的大 量處理器資源。同理,在接收Host端的數(shù)據(jù)時(shí),芯片要頻繁切換到中斷模式接收數(shù)據(jù),也需 要消耗掉大量的處理器資源。 根據(jù)本實(shí)施例的裝置在Bulk only Transfer時(shí),最大的Payload為8個(gè)Byte,所 以傳輸一次數(shù)據(jù)包占有的Bit為 Sync+PID+data+CRC16+E0P+IDLE = 8+8+64+bitstif f+16+2+1 = 99+bitstif f ,所 以,該裝置進(jìn)行模擬時(shí)理論上能達(dá)到的最大數(shù)據(jù)傳輸率為 (1. 5M氺64/(99+bitstiff))/8氺70X效率損耗二 8500Byte/S = 83KByte/s 優(yōu)選地,對于效率損耗包括操作系統(tǒng)調(diào)度,其他相對于USB task而言更高優(yōu)先級
的task占用的系統(tǒng)資源等。 本發(fā)明還提供了 一種設(shè)備模擬的實(shí)現(xiàn)方法。 如圖6所示,根據(jù)本發(fā)明的設(shè)備模擬的實(shí)現(xiàn)方法包括步驟S601,從設(shè)備將鑒別信
息提供給與從設(shè)備連接的主設(shè)備,并解析來自與主設(shè)備的命令;步驟S603,根據(jù)解析后的
命令,從設(shè)備通過通用輸入輸出接口實(shí)現(xiàn)與從設(shè)備與主設(shè)備之間的數(shù)據(jù)傳輸,其中,從設(shè)備
控制從設(shè)備的端點(diǎn)緩存器對主設(shè)備與從設(shè)備之間的傳輸?shù)臄?shù)據(jù)進(jìn)行保存。 其中,通用輸入輸出接口的數(shù)量為兩個(gè),其中,兩個(gè)通用輸入輸出接口上的信號組
成一對差分信號,并且從設(shè)備與主設(shè)備之間傳輸?shù)臄?shù)據(jù)由一對差分信號的電壓表示。 并且,在從設(shè)備向主設(shè)備傳輸數(shù)據(jù)的情況下,還包括調(diào)節(jié)從設(shè)備向主設(shè)備發(fā)送的
差分信號的電壓,使調(diào)節(jié)后的電壓滿足預(yù)定要求,其中,預(yù)定要求是指通用串行總線USB協(xié)
議對電壓的要求。 綜上所述,借助于本發(fā)明的上述技術(shù)方案,能夠在從設(shè)備不具有USB客戶端控制 器硬件的情況下,通過設(shè)備芯片的GPIO接口模擬USB的數(shù)據(jù)傳輸,使得主設(shè)備(即,該從設(shè) 備所插入的主機(jī),該主機(jī)可以包括計(jì)算機(jī)等)能夠?qū)⒉迦氲脑O(shè)備(即,從設(shè)備)識別為USB 設(shè)備,考慮到從設(shè)備基帶芯片的速率,能夠?qū)脑O(shè)備模擬為低速USB設(shè)備并基于USB 1. l協(xié) 議實(shí)現(xiàn)主設(shè)備與從設(shè)備之間的數(shù)據(jù)傳輸。 以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
一種設(shè)備模擬的實(shí)現(xiàn)裝置,設(shè)置于從設(shè)備,其特征在于,包括功能層模塊,用于將所述從設(shè)備的鑒別信息提供給與所述從設(shè)備連接的主設(shè)備,以及解析來自與所述主設(shè)備的命令;設(shè)備層模塊,用于根據(jù)解析后的所述命令控制所述從設(shè)備的端點(diǎn)緩存器對所述主設(shè)備與所述從設(shè)備之間的傳輸?shù)臄?shù)據(jù)進(jìn)行保存;總線接口層模塊,用于通過通用輸入輸出接口實(shí)現(xiàn)與所述從設(shè)備與所述主設(shè)備之間的數(shù)據(jù)傳輸。
2. 根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)裝置,其特征在于,所述總線接口層模塊,通過兩個(gè)通用 輸入輸出接口實(shí)現(xiàn)所述主設(shè)備與所述從設(shè)備之間的數(shù)據(jù)傳輸,其中,所述兩個(gè)通用輸入輸 出接口上的信號組成一對差分信號,并且所述從設(shè)備與所述主設(shè)備之間傳輸?shù)臄?shù)據(jù)由所述 一對差分信號的電壓表示。
3. 根據(jù)權(quán)利要求2所述的實(shí)現(xiàn)裝置,其特征在于,所述總線接口層模塊包括 調(diào)壓器,用于調(diào)節(jié)由所述從設(shè)備向所述主設(shè)備發(fā)送的差分信號的電壓,使調(diào)節(jié)后的所述電壓滿足預(yù)定要求。
4. 根據(jù)權(quán)利要求3所述的實(shí)現(xiàn)裝置,其特征在于,所述預(yù)定要求是指通用串行總線 USB協(xié)議對電壓的要求。
5. 根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)裝置,其特征在于,所述總線接口層模塊還用于對所述 主設(shè)備發(fā)送至所述從設(shè)備的數(shù)據(jù)進(jìn)行解碼和校驗(yàn),并根據(jù)校驗(yàn)結(jié)果向所述主設(shè)備返回正確 應(yīng)答消息或錯(cuò)誤應(yīng)答消息。
6. 根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)裝置,其特征在于,所述總線接口層模塊還用于在所述 主設(shè)備向所述從設(shè)備發(fā)送數(shù)據(jù)的情況下,觸發(fā)中斷檢測,并在中斷檢測過程中接收所述主 設(shè)備向所述從設(shè)備發(fā)送的數(shù)據(jù)。
7. 根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)裝置,其特征在于,所述設(shè)備層模塊還用于維護(hù)所述端 點(diǎn)緩存器的狀態(tài)、所述從設(shè)備的狀態(tài)以及所述主設(shè)備與所述從設(shè)備之間傳輸?shù)臄?shù)據(jù)。
8. —種設(shè)備模擬的實(shí)現(xiàn)方法,其特征在于,包括從設(shè)備將鑒別信息提供給與所述從設(shè)備連接的主設(shè)備,并解析來自與所述主設(shè)備的命令;根據(jù)解析后的所述命令,所述從設(shè)備通過通用輸入輸出接口實(shí)現(xiàn)與所述從設(shè)備與所述 主設(shè)備之間的數(shù)據(jù)傳輸,其中,所述從設(shè)備控制所述從設(shè)備的端點(diǎn)緩存器對所述主設(shè)備與 所述從設(shè)備之間的傳輸?shù)臄?shù)據(jù)進(jìn)行保存。
9. 根據(jù)權(quán)利要求8所述的實(shí)現(xiàn)方法,其特征在于,所述通用輸入輸出接口的數(shù)量為兩 個(gè),其中,所述兩個(gè)通用輸入輸出接口上的信號組成一對差分信號,并且所述從設(shè)備與所述 主設(shè)備之間傳輸?shù)臄?shù)據(jù)由所述一對差分信號的電壓表示。
10. 根據(jù)權(quán)利要求9所述的實(shí)現(xiàn)方法,其特征在于,所述在所述從設(shè)備向所述主設(shè)備傳 輸數(shù)據(jù)的情況下,還包括調(diào)節(jié)所述從設(shè)備向所述主設(shè)備發(fā)送的差分信號的電壓,使調(diào)節(jié)后 的所述電壓滿足預(yù)定要求,其中,所述預(yù)定要求是指通用串行總線USB協(xié)議對電壓的要求。
全文摘要
本發(fā)明公開了一種設(shè)備模擬的實(shí)現(xiàn)方法和裝置,該裝置包括功能層模塊,用于將從設(shè)備的鑒別信息提供給與從設(shè)備連接的主設(shè)備,以及解析來自與主設(shè)備的命令;設(shè)備層模塊,用于根據(jù)解析后的命令控制從設(shè)備的端點(diǎn)緩存器對主設(shè)備與從設(shè)備之間的傳輸?shù)臄?shù)據(jù)進(jìn)行保存;總線接口層模塊,用于通過通用輸入輸出接口實(shí)現(xiàn)與從設(shè)備與主設(shè)備之間的數(shù)據(jù)傳輸。通過本發(fā)明,能夠在從設(shè)備不具有USB客戶端控制器硬件的情況下,通過設(shè)備芯片的GPIO接口模擬USB的數(shù)據(jù)傳輸,使得主設(shè)備能夠?qū)⒉迦氲膹脑O(shè)備識別為USB設(shè)備,考慮到從設(shè)備基帶芯片的速率,能夠?qū)脑O(shè)備模擬為低速USB設(shè)備并基于USB1.1協(xié)議實(shí)現(xiàn)主設(shè)備與從設(shè)備之間的數(shù)據(jù)傳輸。
文檔編號G06F13/10GK101763324SQ20091026598
公開日2010年6月30日 申請日期2009年12月31日 優(yōu)先權(quán)日2009年12月31日
發(fā)明者王海軍 申請人:中興通訊股份有限公司