《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 嵌入式VxWorks下基于PCI總線的USB接口主機端設計
嵌入式VxWorks下基于PCI總線的USB接口主機端設計
來源:電子技術應用2014年第2期
劉智武,王建宇,張立輝
中航工業西安航空計算技術研究所,陜西 西安710119
摘要: 分析了USB主機端的層次結構,采用PowerPC8270處理器設計了一種基于PCI總線的USB主機端設備,簡化了主處理器與USB控制器的交互。在VxWorks操作系統下進行了USB主機端驅動的設計和實現,并通過試驗對USB主機端的功能和讀寫速率性能參數進行了測試驗證。測試表明,能夠穩定地支持對USB接口存儲外設的讀寫訪問。
中圖分類號: TP302.1
文獻標識碼: A
文章編號: 0258-7998(2014)02-0005-03
Design of USB host device in embedded VxWorks based on PCI bus
Liu Zhiwu,Wang Jianyu,Zhang Lihui
AVIC Computing Technique Research Institute,Xi′an 710119,China
Abstract: This paper analyses the USB host stack structure. A PCI bus-based USB host device is designed using PowerPC8270 CPU. The design simplifies interaction between host CPU and USB controller, implements the USB host driver in embedded VxWorks operating system. Finally, the USB host function and the speed of read/write are tested on USB storage device. The results slow that this design can support reading and writing USB storage peripheral device steadily.
Key words : USB host;PCI bus;VxWorks

    通用串行總線(USB)是一種用于連接計算機與外圍設備的串行接口標準,具有結構簡單、配置靈活、即插即用、支持熱插拔、可靠性高、成本低等優點[1]。USB接口主機端為支持USB主機協議的計算機系統,在機載計算機領域,USB接口主機端一般為嵌入式的控制設備。USB接口主機端在USB總線上占控制地位,可以掛載USB外設,所有的USB接口傳輸事務由主機端發起,控制整個USB總線工作。
    本文提出一種適用于機載計算機領域的USB接口主機端設計,采用PowerPC系列處理器作為USB主機端的控制器,基于PCI總線與USB控制器連接,構成基于PCI總線的USB接口主機端嵌入式設備。基于VxWorks操作系統完成USB接口主機端的驅動程序設計和開發,實現了一套完整的USB接口主機端軟硬件產品。利用U盤作為USB外設,對所設計的USB接口主機端進行了測試和驗證。結果表明,本文設計的USB接口主機端能夠很好地支持與USB外設的USB通信訪問和控制。
1 USB接口主機端分析
    USB總線系統由USB主機、USB外設及USB互聯總線三部分構成。USB主機作為USB通信主控設備,主動發起對USB外設的訪問、控制及通信操作。USB總線作為一種標準通信協議,其主機端層次結構如圖1所示[2]。

    如圖1所示,USB主機端采用分層結構,其層次包括USB硬件層、USB主機控制器驅動層、USB主機協議驅動層和USB主機應用層,其中USB硬件層功能由硬件USB控制器完成,之上3層由軟件完成。USB硬件層主要由USB主機控制器實現,負責完成USB總線的物理層和鏈路層協議,并對軟件提供配置和操作接口,由軟件實現對USB控制器的通信控制和總線訪問等功能。USB主機控制器驅動層實現USB主機控制器的驅動程序,該部分驅動程序需針對不同的USB主機控制器芯片的操作接口進行開發,一方面,通過軟件實現了USB硬件層的接口,完成對USB控制器基本操作的控制;另一方面,向上層提供了一個統一的接口抽象,屏蔽了底層硬件控制器的差異。USB主機協議驅動層提供USB協議的主機驅動程序,通過USB主機控制器層的抽象,使該部分程序不依賴于具體硬件層,利用下層的封裝接口,實現對USB總線的控制和管理,為上層軟件提供USB總線的訪問控制。USB主機應用層利用USB主機協議層驅動,實現對USB外設的訪問,實現獨立的USB功能,常見的USB主機應用層功能包括USB存儲外設訪問控制、USB鼠標鍵盤訪問控制等。
2 基于PCI總線的USB接口設計
    機載計算機中一般選用具有高可靠性的PowerPC系列處理器。在PowerPC8270處理器芯片中,集成了PCI橋功能,支持標準的PCI總線訪問控制。本文USB主機端硬件設計選用PowerPC8270處理器,通過PCI總線接口連接USB控制器,完成USB主機硬件功能。USB主機核心硬件設計如圖2所示。

    如圖2所示,主機端處理器PowerPC8270芯片通過內部集成的PCI橋功能,經PCI總線連接USB控制器;USB控制器芯片選用ISP1562芯片,該芯片具有標準的PCI總線接口,內部集成PCI核,可支持其作為PCI主設備或從設備工作,內部支持2個OHCI控制器核和1個增強型EHCI控制器核,可支持低速1.5 Mb/s、全速12 Mb/s和高速480 Mb/s的通信速率。在圖2設計中,PowerPC處理器作為PCI主設備,USB控制器作為PCI從設備,PCI總線位寬為32 bit,總線頻率為33 MHz,處理器通過PCI總線實現對USB控制器的配置和對USB總線的訪問控制等操作。USB控制器通過I2C接口外接一片EEPROM,用于支持系統信息的加載和讀取。USB控制器接出USB總線經過保護電路后,連接USB外設,保護電路用來防止USB總線信號因過流、過壓和ESD靜電瞬態放電而導致的USB控制器損壞和通信故障。處理器通過局部的60X總線,掛載SDRAM和Flash存儲器。SDRAM存儲器用于支持主機程序運行,Flash存儲器支持主機端操作系統固件及應用程序的固化存儲。
    采用圖2所示的設計結構和標準PCI接口對USB控制器的配置寄存器進行相應的設置,即可完成對控制器的初始化及訪問控制操作,大大簡化了主處理器與USB控制器之間配置操作的復雜時序和流程控制,為主機端USB驅動及協議軟件設計和實現提供了便利。
3 VxWorks系統下USB主機端軟件設計
    VxWorks操作系統BSP中集成了對USB通信協議的支持,但在實際使用中,需要根據自身硬件的設計、地址空間的劃分及中斷分配等情況,對其通信協議進行修改。USB主機端程序的調試是一個復雜的流程,而BSP中的程序不支持調試功能。因此,在驅動設計和修改中,單獨將VxWorks操作系統BSP中USB相關的程序作為一個部件剝離出來,添加到主機應用程序的工程中,以支持對USB程序的調試,便于程序修改、功能調試和驗證。
3.1 USB主機端軟件設計
    在VxWorks操作系統下,基于PCI總線的USB接口主機端驅動流程設計如圖3所示。

    如圖3所示的USB主機端程序流程中,首先需要進行主機端PCI總線配置及初始化,主要進行PCI橋的寄存器設置、主機端與USB控制器的PCI地址空間劃分、控制器中斷設置等工作。設計的USB接口選用EHCI接口控制器實現高速的USB通信,USB主機協議棧初始化進行EHCI接口控制器的查找,通過PCI總線對EHCI接口的配置寄存器進行設置和初始化,并對USB的主機協議層驅動USBD所需要的全局變量進行初始化操作。控制器初始化及EHCI接口掛接完成對EHCI主機控制器驅動HCD的初始化,并建立控制器驅動HCD與主機協議層驅動USBD的連接關系。USB設備創建和掛載注冊回調函數,當有USB設備連接時,創建USB存儲設備,并將設備掛載到主機文件系統,支持主機對USB存儲設備的讀寫訪問。通過圖3所示流程,完成VxWorks操作系統下USB協議主機端軟件設計,支持USB協議主機端軟件開發。
3.2 PCI橋配置
    PCI總線具有性能高、成本低、開放性和兼容性好等優點,一般采用PCI專用芯片實現PCI總線設備的開發[3]。PowerPC8270處理器內部集成了PCI橋功能,通過該橋實現與USB控制器的訪問控制,在USB主機端軟件開發中(如圖3所示),首先需要進行PCI橋的配置。在軟件上,首先需要進行PCI橋配置接口的設計。PowerPC8270處理器提供兩個地址寄存器,一個為PCI地址寄存器,另一個為PCI數據寄存器。在PCI讀操作時,首先將要讀的PCI總線地址寫入PCI地址寄存器,從PCI數據寄存器即可讀到該地址的數據;在PCI寫操作時,首先將要寫入的PCI總線地址寫入PCI地址寄存器,然后將數據寫入PCI數據寄存器,可以完成一次寫操作。地址寄存器和數據寄存器的基址由處理器的配置字定義,偏移地址分別為0x10900和0x10904。USB控制器作為PCI從設備掛載在主機PCI橋下,根據USB控制器與主機的PCI總線上IDSEL信號的連接方式,可以計算出主機訪問USB控制器的基址。通過該基址加上偏移地址對主機與USB控制器連接的PCI配置空間進行配置。
    通過上述方法,對PCI配置空間的基址BAR0寄存器、命令狀態寄存器、Cache Line長度、總線延遲寄存器進行配置,建立通過BAR0寄存器的地址訪問USB控制器配置寄存器的通路。為了支持上層的USB軟件,需要通過PCI總線建立處理器訪問USB控制器及USB控制器訪問處理器的雙向地址映射關系。處理器訪問USB控制器的地址映射通過BAR0地址的配置來完成,USB控制器訪問處理器的地址映射需要通過主機PCI橋的InBound機制來配置完成,通過配置InBound機制的寄存器,提供一種外部設備通過PCI訪問處理器地址空間的方法。通過PCI橋配置,實現雙向地址映射的示意圖如圖4所示。

    圖4中虛線框代表虛擬地址,實線框代表實際的物理空間。圖4給出了處理器空間和USB控制器空間通過PCI橋的地址映射關系,建立3段地址空間。處理器空間中,通過硬件連接方式確定基址ADDR2,作為處理器訪問控制器的256 B的PCI配置空間;通過向PCI配置中BAR0寄存器寫入ADDR3,建立處理器訪問USB控制器自身配置寄存器空間的映射,根據USB控制器手冊描述,該段空間大小為116 B,處理器對USB控制器的初始化均通過該段空間完成;通過處理器PCI橋的InBound機制,設置InBound基址、大小寄存器,建立控制器訪問處理器內存空間的映射關系。在主機端USB協議棧調試時,可以通過ADDR3的映射來訪問USB控制器的寄存器,判斷其當前的工作狀態,起到故障排查和定位的作用。
    通過PCI橋配置,建立處理器與USB控制器的訪問地址映射,實現兩者的互相訪問,為USB主機端協議功能的實現提供基礎支持。
3.3 USB主機端軟件實現
    在PCI配置完成的基礎上進行USB主機端軟件設計。按照圖3所示的流程實現對USB總線的管理和控制,進行初始化、應用程序注冊、動態鏈接注冊等功能。USBD初始化相關的API包括usbdInitialize、usbdShutdown、usbdHcdAttach和usbdHcdDetach共4個,完成usbdLib庫的初始化、關閉usbdLib庫、連接HCD和斷開HCD功能;使用usbdClientRegister和usbdClientUnregister 2個API實現應用程序注冊和取消注冊功能,USBD允許同時有多個應用程序模塊使用USB總線,因此對于要使用USB總線的應用程序模塊,需要先在USBD中進行注冊,而不再使用USB的模塊應當取消在USBD中的注冊,以節省主機端資源;動態連接注冊API接口函數usbdDynamicAttachRegister和usbdDynamicAttachUnRegister用于注冊回調函數,當USB總線上有設備插入或設備拔出動作時,回調函數能夠收到報告并進行相應處理,對于插入操作,回調函數進行設備類型判斷、設備創建操作,對于拔出操作,回調函數進行設備類型確認、設備銷毀操作。
4 測試驗證
    采用標準的U盤設備對本文設計的USB主機端進行了功能測試和讀寫速度性能測試,測試結果如表1所示。

 

 

    表1針對主機設備未插入卡、插入卡和拔出卡3種場景下USB主機端的串口輸出進行了測試。在未插入卡的情況下,USB主機端完成了協議棧初始化、USBD驅動初始化、EHCI控制器初始化并連接EHCI控制器與USBD驅動;當有卡插入主機端時,觸發回調函數工作,首先查找到主機設備下的卡設備,然后創建/bd0文件系統,完成卡設備到/bd0文件系統的掛載;當拔出卡時,觸發回調函數的移除設備操作,主機端移除/bd0文件系統。
    向主機端插入U盤設備,分別寫入和讀取1 MB~10 MB數據,測試主機端對U盤外設的讀取速率,結果如圖5所示。
    圖5中,橫軸為每次讀或寫的數據量大小,縱軸為所測量出來的讀寫速率。從圖可以看出,隨著每次讀寫數據量的增大,讀寫的速率基本保持穩定,而讀取的速率比寫入的速率快4 Mb/s左右。計算平均值可得,本文設計的USB主機端寫入U盤的速率為5.92 Mb/s,讀取U盤的速率為9.77 Mb/s。

    本文基于PowerPC處理器設計并實現了一種基于PCI總線的USB主機端設備,并在VxWorks操作系統下設計并實現了其PCI配置、USB主機端驅動及協議軟件,能夠穩定地支持對U盤等存儲外設的訪問,在工程上取得了良好的應用。
參考文獻
[1] 楊偉,劉強,顧新.Linux下USB設備驅動研究與開發[J].計算機工程,2006,32(19):283-285.
[2] 張楊,于銀濤.VxWorks內核、設備驅動與BSP開發詳解[M]. 北京:人民郵電出版社,2009.
[3] 鄧鳳軍,張龍,王益忠.基于PCI總線的HDLC通信卡的設計與實現[J].電子技術應用,2012,38(8):30-32.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 日日操天天操 | 日本一本高清视频 | 欧美成人香蕉网在线观看 | 欧美视频第一页 | 就操视频 | www.91成人| 日本午夜在线视频 | 伊人五月天婷婷 | 日日夜夜亚洲 | 亚洲色图 在线视频 | 精品视频69v精品视频 | 极品色天使在线婷婷天堂亚洲 | 国产高清一区二区三区 | 国产在线a免费观看 | 天堂va欧美ⅴa亚洲va一国产 | 成人青青草 | 国产日本在线 | 深夜在线网站 | 九九99九九在线精品视频 | 免费高清a级毛片在线播放 免费高清欧美一区二区视频 | 亚洲欧美日韩人成 | 在线看无码的免费网站 | 久久综合五月天婷婷伊人 | 永久在线观看视频 | 特级毛片永久久免费观看 | 91成人高清在线播放 | 日本成人中文字幕 | 亚洲女女同志videos | 亚洲第一中文字幕 | 成人无遮挡免费网站视频在线观看 | 成人毛片免费看 | 天天射综合 | 99久久中文字幕伊人 | 激情综合丁香 | 国产成人久久精品激情91 | 亚洲精品影视 | 97婷婷狠狠成为人免费视频 | 亚洲一页 | 欧美videos另类精品 | free中国性 | 男女午夜免费视频 |