


下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、過(guò)去USB僅應(yīng)用于個(gè)人計(jì)算機(jī),而在嵌入式系統(tǒng)領(lǐng)域的巨大潛力還沒(méi)有開(kāi)發(fā)出來(lái),USB在嵌入式系統(tǒng)中的應(yīng)用包括KVM開(kāi)關(guān)、數(shù)碼相機(jī)、PDA、打印機(jī)、機(jī)頂盒以及移動(dòng)電話等。本文將介紹在嵌入式系統(tǒng)中應(yīng)用USB時(shí)其主機(jī)控制器的設(shè)計(jì)。 嵌入式系統(tǒng)被定義為硬件和固件(獨(dú)立的或作為更大型系統(tǒng)的一部分通常帶有某種操作系統(tǒng),操作系統(tǒng)可以是Windows CE、VxWorks或其它由“自編代碼”構(gòu)成的更簡(jiǎn)單系統(tǒng)。根據(jù)這樣的定義,可以認(rèn)為任何帶有處理器的電子裝置均可以作為USB嵌入式主機(jī)。嵌入式系統(tǒng)設(shè)計(jì)挑戰(zhàn) 在基于PC的系統(tǒng)中,USB操
2、作一般需要三種部件,分別是通常作為PCI子系統(tǒng)的主機(jī)控制器、USB堆棧以及USB類(lèi)驅(qū)動(dòng)器。 主機(jī)控制器是集成主板芯片組的一部分,USB堆棧則包含主板芯片及通用主機(jī)控制器接口(UCHI和開(kāi)放主機(jī)控制器接口(OHCI驅(qū)動(dòng)程序以及USB驅(qū)動(dòng)程序(usbd.sys,在PC上實(shí)現(xiàn)USB需要上述領(lǐng)域的專門(mén)技術(shù)。 在嵌入式USB系統(tǒng)中,其主要組成部分與PC系統(tǒng)類(lèi)似,如嵌入式主機(jī)控制器芯片、帶OHCI堆棧的實(shí)時(shí)操作系統(tǒng)(RTOS以及專用驅(qū)動(dòng)程序。現(xiàn)有很多可供選擇的主機(jī)控制器芯片,有些帶有處理
3、器,有些則是基于寄存器的,對(duì)器件的選擇將影響到其下面兩層。 很多公司都可提供RTOS,最好選擇一個(gè)能配合在一起工作的處理器和RTOS,然后在其上添加應(yīng)用代碼。如果沒(méi)有真正的RTOS,某些控制器則用一個(gè)“框架”,可在其上構(gòu)造應(yīng)用程序。我們后面將介紹這種框架以及如何在上面構(gòu)建應(yīng)用。 在PC上實(shí)現(xiàn)USB具有非常豐富的可用資源,包括高達(dá)512MB的存儲(chǔ)器、20-60GB的硬盤(pán)以及2GHz或更快的微處理器。此外,多年來(lái)Windows、MAC OS以及Unix等操作系統(tǒng)也一直支持USB,而且世界上還
4、有成千上萬(wàn)的工程師在設(shè)計(jì)基于PC的USB應(yīng)用程序和設(shè)備驅(qū)動(dòng)程序。而對(duì)嵌入式系統(tǒng)來(lái)說(shuō),通常只有不超過(guò)64K的存儲(chǔ)器,以及運(yùn)行于12MHz33MHz的處理器,且沒(méi)有硬盤(pán)。由于USB對(duì)嵌入式系統(tǒng)相對(duì)較新,因此可能只有為數(shù)不多的工程師擁有這方面的經(jīng)驗(yàn)??刂破髋c框架 下面我們以賽普拉斯EZ-Host為例介紹嵌入式系統(tǒng)USB控制器與框架結(jié)構(gòu)。EZ-Host有兩個(gè)“串行接口引擎”,每個(gè)引擎包含兩個(gè)USB端口,因此無(wú)需使用額外硬件EZ-Host便可控制四個(gè)USB設(shè)備。 EZ-Host器件具有
5、固件結(jié)構(gòu),可管理大多數(shù)USB主機(jī)的詳細(xì)請(qǐng)求。該結(jié)構(gòu)另一個(gè)特點(diǎn)是支持網(wǎng)絡(luò)集線器。鍵盤(pán)/集線器組合在一起常常帶來(lái)這樣的問(wèn)題,即它究竟是帶有集線器的鍵盤(pán)還是帶有鍵盤(pán)的集線器?答案應(yīng)該是帶有鍵盤(pán)的集線器。因此要了解集線器后面的鍵盤(pán),還需要提供集線器支持。幸好,這里的框架代碼包含了對(duì)集線器的支持。 EZ-Host框架包含所有實(shí)現(xiàn)USB主機(jī)功能所必需的固件,包括任務(wù)調(diào)度、設(shè)備枚舉、帶寬分配以及功率管理。另外應(yīng)用程序作為固件的一部分,控制專用USB設(shè)備并將其數(shù)據(jù)傳遞給最終應(yīng)用。 框架的核心
6、是TD處理器。TD處理器的運(yùn)行基于一種稱為“任務(wù)描述器(TD”的數(shù)據(jù)結(jié)構(gòu),使用其信息與USB硬件尤其是“串行接口引擎(SIE”進(jìn)行通信。需要注意的是每個(gè)SIE控制兩個(gè)端口,而且每個(gè)SIE具有一個(gè)TD處理器。EZ-Host框架使用了多種數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)其操作,這些結(jié)構(gòu)包括TD和USB請(qǐng)求模塊(URB。 任務(wù)描述器是傳遞給硬件的數(shù)據(jù)結(jié)構(gòu),包含特定硬件接口(如SIE和端口編號(hào)的數(shù)據(jù)字段、終點(diǎn)數(shù)、收發(fā)數(shù)據(jù)緩沖器長(zhǎng)度、數(shù)據(jù)包ID編碼以及URB結(jié)構(gòu)指示器。 URB含有TD所需的邏輯信息,該邏輯信息包括USB設(shè)備緩沖
7、器、安裝軟件包以及USB設(shè)備結(jié)構(gòu)指示器。 進(jìn)行USB事務(wù)處理時(shí),URB帶有事務(wù)處理分配及其裝入的數(shù)據(jù)結(jié)構(gòu),而后URB提交給TD處理器,TD處理器再將URB加入TD列表??臻e時(shí),TD處理器處理TD列表,安排傳輸時(shí)序,并將設(shè)定好的TD傳送給EZ-Host硬件進(jìn)行處理。為了執(zhí)行控制轉(zhuǎn)移,可以使用框架函數(shù)send_request(,send_request(函數(shù)將分配一個(gè)傳遞給TD處理器的URB結(jié)構(gòu)。URB應(yīng)該包含有關(guān)設(shè)置狀態(tài)的信息,并且借助參數(shù)傳遞給send_request(。URB需要的信息包括:* 請(qǐng)求類(lèi)型:表明USB請(qǐng)求類(lèi)型的字節(jié),該字節(jié)包含表示
8、傳輸方向、傳輸類(lèi)型以及傳輸接受方的位。* 請(qǐng)求:11種標(biāo)準(zhǔn)USB請(qǐng)求中的一種,這些請(qǐng)求包括:Clear_Feature、Get_Configuration、Get_Descriptor、Get_Interface、Get_Status、Set_Address、Set_Configuration、Set_Descriptor、Set_Feature、Set_Interface、Synch_Frame。* 值:特殊請(qǐng)求字段。* 索引:特殊請(qǐng)求字段。* 長(zhǎng)度:相關(guān)數(shù)據(jù)緩沖器的大小 載入用于URB的設(shè)置信息之后,便可將其它設(shè)備信息裝入U(xiǎn)RB,如地址、速度
9、、終點(diǎn)數(shù)以及傳輸方向,還有表示傳輸類(lèi)型的字節(jié)和“回調(diào)”函數(shù)指示器。利用回調(diào)函數(shù)可以在框架內(nèi)進(jìn)行某些并行操作,也可在硬件處理USB操作的同時(shí)執(zhí)行其它任務(wù)。TD需要USB傳輸類(lèi)型信息,這樣框架就可以安排正確的傳輸類(lèi)型時(shí)序。此外,與批量或中斷傳輸相反,框架一次只允許進(jìn)行一個(gè)控制傳輸操作。 裝入所有URB信息之后,URB便被提交給TD處理器。TD處理器是框架的組成部分,它與硬件直接通信,處理有關(guān)傳輸?shù)牡图?jí)詳細(xì)資料。TD完成任務(wù)后,TD處理器將程序控制權(quán)由原始調(diào)用指定的“回調(diào)”函數(shù)轉(zhuǎn)給send_request(函數(shù)。 圖2顯示了調(diào)用
10、帶回調(diào)函數(shù)的send_request(。這里我們使用控制傳輸以獲得某鍵盤(pán)的國(guó)家代碼,在get_country_code(函數(shù)中可看到send_request(的調(diào)用,注意send_request(調(diào)用中的最后一個(gè)參數(shù)是回調(diào)函數(shù)。在TD處理器確定硬件完成處理后執(zhí)行該函數(shù),此時(shí)回調(diào)函數(shù)將獲得返回的數(shù)據(jù)緩沖器,將其與HID描述器結(jié)構(gòu)相匹配,并存取與國(guó)家代碼對(duì)應(yīng)的字節(jié),然后URB被釋放。 EZ-Host框架值得注意的最后一個(gè)特點(diǎn)是設(shè)備驅(qū)動(dòng)程序的使用。在執(zhí)行過(guò)程中,設(shè)備驅(qū)動(dòng)程序?qū)?zhí)行三個(gè)功能,即停止、啟動(dòng)和運(yùn)行。啟動(dòng)某設(shè)備驅(qū)動(dòng)程序便是運(yùn)行它的run(函數(shù),該函數(shù)對(duì)某些
11、數(shù)值進(jìn)行初始化,并分配一個(gè)用于數(shù)據(jù)傳輸?shù)闹貜?fù)出現(xiàn)的URB。對(duì)于鼠標(biāo)或鍵盤(pán),該URB將每隔10毫秒發(fā)生一次。數(shù)據(jù)傳輸完成后,TD處理器將控制轉(zhuǎn)交給interrupt_in_complete(函數(shù),通過(guò)檢查URB可得知數(shù)據(jù)是來(lái)自鍵盤(pán)還是來(lái)自鼠標(biāo),該回調(diào)函數(shù)負(fù)責(zé)將鍵盤(pán)或鼠標(biāo)數(shù)據(jù)發(fā)送至應(yīng)用層。 當(dāng)某驅(qū)動(dòng)程序停止時(shí),其重復(fù)出現(xiàn)的URB將從TD列表中除去并釋放出空間,然后傳送一個(gè)消息至應(yīng)用層,去掉相關(guān)設(shè)備。如果停止的驅(qū)動(dòng)程序相關(guān)設(shè)備是集線器,則與該集線器相連的所有設(shè)備也要去除,且驅(qū)動(dòng)程序同時(shí)停止。當(dāng)然,如果去除的設(shè)備中還有集線器,則與該集線器相連的設(shè)備將以同
12、樣方式去除。 在驅(qū)動(dòng)程序運(yùn)行期間,系統(tǒng)可執(zhí)行各種任務(wù)。對(duì)于集線器設(shè)備驅(qū)動(dòng)程序,要檢查集線器的端口,以了解是否有設(shè)備插入和去除。這里鍵盤(pán)和鼠標(biāo)驅(qū)動(dòng)程序運(yùn)行函數(shù)不起任何作用。框架數(shù)據(jù)流 框架代碼執(zhí)行過(guò)程是這樣的:上電復(fù)位、微處理器對(duì)所有寄存器和計(jì)數(shù)器以及設(shè)備結(jié)構(gòu)進(jìn)行初始化,然后進(jìn)入如下的循環(huán):1.檢查主機(jī)USB端口是否存在狀態(tài)改變(設(shè)備插入或去除。2.檢查T(mén)D處理器,并獲得兩個(gè)SIE上運(yùn)行的所有TD狀態(tài)信息。3.查看運(yùn)行設(shè)備驅(qū)動(dòng)程序列表并執(zhí)行每個(gè)程序的運(yùn)行函數(shù)。 檢查主機(jī)USB端
13、口以了解狀態(tài)變化需要檢查變量的改變,如果發(fā)生變化,可通過(guò)端口變化中斷處理程序設(shè)定變量。如果端口發(fā)生改變,將執(zhí)行枚舉代碼進(jìn)行處理。 通過(guò)集線器至主機(jī)的中斷傳輸完成相連集線器變化值檢查,如果發(fā)生設(shè)備添加或去除,它們將像上面那樣枚舉出來(lái)。發(fā)現(xiàn)新設(shè)備時(shí),需要找到設(shè)備驅(qū)動(dòng)程序然后裝入。根據(jù)設(shè)備尋找設(shè)備驅(qū)動(dòng)程序的方法有很多種,框架代碼將首先嘗試將某驅(qū)動(dòng)程序與某設(shè)備的供應(yīng)商ID以及產(chǎn)品ID進(jìn)行匹配,但只有存在特定的制造商且特定設(shè)備在特定驅(qū)動(dòng)程序中運(yùn)行這種方法才有效。如果沒(méi)有實(shí)現(xiàn)匹配,框架代碼會(huì)嘗試對(duì)設(shè)備的種類(lèi)和子類(lèi)進(jìn)行匹配,這可以利用更普通的驅(qū)動(dòng)程序與設(shè)備匹配。
14、; 設(shè)備插入和去除檢查還有兩項(xiàng)額外的任務(wù)。如果連接的設(shè)備是集線器,則必須對(duì)其端口進(jìn)行檢查,以查看它們是否帶有設(shè)備。如果去除的設(shè)備是集線器,那么所有與之連接的設(shè)備也必須去除。 通過(guò)中斷傳輸還可以檢查來(lái)自相連鍵盤(pán)和鼠標(biāo)設(shè)備的新數(shù)據(jù),這些傳輸每10毫秒種發(fā)生一次,由TD處理器安排時(shí)序。任務(wù)完成后,TD處理器將傳輸控制轉(zhuǎn)給回調(diào)函數(shù),這時(shí)可提取鍵盤(pán)和鼠標(biāo)數(shù)據(jù),并送至應(yīng)用層。構(gòu)建應(yīng)用 現(xiàn)在介紹如何構(gòu)建一個(gè)簡(jiǎn)單的控制鍵盤(pán)和鼠標(biāo)的嵌入式USB設(shè)計(jì),該方案使用基于處理器的USB主機(jī)控制器,處理
15、器的代碼包含框架和應(yīng)用固件。首先要做的是確定希望支持設(shè)備的數(shù)量和類(lèi)型,確定設(shè)備數(shù)量后,可據(jù)此分配URB和驅(qū)動(dòng)程序空間,通過(guò)修改名為fwxcfg.h的“個(gè)性化”文件完成URB分配。 每個(gè)鍵盤(pán)、鼠標(biāo)或集線器均需要一個(gè)URB來(lái)處理傳輸中重復(fù)出現(xiàn)的中斷。此外,在枚舉和其它USB控制傳輸過(guò)程中,URB被分配并隨后釋放。一個(gè)較好的經(jīng)驗(yàn)是為系統(tǒng)支持的每個(gè)設(shè)備分配兩個(gè)URB,一個(gè)用于傳輸中重復(fù)出現(xiàn)的中斷,另一個(gè)則用于任何可能的控制傳輸,這些傳輸可能發(fā)生在設(shè)備枚舉或設(shè)備狀態(tài)檢查過(guò)程中。雖然每次只能處理一個(gè)控制傳輸,但框架可將其它傳輸排隊(duì),系統(tǒng)支持的URB數(shù)量應(yīng)該等于所支持設(shè)備
16、數(shù)量的兩倍。 接下來(lái),需要為鍵盤(pán)和鼠標(biāo)創(chuàng)建驅(qū)動(dòng)程序。由于這些設(shè)備的USB功能非常相近,所以兩個(gè)設(shè)備可以使用一個(gè)驅(qū)動(dòng)程序。該驅(qū)動(dòng)程序可稱為hid_driver(用于人機(jī)界面設(shè)備的驅(qū)動(dòng)程序。下一步是在驅(qū)動(dòng)程序內(nèi)添加開(kāi)始、停止以及運(yùn)行函數(shù),以及查找驅(qū)動(dòng)程序的設(shè)備種類(lèi)編碼,還需要將驅(qū)動(dòng)程序函數(shù)的名稱添加進(jìn)文件drvrlist.h。包含集線器和hid driver的驅(qū)動(dòng)程序聲明如下: #define FWX_DRIVER_LIST &hid_driver, &hubclass_driver hid_driver啟動(dòng)函數(shù)將分配傳輸中重復(fù)出現(xiàn)的中斷,以獲得鍵盤(pán)和鼠標(biāo)數(shù)據(jù)。該函數(shù)內(nèi)的編碼將獲取數(shù)據(jù)并將數(shù)據(jù)傳給編碼應(yīng)用層;停止函數(shù)將釋放重復(fù)出現(xiàn)的中斷傳輸,并通知應(yīng)用層設(shè)備已被去除;運(yùn)行函數(shù)用來(lái)檢查來(lái)自應(yīng)用代碼的輸入指令。 然后需要為枚舉通報(bào)函數(shù)添加一些代碼,枚舉通報(bào)函數(shù)是枚舉代碼使用的回調(diào)函數(shù),用于報(bào)告設(shè)備枚舉狀態(tài)并處理可能的枚舉錯(cuò)誤。該代碼可將新的枚舉設(shè)備信息傳給應(yīng)用層。在這里對(duì)集線器提供支持很容易,不需要添加任何代碼,也不需要編寫(xiě)驅(qū)動(dòng)程序,因
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 芒硝礦堆場(chǎng)管理制度
- 英超俱樂(lè)部管理制度
- 荊門(mén)分級(jí)式管理制度
- 財(cái)務(wù)會(huì)計(jì)關(guān)鍵練習(xí)題及答案
- 設(shè)備技術(shù)要求
- 幼兒園安全教育主題家長(zhǎng)會(huì)課件
- 2025年Android-一線大廠面試總結(jié)
- 期末應(yīng)用題專項(xiàng)訓(xùn)練:三角形(含解析)-2024-2025學(xué)年數(shù)學(xué)四年級(jí)下冊(cè)人教版
- 建筑施工特種作業(yè)-建筑起重機(jī)械司機(jī)(物料提升機(jī))真題庫(kù)-1
- 入世出世遁世題目及答案
- 【西安交通大學(xué)】2025年電力人工智能多模態(tài)大模型創(chuàng)新技術(shù)及應(yīng)用報(bào)告
- 2025年上海國(guó)企中鐵十五局集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 2025電梯年檢項(xiàng)目整改合同田王
- 2025年自然災(zāi)害預(yù)防與應(yīng)急處理安全培訓(xùn)考試試題匯編
- 土地確權(quán)確權(quán)合同范本
- 食品檢驗(yàn)員持證上崗培訓(xùn)課件
- 臨床教學(xué)師資培訓(xùn)
- 醫(yī)療器械相關(guān)壓力性損傷預(yù)防
- GB/T 21369-2024火力發(fā)電企業(yè)能源計(jì)量器具配備和管理要求
- EHS培訓(xùn)(環(huán)境因素、危險(xiǎn)因素識(shí)別)
- 2025年全國(guó)保安員職業(yè)技能上崗證考試題庫(kù)(含答案)
評(píng)論
0/150
提交評(píng)論