Linux下USB驅動框架分析【轉】


http://www.cnblogs.com/general001/articles/2319552.html

 

 

http://blog.csdn.net/uruita/article/details/7263290:MODULE_DEVICE_TABLE

 

http://blog.chinaunix.net/uid-25909619-id-3281432.html: usb 流程

 

 

http://blog.chinaunix.net/uid-25909619-id-3273345.html:uhci

 

 

http://blog.chinaunix.net/uid-25909619-id-3381683.html: usb熱插拔實現機制(hub probe或者中斷)

 

http://www.cnblogs.com/sdphome/archive/2011/09/29/2195789.html

http://blog.csdn.net/jiang_dlut/article/details/5832237: 這個講了usb_device_driver和usb_driver。usbhub發現新設備的插入時, 先用device來進行dvice_add(見usb_alloc_dev, 其中dev->dev.type = &usb_device_type; 這個表示是整個usb device), 然后usb_register_device_driver注冊的driver的generic_probe會被usb_probe_device調用, 這個函數會調用usb_set_configuration。如此接口類型的device_add會被調用(intf->dev.type = &usb_if_device_type; 這個表示是usb interface設備(當時理解了半天, 這么着都找不到interface probe中的dev是怎么能轉變成interface的。多虧了這篇文檔))。這樣設備接口的probe函數就在usb_probe_interface中被調用,usb_probe_interface是在usb_register_driver(usb_register)中注冊的。這樣usb設備的枚舉過程就容易讀了。

http://blog.csdn.net/brucexu1978/article/details/9043523:這個文章介紹了linux device和driver匹配的過程。

 

 

 

http://wenku.baidu.com/link?url=eIwUG6V4v4dUPub-z_6EZS3LTHKDtgzU4nyArhlqnVU40qNk3sRRdbE7TeMYIkiSHQWN9wiwXYXfG2isxVvONAiqOYzg9xpg8ViSjpbfeyi: usb協議

 http://wenku.baidu.com/link?url=Hzjv0uKuJ0zUIhOHEUErEKjWY93cB0FGvVG9jaF8TWzxQCJjLSdSKOAWDbsb-fTkI5eUwYueGqyaS89iEjP5Ynt5qAqnUJevcXgtC26UDpG: usb hub協議

 

 

http://download.farsight.com.cn/download/pdf/Farsight-USB08-HubRequest.pdf: hub request

 

 

http://wenku.baidu.com/link?url=ZH7Oe5k8B1yH-04YKAiFh948-fqsxn7sqpAd9b3iemJ5J_gmn4ojsyP1UbCkRL0-pD3NmYP5l519f4SM5NOVQnBT0qCI4bN91J-2hbU2RMe: ohci寄存器描述:ed, td

 

http://blog.csdn.net/qiurihuanghua/article/details/6411640: ehci:軟件簡化

 

http://wenku.baidu.com/link?url=T8JhyspWwUrlRimCCBySy0XUwxULwYcVx1jkIM78z7sKqD80ivjiet5LwMvtQbB0gVQBU-I5DvnpP0ZelAix2S3zGuoYNULSqcXrwA77dDq:usb3.0:多了4根超速線, 分離的2個hub(超速, 2.0), 設備可以發ready的異步請求, 不同於2.0的由主機發起的輪詢請求。流式管道用於3.0的流控(bulk擴展)。支持突發模式傳輸. 網上基本沒有linux usb3.0驅動的講解文章, 也沒有特別公開的usb3.0芯片的資料和講解(20140122)。

 

 

http://www.epc.com.cn/subject/200803/10591.html: 無線usb帶寬分析

 

http://blog.csdn.net/leo_wonty/article/details/7418261:usb masstorage

http://blog.chinaunix.net/uid-10386087-id-2958758.html

http://blog.csdn.net/xushiyan/article/details/6877460: 描述linux scsi驅動的架構, 包括跟linux塊層的接口,跟底層host的接口, 以及一些sequence。至此明白usb mass storage設備是如何掛接scsi, 再掛接到塊設備, 由此掛接到文件系統的(不好意思, 這個花了偶近5年的時間, 因為是靠平常的時間, 悲催啊)。

 http://blog.csdn.net/xushiyan/article/details/6941640:scsi io回調

 

 

usb gadget:

http://blog.csdn.net/successcw/article/details/17137361

http://wenku.baidu.com/link?url=m73s8Hq5wxD-DZR5X02-Ltp9kEGiNSlKSUfJhf0mvrityUP5CwE1JnpyndnqlFcrW2hrMhL8_4LH0utF1p2DDAL00u44Y40Znosh51V2yxK

 http://blog.csdn.net/arnoldlu/article/details/9291883

 

http://lwn.net/Articles/395712/:講述不用composite framework的逆勢.

usb device側的gadget驅動框架總體上比較薄。協議層(masstorage/cdc等)調用gadget api, gadget api調用gadget的端點ep的ops, 這個ops來自具體硬件平台的注冊的ep的操作函數。udc_core主要負責udc 添加usb_add_gadget_udc, 設備層的usb_gadget_probe_driver等。

file_storage與mass_storage的區別是前者未使用composite抽象, 后者使用composite抽象。composite抽象層同時供其他協議(串口/網絡等)使用(config/function管理)。

mass storage都是經過vfs訪問具體的存儲設備, 其路徑是模塊加載時的file參數確定的(在內核態可通過vfs api訪問文件)。scsi命令在sorage層被解析。

Android.c中的mass_storage也是走的composite. 這個文件整合了很多的usb device功能, 包含adb等。通過sysfs的store函數enable不同的功能。

具體udc驅動負責queue/傳輸管理(dma? fifo?)/設備管理/中斷等。可參考omap等, platform_driver_probe注冊這個driver。dma調用platform層提供的dma功能操作。 不同的platform的dma函數不同。

 

 

http://blog.csdn.net/embededswordman/article/details/6689593: usb gadget串口

http://blog.chinaunix.net/uid-24227137-id-3437527.html:linux tty驅動

 http://blog.chinaunix.net/uid-27717694-id-3495612.html: linux console

 http://wenku.baidu.com/link?url=BUfLIzBG-ER22uiONf0nN78xXL_Inv4rciMtSl5IcDyRJ1D0_JF4i20EqvC2qZleBa2cT7IViEK4VzzV8Cl0d37ajf0KfEbgsKK-uSSCHta: linux偽終端

usb串口主要是將usb轉換成tty設備, device側和host側都是這樣。cdc acm模擬modem

audio device使用linux sound core接口

video:v4l2接口

ether: cdc eem/ecm/subset,實現net_device_ops接口:

http://wenku.baidu.com/view/d06c4318ff00bed5b9f31dbc.html

 android mtp:文件傳送 ptp:still image類:http://baike.baidu.com/link?url=qceecPkdLhQrvy9zoAIpmIPImYHiFOUGGw4NrTP1TAzVlq7wF1_CTA73JhmHwC-t

rndis:微軟協議, 代替cdc ether協議

http://wenku.baidu.com/link?url=VK6wEQIWlmL7VgIpuHBhCZPk-CivVSHdCthSzy-_AdVK_7zdrwP4VLOjZpmSXNMwitK76Rgeld0STAwVKv8ZTT__9SPkVKT3lWCi7OGFNti


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM