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