下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于單片機(jī)的usb主控器驅(qū)動(dòng)設(shè)計(jì) 在現(xiàn)代社會(huì),系統(tǒng)逐漸深化到人們生活的方方面面,各類嵌入式系統(tǒng)產(chǎn)品之間往往通過(guò)某種接口舉行交互或數(shù)據(jù)傳遞。而現(xiàn)在,已經(jīng)成為嵌入式數(shù)據(jù)交換的最主要的方式,可是各種usb接口的設(shè)備都是基于pc機(jī)系統(tǒng)的,所以,基于嵌入式系統(tǒng)的usb接口的討論具有有用的價(jià)值和意義,特殊是起master作用的host端接口的討論。 解決這一問題的根本方法就是在需要用法usb設(shè)備的嵌入式系統(tǒng)中擴(kuò)展usb host功能模塊,使之具有與usb設(shè)備舉行數(shù)據(jù)傳輸?shù)哪芰?。usb協(xié)議按功能分為2部分,usb host(usb主協(xié)議)和usb slave(usb從協(xié)議)分離應(yīng)用于usb host con
2、troller(usb主控制器)和usb device(usb設(shè)備)。普通,usb host要比usb slave復(fù)雜,對(duì)于廣闊的非pc用戶來(lái)說(shuō),尤其是嵌入式系統(tǒng)用戶來(lái)說(shuō),因?yàn)閡sb協(xié)議的不對(duì)稱性,使得實(shí)現(xiàn)usb host比usb slave要困難地多,philips公司的isp1161a1芯片很好地解決了這種問題,他封裝了復(fù)雜的usb協(xié)議,使得在嵌入式系統(tǒng)中實(shí)現(xiàn)usb host和usb slave變得容易便利。2 usb host技術(shù)簡(jiǎn)介usb的通信可以用圖1表示,圖1中,左半部分為usb主機(jī)端,可以看出,usb主機(jī)端由2部分構(gòu)成,即軟件體和硬件體,事實(shí)上是3個(gè)軟件組件組成了usb host
3、解決計(jì)劃,即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è)可以被拜訪的端點(diǎ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è)備
4、有關(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特地針對(duì)usb協(xié)議設(shè)計(jì)的特別硬件結(jié)構(gòu)可便利地實(shí)現(xiàn)usb host和usb slave。isp1161的硬件結(jié)構(gòu)主要是3類不同的寄存器,用戶通過(guò)操作這3種寄存器來(lái)達(dá)到實(shí)現(xiàn)usb傳輸?shù)哪康?,這3類寄存器是:(1)hc control and status register
5、s:usb主控制器控制和狀態(tài)寄存器,主要用于傳輸過(guò)程中控制指令的存放和狀態(tài)的讀取,可讀可寫的寄存器有2個(gè)地址,只讀或只寫的寄存器惟獨(dú)1個(gè)地址。(2)isochronous transfer list (itl):同步傳輸列表緩沖區(qū)。(3)acknowledged transfer list(atl):接收傳輸列表緩沖區(qū)。按照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)程序主要涉
6、及以下2個(gè)重要內(nèi)容,下面具體介紹:4.1 讀/寫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ū),主控制器硬件允許軟件去拜訪每一個(gè)緩沖區(qū),就像他們是分別的硬件緩沖區(qū),hcd拜訪atl緩沖區(qū)通過(guò)硬件寄存器hctransfercounter(22h/a2h)和hcatlbufferport(41h/c1h),
7、而itl緩沖區(qū)則由hctransfercounter和hcitlbufferport(40h/c0h)拜訪。下面一段示例代碼取自于本項(xiàng)目,其功能是向atl緩沖區(qū)寫數(shù)據(jù),hcihpatl_len表示,atl則在內(nèi)存中還沒有發(fā)送的數(shù)據(jù)的長(zhǎng)度,hcihptl表示緩沖區(qū)的地址。4.2 硬件初始化過(guò)程當(dāng)isp1161x上電時(shí),主控驅(qū)動(dòng)程序(hcd)必需經(jīng)過(guò)下列的挨次對(duì)硬件舉行初始化,以便主控制器進(jìn)入可操作狀態(tài)。檢測(cè)主控制器,軟件復(fù)位主控制器,配置hchardwareconfiguration寄存器,配置中斷;配置hccontrol寄存器,配置hcfminterval寄存器,配置根集線寄存器,設(shè)置itl和
8、atl緩沖區(qū)長(zhǎng)度,安裝int1中斷服務(wù)程序。4.2.1 檢測(cè)主控制器檢測(cè)的工作由hcd完成的,hcd通過(guò)向寄存器hcscratch寫一個(gè)值,接著從該寄存器讀出,與剛才寫入的值舉行比較。假如寫入的和讀出的值相等,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,以便使主控制器為res
9、et狀態(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)生的中斷,比如startof f
10、rame,調(diào)度溢出和根集線器狀態(tài)轉(zhuǎn)變,這些中斷的發(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)用于表示在沒有引發(fā)調(diào)度溢出下可發(fā)送或
11、接收全速最大包大小,fi,psmps的推舉值為0x2edf和0x2778,所以將調(diào)用下列語(yǔ)句對(duì)該寄存器舉行初始化:write_reg32(hci,0x2edf|(0x277816),hcfminterval);4.2.6 配置root hub(根集線器)寄存器隨著初始化的深化,下面的特地針對(duì)根集線器3個(gè)寄存器也必需初始化:hcrhdescriptora,hcrhdescriptorb 和 hcrhstatus,前2個(gè)寄存器是按照板的制作自動(dòng)由isp1161x配置的,這2個(gè)寄存器均用來(lái)描述根集線器的特性。hcrhstatus被劃分為2個(gè)部分,低字部分表示集線器狀態(tài),而高字部分表示集線器狀態(tài)的轉(zhuǎn)變
12、,還有保留部分必需被初始化為規(guī)律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ū)必需存在,由于atl緩沖區(qū)用于控制,中斷和大批量傳輸,而itl的存在與否是可選的。4.2.8 設(shè)置int1中斷的服務(wù)程序假如在主控制器中發(fā)生一個(gè)或多個(gè)中斷,isp1161x的int1引腳將會(huì)通知微處理器,在本項(xiàng)目中,int1的引腳挺直接在的int0引腳上,驅(qū)動(dòng)程
13、序通過(guò)提供的函數(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è)備名稱;hci在此表示中斷設(shè)備號(hào)。5 在clinux中編譯usb主控驅(qū)動(dòng)接下來(lái)就如何將驅(qū)動(dòng)文件編譯到嵌入式操作系統(tǒng)做一個(gè)簡(jiǎn)要解釋。(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燒寫器燒寫到開發(fā)板的rom中,啟動(dòng)后舉行驗(yàn)證明現(xiàn)了對(duì)isp1161a1的控制。6 結(jié)語(yǔ)isp1161a1使得在嵌入式系統(tǒng)中實(shí)現(xiàn)usb host變
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度生態(tài)園林建設(shè)綠化種樹承包合同2篇
- 2025年度養(yǎng)老院老人外出活動(dòng)責(zé)任分擔(dān)協(xié)議3篇
- 2025年度網(wǎng)約車司機(jī)兼職車輛使用協(xié)議3篇
- 2025年度男女朋友共同創(chuàng)業(yè)合作協(xié)議書3篇
- 2025年度海洋工程機(jī)械設(shè)備租賃協(xié)議2篇
- 二零二五年度高原特色農(nóng)產(chǎn)品進(jìn)出口銷售合同3篇
- 2025年度養(yǎng)殖產(chǎn)品市場(chǎng)銷售合作協(xié)議書2篇
- 2025年度公司管理人員兼職與聘用合同3篇
- 2025年度戶外廣告牌安裝與夜間照明安全協(xié)議3篇
- 二零二五年度農(nóng)村土地經(jīng)營(yíng)權(quán)流轉(zhuǎn)與農(nóng)業(yè)產(chǎn)業(yè)扶貧合作合同3篇
- 小學(xué)生心理健康講座5
- 上海市市轄區(qū)(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)部編版期末考試((上下)學(xué)期)試卷及答案
- 國(guó)家職業(yè)技術(shù)技能標(biāo)準(zhǔn) X2-10-07-18 陶瓷工藝師(試行)勞社廳發(fā)200633號(hào)
- 人教版八年級(jí)上冊(cè)生物全冊(cè)教案(完整版)教學(xué)設(shè)計(jì)含教學(xué)反思
- 2024年銀行考試-銀行間本幣市場(chǎng)交易員資格考試近5年真題附答案
- 人教版小學(xué)四年級(jí)數(shù)學(xué)上冊(cè)期末復(fù)習(xí)解答題應(yīng)用題大全50題及答案
- 冀教版五年級(jí)上冊(cè)脫式計(jì)算題100道及答案
- 你是排長(zhǎng)我是兵(2022年山東濟(jì)南中考語(yǔ)文試卷記敘文閱讀題及答案)
- 《ISO56001-2024創(chuàng)新管理體系 - 要求》之22:“8運(yùn)行-8.2 創(chuàng)新行動(dòng)”解讀和應(yīng)用指導(dǎo)材料(雷澤佳編制-2024)
- 廣東省中山市2023-2024學(xué)年高三物理上學(xué)期第五次統(tǒng)測(cè)試題含解析
- 《體育科學(xué)研究方法》題庫(kù)
評(píng)論
0/150
提交評(píng)論