複製鏈接
請複製以下鏈接發送給好友

Gadget

(一電腦軟件工具)

鎖定
Gadget 框架提出了一套標準API, 在底層, USB 設備控制器 (USB Device Controller, UDC) 驅動則實現這一套 API, 不同的 UDC (通常是 SOC 的一部分) 需要不同的驅動, 甚至基於同樣的 UDC 的不同板子也需要進行代碼修改。這一層我們可以稱之為平台相關層。
中文名
小工具
外文名
Gadget
別    名
平台相關層
相關概念
API,UDC等
全    稱
Linux-USB Gadget 驅動框架

目錄

Gadget簡介

Linux-USB Gadget 驅動框架(以下簡稱 Gadget )實現了 USB 協議定義的設備端的軟件功能。相對於 Linux USB 主機端( Host ) 驅動而言, Gadget 驅動出現較晚,它出現在 2.4.23 以後,
Since talking about a "USB Device Driver" becomes ambiguous when both sides of the protocol stack can run Linux, Linux-USB developers have chosen new terminology. A "USB Device Driver" is what current Linux kernels have: a Host-side driver. A Device-side driver is instead called a "USB Gadget Driver" ... that's why the new name.

Gadget功能

基於 API, Gadget 驅動實現了一套硬件無關的功能,這基本上可以對應到 USB 協議裏 的各種 USB Class , 也有比如 USB Gadget Generic Serial 驅動,沒有對應的 Class 。當然, Gadget 驅動還是受限於底層提供的功能的。比如 某些 Class 需要 USB Isochronous 端點,這時我們就不能支持該 Class 。
普通的 Gadget 驅動只實現一個功能(比如, u 盤, usb 網卡)。複合設備可以支持多個功能,後面將仔細研究一下複合設備的實現。像智能手機 , PDA 這樣的設備,硬件支持較豐富的端點、 DMA Buffer, 給軟件提了支持複合功能的基礎。
有兩點值得注意,第一是 usb gaget 驅動框架不象 usb 主機端有 usb core 的概念, usb 主機可能支持成百類型的外設,把通用功能抽象出來很有意義。 Usb device 端則通常沒有這個需求,一些通用功能抽象在一些 Helper 函數里就可以了。第二是 usb 2.0 裏提出了OTG的概念,可以在同一接口上支持 host 以及 device 功能。 OTG 是一個比較複雜的規範,以後有時間再研究。
此外,.Gadget後綴名文件是windows vista及windows7系統側邊欄的小工具安裝程序,可雙擊安裝。