《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 嵌入式Linux的USB驅動設計
嵌入式Linux的USB驅動設計
現代電子技術
李麗宏,郝志剛
摘要: 本文主要介紹了Linux平臺的USB設備驅動開發的一般步驟方法和技巧,通過詳細介紹USB的相關概念和Linux中USB設備驅動程序的數據結構,框架和步驟,并通過設計和實現一個驅動的實例,總結了USB驅動的一般方法和技巧。
關鍵詞: 軟件 USB Linux 驅動
Abstract:
Key words :

   隨著計算機外圍硬件的擴展,各種外圍設備使用不同的總線接口,導致計算機外部各種總線繁多,管理困難,USB總線可以解決這些問題,因此而誕生。USB總線提供統一的外設的接口方式,并且支持熱插拔,方便了廠商開發設備和用戶使用設備。USB(通用串行總線)是由Microsft,Compad,Inter和NEC等推出的外圍總線接口,目前已發展到2.0標準最高支持480Mb/s的速率,最多可以支持127個外設。
    嵌入式Linux是一款源代碼完全免費的新興操作系統,用戶可以用戶可以通過網絡等其他途徑免費獲得,并可以任意修改其源代碼,這是其他的操作系統做不到的。正是由于這一點,Linux得到了廣泛的應用。

1 Linux中USB設備驅動程序框架及數據結構
1.1 USB的體系結構
    USB接口標準支持外部設備和主機之間進行數據傳送。在USB結構中主機頂設各種類型外設使用的總線寬度。當外設和主機在運行時,USB總線允許使用,設置,添加和拆除外設。
    在USB體系結構中一個USB系統可以分成USB設備、USB主機和USB互聯3個部分。USB互聯是USB設備和USB主機之間進行連接通信的操作,主要包括:
1)總線拓撲結構:UsB主機和USB設備之間的連接方式;
2)數據流模式:描述USB通信系統數據如何從產生方傳遞到使用方;
3)USB調度:USB總線是一個共享連接,對可以使用的連按進行調度以支持同步數據傳輸,并避免優先級判斷的開銷。
USB的物理連接是有層次的星型結構,如圖1所示。

a.jpg


從圖中可以看出USB集線器在一個節點上連接多個設備,每條線段都是點點連接,每個USB集線器在星形的中心。從主機到設備或者USB集線器,或USB集線器到設備都是點點連接。
1.2 USB驅動程序的結構
USN總線在技術層面上是非常簡單的,它是一個單主方式實現的,主機輪詢各種不同的外圍設備,USB另外一個重要的特性是它只擔當設備和主控制器之間通訊通道的角色,對所發送的數據沒有任何特殊的內容和結構上的要求。
Linux支持兩種類型的USB驅動,宿主系統上的驅動程序和設備上的驅動程序。宿主USB驅動程序控制插入其中的USB設備,而USB設備的驅動程序控制設備如何作為一個USB設備和主機通訊。這里主要討論設備驅動。

b.jpg


USB的基本通信的形式基本通過端點的東西。USB端點只能往一個方向傳輸數據,從主機到設備或從設備到主機。USB端點分別具有不同的傳輸數據的方式,他們有4種類型,分別是:1)控制端點用來控制對USB設備不同部分的訪問。他們用于配置設備,獲取設備信息,獲取設備的狀態報告,發送命令到設備。它是一種非周期性的可靠的傳輸。2)中斷端點就是設備傳輸數據時以一個固定的速率來傳輸少量的數據。這些端點是鼠標和USB鍵盤所使用的主要傳輸方式。它通常用于發送數據到USB設備以控制設備,一般不用來傳輸大量數據。USB協議保證這些傳輸有足夠的保留帶寬來傳輸數據。3)等時端點同樣可以傳輸大批量的數據,但數據是否到達沒有保障,這些端點用于可以應付數據丟失的情況,這類設備更注重于保持一定的恒定的數據流,實時的數據收集都使用這類端點。4)批量端點傳輸大量的數據。這些端點通常比中斷端點大的多他們常用于需要確保沒有數據丟失的傳輸設備。USB協議不保證這些傳輸始終可以在特定的時間內完成。如果總線上的空間不足以發送整個批量包。它將被分割為多個包進行傳輸。
當一個USB設備連接到主機時,主機會給這個設備分配一個1~127之間的唯一的設備號同時讀取該設備的描述符,該設備描述符是描述設備信息及其屬性的數據結構,USB以一種層次化的結構定義設備的描述符,設備描述符給出了USB設備的一般信息,包括對設備及所有設備配置起全程作用的信息,一個USB設備只能有一個設備描述符,配置描述符中的信息與設備特定的配置相關,一個USB設備可以有一個或多個配置描述符,每一個配置描述符又由一個或多個接口描述符組成,接口描述符的信息是與設備驅動程序的開發密切相關,可以一個接口對應一個設備驅動程序也可以多個接口對應一個設備驅動程序,接口描述符由零個或多個端點描述符組成,端點描述符定義了在一個給定的設備里實現的實際寄存器,這些描述符定義了每個寄存器的功能和特定的信息如端點要求的傳輸類型、傳輸方向、帶寬要求、查詢間隔等。另外,還有一個可選的宇符串描述符,它以UNCOND碼的格式給出了一些可讀的信息,這些信息通常是有關設備生產廠商、設備名設備序列號等,通過這些不同層次的描述符,主機設備驅動程序就可以知道具體設備的相關信息,從而對設備進行相應控制。

1.3 USB驅動程序框架
1.3.1 基本數據結構
usb-skel設備使用自定義結構usb_skel記錄設備驅動用到的所有描述符,該結構定義如下:
c.jpg
1.3.2 驅動程序初始化和注銷
同其他所有的Linux設備驅動程序一樣,usb-skel驅動使用module_init()宏初始化函數,使用module_exit()宏注銷函數。usb-skel驅動的初始化函數usb_skel_init()函數,定義如下:
d.jpg
在USB驅動中調用usb_deregister()函數注銷usb-skel設備驅動,函數定義如下:
e.jpg
1.3.3 初始化設備
從skel_driver結構可以知道usb-skel設備的初始化函數是skel_probe()函數,設備初始化主要是探測設備類型,分配USB設備用到的urb資源,注冊USB設備操作函數等。
skel_class結構變量記錄了usb-skel設備信息,定義如下:
f.jpg

name變量使用%d通配符表示一個整型變量,當一個usb-skel類型的設備連接到USB總先后會2按照子設備編號自動設置設備名稱。Fops設備操作函數結構變量,定義如下:
g.jpg
1.3.4 設備注銷
skel_disconnect()函數在注銷設備時被調用,定義如下:
h.jpg

2 USB串口驅動
2. 1 驅動初始化函數
usb_serial_init()函數是一個典型的USB設備驅動初始化函數,定義如下:
i.jpg


j.jpg
函數首先調用alloc_tty_driver()函數分配一個串口驅動描述符;然后設置串口驅動的屬性,包括驅動的主從設備號、設備類型、串口初始化參數等;串口驅動描述符設置完畢后,調用usb_register()函數注冊USB串口設備。
2. 2 驅動釋放函數
k.jpg
2.3 串口操作函數
USB串口設備驅動使用了一個tty_operations類型的結構,該結構包含了串口的所有操作,定義如下:
l.jpg
m.jpg
按上述的步驟和方法通過lnsmod命令成功實現了USB驅動程序的加載,成功的通過USB串口進行了數據的讀寫。

3 結論
新出的Linux2.6內核加入了對USB2.0的支持,重新定義了usb_class_driver結構體。同時對探測函數probe和usb_submit_urb做了修改,包含了advanced linux sound Archiecture可以更安全的使用USB設備。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          久久成人一区| 在线看欧美日韩| 国产精品国产三级国产aⅴ9色| 91久久嫩草影院一区二区| 亚洲最新色图| 欧美日韩成人一区二区| 亚洲欧美网站| 欧美日一区二区三区在线观看国产免| 夜夜爽www精品| 欧美日韩国产精品自在自线| 亚洲风情在线资源站| 伊大人香蕉综合8在线视| 久久综合伊人77777尤物| 伊人夜夜躁av伊人久久| 亚洲综合精品自拍| 亚洲一区二区精品| 伊人蜜桃色噜噜激情综合| 国产一区二区按摩在线观看| 国产日韩精品在线| 亚洲一区二区三区四区中文| 日韩视频在线观看免费| 久久久久久久波多野高潮日日| 亚洲系列中文字幕| 亚洲黄色片网站| 欧美伊人久久久久久久久影院| 欧美精品在线一区二区三区| 亚洲欧美伊人| 亚洲第一色在线| 欧美主播一区二区三区| 欧美影片第一页| 国产亚洲精品一区二区| 欧美日韩极品在线观看一区| 亚洲理论在线| 亚洲视频图片小说| 久久午夜视频| 久久久久久一区| 美女国内精品自产拍在线播放| 欧美日韩在线播放三区四区| 国产一区清纯| 亚洲人成网站999久久久综合| 免费91麻豆精品国产自产在线观看| 久久人人九九| 久久成人综合视频| 男女激情久久| 欧美国产日本| 久久亚洲二区| 欧美日韩精品免费观看视一区二区| 欧美久久久久久久| 在线观看亚洲精品视频| 欧美视频在线观看免费| 欧美网站大全在线观看| 久久久久欧美| 欧美不卡三区| 欧美专区亚洲专区| 国产精品日韩欧美大师| 国产在线一区二区三区四区| 欧美视频一区二区三区四区| 欧美一区综合| 91久久精品一区二区别| 欧美成人情趣视频| 一区二区三区精密机械公司| 欧美亚洲免费电影| 蜜桃av一区| 午夜精品视频| 亚洲黄色高清| 欧美性大战久久久久久久| 欧美一区二区高清| 亚洲影院在线观看| 99视频在线精品国自产拍免费观看| 欧美成人一区二区三区| 在线观看免费视频综合| 亚洲深夜福利视频| 亚洲图片欧美午夜| 国内精品模特av私拍在线观看| 欧美精品不卡| 久久久在线视频| 国产精品伦一区| 国产精品嫩草久久久久| 久久综合九色综合欧美狠狠| 国产午夜精品在线| 欧美国产日韩一二三区| 欧美精品成人在线| 在线成人欧美| 免费观看成人www动漫视频| 久久裸体视频| 日韩写真视频在线观看| 欧美激情第五页| 欧美一区二区三区免费大片| 亚洲婷婷综合久久一本伊一区| 国产毛片精品国产一区二区三区| 国产视频丨精品|在线观看| 欧美一区二区精品久久911| 久久精品亚洲国产奇米99| 久久久精品国产99久久精品芒果| 亚洲另类在线视频| 亚洲嫩草精品久久| 亚洲国产人成综合网站| 欧美成黄导航| 欧美日韩精品一区二区天天拍小说| 在线日韩电影| 国产欧美精品一区二区色综合| 久久av一区二区三区漫画| 欧美日韩国产丝袜另类| 欧美自拍丝袜亚洲| 亚洲第一偷拍| 狠狠色伊人亚洲综合成人| 国产欧美日韩一区| 久久免费视频网| 久久精品国产视频| 国产精品久久久免费| 欧美777四色影视在线| 久久蜜臀精品av| 狂野欧美性猛交xxxx巴西| 亚洲午夜精品一区二区三区他趣| 亚洲黄色在线看| 一本久道久久综合中文字幕| 国产精品成人一区二区三区夜夜夜| 日韩一级在线| 欧美午夜性色大片在线观看| 国产精品腿扒开做爽爽爽挤奶网站| 狠狠色综合色综合网络| 一本色道久久精品| 亚洲免费av片| 亚洲夜晚福利在线观看| 欧美无乱码久久久免费午夜一区| 久久久久久久综合狠狠综合| 亚洲精品欧美日韩专区| 欧美国产丝袜视频| 欧美日韩视频在线观看一区二区三区| 午夜在线精品偷拍| 免费欧美日韩国产三级电影| 欧美一级黄色网| 国产精品电影观看| 另类人畜视频在线| 亚洲三级电影全部在线观看高清| 欧美日韩精品高清| 欧美视频四区| 国产欧美精品日韩| 国产伦精品一区二区三区| 在线日本高清免费不卡| 日韩一级成人av| 在线免费观看视频一区| 国产精品亚洲精品| 日韩午夜激情av| 国产一区三区三区| 亚洲欧美乱综合| 国产精品久久久久久久久免费桃花| 欧美人成网站| 激情91久久| 欧美三级乱人伦电影| 欧美亚洲免费电影| 亚洲精品久久久久久下一站| 久久不射中文字幕| 欧美激情乱人伦| 欧美日韩在线视频观看| 亚洲毛片一区二区| 亚洲性线免费观看视频成熟| 另类综合日韩欧美亚洲| 国产裸体写真av一区二区| 亚洲性图久久| 久久婷婷久久一区二区三区| 一区在线视频观看| 国产一区二区三区奇米久涩| 亚洲性感美女99在线| 欧美精品乱码久久久久久按摩| 99人久久精品视频最新地址| 欧美日韩亚洲视频一区| 久久亚洲春色中文字幕久久久| 欧美与黑人午夜性猛交久久久| 激情小说亚洲一区| 韩国一区二区三区在线观看| 一本大道久久a久久精品综合| 国产伦理精品不卡| 国产日韩专区| 久久精品综合网| 国产欧美一区二区精品仙草咪| 欧美亚洲免费高清在线观看| 欧美视频在线观看视频极品| 亚洲欧美日本视频在线观看| 亚洲精品国精品久久99热一| 国产欧美日韩不卡免费| 性欧美1819性猛交| 欧美高清一区| 久久精品夜夜夜夜久久| 欧美另类69精品久久久久9999| 久久一区欧美| 欧美成年人网站| 欧美 日韩 国产精品免费观看| 欧美制服丝袜| 久久视频免费观看| 国产欧亚日韩视频| 亚洲欧美变态国产另类| 亚洲精品久久嫩草网站秘色| 欧美成人精品福利| 亚洲高清二区| 欧美国产日韩一区二区三区| 亚洲人成绝费网站色www| 亚洲精品视频在线| 欧美精品一区二区三区视频| 在线一区日本视频| 一区二区高清在线| 久久久久综合| 亚洲一区999| 最新国产乱人伦偷精品免费网站| 久久久精品国产免大香伊| 在线日韩欧美视频| 国产精品美女久久福利网站| 国产亚洲欧美日韩在线一区| 久久精品成人一区二区三区蜜臀| 欧美成人精品激情在线观看| 欧美中日韩免费视频| 久热这里只精品99re8久| 在线观看的日韩av| 在线欧美不卡| 国产精品日韩欧美一区| 亚洲激情在线观看| 红桃av永久久久| 国产婷婷色一区二区三区四区| 欧美一级视频一区二区| 亚洲免费精彩视频| 久久五月天婷婷| 午夜免费电影一区在线观看| 久久久99久久精品女同性| 亚洲高清在线| 欧美大秀在线观看| 国产精品第一页第二页第三页| 欧美三区不卡| 亚洲一区二区精品| 亚洲性人人天天夜夜摸| 久久久久久久精| 性欧美大战久久久久久久免费观看| 国产农村妇女毛片精品久久麻豆| 久久久亚洲国产天美传媒修理工| 亚洲国产成人在线视频| 国产精品人人爽人人做我的可爱| 亚洲欧美国产毛片在线| 欧美日韩亚洲综合| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美午夜久久久| 在线成人免费观看| 欧美在线高清视频| 国产精品羞羞答答| 欧美午夜片欧美片在线观看| 欧美日韩三级| 欧美aⅴ一区二区三区视频| 欧美影院视频| 99精品国产在热久久| 欧美成人中文字幕| 久久一本综合频道| 亚洲午夜一区二区三区| 午夜在线不卡| 久久五月激情| 国产乱码精品| 媚黑女一区二区| 久久免费高清视频| 国产美女精品| 欧美精品亚洲精品| 久久久亚洲国产天美传媒修理工| 国产欧美日韩在线视频| 亚洲私人影吧| 亚洲精品欧美日韩| 国产毛片久久| 欧美日本不卡视频| 亚洲午夜羞羞片| 久久精品女人的天堂av| 激情亚洲一区二区三区四区| 亚洲综合导航| 国产精品久久午夜| 狠狠色噜噜狠狠色综合久| 欧美精品999| 欧美日韩视频专区在线播放| 亚洲午夜电影在线观看| 国产精品一区二区三区四区五区| 亚洲制服av| 国产精品成人一区二区三区吃奶| 欧美精品 国产精品| 亚洲国产精品一区二区第一页| 亚洲黄色大片| 欧美国产一区二区三区激情无套| 亚洲成人自拍视频| 校园春色国产精品| 久久中文字幕一区二区三区| 欧美v国产在线一区二区三区| 精品成人国产在线观看男人呻吟| 国产伦精品一区二区三区免费迷| 国产欧美精品久久| 国产一区二区三区免费不卡| 国产精品久久久久久久久久免费| 嫩草伊人久久精品少妇av杨幂| 国产精品一区久久久| 欧美伦理视频网站| 欧美在线一二三四区| 亚洲一区二区日本| 久久久青草婷婷精品综合日韩| 午夜免费久久久久| 亚洲一区日韩| 欧美**字幕| 国产日韩欧美在线观看| 中文国产成人精品| 亚洲私人影院在线观看| 欧美制服第一页| 国产精品jvid在线观看蜜臀| 国产精品第一区| 宅男噜噜噜66一区二区| 欧美无砖砖区免费| 亚洲精品综合久久中文字幕| 亚洲激情在线播放| 国产精品久久久久久亚洲毛片| 亚洲欧洲偷拍精品| 日韩视频免费看| 亚洲小说春色综合另类电影| 一本久久a久久免费精品不卡| 亚洲日本va午夜在线影院| 欧美性色aⅴ视频一区日韩精品| 亚洲大胆av| 国产麻豆精品theporn| 国产真实精品久久二三区| 国产亚洲一区二区三区在线观看| 99亚洲视频| 国产精品视频区| 欧美日韩另类在线| 玖玖综合伊人| 欧美激情一区二区三级高清视频| 玖玖国产精品视频| 亚洲理伦在线| 亚洲国产小视频在线观看| 国产一区二区三区自拍| 久久久久久国产精品mv|