![《基于ARM9的嵌入式Linux系統(tǒng)開發(fā)原理與實踐》課件第12章_第1頁](http://file4.renrendoc.com/view9/M00/2C/19/wKhkGWdlDiyAVqiAAAOrsNtwtWo828.jpg)
![《基于ARM9的嵌入式Linux系統(tǒng)開發(fā)原理與實踐》課件第12章_第2頁](http://file4.renrendoc.com/view9/M00/2C/19/wKhkGWdlDiyAVqiAAAOrsNtwtWo8282.jpg)
![《基于ARM9的嵌入式Linux系統(tǒng)開發(fā)原理與實踐》課件第12章_第3頁](http://file4.renrendoc.com/view9/M00/2C/19/wKhkGWdlDiyAVqiAAAOrsNtwtWo8283.jpg)
![《基于ARM9的嵌入式Linux系統(tǒng)開發(fā)原理與實踐》課件第12章_第4頁](http://file4.renrendoc.com/view9/M00/2C/19/wKhkGWdlDiyAVqiAAAOrsNtwtWo8284.jpg)
![《基于ARM9的嵌入式Linux系統(tǒng)開發(fā)原理與實踐》課件第12章_第5頁](http://file4.renrendoc.com/view9/M00/2C/19/wKhkGWdlDiyAVqiAAAOrsNtwtWo8285.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第12章USB驅(qū)動程序開發(fā)12.1USB簡介12.2LinuxUSB子系統(tǒng)12.3USB客戶端驅(qū)動程序架構(gòu)和開發(fā)12.4在Linux內(nèi)核中加入USB模塊12.5USB驅(qū)動程序開發(fā)實例本章小結(jié)
12.1USB簡介
12.1.1USB
計算機(jī)技術(shù)與通信技術(shù)的結(jié)合將是下一代生產(chǎn)力的基礎(chǔ)。人們總是希望能通過方便且廉價的方法把信息從一個地方傳輸?shù)搅硪粋€地方,不幸的是計算機(jī)技術(shù)與通信技術(shù)最初是沿著各自的發(fā)展軌跡前進(jìn)的。?USB(UniversalSerialBus)是主機(jī)和外圍設(shè)備之間的一種連接技術(shù),技術(shù)最初的目的正是希望能實現(xiàn)兩者的有機(jī)結(jié)合而提出來的。12.1.2USB的結(jié)構(gòu)及傳輸方式
1.?USB的結(jié)構(gòu)
USB規(guī)范將USB分為以下五個部分:
(1)控制器:主要負(fù)責(zé)執(zhí)行由控制器驅(qū)動程序發(fā)出的命令。
(2)控制器驅(qū)動程序:在控制器與USB設(shè)備之間建立通信信道。
(3)?USB芯片驅(qū)動程序:提供對USB的支持。
(4)?USB設(shè)備:包括與PC相連的USB外圍設(shè)備。分為兩類:一類設(shè)備本身可再接其他USB外圍設(shè)備;另一類設(shè)備本身不可再連接其他外圍設(shè)備。前者稱為USB集線器(USBHUB),后者稱為設(shè)備?;蛘哒f,集線器帶有連接其他外圍設(shè)備的USB端口,而設(shè)備則是連接在計算機(jī)上用來完成特定功能并符合USB規(guī)范的設(shè)備單元,如鼠標(biāo)、鍵盤等。
(5)設(shè)備驅(qū)動程序:就是用來驅(qū)動USB設(shè)備的程序,通常由操作系統(tǒng)或USB設(shè)備制造商提供,如平常所說Modem驅(qū)動程序、打印機(jī)驅(qū)動程序等。
2.?USB的傳輸方式
針對設(shè)備對系統(tǒng)資源需求的不同,在USB規(guī)范中規(guī)定了四種不同的數(shù)據(jù)傳輸方式:
(1)等時傳輸方式。
(2)中斷傳輸方式。
(3)控制傳輸方式。
(4)批傳輸方式。12.1.3USB設(shè)備的使用
要使用USB設(shè)備,首先要求主板具有支持USB設(shè)備的功能,其次要求操作系統(tǒng)支持USB設(shè)備。12.1.4USB的優(yōu)勢
USB之所以能得到廣泛支持和迅速的普及,是因為其具備如下一些優(yōu)點:
1.?USB的即插即用
USB的即插即用充分體現(xiàn)了易用性。USB的協(xié)議從硬件層上支持USB設(shè)備帶電接入,即熱插拔,在軟件層上實現(xiàn)了自動配置。這樣,在操作系統(tǒng)(Windows,Linux)工作的情況下就可以接入或拔出USB設(shè)備,而不用重新啟動PC。此外,當(dāng)設(shè)備第一次接入到PC時,系統(tǒng)可以自動檢測到設(shè)備的接入,并自動加載設(shè)備的驅(qū)動,對于系統(tǒng)不默認(rèn)支持的設(shè)備,用戶也只是需要為操作系統(tǒng)提供驅(qū)動,因此使用起來很方便。
2.可選擇的多種速度模式
USB提供了低速、全速、高速三種速度模式,分別為1.5Mb/s、12Mb/s和480Mb/s。用戶可以在性能和價格上做各種選擇。
3.完備的總線拓?fù)浣Y(jié)構(gòu)
USB的拓?fù)溥B接結(jié)構(gòu)是一種和串口并口不同的層次化結(jié)構(gòu)。整個結(jié)構(gòu)由三種元素組成:主機(jī)、集線器和設(shè)備。HUB是每個星形結(jié)構(gòu)的中心,用來連接主機(jī)和設(shè)備。USBl.1規(guī)范,一個USB拓?fù)渚W(wǎng)絡(luò)能支持4個HUB以及127個外部設(shè)備。在USB2.0中對HUB層的支持已經(jīng)達(dá)到了6層連帶最后一級的設(shè)備層共7層。如圖12-1所示。圖12-1USB的連接結(jié)構(gòu)
4.多種設(shè)備子類
USB協(xié)議對外部設(shè)備進(jìn)行了標(biāo)準(zhǔn)化,包括底層的物理和電器特性,上層的軟件協(xié)議、數(shù)據(jù)通訊等。根據(jù)設(shè)備完成的功能不同,設(shè)備被劃分為不同的子類:如大規(guī)模存儲類包括常見的U盤;人機(jī)接口設(shè)備類包括鼠標(biāo)、鍵盤等與人的交互較多的設(shè)備;音頻、視頻設(shè)備類;打印機(jī)類和圖像設(shè)備類等。圖12-2USB系統(tǒng)構(gòu)成
12.2LinuxUSB子系統(tǒng)
在Linux中,通過USB子系統(tǒng)或稱USB內(nèi)核來實現(xiàn)與USB設(shè)備的接口。這個USB內(nèi)核包括兩方面的功能:管理USB總線,使USB控制器符合openHCI和UHCI協(xié)議;為用戶設(shè)備驅(qū)動程序提供一個方便的接口與相應(yīng)的USB外設(shè)進(jìn)行數(shù)據(jù)交換。圖12-3描述了USB內(nèi)核在Linux系統(tǒng)中的地位。
LinuxUSB子系統(tǒng)的結(jié)構(gòu)分為三個層次。USBD層為USB內(nèi)核,內(nèi)核分別為客戶端驅(qū)動程序?qū)雍椭鳈C(jī)控制器驅(qū)動程序?qū)犹峁┮惶缀瘮?shù)集,這樣可以更好地擴(kuò)展客戶端驅(qū)動程序和主機(jī)控制器程序,如圖12-3所示。圖12-3LinuxUSB子系統(tǒng)結(jié)構(gòu)12.2.1文件系統(tǒng)
Linux下USB相關(guān)文件系統(tǒng)由文件devices.c、drivers.c、devio.c和inode.c組成。
devices.c:主要為應(yīng)用者提供一個可以觀看當(dāng)前系統(tǒng)所有USB設(shè)備和連接情況的窗口。
drivers.c:為應(yīng)用提供了一個觀看客戶端驅(qū)動程序的窗口,通過它可以了解到目前系統(tǒng)中每一個客戶端驅(qū)動程序的名稱和所能分配的從設(shè)備號。
devio.c:為用戶空間提供設(shè)備的函數(shù)調(diào)用接口。
inode.c:主要為設(shè)備創(chuàng)建節(jié)點,維護(hù)計算機(jī)上的USB系統(tǒng)等操作。12.2.2USB驅(qū)動程序(USBD)
Linux下USBD主要由文件USB.c和USB.h組成。
USBD主要負(fù)責(zé)為客戶端驅(qū)動程序?qū)雍椭鳈C(jī)控制器驅(qū)動程序?qū)犹峁┙涌诤瘮?shù),使系統(tǒng)層次分明。另外,它還負(fù)責(zé)維護(hù)設(shè)備的加載和卸載、設(shè)備配置、客戶端驅(qū)動程序的安裝和卸載等操作。12.2.3主機(jī)控制器驅(qū)動程序(hcd)
Linux下hcd主要由文件USB-uhci.h、USB-uhci.c、USB-ohci.h和USB-ohci.c組成。Linux提供兩種主機(jī)控制器驅(qū)動程序:OHCI、UHCI。這也是目前通用性最好并形成規(guī)范的兩種主機(jī)控制器驅(qū)動程序。12.2.4客戶端驅(qū)動程序
當(dāng)前Linux支持諸多的USB設(shè)備類驅(qū)動程序,如HID類、打印機(jī)類、語音類、存儲設(shè)備類等。USB客戶端驅(qū)動程序的作用相當(dāng)于普通設(shè)備的驅(qū)動程序,但是由于系統(tǒng)提供USBD和HCD兩層協(xié)議,既簡化驅(qū)動程序軟件通訊協(xié)議的復(fù)雜度,又使它與硬件的操作隔離開,簡化了和設(shè)備的通信工作。另外,客戶端驅(qū)動程序?qū)?yīng)USB設(shè)備的接口,而不是整個設(shè)備,如果設(shè)備有多個接口,那么可被多個不同的客戶端驅(qū)動程序所驅(qū)動。由于不和硬件直接打交道,因此驅(qū)動程序還避免了中斷處理的工作??傊?,客戶端驅(qū)動程序編寫簡化、易于開發(fā),也是USB設(shè)備得到廣泛應(yīng)用的原因。
12.3USB客戶端驅(qū)動程序架構(gòu)和開發(fā)
12.3.1USB的協(xié)議規(guī)范初識
在USB的協(xié)議規(guī)范中,USB能夠自動監(jiān)測設(shè)備,并調(diào)用相應(yīng)的驅(qū)動程序處理設(shè)備,其規(guī)范是相當(dāng)復(fù)雜的,讀者可以不去理解大部分細(xì)節(jié)實現(xiàn)問題,因為Linux已經(jīng)提供相應(yīng)的解決方案。圖12-4LinuxUSB設(shè)置圖12.3.2Linux的USB驅(qū)動框架
Linux的設(shè)備驅(qū)動,特別是熱插拔(hotplug)的USB設(shè)備驅(qū)動,會被編譯成模塊,然后在需要時掛載到內(nèi)核。
Linux的驅(qū)動框架為usb-skeleton.c。其源碼可以在linux-2.6.14/drivers/usb下找到,其他版本的內(nèi)核程序源碼可能有所不同,但相差不大。
12.4在Linux內(nèi)核中加入USB模塊
12.4.1配置文件
USB作為一個驅(qū)動層,在內(nèi)核代碼中是很獨立的一個模塊,在往內(nèi)核中添加USB的支持時,需要改動控制這部分代碼編譯連接的文件。12.4.2調(diào)試
Linux2.6內(nèi)核對設(shè)備模型作了很大的改進(jìn),內(nèi)核對設(shè)備的感知通過device數(shù)據(jù)結(jié)構(gòu),內(nèi)核對驅(qū)動的感知是通過device_driver數(shù)據(jù)結(jié)構(gòu)。
12.5USB驅(qū)動程序開發(fā)實例
12.5.1S3C2410與USB模塊的連接電路
USBHUB,將2410的USBHOST擴(kuò)展為4口,芯片為AT43301。電源管理的總電流限制為500mA,采用總線供電模式,芯片為MIC2525-2。過流后,MIC2525會改變電平告知AT43301,然后AT43301發(fā)出信號使MIC2525關(guān)斷,同時會向處理器發(fā)送信息,可參考AT43301USBHUB文檔。電路連接圖如圖12-5所示。圖12-5S3C2410與USB模塊的連接電路12.5.2制作新的根文件系統(tǒng)
在第9章制作的根文件系統(tǒng)中沒有proc和mnt等目錄,在本章添加了proc和mnt,詳細(xì)制作過程可參見第9章內(nèi)容,本章根文件系統(tǒng)啟動后包含的根目錄如圖12-6所示。圖12-6新制作的Cramfs根文件系統(tǒng)啟動圖12.5.3修改代碼
1.修改mach-smdk2410.c文件
在第11章的內(nèi)核源代碼中將/linux-2.6.14.success20090807
/arch/arm/mach-s3c2410目錄下的mach-smdk2410.c文件打開:
[root@localhostlinux-2.6.14.success20090807]#viarch/arm/mach-s3c2410/mach-smdk2410.c
2.重新配置內(nèi)核
[root@localhostlinux-2.6.14.success20090807]#makemenuconfig
配置界面如圖12-7所示。圖12-7內(nèi)核配置USB驅(qū)動界面1)配置USB鼠標(biāo)鍵盤
2)增加SCSI支持
3)讓內(nèi)核支持熱插拔
4)添加MSDOS和VFAT文件系統(tǒng)
5)加入中文字體庫
圖12-8插入U盤時的錯誤信息
3.重新編譯內(nèi)核
編譯內(nèi)核:
[root@localhostlinux-2.6.14.success20090807]#makezImage
將重新制作的內(nèi)核映像文件燒寫到博創(chuàng)開發(fā)板,最后在超級終端中的啟動畫面如圖12-9所示。圖12-9USB驅(qū)動添加后的啟動信息
4.插入U盤
插入U盤會出現(xiàn)如下提示,可見系統(tǒng)將插入在第三個USB口,U盤成功掛載。
usb1-1.2:newfullspeedUSBdeviceusings3c2410-ohciandaddress3
ub(1.3):GetMaxLUNreturned0,using1LUNs
/dev/ub/a:p1圖12-10插入U盤后的提示信息圖12-11U盤中的內(nèi)容顯示
5.拔出U盤
撥出U盤會出現(xiàn)如下信息,如圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 武威職業(yè)學(xué)院《家具與陳設(shè)》2023-2024學(xué)年第二學(xué)期期末試卷
- 福建華南女子職業(yè)學(xué)院《國際貿(mào)易實務(wù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海電力大學(xué)《環(huán)境影響評價案例分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 常州工業(yè)職業(yè)技術(shù)學(xué)院《日語3》2023-2024學(xué)年第二學(xué)期期末試卷
- 赤峰工業(yè)職業(yè)技術(shù)學(xué)院《經(jīng)典與現(xiàn)代西方社會學(xué)理論》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東信息工程職業(yè)學(xué)院《環(huán)境監(jiān)測綜合實驗》2023-2024學(xué)年第二學(xué)期期末試卷
- 海南師范大學(xué)《病理解剖學(xué)基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西中醫(yī)藥大學(xué)《整合營銷傳播》2023-2024學(xué)年第二學(xué)期期末試卷
- 龍巖學(xué)院《城市設(shè)計Ⅱ》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西藝術(shù)職業(yè)學(xué)院《機(jī)器學(xué)習(xí)基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 人教版一年級下冊數(shù)學(xué)20以內(nèi)的退位減法(作業(yè)設(shè)計)
- 30道醫(yī)院婦產(chǎn)科醫(yī)生崗位高頻面試問題附考察點及參考回答
- 21中華文化-2023年中考英語新熱點時文閱讀
- 學(xué)校課程整體框架圖
- 環(huán)境衛(wèi)生學(xué)第二章 環(huán)境與健康的關(guān)系
- 2024屆高考語文復(fù)習(xí):小說閱讀之?dāng)⑹马樞蚺c敘事節(jié)奏
- 環(huán)衛(wèi)市場化運營方案PPT
- 電流互感器和電壓互感器選型指南
- 大學(xué)生心理健康教育PPT完整全套電子教學(xué)課件
- 會務(wù)服務(wù)投標(biāo)技術(shù)方案
- 中國傳統(tǒng)圖案大全
評論
0/150
提交評論