USB主機控制器的設計
摘要:討論在SoPC(System on a Programmable Chip)系統(tǒng)中設計USB主機接口設備的一般方法,著重闡述主機控制器的驅(qū)動程序開發(fā)。利用Xilinx公司的EDK軟件在ML405開發(fā)板上搭建一個基于PowerPC的片上系統(tǒng),設計EZ-Host的USB主機控制器的Linux驅(qū)動程序,使系統(tǒng)具有USB主機功能,能夠和各種USB設備進行通信,實現(xiàn)SoPC系統(tǒng)上基于Linux的USB接口的擴展,對于開發(fā)其他USB主控制器驅(qū)動具有一定借鑒意義。
關(guān)鍵詞:USB;USB主機控制器;EZ-Host;Linux;SoPC
USB具有簡單、標準的連接方式、支持熱插拔等諸多優(yōu)點,因此已成為流行的接口技術(shù)。USB是典型的主/從結(jié)構(gòu)的總線標準,即只有USB主機才能與USB設備連接。USB總線與計算機系統(tǒng)的接口部分是主機控制器,它可以被看作一個硬件、固件和軟件的綜合體。主機控制器實現(xiàn)主機與設備之間的電氣和協(xié)議層匹配,主要包括:串并轉(zhuǎn)換、幀起始、數(shù)據(jù)處理、協(xié)議使用、傳輸錯誤處理、遠程喚醒、根Hub、主機系統(tǒng)接口等功能。USB設備之間通過USB Hub連接,主機控制器和USB設備之間一般通過根Hub相連。通常主機控制器提供與根Hub相關(guān)的狀態(tài)查詢和控制單元。當有設備插入時,在枚舉過程中,主機控制器驅(qū)動通過查詢和控制單元應答設備偽裝成一個Hub,所以通常稱此Hub為虛擬根Hub。
這里利用EDK軟件搭建一個基于PowerPC的片上系統(tǒng),實現(xiàn)了SoPC系統(tǒng)上基于Linux的USB接口的擴展,使系統(tǒng)具有USB主機功能,能夠和各種USB設備進行通信。
1 開發(fā)環(huán)境
目前Linux 2.6內(nèi)核中的USB支持3種主控制器接口:通用主控制器接口(UHCI)、開放控制器接口(OHCI)及增強主機控制接口(EHCI)。在嵌入式系統(tǒng)中,如果處理器集成有USB主機控制器,則可直接引出USB主控端口;而未集成USB主機控制器的處理器則需使用USB主控器件,從總線上擴展USB主機接口。
這里所采用的開發(fā)環(huán)境是Xilinx公司的ML405開發(fā)板。開發(fā)板上核心FPGA采用Xilinx的XC4VFX20-FF672器件,其內(nèi)置1個PowerPC硬核,2個以太網(wǎng)MAC層控制器。開發(fā)板上還帶有64 MB的DDR SDRAM,10/100/1000以太網(wǎng)端口、帶主機/設備端的USB接口器件(CY7C67300)等。
EZ-Host(CY7C67300)是Cypress半導體公司的全速低耗多端口主機/外設控制器,該器件可方便接至高性能CPU上完成USB主機控制器端的功能;擁有16位RISC指令處理器,可作為協(xié)處理器使用或單獨使用;同時支持USB的OTG協(xié)議,擁有2個可獨立配置并各帶有2個端口的USB串行接口引擎(SIE);既可用作主機,又可用作外設,并支持多達4個主機端口。另外,該器件擁有一個可編程I/O接口模塊,可供各種接口編程使用,可編程實現(xiàn)HPI、HSS、SPI等接口模式。當EZ-Host控制器作為USB主機控制器時,一般采用HPI主機端接口(Host Port Interface)接口模式。
2 硬件設計
Xilinx公司提供一個IP核opb_epc外設控制器(external peripheral controller),為OPB總線與外部同步或異步外圍設備之間的數(shù)據(jù)傳送提供一個通用接口,可方便實現(xiàn)處理器對于外設的控制。一個opb_epe最多可接4個外設,且每個外設可獨立配置成同步或異步模式,其時序參數(shù)(如建立時間、保持時間、訪問時間周期等)都可由用戶設置。opb_epc通過OPB總線接收處理器的讀寫指令,在相應外設接口產(chǎn)生相應
的訪問周期,從而實現(xiàn)處理器對外圍設備的控制。這里使用opb_epc模塊作為控制器,實現(xiàn)PowerPC與EZ-Host的主機控制器的接口通信,嵌入式硬件系統(tǒng)架構(gòu)如圖l所示。
評論