資料介紹
1 引言在現(xiàn)代社會(huì),嵌入式系統(tǒng)逐漸深入到人們生活的方方面面,各類(lèi)嵌入式系統(tǒng)產(chǎn)品之間往往通過(guò)某種接口進(jìn)行交互或數(shù)據(jù)傳遞。而現(xiàn)在,USB已經(jīng)成為嵌入式數(shù)據(jù)交換的最主要的方式,可是各種USB接口的設(shè)備都是基于PC機(jī)系統(tǒng)的,所以,基于嵌入式系統(tǒng)的USB接口的研究具有實(shí)用的價(jià)值和意義,特別是起Master作用的HOST端接口的研究。解決這一問(wèn)題的根本辦法就是在需要使用USB設(shè)備的嵌入式系統(tǒng)中擴(kuò)展USB Host功能模塊,使之具有與USB設(shè)備進(jìn)行數(shù)據(jù)傳輸?shù)哪芰ΑSB協(xié)議按功能分為2部分,USB HOST(USB主協(xié)議)和USB SLAVE(USB從協(xié)議)分別應(yīng)用于USB HOST CONTROLLER(USB主控制器)和USB DEVICE(USB設(shè)備)。一般,USB HOST要比USB SLAVE復(fù)雜,對(duì)于廣大的非PC用戶來(lái)說(shuō),尤其是嵌入式系統(tǒng)用戶來(lái)說(shuō),由于USB協(xié)議的不對(duì)稱(chēng)性,使得實(shí)現(xiàn)USB HOST比USB SLAVE要困難地多,Philips公司的ISP1161A1芯片很好地解決了這種問(wèn)題,他封裝了復(fù)雜的USB協(xié)議,使得在嵌入式系統(tǒng)中實(shí)現(xiàn)USB HOST和USB SLAVE變得簡(jiǎn)單方便。2 USB HOST技術(shù)簡(jiǎn)介USB的通信可以用圖1表示,圖1中,左半部分為USB主機(jī)端,可以看出,USB主機(jī)端由2部分構(gòu)成,即軟件體和硬件體,實(shí)際上是3個(gè)軟件組件組成了USB HOST解決方案,即USB客戶驅(qū)動(dòng)程序,USB驅(qū)動(dòng)程序和USB主機(jī)控制器驅(qū)動(dòng)程序,應(yīng)用程序的事務(wù)處理是由USB客戶驅(qū)動(dòng)程序(設(shè)備驅(qū)動(dòng)程序)啟動(dòng)的,客戶驅(qū)動(dòng)程序把USB設(shè)備當(dāng)做一個(gè)可以被訪問(wèn)的端點(diǎn)集合,他可以被控制并與他的功能單元進(jìn)行通信,USB系統(tǒng)軟件包括USB驅(qū)動(dòng)程序和USB主控制器驅(qū)動(dòng)程序,USB驅(qū)動(dòng)程序負(fù)責(zé)配置管理、用戶管理、總線管理和數(shù)據(jù)傳輸,USB主控制器驅(qū)動(dòng)程序負(fù)責(zé)調(diào)度管理,隊(duì)列管理和控制器管理,以及數(shù)據(jù)的位編碼、封包、循環(huán)校驗(yàn)、發(fā)送、錯(cuò)誤處理等。如圖2所示,USB HOST的軟件結(jié)構(gòu)分為3大部分,即USB總線驅(qū)動(dòng)(USBD),USB HOST控制器驅(qū)動(dòng)(HCD)、客戶軟件、其中客戶軟件處理和設(shè)備有關(guān)的信息,USBD處理和硬件無(wú)關(guān)的協(xié)議,而HCD則處理與硬件相關(guān)的協(xié)議,USBD和HCD都包含了一系列管理各種狀態(tài)的寄存器。3 SP1161體系結(jié)構(gòu)要實(shí)現(xiàn)USB協(xié)議,必須要通過(guò)一系列寄存器來(lái)完成,這些寄存器要能實(shí)現(xiàn)USB軟件結(jié)構(gòu)中的USBD和HCD,即要完成USB協(xié)議狀態(tài)的控制,還要有一定的緩沖區(qū)來(lái)存放進(jìn)出的數(shù)據(jù),ISP1161專(zhuān)門(mén)針對(duì)USB協(xié)議設(shè)計(jì)的特殊硬件結(jié)構(gòu)可方便地實(shí)現(xiàn)USB HOST和USB SLAVE。ISP1161的硬件結(jié)構(gòu)主要是3類(lèi)不同的寄存器,用戶通過(guò)操作這3種寄存器來(lái)達(dá)到實(shí)現(xiàn)USB傳輸?shù)哪康?這3類(lèi)寄存器是:(1)HC control and status registers:USB主控制器控制和狀態(tài)寄存器,主要用于傳輸過(guò)程中控制命令的存放和狀態(tài)的讀取,可讀可寫(xiě)的寄存器有2個(gè)地址,只讀或只寫(xiě)的寄存器只有1個(gè)地址。(2)Isochronous Transfer List (ITL):同步傳輸列表緩沖區(qū)。(3)Acknowledged Transfer List(ATL):接收傳輸列表緩沖區(qū)。根據(jù)USB協(xié)議,數(shù)據(jù)傳輸分為4種模式,Control(控制),Bulk(整批),Interrupt(中斷)和Isochronous(同步)。其中ITL是為了實(shí)現(xiàn)同步傳輸,ATL則實(shí)現(xiàn)其他3種模式的傳輸。4 ISP1161x主控制器編程實(shí)現(xiàn)設(shè)計(jì)ISP1161x主控制驅(qū)動(dòng)程序主要涉及以下2個(gè)重要內(nèi)容,下面詳細(xì)介紹:4.1 讀/寫(xiě)ATL和ITL緩沖區(qū)ATL和ITL緩沖區(qū)的位于ISP1161x內(nèi)部的FIFO緩沖RAM之中,每個(gè)緩沖區(qū)包含許多PTD(Philips Transfer Descriptor),而PTD用于主控制器硬件發(fā)送或接收USB包從USB設(shè)備,作為調(diào)度USB傳輸?shù)囊徊糠?HCD在系統(tǒng)內(nèi)存中購(gòu)建PTD。然后HCD將購(gòu)建好的PTD移入ATL或者ITL緩沖區(qū),主控制器硬件允許軟件去訪問(wèn)每一個(gè)緩沖區(qū),就像他們是分離的硬件緩沖區(qū),HCD訪問(wèn)ATL緩沖區(qū)通過(guò)硬件寄存器HcTransferCounter(22H/A2H)和HcATLBufferPort(41H/C1H),而ITL緩沖區(qū)則由HcTransferCounter和HcITLBufferPort(40H/C0H)訪問(wèn)。下面一段示例代碼取自于本項(xiàng)目,其功能是向ATL緩沖區(qū)寫(xiě)數(shù)據(jù),hci→hp→atl_len表示,ATL則在內(nèi)存中還沒(méi)有發(fā)送的數(shù)據(jù)的長(zhǎng)度,hci→hp→tl表示緩沖區(qū)的地址。4.2硬件初始化過(guò)程當(dāng)ISP1161x上電時(shí),主控驅(qū)動(dòng)程序(HCD)必須經(jīng)過(guò)下列的順序?qū)τ布M(jìn)行初始化,以便主控制器進(jìn)入可操作狀態(tài)。檢測(cè)主控制器,軟件復(fù)位主控制器,配置HcHardwareConfiguration寄存器,配置中斷;配置HcControl寄存器,配置HcFmInterval寄存器,配置根集線寄存器,設(shè)置ITL和ATL緩沖區(qū)長(zhǎng)度,安裝INT1中斷服務(wù)程序。4.2.1 檢測(cè)主控制器檢測(cè)的工作由HCD完成的,HCD通過(guò)向寄存器HcScratch寫(xiě)一個(gè)值,接著從該寄存器讀出,與剛才寫(xiě)入的值進(jìn)行比較。如果寫(xiě)入的和讀出的值相等,HCD得出結(jié)論:主控制器存在,對(duì)HcCHipID寄存器的讀也被用來(lái)作為額外的條件來(lái)檢測(cè)該寄存器。4.2.2 主控制器的軟件復(fù)位軟件復(fù)位主控制器通常包括2個(gè)步驟:復(fù)位主控制器;設(shè)置主控制器為RESET狀態(tài)。HCD通過(guò)設(shè)置在HcCommandStatus寄存器的HCR位來(lái)復(fù)位主控制器:一旦主控制器復(fù)位了,HCD必須通過(guò)設(shè)置HcControl寄存器的HCFS字段為00B,以便使主控制器為RESET狀態(tài)。4.2.3 配置HcHardwareConfiguration寄存器WRITE_REG16(hci,InterruptPinEnable|InterruptPin Trigger InterruptOutputPolarity |DataBusWidth16|AnalogOCEnable,HcHardwareConfiguration);上述這段代碼表示將主控制器初始化為INT1允許,中斷是邊沿觸發(fā),中斷的輸出極性為高電平,數(shù)據(jù)線的寬度為16b,使用片上過(guò)流檢測(cè),模擬輸入。4.2.4 配置中斷主控制器ISP1161x有2組中斷源,第一組包含USB事件產(chǎn)生的中斷,比如Start of Frame,調(diào)度溢出和根集線器狀態(tài)改變,這些中斷的發(fā)生由HcInterruptEnable和HcInterruptDisable寄存器聯(lián)合控制,而每個(gè)中斷的狀態(tài)由HcInterruptStatus寄存器標(biāo)識(shí)。第二組是主控制器中狀態(tài)變化所引起的中斷,比如,主控制器延遲所產(chǎn)生的中斷,同樣,在第一組中斷中的任何組合是第二組中斷的中斷源。4.2.5 配置HcFmInterval寄存器HcFmInterval寄存器的14位值[FrameInteral,FI]用于表示一幀之內(nèi)所占用的比特時(shí)間(在2個(gè)連續(xù)的SOFs,15位的值[FSLargestDataPacket,PSMPS)用于表示在沒(méi)有引發(fā)調(diào)度溢出下可發(fā)送或接收全速最大包大小,FI,PSMPS的推薦值為0x2EDF和0x2778,所以將調(diào)用下列語(yǔ)句對(duì)該寄存器進(jìn)行初始化:WRITE_REG32(hci,0x2EDF|(0x2778<<16),HcFmInterval);4.2.6 配置Root Hub(根集線器)寄存器隨著初始化的深入,下面的專(zhuān)門(mén)針對(duì)根集線器3個(gè)寄存器也必須初始化:HcRhDescriptorA,HcRhDescriptorB和HcRhStatus,前2個(gè)寄存器是根據(jù)電路板的制作自動(dòng)由ISP1161x配置的,這2個(gè)寄存器均用來(lái)描述根集線器的特性。HcRhStatus被劃分為2個(gè)部分,低字部分表示集線器狀態(tài),而高字部分表示集線器狀態(tài)的改變,還有保留部分必須被初始化為邏輯0。4.2.7 設(shè)置ITL和ATL緩沖區(qū)的長(zhǎng)度主控制器ISP1161x內(nèi)部的FIFO緩沖區(qū)有4kb/s,而這4k將被ATL和ITL劃分為2部分,分由HcATLBufferLength和HcITLBufferLength寄存器表示,ITL緩沖區(qū)又進(jìn)一步被分為2個(gè)相同的ITO0和ITD01緩沖區(qū),ATL緩沖區(qū)必須存在,因?yàn)锳TL緩沖區(qū)用于控制,中斷和大批量傳輸,而ITL的存在與否是可選的。4.2.8 設(shè)置INT1中斷的服務(wù)程序如果在主控制器中發(fā)生一個(gè)或多個(gè)中斷,ISP1161x的INT1引腳將會(huì)通知微處理器,在本項(xiàng)目中,INT1的引腳直接接在ARM的INT0引腳上,驅(qū)動(dòng)程序通過(guò)Linux提供的函數(shù)request_irq向操作系統(tǒng)申請(qǐng)中斷號(hào),并在此函數(shù)中向操作系統(tǒng)提供中斷處理函數(shù)。request_irq(irq,hc_interrupt,0,"ISP116x",hci)irq為中斷號(hào);hc_interrupt為中斷處理函數(shù),0為中斷標(biāo)記,"ISP116x"表示中斷設(shè)備名稱(chēng);hci在此表示中斷設(shè)備號(hào)。5 在μClinux中編譯USB主控驅(qū)動(dòng)接下來(lái)就如何將驅(qū)動(dòng)文件編譯到嵌入式操作系統(tǒng)做一個(gè)簡(jiǎn)要說(shuō)明。(1)將上述文件拷貝到drivers/USB/(2)編輯Drivers/USB/Makefile文件,添加以下內(nèi)容:obj-$(CONFIG_USB_ISP1161)+=hc_isp1161.o(3)編輯driver/USB/config.in文件,添加如下內(nèi)容:Dep_tristat iisp1161(Philips)support iCONFIG_USB_ISP1161 $ CONFIG_USB(4)編譯μClinux內(nèi)編譯成功后把生成的映象文件用JTAG燒寫(xiě)器燒寫(xiě)到開(kāi)發(fā)板的ROM中,啟動(dòng)后進(jìn)行驗(yàn)證實(shí)現(xiàn)了對(duì)ISP1161A1的控制。6 結(jié)語(yǔ)ISP1161A1使得在嵌入式系統(tǒng)中實(shí)現(xiàn)USB HOST變得十分簡(jiǎn)單方便,便于嵌入式系統(tǒng)中USB的普及。(mbbeetchina)
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- ARM應(yīng)用系統(tǒng)開(kāi)發(fā)詳解——基于S3C4510B的系統(tǒng)設(shè)計(jì)
- 基于ARM的S3C4510B的開(kāi)發(fā)板原理圖下載 4次下載
- S3C4510B的開(kāi)發(fā)板(含原理圖和PCB)資料下載 28次下載
- 高速電路板S3C4510B的PCB圖 0次下載
- 基于S3C4510B嵌入式系統(tǒng)CF卡高速存儲(chǔ)技術(shù)
- 基于SL811HST和S3C4510B的嵌入式USB主機(jī)與設(shè)
- 基于S3C4510B和uClinux的HDLC接口驅(qū)動(dòng)的設(shè)計(jì)
- 基于S3C4510B的嵌入式系統(tǒng)調(diào)試技術(shù)
- S3C4510B系統(tǒng)中對(duì)觸摸屏控制的研究與實(shí)現(xiàn)
- μClinux在S3C4510B上的移植
- 基于uCLinux和S3C4510B的網(wǎng)絡(luò)通信設(shè)計(jì)
- s3c4510b中文手冊(cè),s3c4510b用戶手冊(cè)
- s3c4510b pdf datasheet (16/32-
- 基于S3C4510B的應(yīng)用系統(tǒng)設(shè)計(jì)與調(diào)試
- 應(yīng)用系統(tǒng)開(kāi)發(fā)詳解_基于S3C4510B的系統(tǒng)設(shè)計(jì)
- F1C100S添加USB驅(qū)動(dòng) 2276次閱讀
- 基于S3C2410處理器實(shí)現(xiàn)3G無(wú)線網(wǎng)卡接入無(wú)線網(wǎng)絡(luò)功能的設(shè)計(jì) 2610次閱讀
- 基于uClinux和S3C4510B微處理器實(shí)現(xiàn)家庭網(wǎng)絡(luò)中央控制器的設(shè)計(jì) 2095次閱讀
- 基于S3C4510B微處理器和μC/OSII實(shí)現(xiàn)數(shù)據(jù)采集系統(tǒng)的應(yīng)用方案 1757次閱讀
- 基于TMS320VC5416和S3C4510B芯片實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)字?jǐn)z像系統(tǒng)的設(shè)計(jì) 2659次閱讀
- 基于LPC2214和S3C44B0X實(shí)現(xiàn)PCB鉆床控制器的設(shè)計(jì) 4989次閱讀
- 基于S3C4510B微處理器和uClinux實(shí)現(xiàn)存儲(chǔ)系統(tǒng)的設(shè)計(jì) 913次閱讀
- 微雪電子EP3C FPGA NIOSII開(kāi)發(fā)板簡(jiǎn)介 1782次閱讀
- USB 3.1與USB Type-C有何區(qū)別 2.5w次閱讀
- 看看大神是怎么做LPC中的中斷處理 1735次閱讀
- 關(guān)于ARM7 S3C4510B上μClinux移植問(wèn)題 2407次閱讀
- 基于UClinux2.4.x+S3C4510B開(kāi)發(fā)平臺(tái)的USB-HOST驅(qū)動(dòng)設(shè)計(jì) 5201次閱讀
- ARM S3C4510B系統(tǒng)的異常中斷機(jī)制解析 1799次閱讀
- 基于ARM7系列芯片嵌入式平臺(tái)上實(shí)現(xiàn)的設(shè)計(jì)方案 2467次閱讀
- 基于ARM7的LCD設(shè)計(jì)與實(shí)現(xiàn) 3887次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開(kāi)關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開(kāi)發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多