在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在Openharmony中實現USB復合設備

Rice嵌入式開發技術分享 ? 來源:Rice嵌入式開發技術分享 ? 作者:Rice嵌入式開發技術 ? 2024-06-13 15:03 ? 次閱讀

背景

如何讓Openharmony設備HDC接口(OTG接口)作為一個復合設備,實現HDC(HDC:鴻蒙設備連接器) + CDC ACM(USB 虛擬串口),而設備本身支持HDC。所以需要增加CDC ACM(USB 虛擬串口)。

本文主要講解OpenHarmony中,板卡上的OTG接口如何支持復合設備,環境說明如下:

描述項 說明
OpenHarmony版本 release-4.0
內核版本 5.10
板卡 風火輪youyeetoo R1開發板(RK3588S)

f0f1b5e0-220a-11ef-8eb4-92fbcf53809c.png

通過configfs配置Linux USB gadget

Linux內核5.10,是采用configfs來配置USB的功能,即配置USB gadget。實現USB復合設備之前,需要了解一些概念。

什么是USB gadget

在OpenHarmony如何配置

configfs配置USB gadget流程

什么是USB gadget

USB設備驅動,按照設備端關聯的USB控制器是工作在主模式還是從模式,分為USB設備主機側驅動(主模式),或者USB設備從機側驅動(從模式)。同時,工作在主模式的USB控制器,稱為USB主機控制器(UHC:USB Host Controller),工作在從模式的USB控制器,稱為USB設備控制器(UDC: USB Device Controller)。有的USB控制器,只能工作在主模式或從模式中的某一種;而有的則既可以工作在主模式,也可以工作在從模式,模式通過OTG切換。當然,在同一時刻,USB控制器要么工作在主模式,要么工作在從模式。

本文的重點是USB設備從機側驅動(從模式),Linux下將USB設備從機側驅動,稱為USB Gadget驅動。USB Gadget驅動 是通過USB來模擬其它類型的設備,如USB Gadget UAC驅動 用來模擬聲卡外設;USB Gadget Serial驅動用來模擬串口外設,等等等等。這里所謂模擬,是指通過USB來模擬這些設備的行為,而這些對于連接對端的USB主機是透明的。對于USB Gadget驅動 ,類似于譬如像U盤設備的固件,但它們并不完全等同,因為畢竟只是通過USB模擬設備行為。

f11f7db8-220a-11ef-8eb4-92fbcf53809c.png

USB Gadget驅動,包括USB設備控制器(UDC)驅動和Gadget功能(function)驅動兩大部分。其中USB設備控制器(UDC)驅動負責USB設備控制器(UDC)和主機側USB控制器(UHC)之間的數據傳輸;而Gadget功能驅動(function)負責實現功能協議(如UDC等)。USB設備控制器(UDC)驅動和Gadget功能驅動(function)彼此之間也會進行數據交互。

在OpenHarmony如何配置

在OpenHarmony中,USB這一塊依舊采用內核驅動,所以整體套路都是一樣。也是通過configfs配置USB功能。

以風火輪youyeetooR1開發板(RK3588S)為例,configfs配置路徑:device/board/youyeetoo/R1/cfg/init.R1.usb.cfg。

init.R1.usb.cfg默認已經配置好了HDC的功能,如果需要功能,只需在此文件上增加對應功能即可。

configfs配置USB gadget流程

掛載configfs,掛載完成之后在/config 目錄下就會生成usb_gadget/目錄。

"mountconfigfsnone/config"

建立gadgets, 創建g1/目錄之后,該目錄下會生成很多配置目錄,這里的g1表示 gadget 1,一個 UDC 對應一個 gadget,如果你的 SOC 上有多個 gadget,可以創建多個gx目錄。

"mkdir/config/usb_gadget/g10770shellshell"

寫入gadget的PID、VID、序列號等信息。

"write/config/usb_gadget/g1/idVendor0x2207",
"write/config/usb_gadget/g1/idProduct0x0018",
"write/config/usb_gadget/g1/os_desc/use1",
"write/config/usb_gadget/g1/bcdDevice0x0223",
"write/config/usb_gadget/g1/bcdUSB0x0200",
"mkdir/config/usb_gadget/g1/strings/0x4090770",
"copy/sys/block/mmcblk0/device/cid/config/usb_gadget/g1/strings/0x409/serialnumber",
"chmod0640/config/usb_gadget/g1/strings/0x409/serialnumber",
"write/config/usb_gadget/g1/strings/0x409/manufacturerRockchip",
"write/config/usb_gadget/g1/strings/0x409/product"HDCDevice"",

建立gadget相關配置configurations。

"mkdir/config/usb_gadget/g1/configs/b.10770shellshell",
"mkdir/config/usb_gadget/g1/configs/b.1/strings/0x4090770shellshell",
"write/config/usb_gadget/g1/os_desc/b_vendor_code0x1",
"write/config/usb_gadget/g1/os_desc/qw_signMSFT100",
"write/config/usb_gadget/g1/configs/b.1/MaxPower500",

建立功能functions

增加功能模版,function name :任意字符串

mkdir/config/usb_gadget/g1/functions/.

以HDC為例:

mkdir/config/usb_gadget/g1/functions/ffs.hdc

建立功能和配置的鏈接。

增加功能和配置的鏈接模版

"ln-s/config/usb_gadget/g1/functions/./config/usb_gadget/g1/configs/c.1"

以HDC為例:

"symlink/config/usb_gadget/g1/configs/b.1/config/usb_gadget/g1/os_desc/b.1",

使能USB gadget

"setparamsys.usb.configfs1",
"setparamsys.usb.controllerfc000000.usb"

增加CDC ACM支持

內核配置需要使能CONFIGFS的ACM的支持:

CONFIG_USB_CONFIGFS_ACM=y

通過configfs配置USB gadget,使其支持CDC ACM

"mkdir/config/usb_gadget/g1/functions/acm.usb",
"symlink/config/usb_gadget/g1/functions/acm.usb/config/usb_gadget/g1/configs/b.1/f2",
f1363396-220a-11ef-8eb4-92fbcf53809c.png

驗證

新增加的USB CDC ACM功能之后,就會在/dev下生成設備節點,虛擬串口節點一般為:ttyGSx(即:Gadget Serial)

f141fb40-220a-11ef-8eb4-92fbcf53809c.png

數據驗證:

f15e953e-220a-11ef-8eb4-92fbcf53809c.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • usb
    usb
    +關注

    關注

    60

    文章

    8059

    瀏覽量

    269436
  • hdc
    hdc
    +關注

    關注

    1

    文章

    44

    瀏覽量

    3763
  • OpenHarmony
    +關注

    關注

    26

    文章

    3803

    瀏覽量

    17784
收藏 人收藏

    評論

    相關推薦

    stm32 usb復合設備支持鍵盤鼠標和hid串口通信可以實現嗎?

    stm32 usb復合設備支持鍵盤鼠標和hid串口通信可以實現
    發表于 05-24 08:20

    用hal庫通過usb做了一個hid復合設備,想問問怎么才能通過藍牙來實現hid設備?

    新手剛剛接觸stm32,想請教大佬, 最近用hal庫通過usb做了一個hid復合設備,想問問怎么才能通過藍牙來實現hid設備 我用cubem
    發表于 03-11 08:16

    何在一個USB設備同時實現USBHID和USB讀卡器

    原子大哥,如何在一個USB設備同時實現USBHID和USB讀卡器 ?我把HID的各描述符都放到
    發表于 07-24 04:35

    靈動微課堂(第109講) | MM32 USB功能學習筆記 —— USB復合設備

    、類別描述元和端點描述元,而HID類別則會有特定的類別描述元,此描述元會交代報告(report)描述元和實體(physical)描述元; 本節我們來講解如何在MM32 MCU實現USB復合
    發表于 03-04 17:23

    怎樣去編寫STM32 USB復合設備

    本實驗是基于野火霸道開發板STM32F103ZET6目的完成一個CDC + MSC的復合USB設備可以方便在CDC,MSC,復合設備三者間切
    發表于 08-20 07:28

    STM32 USB復合設備編寫的目的是什么

    STM32 USB復合設備編寫目的完成一個CDC + MSC的復合USB設備可以方便在CDC,M
    發表于 08-20 07:10

    如何利用OpenHarmony實現智能設備面板的設計

    。如何實現多種家庭設備的集中管理和遠程控制,是智能家居功能的體現。基于以上背景,本文提出了一種基于OpenHarmony設計實現智能
    發表于 03-21 09:20

    OpenHarmony標準設備應用開發筆記匯總

    何在標準設備上運行一個最簡單的 OpenHarmony 程序。2、如何在OpenHarmony
    發表于 03-28 14:19

    無法將工作USB復合設備應用程序從LPC54114移植到LPC11U68怎么解決?

    我無法將工作USB 復合設備應用程序從 LPC54114 移植到 LPC11U68。問題背景:在此應用程序
    發表于 04-14 06:34

    USB復合設備的概念及CDC MSC的講解

    購買Hub的費用,而對于開發者則希望可以既不占用多接口,又可以實現多功能,來贏得消費者的關注。USB復合設備就在這樣的市場需求下應運而生。
    發表于 09-07 06:11

    WinCE系統USB設備自動檢測實現

    英創公司ARM9系列工控主板預裝正版 WinCE 操作系統,提供標準USB接口,本文介紹如何在應用程序判斷USB存儲設備的插入和移出操作。
    發表于 06-09 15:48 ?51次下載

    實現stm32 usb復合設備開發

    cube的stm32 usb代碼分析以及復合設備開發
    的頭像 發表于 07-05 00:11 ?9570次閱讀
    <b class='flag-5'>實現</b>stm32 <b class='flag-5'>usb</b><b class='flag-5'>復合</b><b class='flag-5'>設備</b>開發

    MM32 USB功能學習筆記 —— USB復合設備

    在上一節我們介紹了MM32 MCU的USB模擬U盤功能,通過四個章節把常用的USB設備功能編程一一做了介紹,通常來說,往往希望我們USB設備
    發表于 02-09 11:27 ?2次下載
    MM32 <b class='flag-5'>USB</b>功能學習筆記 —— <b class='flag-5'>USB</b><b class='flag-5'>復合</b><b class='flag-5'>設備</b>

    何在OpenHarmony上開發服務卡片

    本篇文章我們將分享如何在 OpenHarmony 上開發服務卡片。
    的頭像 發表于 04-10 11:12 ?1296次閱讀

    USB復合設備介紹

    電子發燒友網站提供《USB復合設備介紹.pdf》資料免費下載
    發表于 08-01 10:37 ?1次下載
    <b class='flag-5'>USB</b><b class='flag-5'>復合</b><b class='flag-5'>設備</b>介紹
    主站蜘蛛池模板: 精品少妇一区二区三区视频 | 99精品免费视频 | 日本三级a | 久久大综合 | 亚洲三区视频 | 国产码一区二区三区 | 国产一区二区三区免费大片天美 | 1000部啪啪未满十八勿入 | 国产综合精品久久久久成人影 | 一区二区三区四区在线观看视频 | 另类性欧美喷潮videofree | 亚洲一区二区三区四 | 欧美狠狠| 国产午夜亚洲精品 | 中文字幕日本一区波多野不卡 | 黄页网站在线播放 | 国产伦精品一区二区免费 | 四虎国产精品永久在线播放 | 午夜国产福利 | 色精品一区二区三区 | 激情五月综合综合久久69 | 天天色色网| 天天做天天看夜夜爽毛片 | 欧美一级做一级做片性十三 | 性瘾高h姚蕊全文免费阅读 性做久久久久 | 三级网址在线 | 97天天干 | 色中色资源 | 久久青草国产免费观看 | 一区二区三区视频在线 | 99久久99久久久99精品齐 | 另类免费视频 | 综合亚洲色图 | 婷婷在线观看香蕉五月天 | 女人张开腿让男人做爽爽 | 天堂成人一区二区三区 | 国产性做久久久久久 | 成人欧美一区二区三区小说 | ccav在线永久免费看 | 美日韩毛片 | 视频高清正版在线观看 |