WinCE6.0+S3C6410 USB驅動架構分析

    學習 WinCE 下的 USB 驅動幾天了,有了一個總體的瞭解,這裏對網上的資料和我的的理解作一個總結。軟件平臺是 WinCE6.0 ,硬件平臺是 S 3C 6410
       1 WinCE 設備的三種角色
    USB 是主從結構,分爲主端和從端。通常主端稱爲 Host ,從端稱爲 Client ,可是在 WinCE 系統中有些不一樣,主端稱爲 Host ,從端稱爲 Function
     對於 USB 而言,搭載 WinCE 系統的嵌入式設備能夠扮演三種不一樣的角色,即三種不一樣的功能: Host Function 以及 OTG
    WinCE 設備常常會外接各類 USB 設備,如 RNDIS Print Mass Storage HID 設備等,此時做爲主端使用,實現的是 Host 功能。
     WinCE 設備鏈接 PC 機時,即是做爲從端使用,實現的是 Function 的功能。但此時 WinCE 設備能夠表現爲多種形式,有 Mass Storage RNDIS 或者串口設備。好比 WinCE 設備鏈接 PC 進行同步時表現爲串口設備。
     WinCE 設備實現 OTG 功能時,既能夠做爲主端使用,也能夠作爲從端使用。
       2 WinCE6.0 中的 USB 驅動框架
       USB 的驅動架構以下圖所示,包含了它的三種角色。
3 WinCE6.0 中的 USB 目錄結構
       WinCE6.0 中對 USB 已經有了很好的支持,下面看看微軟已經作了哪些工做。
    從上面的目錄結構能夠看出,微軟提供的 USB 驅動是根據三種不一樣角色來劃分的。 USB 對應着 USB Host 的功能, USBFN 對應着 USB Function 功能, USBOTG 對應着 USB OTG 功能。
      1 WINCE600\PUBLIC\COMMON\OAK\DRIVERS\USB 的下層目錄以下:
    結合架構圖理解, CLASS 文件夾對應 USB Host Client Driver 部分,是上層的應用協議,各個文件夾對應有 HID 設備、打印機、大容量存儲器、 USB 串口等應用。 CLIENTCMN COMMON 兩個文件夾是各類應用的公用代碼。
    HCD 文件夾實現的是控制器驅動程序模塊,爲 USBD 模塊提供底層支持。 HCD 模塊主要提供對各個協議的支持,包括 OHCI(open host controller inferface) UHCI (universal host controller interface) 以及 EHCI (enhanced host controller interface) 。具體的關於這幾個協議的介紹請查看後面的連接資料。
    USBD 文件夾是通用串行總線驅動程序模塊,利用 HCD 模塊的支持,實現各類接口函數提供給上層,使得上層可以與外圍設備進行通訊。
    COMMON INC 文件夾實現的是鎖功能,包含 lock.h lock.cpp
      2 WINCE600\PUBLIC\COMMON\OAK\DRIVERS\USBFN 的下層目錄以下:
    結合架構圖, CLASS 文件夾對應 USB Function Client Driver 部分,下面的各個文件夾對應着 WinCE 設備的表現形態,經常使用的有三大類: RNDIS SERIAL STORAGE 。這些和 USB Host 驅動中的不一樣,那些指的是外圍設備,這裏指的是 WinCE 設備自己。文件夾 COMPOSITEFN UFNPRN 是共用的代碼。
    CONSTROLLER 文件夾實現了底層控制器的驅動。當 WinCE 設備跟 PC USB 線鏈接時,表現爲多種形式:大容量存儲器( Mass Storage )、一個網卡( RNDIS )或者一個串口設備( Serial Class) 等,因此須要一個控制系統,把這部分分離了出來作成一層驅動,叫作 Controller (控制器),由該層驅動來控制 WinCE 設備到底表現成一種什麼形式,包括卸載舊的 Client ,加載新的 Client MDD 文件夾實現的是該部分驅動的 MDD 部分, PDD 部分的硬件是 NET2280 控制器,在文件夾 NET2280 中實現。
    UFNCLIENTLIB 是該驅動的基礎公共代碼。
      3 WINCE600\PUBLIC\COMMON\OAK\DRIVERS\USBOTG 的下層目錄以下:
    USB OTG 結構比較簡單,驅動實現按照標準的流接口形式,分爲 MDD PDD 兩部分, MDD 部分對應上面的文件夾, PDD 部分的硬件採用的是 ISP1301 收發器,在 TRANS 文件夾中實現。
     4 WinCE6.0 系統的 USB 功能定製
    WinCE6.0 USB 相關的定製包含兩部分:內核服務層和設備驅動層。
       內核服務層的定製在 Catalog Items View 中的」 Core OS -> CEBASE -> Core OS Services -> USB Host Support 」,如圖:
        設備驅動層的定製在 Catalog Items View 中的」 Device Drivers -> USB Function -> USB Function Clients 」,如圖:

相關文章
相關標籤/搜索