国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品
搜索
熱門關鍵詞:
電壓
PTC
聯發科
uClinux
MCU
手機版
官方微博
微信公眾號
登錄
|
免費注冊
首頁
新聞
新品
文章
下載
電路
問答
視頻
職場
雜談
會展
工具
博客
論壇
在線研討會
技術頻道:
單片機/處理器
FPGA
軟件/編程
電源技術
模擬電子
PCB設計
測試測量
MEMS
系統設計
無源/分立器件
音頻/視頻/顯示
應用頻道:
消費電子
工業/測控
汽車電子
通信/網絡
醫療電子
機器人
當前位置:
EEChina首頁
›
論壇
›
單片機/處理器
返回列表
查看:
2979
|
回復:
2
[提問]
iTOP-4412開發板-驅動-usb文檔04-主控制器和驅動框架簡介
[復制鏈接]
就是塔塔
就是塔塔
當前離線
積分
13412
電梯直達
樓主
發表于 2019-5-13 14:09:22
|
只看該作者
|
只看大圖
|
倒序瀏覽
|
閱讀模式
貿澤電子有獎問答視頻,回答正確發放10元微信紅包
iTOP-4412- 驅動-usb 文檔 04- 主控制器和驅動框架簡介
在學習
USB
驅動的過程中,雖然 USB 的內部驅動不需要我們去寫,但是還是需要對其有
個大概的了解。
1 USB 驅動架構簡介
USB 是一種主從結構的系統。主機叫做 Host,從機叫做 Device;開發板作為 USB host
端,USB 鼠標、USB 鍵盤、USB-
WIFI
等等稱為設備端;通常,作為 USB device 的設備被稱
為 Gadget。
如下圖所示,是 USB 驅動架構簡略圖。在主機端(這里需要注意的是,內部驅動和外部
驅動都是屬于主機端)。
設備端,Gadget API 定義了一個通用的 Gadget Driver 的接口,Gadget Driver 通過
Gadget API 與底層 USB Device Controller Driver 通信。其中 Gadget API 層屏蔽了底層硬
件的不同,使 Gadget Driver 注重功能的實現,盡量與硬件無關。設備端的驅動一般是以固
件形式在設備端中,由設備端的生產廠商固化在設備端中。
在主機端,有 USB HCD 和 USBD 兩個接口層。
USB HCD 的全稱為主機控制器驅動(Host Controller Driver),它是對主機控制器硬件的
一個抽象,提供與 USB 系統軟件之間的軟件接口。
從客戶軟件的角度看,USBD 控制所有的 USB 設備,因此客戶軟件對設備的控制和所要
發送的數據只要交給 USBD 就可以了。USBD 為客戶軟件提供命令機制和管道機制。客戶軟
件通過命令機制可以訪問所有設備的 0 號端點且與默認管道通信,從而實現對設備的配置和其
他一些基本的控制工作。管道機制允許客戶和設備實現特定的通信功能。該默認管道描述了一
條 USBD 和 USB 設備間通信的邏輯通道。
主機端各層有以下功能:
1) 檢測連接和移去的 USB 設備;
2) 管理主機和 USB 設備間的數據流;
3) 連接 USB 狀態和活動統計;
4) 控制主控制器和 USB 設備間的電氣接口,包括能量供應。
如下圖所示,是主機端驅動架構,在后面的教程中,我們會詳細分析其中的 URB(USB
請求塊)和 USB 設備描述符。在 USB 設備通信的整個流程中,USB 描述符用于主機端識別設
備端具體是哪個設備,這個過程是由主控制器來完成;USB 請求塊用于主機端和設備端的數
據傳輸,提供具體的數據格式定義以及通道。整個驅動架構中的其它部分一般不需要關注。
2 USB 主控制器
本節簡單了解一下 4412 的主控制驅動。
2.1 USB 主控制器的功能
USB 主控制器是集成到片上系統的,例如,4412 開發板,主控制器是在 4412 芯片上,
代碼也是集成在三星原廠提供的內核中的。主控制器主要有一下功能:
1. 解析和維護 URB
2. 負責不同 USB 傳輸類型的調度工作
3. 負責 USB 數據的實際傳輸工作
4. 實現虛擬 USB HUB(集線器)的功能
2.2 了解 USB 主控制器驅動
USB 的 USB CORE 在內核源碼“drivers/usb/core/”中,如下圖所示,可以看到和各種
功能對應的內核源碼。其中有,USBCORE 核心代碼,hub、urb 等等。這些都是具體平臺無
關的代碼,在任意平臺中都是通用的核心層代碼,給外部驅動提供對應的 API。
另外在內核目錄“drivers/usb/serial/”下可以看到前面文檔中介紹的 USB 轉串口驅
動,這個目錄里面是 usb 轉串口的驅動源碼。
USB 主控制在內核源碼“drivers/usb/host/”中,如下圖所示,可以看到其中只有一個
編譯生成的“.o”文件。
我們在第一篇文檔中有介紹到 4412 的主控制器是 USB2.0,使用的是 EHCI 控制器。我
們在 menuconfig 中,進入“ Device Drivers”-> “USB support (USB_SUPPORT
[=y])”,如下圖所示,可以看到“EHCI HCD (USB 2.0) support”默認被配置了。
如上圖所示,可以看到“ S5P EHCI support”,這是針對具體平臺的配置,如下圖所示
這個配置定義了宏“CONFIG_USB_EHCI_S5P”。
接著使用 source insight 看一下“drivers/usb/host/ehci-hcd.c”的驅動源碼,做一下
簡單了解。
module_init(ehci_hcd_init);入口函數
入口函數 ehci_hcd_init 中,以下代碼是注冊主控制器驅動的代碼。
#ifdef PLATFORM_DRIVER
retval = platform_driver_register(&PLATFORM_DRIVER);
if (retval < 0)
goto clean0;
#endif
如下圖所示,在 menuconfig 中我們可以看到 CONFIG_USB_EHCI_S5P 宏是被定義的,
所以 PLATFORM_DRIVER 被定義為 s5p_ehci_driver。
#ifdef CONFIG_USB_EHCI_S5P
#include "ehci-s5p.c"
#define PLATFORM_DRIVER s5p_ehci_driver
#endif
接著找一下 s5p_ehci_driver 的定義,在“drivers/usb/host/ehci-s5p.c”文件下。如下
圖所示,可以看到驅動名稱為"s5p-ehci",USB 的主控制驅動在驅動注冊的時候也是使用平臺
驅動結構體 platform_driver,結構體中也是和字符驅動類似的 move、probe 等等函數。
有驅動注冊,那么肯定有設備注冊,而且設備名稱也是要和驅動名稱一樣為"s5p-ehci"。
接著我們在平臺文件中找一下設備注冊。在“arch/arm/mach-exynos/mach-
itop4412.c”文件中,搜索宏定義“USB_EHCI_S5P”,如下圖所示,可以看到主控制器函數
的設備注冊代碼。
如上圖所示,smdk4x12_ehci_pdata 結構體變量應該是在調用函數
s5p_ehci_set_platdata(pdata)中初始化的。接著在 source insight 中搜索一下
s5p_ehci_set_platdata 函數,找到了該函數是在“arch/arm/plat-s5p/dev-ehci.c”中定
義。如下圖所示,該函數中調用了 s5p_device_ehci 結構體來進行初始化,接著搜索一下
s5p_device_ehci 結構體。
如下圖所示,可以看到設備名稱注冊也是使用的“s5p-ehci”。
至此,我們完成分析了主控制的設備注冊和驅動注冊。具體實現代碼更加復雜,但是這部
分不需要我們去做,有原廠會提供做好的驅動。
本文檔只是讓大家對主控制驅動有個感性的認識,在后面文檔中的設備描述符、URB(請
求塊)才是驅動學習的重點。
另外還有具體的 USB 驅動的移植,也比主機驅動和 USB 核心層驅動更重要,希望大家不
要花費過多的時間去研究主控制驅動和 USB 核心層代碼。而是要在主機驅動和核心層驅動的
基礎上,移植我們在項目和工程中需要的外圍模塊。到后面,大家會發現,在移植和使用
USB 外圍設備驅動的時候,完全不需要用到 USB 主控制器、USB 驅動框架等等知識
收藏
0
頂
0
踩
0
回復
舉報
mitumitu
mitumitu
當前離線
積分
203
沙發
發表于 2019-5-27 11:37:48
|
只看該作者
學習內容
回復
支持
反對
舉報
就是塔塔
就是塔塔
當前離線
積分
13412
板凳
樓主
|
發表于 2019-5-29 11:16:31
|
只看該作者
151626bs06066zsrc2qxcc.jpg.thumb.jpg
回復
支持
反對
舉報
返回列表
高級模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登錄后才可以回帖
登錄
|
立即注冊
本版積分規則
發表回復
回帖后跳轉到最后一頁
關于我們
-
服務條款
-
使用指南
-
站點地圖
-
友情鏈接
-
聯系我們
電子工程網
© 版權所有
京ICP備16069177號
| 京公網安備11010502021702
快速回復
返回頂部
返回列表
主站蜘蛛池模板:
狠狠综合视频精品播放
|
中国麻豆
|
日本免费无遮挡吸乳视频中文
|
久久精品免费
|
国产在线播放网址
|
国产一区二区精品在线观看
|
国产亚洲欧洲一区二区三区
|
国产三级在线观看视频
|
九九精品视频在线观看
|
天天噜噜
|
韩国欧洲一级毛片免费
|
国产亚洲女人久久久久久
|
国产福利久久
|
日韩在线免费播放
|
欧美亚洲另类视频
|
欧美成人免费香蕉
|
青青伊人精品
|
久久久久一
|
日本天堂视频
|
国产剧情jvid在线观看
|
色爱五月天
|
精品哟哟哟国产在线不卡
|
久久精品成人国产午夜
|
亚洲三级视频在线观看
|
天美传媒thetmme果冻传媒
|
久久综合九色欧美综合狠狠
|
欧美在线播放成人免费
|
久草一级片
|
eeuss国产一区二区三区
|
中文字幕国产一区
|
中国一级做a爰片久久毛片 中国一级特黄毛片
|
四虎影视永久地址www成人污
|
欧美日韩亚洲视频
|
亚洲自拍偷拍视频
|
亚洲精品 国产 日韩
|
国产精品入口免费麻豆
|
精品久久久久久国产免费了
|
日韩精品午夜视频一区二区三区
|
国产一级做a爰片久久毛片 国产一级做a爰片...
|
91国语精品3p在线观看
|
欧美国产一区二区三区
|