在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于LPC2132的U盤軟硬件系統(tǒng)設(shè)計(jì)

            基于LPC2132的U盤軟硬件系統(tǒng)設(shè)計(jì)

            作者: 時(shí)間:2012-08-27 來(lái)源:網(wǎng)絡(luò) 收藏

            為了使軟件可移植性強(qiáng)、易維護(hù),采用分層的方法編寫PDIUSBDl2的驅(qū)動(dòng)程序。USB驅(qū)動(dòng)程序分層結(jié)構(gòu)如表1所列。

            ①硬件提取層(D12HAL.c)包含最底層的函數(shù)。
            ②D12命令接口(D12CI.c)實(shí)現(xiàn)PDIUSBDl2的命令接口以簡(jiǎn)化器件的編程。該層的甬?dāng)?shù)及其功能如下:
            ◇讀取芯片ID號(hào),uintl6 D12_ReadChipID(void);
            ◇沒(méi)置地址/使能,void D12_SetAddressEnable(UINT8bAddress,UINT8 bEnable);
            ◇設(shè)置端點(diǎn)使能,void D12_SetEndpointEnable(UINT8 bEnablc);
            ◇設(shè)置模式,void D12_SetMode(uint8 bConfig,uint8bClkDiv)。
            ③協(xié)議層(Chap_9.c)處理標(biāo)準(zhǔn)的USB設(shè)備請(qǐng)求,以及特殊的廠商請(qǐng)求,如DMA等。USB主機(jī)通過(guò)標(biāo)準(zhǔn)USB設(shè)備請(qǐng)求,可設(shè)定和獲取USB設(shè)備的有關(guān)信息,完成USB設(shè)備的枚舉。
            所有的請(qǐng)求都是通過(guò)端點(diǎn)0接收和發(fā)送SETUP包來(lái)完成的。接收主機(jī)SETUP包的函數(shù)為ep0_rxdone(),所有SETUP包都由函數(shù)control_handler()來(lái)處理,發(fā)送SETUP包的函數(shù)為ep0_txdone()。SETUP包的接收和發(fā)送通過(guò)控制傳輸結(jié)構(gòu)仝局變量CONTROL_XFER ControlData來(lái)控制,它實(shí)現(xiàn)了以上3個(gè)函數(shù)之間的通信。


            上述幾個(gè)函數(shù)及ControlData變量之問(wèn)的關(guān)系如圖3所示。

            ④應(yīng)用層(D12Driver.c)實(shí)現(xiàn)PDIUSBD12的所有功能。USB設(shè)備控制驅(qū)動(dòng)、USB接口控制驅(qū)動(dòng)和協(xié)議層都在應(yīng)用層的控制之中。應(yīng)用層要實(shí)現(xiàn)的仟?jiǎng)?wù)包括:
            ◆初始化PDIUSBDl2。包括初始化PDIUSBD12的硬件連接、復(fù)位PDIUSBDl2、配置PDIUSBD12的中斷服務(wù)程序地址、初始化應(yīng)用層相關(guān)的全局變量。
            ◆編寫PDIUSBD12中斷服務(wù)程序。PDIUSBD12幾乎所有功能都是通過(guò)PDIUSBDl2中斷服務(wù)程序來(lái)完成的,因此中斷服務(wù)程序是應(yīng)用層的核心部分,也是本驅(qū)動(dòng)程序的核心部分。它要完成以下任務(wù):
            ◇控制端點(diǎn)數(shù)據(jù)接收與發(fā)送中斷服務(wù)程序,負(fù)責(zé)處理控制傳輸?shù)挠嘘P(guān)工作;
            ◇端點(diǎn)1和端點(diǎn)2數(shù)據(jù)接收與發(fā)送中斷服務(wù)程序;
            ◇USB總線掛起、復(fù)位、DMA結(jié)束中斷服務(wù)程序。
            ◆用戶讀寫端點(diǎn)1和端點(diǎn)2的API函數(shù)。
            ◆傳輸控制處理任務(wù)。該任務(wù)用于處理枚舉、標(biāo)準(zhǔn)任務(wù)請(qǐng)求、廠商請(qǐng)求等傳輸控制。
            2.2 Mass 的實(shí)現(xiàn)
            完整的Mass 需要實(shí)現(xiàn)如下兒部分:在枚舉時(shí),提供Mass 描述符;實(shí)現(xiàn)BulkOnly批量傳輸協(xié)議;實(shí)現(xiàn)SCSI命令集。
            2.2.1 Mass Storage類協(xié)議描述符

            USB采用設(shè)備類的方式對(duì)設(shè)備進(jìn)行管理。要讓主機(jī)識(shí)別設(shè)備,設(shè)備就必須提供正確的描述符:
            ◇設(shè)備描述符;
            ◇配置描述符;
            ◇接口描述符;
            ◇端點(diǎn)描述符。
            2.2.2 Bulk-Only批量傳輸協(xié)議實(shí)現(xiàn)
            Bulk-Only協(xié)議包括兩部分:類特定請(qǐng)求命令和Bulk-Only傳輸。
            (1)類特定請(qǐng)求命令
            ①批量傳輸?shù)拇笕萘看鎯?chǔ)器復(fù)位。要發(fā)送批量傳輸?shù)拇笕萘看鎯?chǔ)器復(fù)位請(qǐng)求,主機(jī)將在默認(rèn)管道發(fā)送一個(gè)設(shè)備請(qǐng)求:
            ◇bmRequestType——類、接口、主機(jī)到設(shè)備;
            ◇bRequest字段設(shè)置為255(FFh);
            ◇wValue字段設(shè)置為0;
            ◇wIndex字段設(shè)置為接口編號(hào);
            ◇wLength字段設(shè)置為O。
            批量傳輸?shù)拇笕萘看鎯?chǔ)器復(fù)位請(qǐng)求如下:


            ②獲取最大邏輯單元號(hào)(專用類清求)。Get MaxLUN設(shè)備請(qǐng)求用于確定設(shè)備支持的邏輯單元編號(hào)。設(shè)備的邏輯單元編號(hào)可以從LUN為O到LUN的最大值15(Fh)。
            要發(fā)送Get Max LUN設(shè)備請(qǐng)求,主機(jī)應(yīng)在以下默認(rèn)管道發(fā)送一個(gè)設(shè)備請(qǐng)求:
            ◇bmRequestType——類、接口、設(shè)備到主機(jī);
            ◇bRequest范圍設(shè)置為254(FEh);
            ◇wValue字段設(shè)置為0;
            ◇wIndex字段設(shè)置為接口編號(hào);
            ◇wLength字段設(shè)置為1。
            獲得最大邏輯單元字如下:


            設(shè)備應(yīng)返回1字節(jié)包含設(shè)備支持的最大邏輯單元數(shù)。例如,如果設(shè)備支持4個(gè)LUN,則LUN的編號(hào)應(yīng)從0~3,則返回值為3。如果設(shè)備沒(méi)有相關(guān)的LUN,則返回值為0。主機(jī)不應(yīng)向一個(gè)不存在的LUN發(fā)送命令塊包(CBW)。
            不支持多LUN的設(shè)備會(huì)返回STALL。
            (2)Bulk—Only傳輸
            Bulk—Only傳輸協(xié)議沒(méi)有使用中斷和控制端點(diǎn),僅使用Bulk批量端點(diǎn)來(lái)進(jìn)行命令塊、數(shù)據(jù)和命令塊狀態(tài)的傳輸??刂贫它c(diǎn)(默認(rèn))管道僅用來(lái)請(qǐng)求批量端點(diǎn)上的STALL停止的狀態(tài)和執(zhí)行類特定請(qǐng)求命令。
            Bulk—Only傳輸?shù)牧鞒倘鐖D4所示。



            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉