色偷偷偷久久伊人大杳蕉,色爽交视频免费观看,欧美扒开腿做爽爽爽a片,欧美孕交alscan巨交xxx,日日碰狠狠躁久久躁蜜桃
搜索
熱門關(guān)鍵詞:
IDT
加速度計(jì)
Cirrus
監(jiān)護(hù)儀
Dialog
手機(jī)版
官方微博
微信公眾號(hào)
登錄
|
免費(fèi)注冊(cè)
首頁(yè)
新聞
新品
文章
下載
電路
問(wèn)答
視頻
職場(chǎng)
雜談
會(huì)展
工具
博客
論壇
在線研討會(huì)
技術(shù)頻道:
單片機(jī)/處理器
FPGA
軟件/編程
電源技術(shù)
模擬電子
PCB設(shè)計(jì)
測(cè)試測(cè)量
MEMS
系統(tǒng)設(shè)計(jì)
無(wú)源/分立器件
音頻/視頻/顯示
應(yīng)用頻道:
消費(fèi)電子
工業(yè)/測(cè)控
汽車電子
通信/網(wǎng)絡(luò)
醫(yī)療電子
機(jī)器人
當(dāng)前位置:
EEChina首頁(yè)
›
論壇
›
單片機(jī)/處理器
返回列表
查看:
3292
|
回復(fù):
2
[提問(wèn)]
iTOP-4412開發(fā)板-驅(qū)動(dòng)-usb文檔04-主控制器和驅(qū)動(dòng)框架簡(jiǎn)介
[復(fù)制鏈接]
就是塔塔
就是塔塔
當(dāng)前離線
積分
13646
電梯直達(dá)
樓主
發(fā)表于 2019-5-13 14:09:22
|
只看該作者
|
只看大圖
|
倒序?yàn)g覽
|
閱讀模式
貿(mào)澤電子有獎(jiǎng)問(wèn)答視頻,回答正確發(fā)放10元微信紅包
iTOP-4412- 驅(qū)動(dòng)-usb 文檔 04- 主控制器和驅(qū)動(dòng)框架簡(jiǎn)介
在學(xué)習(xí)
USB
驅(qū)動(dòng)的過(guò)程中,雖然 USB 的內(nèi)部驅(qū)動(dòng)不需要我們?nèi),但是還是需要對(duì)其有
個(gè)大概的了解。
1 USB 驅(qū)動(dòng)架構(gòu)簡(jiǎn)介
USB 是一種主從結(jié)構(gòu)的系統(tǒng)。主機(jī)叫做 Host,從機(jī)叫做 Device;開發(fā)板作為 USB host
端,USB 鼠標(biāo)、USB 鍵盤、USB-
WIFI
等等稱為設(shè)備端;通常,作為 USB device 的設(shè)備被稱
為 Gadget。
如下圖所示,是 USB 驅(qū)動(dòng)架構(gòu)簡(jiǎn)略圖。在主機(jī)端(這里需要注意的是,內(nèi)部驅(qū)動(dòng)和外部
驅(qū)動(dòng)都是屬于主機(jī)端)。
設(shè)備端,Gadget API 定義了一個(gè)通用的 Gadget Driver 的接口,Gadget Driver 通過(guò)
Gadget API 與底層 USB Device Controller Driver 通信。其中 Gadget API 層屏蔽了底層硬
件的不同,使 Gadget Driver 注重功能的實(shí)現(xiàn),盡量與硬件無(wú)關(guān)。設(shè)備端的驅(qū)動(dòng)一般是以固
件形式在設(shè)備端中,由設(shè)備端的生產(chǎn)廠商固化在設(shè)備端中。
在主機(jī)端,有 USB HCD 和 USBD 兩個(gè)接口層。
USB HCD 的全稱為主機(jī)控制器驅(qū)動(dòng)(Host Controller Driver),它是對(duì)主機(jī)控制器硬件的
一個(gè)抽象,提供與 USB 系統(tǒng)軟件之間的軟件接口。
從客戶軟件的角度看,USBD 控制所有的 USB 設(shè)備,因此客戶軟件對(duì)設(shè)備的控制和所要
發(fā)送的數(shù)據(jù)只要交給 USBD 就可以了。USBD 為客戶軟件提供命令機(jī)制和管道機(jī)制?蛻糗
件通過(guò)命令機(jī)制可以訪問(wèn)所有設(shè)備的 0 號(hào)端點(diǎn)且與默認(rèn)管道通信,從而實(shí)現(xiàn)對(duì)設(shè)備的配置和其
他一些基本的控制工作。管道機(jī)制允許客戶和設(shè)備實(shí)現(xiàn)特定的通信功能。該默認(rèn)管道描述了一
條 USBD 和 USB 設(shè)備間通信的邏輯通道。
主機(jī)端各層有以下功能:
1) 檢測(cè)連接和移去的 USB 設(shè)備;
2) 管理主機(jī)和 USB 設(shè)備間的數(shù)據(jù)流;
3) 連接 USB 狀態(tài)和活動(dòng)統(tǒng)計(jì);
4) 控制主控制器和 USB 設(shè)備間的電氣接口,包括能量供應(yīng)。
如下圖所示,是主機(jī)端驅(qū)動(dòng)架構(gòu),在后面的教程中,我們會(huì)詳細(xì)分析其中的 URB(USB
請(qǐng)求塊)和 USB 設(shè)備描述符。在 USB 設(shè)備通信的整個(gè)流程中,USB 描述符用于主機(jī)端識(shí)別設(shè)
備端具體是哪個(gè)設(shè)備,這個(gè)過(guò)程是由主控制器來(lái)完成;USB 請(qǐng)求塊用于主機(jī)端和設(shè)備端的數(shù)
據(jù)傳輸,提供具體的數(shù)據(jù)格式定義以及通道。整個(gè)驅(qū)動(dòng)架構(gòu)中的其它部分一般不需要關(guān)注。
2 USB 主控制器
本節(jié)簡(jiǎn)單了解一下 4412 的主控制驅(qū)動(dòng)。
2.1 USB 主控制器的功能
USB 主控制器是集成到片上系統(tǒng)的,例如,4412 開發(fā)板,主控制器是在 4412 芯片上,
代碼也是集成在三星原廠提供的內(nèi)核中的。主控制器主要有一下功能:
1. 解析和維護(hù) URB
2. 負(fù)責(zé)不同 USB 傳輸類型的調(diào)度工作
3. 負(fù)責(zé) USB 數(shù)據(jù)的實(shí)際傳輸工作
4. 實(shí)現(xiàn)虛擬 USB HUB(集線器)的功能
2.2 了解 USB 主控制器驅(qū)動(dòng)
USB 的 USB CORE 在內(nèi)核源碼“drivers/usb/core/”中,如下圖所示,可以看到和各種
功能對(duì)應(yīng)的內(nèi)核源碼。其中有,USBCORE 核心代碼,hub、urb 等等。這些都是具體平臺(tái)無(wú)
關(guān)的代碼,在任意平臺(tái)中都是通用的核心層代碼,給外部驅(qū)動(dòng)提供對(duì)應(yīng)的 API。
另外在內(nèi)核目錄“drivers/usb/serial/”下可以看到前面文檔中介紹的 USB 轉(zhuǎn)串口驅(qū)
動(dòng),這個(gè)目錄里面是 usb 轉(zhuǎn)串口的驅(qū)動(dòng)源碼。
USB 主控制在內(nèi)核源碼“drivers/usb/host/”中,如下圖所示,可以看到其中只有一個(gè)
編譯生成的“.o”文件。
我們?cè)诘谝黄臋n中有介紹到 4412 的主控制器是 USB2.0,使用的是 EHCI 控制器。我
們?cè)?menuconfig 中,進(jìn)入“ Device Drivers”-> “USB support (USB_SUPPORT
[=y])”,如下圖所示,可以看到“EHCI HCD (USB 2.0) support”默認(rèn)被配置了。
如上圖所示,可以看到“ S5P EHCI support”,這是針對(duì)具體平臺(tái)的配置,如下圖所示
這個(gè)配置定義了宏“CONFIG_USB_EHCI_S5P”。
接著使用 source insight 看一下“drivers/usb/host/ehci-hcd.c”的驅(qū)動(dòng)源碼,做一下
簡(jiǎn)單了解。
module_init(ehci_hcd_init);入口函數(shù)
入口函數(shù) ehci_hcd_init 中,以下代碼是注冊(cè)主控制器驅(qū)動(dòng)的代碼。
#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”文件下。如下
圖所示,可以看到驅(qū)動(dòng)名稱為"s5p-ehci",USB 的主控制驅(qū)動(dòng)在驅(qū)動(dòng)注冊(cè)的時(shí)候也是使用平臺(tái)
驅(qū)動(dòng)結(jié)構(gòu)體 platform_driver,結(jié)構(gòu)體中也是和字符驅(qū)動(dòng)類似的 move、probe 等等函數(shù)。
有驅(qū)動(dòng)注冊(cè),那么肯定有設(shè)備注冊(cè),而且設(shè)備名稱也是要和驅(qū)動(dòng)名稱一樣為"s5p-ehci"。
接著我們?cè)谄脚_(tái)文件中找一下設(shè)備注冊(cè)。在“arch/arm/mach-exynos/mach-
itop4412.c”文件中,搜索宏定義“USB_EHCI_S5P”,如下圖所示,可以看到主控制器函數(shù)
的設(shè)備注冊(cè)代碼。
如上圖所示,smdk4x12_ehci_pdata 結(jié)構(gòu)體變量應(yīng)該是在調(diào)用函數(shù)
s5p_ehci_set_platdata(pdata)中初始化的。接著在 source insight 中搜索一下
s5p_ehci_set_platdata 函數(shù),找到了該函數(shù)是在“arch/arm/plat-s5p/dev-ehci.c”中定
義。如下圖所示,該函數(shù)中調(diào)用了 s5p_device_ehci 結(jié)構(gòu)體來(lái)進(jìn)行初始化,接著搜索一下
s5p_device_ehci 結(jié)構(gòu)體。
如下圖所示,可以看到設(shè)備名稱注冊(cè)也是使用的“s5p-ehci”。
至此,我們完成分析了主控制的設(shè)備注冊(cè)和驅(qū)動(dòng)注冊(cè)。具體實(shí)現(xiàn)代碼更加復(fù)雜,但是這部
分不需要我們?nèi)プ,有原廠會(huì)提供做好的驅(qū)動(dòng)。
本文檔只是讓大家對(duì)主控制驅(qū)動(dòng)有個(gè)感性的認(rèn)識(shí),在后面文檔中的設(shè)備描述符、URB(請(qǐng)
求塊)才是驅(qū)動(dòng)學(xué)習(xí)的重點(diǎn)。
另外還有具體的 USB 驅(qū)動(dòng)的移植,也比主機(jī)驅(qū)動(dòng)和 USB 核心層驅(qū)動(dòng)更重要,希望大家不
要花費(fèi)過(guò)多的時(shí)間去研究主控制驅(qū)動(dòng)和 USB 核心層代碼。而是要在主機(jī)驅(qū)動(dòng)和核心層驅(qū)動(dòng)的
基礎(chǔ)上,移植我們?cè)陧?xiàng)目和工程中需要的外圍模塊。到后面,大家會(huì)發(fā)現(xiàn),在移植和使用
USB 外圍設(shè)備驅(qū)動(dòng)的時(shí)候,完全不需要用到 USB 主控制器、USB 驅(qū)動(dòng)框架等等知識(shí)
收藏
0
頂
0
踩
0
回復(fù)
舉報(bào)
mitumitu
mitumitu
當(dāng)前離線
積分
203
沙發(fā)
發(fā)表于 2019-5-27 11:37:48
|
只看該作者
學(xué)習(xí)內(nèi)容
回復(fù)
支持
反對(duì)
舉報(bào)
就是塔塔
就是塔塔
當(dāng)前離線
積分
13646
板凳
樓主
|
發(fā)表于 2019-5-29 11:16:31
|
只看該作者
151626bs06066zsrc2qxcc.jpg.thumb.jpg
回復(fù)
支持
反對(duì)
舉報(bào)
返回列表
高級(jí)模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登錄后才可以回帖
登錄
|
立即注冊(cè)
本版積分規(guī)則
發(fā)表回復(fù)
回帖后跳轉(zhuǎn)到最后一頁(yè)
關(guān)于我們
-
服務(wù)條款
-
使用指南
-
站點(diǎn)地圖
-
友情鏈接
-
聯(lián)系我們
電子工程網(wǎng)
© 版權(quán)所有
京ICP備16069177號(hào)
| 京公網(wǎng)安備11010502021702
快速回復(fù)
返回頂部
返回列表