日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

USB学习6---Linux Android USB软件架构设计

發布時間:2025/4/16 linux 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 USB学习6---Linux Android USB软件架构设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下面學習針對高通平臺的HS-USB(HS:high speed高速)堆棧(stack)軟件架構設計和源代碼布局的細節。

?

Android HS-USB堆棧基于下面幾點:

  • Gadget driver framework(gadget驅動架構)支持外設模式(Peripheral mode)
  • 新的gadget驅動架構在android2.0及之后的版本實現。Google剛開始開發一個新的架構叫function framework(只用在android1.6版本)。因為linux內核中的gadget framework不支持復合設備(composite devices)。后來gadget framework添加對了對復合設備的支持,google并對gadget framework做了重大的修改以支持組合開關(composition switch)

  • 兼容EHCI主控制器驅動,以支持host模式。
  • On-The-Go(OTG驅動)。
  • ?

  • USB stack
  • Android HS-USB OTG堆棧基于ID引腳檢測來支持OTG模式,HS-USB OTG core代表HS-USB控制器。

  • OTG driver
  • OTG驅動首先被加載,由它建立(set up)host controller driver(HCD主控制器驅動)和device controller driver(DCD設備控制器驅動)的transceive struct(收發器結構),在OTG注冊了HCD和DCD后,OTG狀態機才生效。
  • 根據連接到A/B USB連接器的Micro-A插頭(ID引腳接地,啟動主模式)或Micro-B插頭(ID引腳懸空,啟動從模式)來啟動對應的控制器驅動(HCD或DCD)。
  • 存取HS-USB OTG控制器寄存器來執行USB操作。
  • USB(主/從)電源管理。
  • USB時鐘管理,比如,時鐘使能、關閉復位等。
  • ?

  • Device controller driver
  • 向下與HS-USB OTG控制器交互
  • 執行斷電操作,比如使能、關閉、入隊、出隊、刷新、停止等等。
  • 執行USB gadget操作,比如VBUS處理、VBUS pull up、遠程喚醒等等。
  • 充電檢測。
  • ?

  • Gadget framework
  • USB設備模式驅動框架(device mode driver)
  • 支持多配制、多接口、符合設備和alternate接口設置,發展的可重用/組合的usb_function(一個描述配置功能的結構體)實例,提供復合和多配置gadget的更簡單設置。
  • 此框架驅動底層實現與硬件無關的USB功能(使用設備控制器驅動的調用),例如,在gadget.h中定義了對象和方法。
  • 對于特定控制器,支持端點在編譯時可配置。
  • 在linux中,大多數gadget驅動(例如串口gadget驅動)有一個連接到linux驅動或框架的上界(upper boundary)
  • 對應usb\gadget下android.c、composite.c。

    u_serial.c - utilities for USB gadget "serial port"/TTY support,u_serial.c的u表示utilities(工具)。

    f_serial.c - generic USB serial function driver,f_serial.c的f表示function。

    ?

  • Function drivers
  • Function驅動包括modem(比如USB 接口的4G網卡),NMEA(美國國家海洋電子協議,比如USB接口的GPS),大容量存儲等。

    對應usb\gadget\function源碼。

    ?

  • Host controller driver(Host控制器驅動)
  • 驅動底層部分和HS-USB OTG控制器交互。
  • 兼容EHCI
  • 使用USB HCD框架注冊Host控制器驅動和使用EHCI包裝器函數(wrapper函數)來支持root hub、管理I/O請求與關聯設備資源、管理底層事務(URB to transfer descriptor queue,例如USB請求塊(Universal Request Block)來傳遞描述符隊列)
  • 對應usb\host代碼。

    ?

  • USB core
  • USB core的實現與底層硬件無關。
  • 對類驅動(class driver)隱藏大多數USB協議相關項。
  • 與USB類驅動的交互。
  • 對應usb\core代碼。

    ?

  • USB PHY driver(物理層協議)
  • 分離PHY具體操作的新層。
  • HCD/DCD/OTG層可以引用多個PHY實例。
  • 對應kernel\msm-3.18\drivers\usb\phy文件夾的源代碼。USB PHY driver應該在OTG driver和OTG core之間,第1張圖我有備注,下面這種圖可以體現出來

  • Class drivers類驅動
  • 類驅動包括大容量存儲、HID、HUB等。對應\kernel\msm-3.18\drivers\usb\class下代碼。

    ?

    ?

    總結

    以上是生活随笔為你收集整理的USB学习6---Linux Android USB软件架构设计的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。