999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于SEP3203的嵌入式USB主機系統的設計

2008-12-31 00:00:00錢正英
電腦知識與技術 2008年22期

摘要:該文是以USB HOST技術為核心,基于SEP3203嵌入式微處理器,NUCLEUS PLUS實時操作系統為開發平臺,利用主機控制芯片ISP1160來實現USB HOST的功能,支持USB HOST在嵌入式系統與U盤等兼容標準USB存儲協議的存儲設備間的通信。該文給出了硬件實現及對主機的系統軟件體系結構的設計方法。為USB在嵌入式領域的應用提供了成功的應用實例。

關鍵詞: SEP3203;嵌入式USB 主機;ISP1160; Mass Storage Class

中圖分類號: TP273 文獻標識碼: A文章編號:1009-3044(2008)22-678-04

USB HOST Design in Embedded System Based on SEP3203

QIAN Zheng-ying, LING Ming

(College of Integrated Circuit, Southeast University, Nanjin 210008,China)

Abstract:This design is USB HOST technology at the core, Based on the platform withCPU SEP3203 and RTOS with Nucleus PLUS, ISP1160 host controller chip is used to achieve the function of USB HOST. This design support the communication with USB storage device which is compatible with Mass Storage Class protocol. This passage described the frames of USB host hardware circuit, analyzed its software structure and provided a successful sample of USB application in embedded system.

Key words:SEP3203; Embedded USB host; ISP1160; Mass Storage Class

1 引言

在電子產品大量使用的今天,USB對我們已是再熟悉不過的事物了,幾乎所有的外設電子產品都帶有USB接口,USB以接口通用性好、實時性強、傳輸方式多樣、成本低、支持即插即用、易于擴展且便于使用等優點快速贏得了市場。USB的廣泛應用推動了USB主機系統在嵌入式領域的發展。本文就USB HOST在嵌入式系統領域的應用提供切實可行的方案,并實現對兼容標準USB存儲協議的存儲設備的讀寫功能。為產品的多功能性和市場區分上提供了足夠的空間。

2 嵌入式USB主機系統簡介

一個USB系統一般由一個USB主機、一個或多個USB集線器和一個或多個USB設備節點組成。USB總線采用的是樹形結構,主從工作模式,USB主機根據各個設備的屬性,周期性地訪問各個設備,USB設備則被動地響應USB主機的訪問請求。從概念上講,USB主機是包含USB主機控制器驅動程序、USB驅動軟件和一系列相關USB設備的客戶端驅動程序的系統。USB主機和設備間的通信可由下圖1表示:

圖1 USB通信模型層次結構圖

USB主機與USB設備兩端都被劃分成不同的通信層次。除了對設備控制外,主機和設備間的通信還有USB主機協議提供的四種數據類型的傳輸方式,即控制傳輸、批量傳輸、中斷傳輸和實時傳輸。主機為每個設備提供了客戶端驅動程序,通過與設備功能接口的通信,完成對設備的驅動。在與設備的實際通信中,主機控制器對所有的傳輸類型的傳輸要求進行總體協調,既要滿足一定的優先級的要求,又要對不同類型的傳輸均衡處理。下面給出了整個主機系統的硬件設計方案及軟件設計。

3 USB主機硬件設計

嵌入式主機系統的核心包括微處理器和主機控制器。USB主機控制器提供了USB主機與USB設備之間連接的物理接口。

在本文中,采用SEP3203作為中央處理器,主控制器選用的是PHILLIPS公司的ISP1160。ISP1160 為一嵌入式USB(Universal Serial Bus:通用串行總線)主控器(HC),其遵循USB規范2.0,支持全速(12Mbit/s)及低速(1.5Mbit/s)兩種數據傳輸模式。ISP1160提供兩個下行端口,每一個下行端口都有一個過流(OC)檢測輸入引腳及電源開關控制輸出引腳。HC的下行端口能與USB兼容性設備及擁有USB上行端口的USB集線器連接。圖2給出了ISP1160的各功能模塊。

圖2 ISP1160功能模塊框圖

在ISP1160內部有一個FIFO RAM,分為ITL和ATL兩個區,中斷傳輸、控制傳輸、批量傳輸都是用ATL,而同步傳輸用ITL。只要將主機要發送的數據按照固定的格式寫入ATL區,那么ISP1160就會自動的將數據包發送給設備,并且自動讀取設備的返回數據,將返回數據寫入ATL區。那么在驅動程序的編寫者看來,我們需要做的只是將標準請求之類的數據包按要求的格式寫入ATL區,就可以一直等待,直到有ATL中斷產生,然后我們查看ATL中斷類型,如果是數據已經被讀取,說明此時ATL區的數據是返回的設備數據,我們只要去讀ATL區的數據就可以了。

控制器的大部分硬件邏輯中除了完成對傳輸的控制和處理,對數據包的解析和打包以及對USB傳輸信號的編碼和解碼外,還為驅動程序提供了中斷向量等接口。

3.1 和微處理器的接口方式

ISP1160支持可編程I/O尋址模式和DMA模式兩種方式:本文采用的是可編程I/O尋址模式,這種模式下,相對于微處理器而言ISP1160相當于是一個具有16位數據總線的存儲體設備。在可編程I/O(PIO)模式下,外部微控制器可讀/寫ISP1160 的內部控制寄存器及FIFO緩沖RAM。接口方式簡圖如下:

圖3 ISP1160與微處理器的接口方式

通過片選信號及地址線A0,可完全解碼I/O地址。可通過RD_N及WR_N信號控制I/O存取方式。當RD_N為低電平時,微處理器可從ISP1160數據口讀取數據。當WR_N為低電平時,微控器可向指令端口發送一個指令,或向數據端口發送數據。A0地址線決定了控制的是數據端口還是指令端口:0是數據1是指令。一個完整的寄存器訪問周期,首先為指令階段,然后為數據階段。指令(也可以理解為寄存器的索引)指向ISP1160 的下一個將被訪問的寄存器。一個指令為8 位長,在一個16 位微處理器的數據總線上,指令占用一個低字節,高字節被填充為0。

3.2訪問內部FIFO緩沖RAM的方式

一個完整的HC內部FIFO緩沖RAM訪問周期。對于一個寫周期,微控器首先向指令端口發送一個FIFO緩沖RAM寫指令,然后向數據端口逐個寫入數據,直到達到傳輸字節計數的一半的計數值。HcTransferCounter寄存器可被用來設定一個字節計數,以控制FIFO緩沖RAM的讀/寫周期。

圖4 FIFO RAM訪問周期

4 USB HOST軟件

4.1 USB主機系統結構

圖5顯示了USB主機系統的框架,整個系統分為三層。分別是主機控制器驅動層(HCD),USB驅動層(USBD),客戶端軟件層。客戶端驅動程序提供了不同設備類的驅動。一個USB主機系統中可以有多個主機控制器。

客戶端驅動程序通過IO請求包向USBD層發出數據發送或接收的請求,USB的數據傳輸對客戶端驅動程序是透明的,它只需知道具體的設備類而不關心采用何種方式來傳輸數據。

USBD通過IRP請求知道此設備的屬性和本次數據通信的要求,將本次IRP轉換成USB所能辨識的一系列事務處理交給HCD層或直接交給主機控制器處理。USBD還負責新設備的配置、被拔掉的設備的資源釋放和對客戶端驅動程序的維護等操作。

HCD主要功能是與主機控制器合作完成USB各種事務處理。它根據一定的規則調度所有將被廣播發送到USB上的事務并處理這些事務。調度方法是首先將數據按傳輸類型組成不同的鏈表,每種鏈表包括來自不同設備驅動程序的同一種類型的數據,然后定義不同類型傳輸在一幀中所占帶寬的比例,交給主機控制器處理,控制器根據規則從鏈表上摘下數據塊,根據大小為它創建一個或多個事務處理,完成與設備的數據傳輸。當事務處理完成時,HCD將結果交給USBD層,此外,它還完成對主機控制器和根集線器的配置和驅動等操作。

4.2 USB主機協議

USB 協議棧可分為3層:從上到下依次是客戶端軟件層(Client Driver),USB驅動層(USB Driver),主機控制器驅動層(Host Control Driver)。和大部分協議棧一樣:下層為上層提供服務,上層為下層提供接口。其中HCD位于最底層,是與硬件相關的直接操作硬件模塊,因而不同的芯片需要特定的HCD。USBD是整個USB系統的核心,是整個USB協議的主要實現層。Client Driver是運行于USBD之上的設備驅動層,為USB插入設備提供驅動。

1)主機控制器驅動層(HCD)

HCD是USB系統中直接與硬件交互的軟件模塊,位于整個協議棧的底層,其主要功能有:主機控制器硬件初始化;為USBD層提供接口函數;提供根集線器的配置,控制功能,完成4種類型的傳輸工作等等。HCD與主機控制器合作一起完成USB事務的處理。

2)USB驅動層(USB Driver)

USBD主要實現功能有:USB總線管理,USB總線設備和帶寬的管理,USB的4種類型數據傳輸,USB HUB驅動,為USB設備類驅動提供相關接口,其中USB HUB作為一類特殊的USB設備,其驅動程序被包含在USBD層。下面介紹USB系統軟件的的幾個重要的數據結構之間的關系:

圖6 USB主要數據結構間關系

①數據結構usb_bus

USB驅動可以支持多套USB總線,即支持多個USB主機控制器同時工作,usb_bus用來保存一套USB總線的相關信息。其中root_hub為指向子系統的根集線器的指針;USBD用bus_list來維護系統中所有的USB總線資源;bandwidth_allocated表示當前子系統的帶寬使用情況。

②數據結構usb_device

USBD需要對連接到總線上的所有USB設備進行管理和資源分配。usb_device就是用來保存每個USB設備的相關信息。指明了設備所屬的USB系統,并給出了設備號、 描述符、端點的最大包長度及當前設備實體在設備樹中所處的位置等信息。

③數據結構usb_driver

不同的設備類要求有相應的設備驅動。USBD為每個設備類驅動程序維護了一個相關的usb_driver的數據結構。當總線有設備連接操作時,USBD中的USB HUB驅動程序會通過該結構來查找相應的設備驅動程序。該數據結構中的disconnect給USBD提供的函數調用,用于釋放設備的某個接口所占用的資源;driver_list是一個雙向鏈表頭,USBD通過它維護USB子系統中所有的客戶端驅動程序。 usb_driver中還包含了設備類驅動的名稱,以防止重復安裝和卸載。

圖6顯示了三個數據結構之間的關系。USB系統使用統一的數據傳輸結構—URB(USB request block)將數據請求以URB包的形式傳送到USB協議棧中處理,數據傳輸結束后又通過回調函數(complete)返回到不同的客戶端驅動程序。URB包含了建立任何USB傳輸所需要的信息,其主要構成有:USB設備信息,數據傳輸管道,數據傳輸緩沖區,緩沖區長度,回調函數,不同類型數據傳輸必備參數,傳輸過程控制參數等等。它貫穿于USB協議棧對數據傳輸處理的整個過程。各分層協議處理模塊對相同的數據緩沖區進行解析和操作,以提高USB系統的數據處理性能。

3)客戶端軟件層(Client Driver)

① HUB Driver

HUB作為USB 主機和設備相連的中介設備,除了具有HUB本身的一些特性外,它也具有USB設備的必須屬性,包括對它進行枚舉、配置以及驅動程序的注冊工作:客戶端驅動程序為HUB建立了一個任務usb_hub_task,在做完基本的初始化工作后,任務會一致探測是否HUB狀態發生變化,并根據HUB的狀態變化進行相應的處理。

當USB HUB發生變化時, usb_hub_events()將被喚醒,查看HUB的狀態并進行相應的處理。對HUB的每個端口,首先獲取HUB的狀態。通過usb_hub_port_connect_change()來處理設備接入與拔下的動作。如果是新設備接入,則要對設備進行配置:通過函數usb_alloc_dev() 來給接入的設備分配新的設備結構;通過usb_hub_port_reset()將設備復位;usb_connect()為設備分配地址;usb_new_device()對設備進行枚舉,并為設備加載驅動。如果是設備拔下,則必須清除HUB的相應狀態,為下次探測新設備做好準備。在HUB發現新設備,并且加載相應的驅動后通知上層應用程序。

② Storage Driver為USB Mass Storage Class設備驅動。

storage_probe() 函數探測設備是否是合法的SCSI 設備。根據Mass Storage Class設備類協議的規定,設備描述符或者接口描述符中的class域必須為0x08(表明為Mass Storage Class)。sub_class為0x06表明為支持SCSI命令集設備,為0x04則表明為支持UFI命令集設備;protocol為0x50表明為BULK_ONLY傳輸協議。在設備卸載時通過storage_disconnect()釋放設備之前所申請的相應資源。

5 嵌入式主機和存儲設備的通信

海量存儲設備類規范是USB總線規范中的一個子類。在設備的枚舉階段,USB主機是通過獲得USB設備的描述符信息來獲知設備的類型的。海量存儲設備的USB描述符包含了海量存儲設備的基本信息。以采用Bulk_Only傳輸方式的海量存儲設備為例,下面先介紹主機和USB存儲設備之間的數據傳輸過程。

主機和設備之間通過傳送CBW指令和CSW狀態字,以及DATA來完成數據的存儲和讀取。

當主機查詢到有設備插入到USB總線后,主機首先向設備發送USB標準請求,通過獲得設備的描述符得到設備的信息,進而對設備進行配置。當主機對設備枚舉成功后,主機就可以和設備通過端口進行通信了。圖7描述了USB主機和存儲設備之間數據交換的過程。

批傳送利用toggle BIT機制來保證接收器和發送器同步。當端點被適當的控制傳送設置后,批傳送被初始定位在DATA0,主機也將從DATA0開始第一個批傳送。通過使用DATA0和DATA1的包標識符來完成同步。這種機制也保證了數據發送端和接收端都能正確地解釋事務處理的握手時相。

5.1 數據傳輸過程分析

移動存儲設備的客戶端驅動程序要為文件系統提供接口函數。在命令處理層通過完成U盤文件系統的初始化,并通過讀取U盤第一個扇區,識別U盤的文件系統信息,加載文件系統,且文件系統通過讀寫接口函數存儲設備指定區域的讀寫操作。

本設計的協議傳輸層采用的是移動存儲設備廣泛支持的BULK-ONLY協議。它提供給命令處理層的接口函數為usb_stor_Bulk_transport。首先根據srb中的命令信息將讀寫數據命令封裝成CBW數據結構;然后創建OUT批量傳輸管道,并調用USBD層的接口函數usb_stor_bulk_msg發送CBW,告訴設備即將發送或接收數據,如果發送成功,則調用USBD提供的接口函數,完成實際的數據傳輸。最后創建IN批量傳輸管道,從設備讀取設備的狀態CSW,獲得傳輸結果。

6 結束語

本文主要討論了在ARM體系中開發USB HOST的設計思路,從硬件到軟件都給出了必要說明。本文是基于在EPOS中的應用所作的研究,在EPOS上擴展USB主機功能可以使產品更有競爭力,也便于面向新的應用。USB技術已趨于成熟,但是開發相關的新的領域內的應用還需在實踐中逐漸探索。相信隨著技術的進步,USB技術將得到更廣闊更深層次的應用。

參考文獻:

[1] 周立功.USB2.0與OTG規范及開發指南[M].北京:航空航天大學出版社,2004.

[2] Jan Axelson.USB大全[M].北京:中國電力出版社,2001.

[3] 涂曉峰,李培玉.基于StrongARM嵌入式Linux系統下的USB通信實現[J].計算機工程與應用,2004,10:116-118,192.

[4] 何英.一種嵌入式文件系統的設計與實現[D].成都:電子科技大學計算機系,2001.

[5] 邵同震,孫光民.嵌入式系統中USB總線驅動的開發及應用[J].北京:計算機應用研究,2002,(12):93-96.

[6] 姜波,陳英,胡濤,等.可移植的USB協議棧實現原理與技術研究[J].計算機工程與應用.2003,(28):156-158.

主站蜘蛛池模板: 日韩精品无码免费专网站| 欧美a在线| 午夜日b视频| 亚洲国产中文综合专区在| 老司国产精品视频91| 久久精品视频亚洲| 九色综合伊人久久富二代| 日韩高清成人| 亚洲成人高清无码| 性喷潮久久久久久久久 | 欧美午夜在线观看| 亚国产欧美在线人成| 亚洲精品国产综合99久久夜夜嗨| 欧美日韩亚洲国产主播第一区| 爱做久久久久久| www.91在线播放| 久久久久久国产精品mv| 美女国产在线| 亚洲午夜18| 高清色本在线www| 四虎永久在线视频| 中文字幕永久视频| 国产不卡在线看| 日韩精品毛片| 亚洲无码精品在线播放| 国产在线91在线电影| 国产三级成人| 三上悠亚在线精品二区| 女人爽到高潮免费视频大全| 麻豆国产在线观看一区二区| 国产精品成人久久| 亚洲欧洲日韩久久狠狠爱| 综合色在线| 欧美性色综合网| 天天做天天爱天天爽综合区| 在线色综合| 热久久综合这里只有精品电影| 国产真实乱了在线播放| 亚洲中文字幕久久精品无码一区| 老司国产精品视频91| 欧美另类精品一区二区三区| 国产精品护士| 国产69精品久久久久妇女| 精品久久久久成人码免费动漫 | 超清无码一区二区三区| 91精品啪在线观看国产| 亚洲色无码专线精品观看| 天天综合网色中文字幕| 狠狠色成人综合首页| 国产福利在线观看精品| 欧美日韩中文国产va另类| 国产黄色爱视频| 欧美综合区自拍亚洲综合天堂| 国产美女在线免费观看| 欧美在线一级片| 国产日韩欧美中文| 老色鬼欧美精品| 日韩无码黄色| 色综合色国产热无码一| 91娇喘视频| 亚洲综合狠狠| 91色在线观看| 欧美精品亚洲日韩a| 国产丝袜第一页| 国产69精品久久久久孕妇大杂乱 | 国产白丝av| 成人在线不卡视频| 97国产成人无码精品久久久| 91视频99| 国产不卡国语在线| 久无码久无码av无码| 国产精品久久久久无码网站| 国产香蕉国产精品偷在线观看| 丝袜亚洲综合| 亚洲无码37.| 国产麻豆福利av在线播放| 一级黄色欧美| 无码专区第一页| 国产91视频免费| 99热6这里只有精品| 手机在线免费不卡一区二| 美女内射视频WWW网站午夜|