<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式系統中USB主機控制器的設計

嵌入式系統中USB主機控制器的設計

作者: 時(shí)間:2009-12-16 來(lái)源:網(wǎng)絡(luò ) 收藏

過(guò)去僅應用于個(gè)人計算機,而在領(lǐng)域的巨大潛力還沒(méi)有開(kāi)發(fā)出來(lái),中的應用包括KVM開(kāi)關(guān)、數碼相機、PDA、打印機、機頂盒以及移動(dòng)電話(huà)等。本文將介紹在中應用時(shí)其。

本文引用地址:http://dyxdggzs.com/article/152226.htm

嵌入式系統被定義為硬件和固件(獨立的或作為更大型系統的一部分)通常帶有某種操作系統,操作系統可以是Windows CE、VxWorks或其它由“自編代碼”構成的更簡(jiǎn)單系統。根據這樣的定義,可以認為任何帶有處理器的電子裝置均可以作為USB嵌入式。

嵌入式系統挑戰

在基于PC的系統中,USB操作一般需要三種部件,分別是通常作為PCI子系統的、USB堆棧以及USB類(lèi)驅動(dòng)器。

主機是集成主板芯片組的一部分,USB堆棧則包含主板芯片及通用主機控制器接口(UCHI)和開(kāi)放主機控制器接口(OHCI)驅動(dòng)程序以及USB驅動(dòng)程序(usbd.sys),在PC上實(shí)現USB需要上述領(lǐng)域的專(zhuān)門(mén)技術(shù)。

在嵌入式USB系統中,其主要組成部分與PC系統類(lèi)似,如嵌入式主機控制器芯片、帶OHCI堆棧的實(shí)時(shí)操作系統(RTOS)以及專(zhuān)用驅動(dòng)程序?,F有很多可供選擇的主機控制器芯片,有些帶有處理器,有些則是基于寄存器的,對器件的選擇將影響到其下面兩層。

很多公司都可提供RTOS,最好選擇一個(gè)能配合在一起工作的處理器和RTOS,然后在其上添加應用代碼。如果沒(méi)有真正的RTOS,某些控制器則用一個(gè)“框架”,可在其上構造應用程序。我們后面將介紹這種框架以及如何在上面構建應用。

在PC上實(shí)現USB具有非常豐富的可用資源,包括高達512MB的存儲器、20-60GB的硬盤(pán)以及2GHz或更快的微處理器。此外,多年來(lái)Windows、MAC OS以及Unix等操作系統也一直支持USB,而且世界上還有成千上萬(wàn)的工程師在基于PC的USB應用程序和設備驅動(dòng)程序。而對嵌入式系統來(lái)說(shuō),通常只有不超過(guò)64K的存儲器,以及運行于12MHz~33MHz的處理器,且沒(méi)有硬盤(pán)。由于USB對嵌入式系統相對較新,因此可能只有為數不多的工程師擁有這方面的經(jīng)驗。

控制器與框架

下面我們以賽普拉斯EZ-Host為例介紹嵌入式系統USB控制器與框架結構。EZ-Host有兩個(gè)“串行接口引擎”,每個(gè)引擎包含兩個(gè)USB端口,因此無(wú)需使用額外硬件EZ-Host便可控制四個(gè)USB設備。

EZ-Host器件具有固件結構,可管理大多數USB主機的詳細請求。該結構另一個(gè)特點(diǎn)是支持網(wǎng)絡(luò )集線(xiàn)器。鍵盤(pán)/集線(xiàn)器組合在一起常常帶來(lái)這樣的問(wèn)題,即它究竟是帶有集線(xiàn)器的鍵盤(pán)還是帶有鍵盤(pán)的集線(xiàn)器?答案應該是帶有鍵盤(pán)的集線(xiàn)器。因此要了解集線(xiàn)器后面的鍵盤(pán),還需要提供集線(xiàn)器支持。幸好,這里的框架代碼包含了對集線(xiàn)器的支持。

EZ-Host框架包含所有實(shí)現USB主機功能所必需的固件,包括任務(wù)調度、設備枚舉、帶寬分配以及功率管理。另外應用程序作為固件的一部分,控制專(zhuān)用USB設備并將其數據傳遞給最終應用。

框架的核心是TD處理器。TD處理器的運行基于一種稱(chēng)為“任務(wù)描述器(TD)”的數據結構,使用其信息與USB硬件尤其是“串行接口引擎(SIE)”進(jìn)行通信。需要注意的是每個(gè)SIE控制兩個(gè)端口,而且每個(gè)SIE具有一個(gè)TD處理器。EZ-Host框架使用了多種數據結構實(shí)現其操作,這些結構包括TD和USB請求模塊(URB)。

任務(wù)描述器是傳遞給硬件的數據結構,包含特定硬件接口(如SIE)和端口編號的數據字段、終點(diǎn)數、收發(fā)數據緩沖器長(cháng)度、數據包ID編碼以及URB結構指示器。

URB含有TD所需的邏輯信息,該邏輯信息包括USB設備緩沖器、安裝軟件包以及USB設備結構指示器。

進(jìn)行USB事務(wù)處理時(shí),URB帶有事務(wù)處理分配及其裝入的數據結構,而后URB提交給TD處理器,TD處理器再將URB加入TD列表??臻e時(shí),TD處理器處理TD列表,安排傳輸時(shí)序,并將設定好的TD傳送給EZ-Host硬件進(jìn)行處理。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 控制器 設計 主機 USB 系統 嵌入式

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>