亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式Linux USB OTG體系結(jié)構(gòu)

        2015-11-17 06:03:10進(jìn)
        中國科技信息 2015年16期
        關(guān)鍵詞:嵌入式用戶功能

        蒲 進(jìn)

        嵌入式Linux USB OTG體系結(jié)構(gòu)

        蒲 進(jìn)

        通過引入基于嵌入式Linux的USB OTG子系統(tǒng)的體系結(jié)構(gòu),重點(diǎn)分析了支持Mass Storage Class的USB OTG協(xié)議棧結(jié)構(gòu),并據(jù)此提出了符合便攜式多媒體設(shè)備特點(diǎn)以及USB OTG規(guī)范的結(jié)構(gòu)框架。

        由于傳統(tǒng)的USB 系統(tǒng)是一個(gè)基于主機(jī)的主從(Host/ Device) 結(jié)構(gòu),作為外設(shè)端角色出現(xiàn)的嵌入式設(shè)備在通過USB 接口傳輸數(shù)據(jù)時(shí)就必須依賴PC進(jìn)行通信。為了擺脫P(yáng)C實(shí)現(xiàn)嵌入式系統(tǒng)間的USB 數(shù)據(jù)傳輸U(kuò)SBIF于2001 年發(fā)布了專門用于USB 外設(shè)間可移動(dòng)互連的USB2.0協(xié)議的補(bǔ)充規(guī)范USB OTG(On-The-Go) 。USB OTG補(bǔ)充規(guī)范主要由HNP 協(xié)議和SRP協(xié)議組成,并定義了新的設(shè)備類型:即雙角色OTG 設(shè)備(Dual-Role Device) 。兩用OTG 設(shè)備允許設(shè)備以外設(shè)和主機(jī)兩種方式工作, 支持HNP 協(xié)議和SRP 協(xié)議。將嵌入式系統(tǒng)設(shè)計(jì)成雙角色OTG設(shè)備就可以和其他USB 接口設(shè)備直接相連,從而進(jìn)行點(diǎn)對點(diǎn)的數(shù)據(jù)傳輸。USB OTG結(jié)合了對移動(dòng)應(yīng)用友好的新特性,包括低功耗、更小的USB接頭以及在相同的USB端口上增加了雙重角色的功能。OTG已經(jīng)被越來越多的嵌入式設(shè)備采納。

        Linux USB OTG協(xié)議棧體系結(jié)構(gòu)

        為了迎合USB OTG成為更多嵌入式終端必備的標(biāo)準(zhǔn)接口這一趨勢,Linux也從2.6版本開始提供對USB OTG的支持。Linux下的USB OTG的系統(tǒng)結(jié)構(gòu)可分為四層。

        (1)Controller驅(qū)動(dòng)層

        Controller驅(qū)動(dòng)層則是各種具體硬件的控制器的驅(qū)動(dòng)程序,針對于OTG的結(jié)構(gòu)一般包括host controller(UHC)驅(qū)動(dòng)、device controller(UDC)驅(qū)動(dòng)和OTG controller(UOC)驅(qū)動(dòng)。為了保證上層USB通用驅(qū)動(dòng)與具體的controller硬件無關(guān),Controller驅(qū)動(dòng)層必須根據(jù)Framework層導(dǎo)出的接口為其提供相應(yīng)的實(shí)現(xiàn)。

        (2)Framework層

        Framework層則是對硬件的抽象層,它的目的就是通過定義一系列的數(shù)據(jù)結(jié)構(gòu)、函數(shù)和宏定義來抽象所有和controller或device硬件相關(guān)的部分。其中主機(jī)端的USB Core為上層USB device driver和下層的UHC 驅(qū)動(dòng)提供了標(biāo)準(zhǔn)接口,同樣,從機(jī)端的Gadget Framework為上層Gadget driver和下層UDC驅(qū)動(dòng)也都分別提供了一組相應(yīng)的標(biāo)準(zhǔn)接口。特別的是,OTG Framework服務(wù)對象不是上層的USB通用驅(qū)動(dòng)而是UHC驅(qū)動(dòng)和UDC驅(qū)動(dòng),和其下層的UOC驅(qū)動(dòng),簡單的說就是OTG Framework對上層的USB通用驅(qū)動(dòng)來說是透明的。

        (3)USB通用驅(qū)動(dòng)層

        USB通用驅(qū)動(dòng)層則是對具體設(shè)備功能的實(shí)現(xiàn)。它們一般是硬件無關(guān)的,只是符合某種USB Class Spec的規(guī)定或者制造商自定義的設(shè)備類型即可。其中主機(jī)端的統(tǒng)稱為USB設(shè)備驅(qū)動(dòng)(客戶驅(qū)動(dòng)),從機(jī)端的稱為Gadget驅(qū)動(dòng)。

        (4)附加層

        附加層則是包括諸如:文件系統(tǒng)、網(wǎng)絡(luò)、Block I/ O子系統(tǒng)等等。它們主要工作就是產(chǎn)生和消費(fèi)通過下層USB OTG子系統(tǒng)傳輸?shù)臄?shù)據(jù)。

        支持Mass Storage Class的USB OTG的協(xié)議棧

        對于Mass Storage Class的支持是項(xiàng)目研發(fā)設(shè)備的既定目標(biāo)之一。下面就以USB Mass Storage Class為例分析一下該情況下主機(jī)端和從機(jī)端的體系結(jié)構(gòu)。

        從機(jī)端的體系結(jié)構(gòu)

        通常情況下,從USB設(shè)備的角度來說某一時(shí)刻從機(jī)端只能是屬于某一個(gè)特定種類的設(shè)備,或者說是具有某種特定功能的設(shè)備。而這個(gè)功能的決定者就是從機(jī)端的設(shè)備功能驅(qū)動(dòng),在Linux里就是gadget驅(qū)動(dòng)。所以gadget驅(qū)動(dòng)的類型以及采用的機(jī)制將很大程度影響USB Gadget子系統(tǒng)和內(nèi)核中其他驅(qū)動(dòng)或子系統(tǒng)的交互方式。

        在支持Mass Storage的從機(jī)端結(jié)構(gòu)中,Gadget Mass Storage Device Driver是實(shí)現(xiàn)了從機(jī)端的Mass Storage Class的gadget driver,其目的就是讓使用該gadget driver的從機(jī)連接到主機(jī)上后顯示一個(gè)SCSI硬盤驅(qū)動(dòng)器。實(shí)現(xiàn)該驅(qū)動(dòng)的基本機(jī)制是File-backed,即用一個(gè)普通文件或者一個(gè)block設(shè)備來充當(dāng)該驅(qū)動(dòng)器的后臺(tái)存儲(chǔ)介質(zhì)。另一個(gè)特點(diǎn)就是該驅(qū)動(dòng)也允許后臺(tái)存儲(chǔ)介質(zhì)的可插拔性,例如使用SD卡或MMC卡作為Block設(shè)備來從當(dāng)后臺(tái)存儲(chǔ)介質(zhì)。該驅(qū)動(dòng)支持CB、CBI或者Bluk-only三種Mass Storage傳輸協(xié)議,以及RBC,ATAPI or SFF-8020i,QIC-157,UFI,SFF-8070i ,and transparent SCSI 等協(xié)議。

        圖1 支持MSC的Linux USB Gadget Subsystem

        圖1描述的就是基于File-backed機(jī)制的支持Mass Storage的Gadget子系統(tǒng)。其中Disk是一個(gè)掛載在本地文件系統(tǒng)上的塊設(shè)備。用戶空間中相應(yīng)的設(shè)備文件節(jié)點(diǎn)/dev/hda1可以讓用戶或其他應(yīng)有程序在用戶模式下對該塊設(shè)備進(jìn)行讀取訪問。另一方面處于內(nèi)核態(tài)的USB Gadget子系統(tǒng)也可以通過VFS對該塊設(shè)備進(jìn)行操控以響應(yīng)主機(jī)端發(fā)送過來的讀寫操作。但同一時(shí)刻對該塊設(shè)備只能有一種訪問方式進(jìn)行,也即本地用戶模式下的應(yīng)用和主機(jī)端只能互斥訪問該塊設(shè)備,以保證塊設(shè)備上的數(shù)據(jù)完畢性。

        主機(jī)端的Mass Storage驅(qū)動(dòng)設(shè)計(jì)原理是:當(dāng)一個(gè)Mass Storage設(shè)備插入時(shí),Mass Storage驅(qū)動(dòng)會(huì)產(chǎn)生一個(gè)kernel線程去控制和處理該設(shè)備。該線程將注冊為一個(gè)虛擬的SCSI控制器,并且該線程會(huì)在設(shè)備插入/拔出時(shí)一直作為SCSI接點(diǎn)存在,這樣可以保證一個(gè)移去的設(shè)備再次插入時(shí)會(huì)被分配同樣的設(shè)備接點(diǎn)/dev。該控制線程從其上層的SCSI中間層接收命令,經(jīng)過必要的完整性檢查后發(fā)送到協(xié)議處理函數(shù),該處理函數(shù)負(fù)責(zé)在必要的情況下重寫命令到設(shè)備可以接受的形式。在協(xié)議處理函數(shù)處理完畢后,命令被遞交給傳輸處理函數(shù),由該處理函數(shù)完成具體的命令傳輸、數(shù)據(jù)交換以及獲取設(shè)備狀態(tài)等任務(wù)。在命令被處理完畢后,scsi_done函數(shù)被調(diào)用來通知SCSI中間層該命令被成功處理,可以進(jìn)行下一條命令的接收和處理工作。

        主機(jī)端的基本處理流程:用戶從設(shè)備上讀寫數(shù)據(jù)首先通過VFS的通用系統(tǒng)調(diào)用到文件系統(tǒng),然后由文件系統(tǒng)將通過通用硬盤結(jié)構(gòu)得到塊設(shè)備信息以及讀寫操作傳遞到SCSI中間層進(jìn)行SCSI協(xié)議的封裝。Mass Storage驅(qū)動(dòng)從SCSI中間層獲得相應(yīng)的SCSI命令,將命令封裝成USB Mass Storage Class對應(yīng)的某種傳輸協(xié)議(CB,CBI,或者Bulk-Only),最后封裝成URB發(fā)送到USB Core,并由USB Core將該URB發(fā)送到主機(jī)控制驅(qū)動(dòng),最終通過USB接口傳給從機(jī)設(shè)備。

        便攜式多媒體設(shè)備上的Linux USB OTG體系結(jié)構(gòu)的設(shè)計(jì)

        根據(jù)目標(biāo)設(shè)備的情況需要對現(xiàn)有的Linux USB OTG架構(gòu)做出一些改動(dòng)。結(jié)合嵌入式目標(biāo)設(shè)備的功能特點(diǎn)和USB規(guī)范提出的Linux USB OTG體系結(jié)構(gòu)不僅設(shè)計(jì)了協(xié)議棧部分,同時(shí)還提出了OTG應(yīng)用框架,該框架是對OTG協(xié)議規(guī)范在應(yīng)用層面上的一種延伸,使得基于該體系結(jié)構(gòu)開發(fā)的 USB OTG設(shè)備具備以下功能以兼容USB OTG規(guī)范:

        具備受限的USB Host功能

        Device模式下應(yīng)支持Full Speed或者High Speed

        Host模式下應(yīng)支持Low Speed, Full Speed,High Speed

        具備Target Peripheral List

        支持SRP

        支持HNP

        在使用過程中提供用戶相關(guān)的信息。

        此外,為了最終向用戶提供更友好的操作界面,該框架額外支持的功能和特性包括:

        Host模式下支持hotplug,能主動(dòng)提示用戶插入設(shè)備的基本信息以及設(shè)備的當(dāng)前狀態(tài)

        Device模式下支持用戶選擇和更換設(shè)備功能

        可控的SRP

        可控的HNP

        更豐富的消息、狀態(tài)和提示。

        結(jié)束語

        易用性和兼容性是便攜式多媒體消費(fèi)電子產(chǎn)品追求的重要目標(biāo)。本文介紹的支持OTG的USB體系結(jié)構(gòu)已經(jīng)在炬力嵌入式Linux 系統(tǒng)中得到實(shí)現(xiàn),使用該結(jié)構(gòu)開發(fā)的多媒體播放器可以脫離PC的束縛,非常便利地交換數(shù)據(jù),提高了用戶使用體驗(yàn),達(dá)到了預(yù)期的市場效果。

        蒲 進(jìn)

        炬芯(珠海)科技有限公司

        10.3969/j.issn.1001-8972.2015.16.021

        猜你喜歡
        嵌入式用戶功能
        也談詩的“功能”
        中華詩詞(2022年6期)2022-12-31 06:41:24
        搭建基于Qt的嵌入式開發(fā)平臺(tái)
        關(guān)于非首都功能疏解的幾點(diǎn)思考
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        如何獲取一億海外用戶
        Altera加入嵌入式視覺聯(lián)盟
        中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
        人妻少妇乱子伦精品无码专区电影 | 精品无码国产自产拍在线观看蜜| 中文字幕精品无码一区二区 | 国产精品偷窥熟女精品视频| 日韩亚洲欧美中文在线| 久久精品波多野结衣中文字幕 | 国产v视频| 亚洲伊人成综合人影院| 国产精品国产三级国产av18| 色妞色视频一区二区三区四区| 久久综合第一页无码| 国产一区二区三区观看视频| 中文字幕亚洲精品在线免费| aa片在线观看视频在线播放| 麻豆精产国品| 亚洲中文字幕乱码一二三区| 亚洲天堂一区二区偷拍| 国内精品伊人久久久久网站| 欧美亚州乳在线观看| 国产一级一片内射在线| 久久九九精品国产av| 麻豆国产原创视频在线播放| 国产在线不卡视频| 午夜视频一区二区在线观看| 在线中文字幕乱码英文字幕正常| 久久久久久久综合狠狠综合| 亚洲AV小说在线观看| 国产亚洲熟妇在线视频| 久久99国产精一区二区三区| 国产精品18禁久久久久久久久| 91青青草视频在线播放| 亚洲gay片在线gv网站| 久久精品人人爽人人爽| 久久亚洲AV无码一区二区综合| 少妇又紧又爽丰满在线视频| 国产99在线 | 亚洲| 91av视频在线| 白浆高潮国产免费一区二区三区| 国产精品久久久久一区二区三区| 亚洲精品国产v片在线观看| 国产精品一区二区av白丝在线|