嵌入式系統中USB主機控制器的實現

      通用串行總線(USB)接口具有簡單靈活、高帶寬、易於擴展和熱插拔等優點,它目前已成爲數碼設備的標準接口之一,小到U盤、MP3,大到數碼相機、打印機,USB接口的身影無處不在。但我們目前所使用的USB移動設備多爲USB的外設(Device) , 比如USB的移動硬盤、USB接口的數碼相機,一般只能在PC上使用,即只能通過PC實現文件和數據的交換。
 
  業界和用戶的需求呼喚USB主機的嵌入式化,因此在嵌入式系統中實現USB主機功能成了USB設計領域的熱點之一。
 
  迄今爲止,嵌入式USB主機的最大市場和增長點在移動消費電子設備領域, 比如PDA與USB記憶棒傳遞數據、MP3之間傳遞歌曲、數碼相機連接打印機等。
 
  嵌入式USB主機也逐漸用於工業測控領域,用來實現數據的採集和交換。原來數據採集和交換大多是使用軟盤、串行接口(RS232/RS485)或以太網等方式。軟盤存儲容量小、可靠性差,而串行接口或以太網都需要佈線施工,接入成本大,而且不具備移動性。現在,越來越多的嵌入式系統採用通過USB總線連接的測控設備。
 
       USB控制器ISP1161簡介
 
       一個USB系統一般由一個USB主機(HOST)、一個或多個USB集線器(HUB)和一個或多個USB設備節點(NODE)組成。USB協議規定了USB主機與USB設備的主從關係,所以USB接口產品的應用離不開USB主機的開發。USB主機是包含USB軟件驅動和USB主機硬件功能接口的計算機系統實體。USB主機硬件是指USB主機控制器,它規定了USB主機硬件接口,因而在設計USB協議棧時必須瞭解相關的USB主機控制器規範。
 
       針對嵌入式系統應用的USB主機控制器規範是康柏、微軟、松下等公司提出的OHCI(開放式主機控制器接口)標準。
 
       飛利普公司的ISP1161芯片支持OHCI標準,它是一個符合USB2.0全速規範的單片主機控制器和設備控制器。ISP1161可以僅作爲主機控制器或設備控制器使用,也可以同時作爲主機和設備控制器使用。
 
       ISP1161可分爲四大功能模塊:
 
       1)主機控制器模塊:實現主機控制器的功能。提供兩個下行端口,每個下行端口都有自己的過流檢測輸入管腳和電源轉換控制輸出管腳。
 
       2)設備控制器模塊:實現設備控制器的功能。提供一個上行端口,有其自身的VBUS檢測輸入管腳
 
       3)微處理器接口模塊:兩個USB控制器共用一個微處理器總線接口,它們有相同的數據總線,I/O地址不同。它們也有各自的中斷請求輸出管腳和獨立的DMA通道。
 
  4)電源調整和上電覆位模塊:除了可以軟件復位外,還可以通過RESET_N管腳實現硬件復位。ISP1161只接受5V或3.3V的電壓,當輸入5V電壓時,電源調整器會將其調整爲3.3V。
 
 
  ISP1161 主機控制器子模塊的功能框圖示於圖1,主機控制器的下行端口可與任意一個符合USB 規範的USB 設備和包含USB 上行端口的USB 集線器相連。類似地,設備控制器的上行端口可與任意一個符合USB 規範的USB主機和包含USB 下行端口的USB 集線器相連。
  相關嵌入式應用系統的架構
  本文涉及的嵌入式系統是一個指紋驗證系統,其總體結構如圖2所示。系統採用英特爾公司的32位400MHz微處理器PXA255以滿足指紋識別系統計算量大的需要,PXA255具有豐富的外圍接口,如:LCD控制器、串口、CF卡接口、USB客戶端口,但 沒有USB 主機控制器。此外,硬件平臺還包括存儲模塊、數據採集模塊、USB模塊、網絡通信模塊和調試及下載接口模塊,系統總體結構框圖如圖2所示。

  32位微處理器PXA255中央處理器結合一個51單片機完成對整個系統的控制操作。8M的FLASH和32M的SDRAM用作存儲模塊。具有USB設備接口的富士通公司指紋傳感器芯片MBF200實現對指紋數據的採集和轉換。通過USB主機接口實現嵌入式系統與USB設備——MBF200之間的通信。鑑於該指紋驗證系統要實現網絡化,因而配置了CF接口無線網卡。通過PXA255本身的串口控制器與PC通信,用於調試和下載Windows CE鏡像文件。人機交互用於顯示運行結果和註冊/增刪指紋數據。
  對於PXA255處理器而言,ISP1161類似於一個具有16位數據總線的存儲設備。ISP1161工作在並行I/O(PIO)模式,只佔用兩個I/O端口和微處理器兩個內存空間。微處理器用兩根地址線A0和A1來讀寫ISP1161內部寄存器和FIFO緩衝RAM。地址線A0用來選擇傳輸命令數據:A0=1,處理器訪問ISP1161的命令端口;A0=0,處理器訪問ISP1161的數據端口。地址線A1用來選擇主機控制器或設備控制器模式:A1=0,切換至主機控制器模式;A1=1,切換至設備控制器模式。本系統中ISP1161PXA255的硬件接口如圖3所示。用可編程I/O模式實現數據通信,即ISP1161的數據總線經總線驅動接到PXA255的數據總線D[0:15],A0和A1分別接到PXA255的A1和A2以實現主機和設備、命令和數據端口的選擇。I/O口地址的完全解碼包括芯片選擇信號CS及地址線A1和A0。I/O口的訪問方向由RD及WR信號控制:當RD爲低時,微處理器從ISP1161A1 數據口讀取數據;當WR爲低時,微處理器向指令端口寫入一個指令,或向數據端口寫入數據。
  USB主機軟件設計
  系統的軟件平臺是微軟公司的Windows CE。
 
       ISP1161軟件模型
 
  USB主機軟件系統包括通用串行總線驅動程序(USBD)、主機控制器驅動程序(HCD)和客戶端軟件。客戶端軟件是應用代碼或USB類驅動程序。USBD和HCD共同用作USB主機堆棧。USBD以I/O請求包的形式指定某一特定通道傳輸數據,並把請求分解成多個事務。HCD與ISP1161之間以PTD(PHILIPS Transfer Description)的形式進行通信。I/O請求包的數據在底層被打包成PTD的格式後再與ISP1161進行通信。
   ISP1161只提供了一部分符合OHCI標準的寄存器,而其硬件是支持OHCI標準的。所以爲使它完全符合OHCI標準,我們設計時在系統內存中定義一套完全符合OHCI規範的操作寄存器和HCCA控制器通信區,軟件讀寫其中數據,以軟件模擬硬件來實現完整的OHCI規範,並按照OHCI規範的要求,在系統內存中維護了一套完整的數據結構,以完成對主機控制器初始化、狀態讀取並收集USB主機與設備通信的詳細信息。
 
       ISP1161的數據傳輸模式
 
  ISP1161提供了HC控制和狀態寄存器、ATL緩衝區和ITL緩衝區。其中HC控制和狀態寄存器包括一套可操作的符合OHCI的寄存器(32位)和一套ISP1161特定的寄存器(16位)。通過對相應寄存器的操作,主機控制器驅動程序就可以完成對主機控制器初始化和配置工作。ATL緩衝區和ITL緩衝區用來實現USB系統支持的四種不同數據傳輸:控制傳輸、批量傳輸、中斷傳輸和實時傳輸。ITL是實時傳輸的緩衝的FIFO,而ATL是USB其它三種類型傳輸的緩衝FIFO。
 
  ISP1161數據傳輸的具體過程爲:硬件初始化完成後,調用HCD的MakePTDdata函數在系統存儲器中以PTD數據結構定義一塊數據緩衝區。再調用S
 
endPTD函數發送PTD數據,其中的WritePTDtoATL函數將數據複製到ATL或ITL緩衝區。通過ISP1161硬件掃描ATL或ITL緩衝區以實現與USB終端設備進行通信。
 
  硬件掃描過程就是把數據發送到總線上,以硬件掃描ATL緩衝區爲例:當HCD通過HcTransferCounter寄存器向ATL緩衝區寫入HcATLBufferPort寄存器指定的字節數時,主機控制器硬件開始掃描ATL緩衝區;當操作完成後,HcBufferStatusPort寄存器中的位ATLBufferFull被置位,ATLBufferFull位從邏輯0到邏輯1的跳變使硬件開始掃描ATL緩衝區內的PTD;當ATLInt中斷產生時,表明硬件停止掃描ATL緩衝區,HcBufferStatus寄存器中的位ATLBufferDone被置位,HCD又可以訪問ATL緩衝區了。相關的部分僞代碼如下:
點擊看原圖
       數據結構鏈表的處理
  在HCD將PTD從系統內存複製到ATL或ITL緩衝區之前,HCD必須通過集合數據結構來建立和追蹤PTD。HCD的責任是追蹤所有已連接設備的每個端點的屬性,如端點最大封包大小、端點地址和該端點從屬的設備地址。另外,HCD必須管理每個端點新的PTD的產生和已經完成的PTD的處理。所以使用一個有效的數據結構體系可以加快主機控制器的操作。本設計實現的數據結構類似於OHCI中定義的數據結構,如圖4所示。此數據結構由三部分組成:三種類型端點的隊列(控制傳輸端點、批量傳輸端點和中斷傳輸端點)、每種端點的一個PTD列和一個完成隊列。每個列隊由一個全局指針指定,這個全局指針保持隊列中第一個端點(EP)隊列頭的地址。每個EP隊列頭指向一個PTD列。一個PTD列保留着等待被主機控制器處理的PTD。在控制、批量和中斷傳輸中,PTD被複制到ATL緩衝區。一旦PTD被放入ATL緩衝區,主機控制器就在下一幀中處理該PTD。
       結束語
  在USB主機端功能實現後,我們又開發了USB設備——指紋傳感器MBF200的驅動程序,並按照規定要求實現了指紋數據的採集和傳輸。
 
 
 
 
有關連接

[url=http://www.chinaicmart.com/suppliers/488/5082-5503-0K000.html]5082-5503-0K000[/url]
 
[url=http://www.chinaicmart.com/suppliers/487/5082-513Y-HK000.html]5082-513Y-HK000[/url]
 
[url=http://www.chinaicmart.com/suppliers/476/5082-3606-IL500.html]5082-3606-IL500[/url]
 
[url=http://www.chinaicmart.com/suppliers/489/5082-5507-IG000.html]5082-5507-IG000[/url]
[url=http://www.chinaicmart.com/suppliers/466/5082-333Y-IK200.html]5082-333Y-IK200[/url]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章