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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

如何在Openharmony中實現(xiàn)USB復(fù)合設(shè)備

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

背景

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

本文主要講解OpenHarmony中,板卡上的OTG接口如何支持復(fù)合設(shè)備,環(huán)境說明如下:

描述項 說明
OpenHarmony版本 release-4.0
內(nèi)核版本 5.10
板卡 風(fēng)火輪youyeetoo R1開發(fā)板(RK3588S)

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

通過configfs配置Linux USB gadget

Linux內(nèi)核5.10,是采用configfs來配置USB的功能,即配置USB gadget。實現(xiàn)USB復(fù)合設(shè)備之前,需要了解一些概念。

什么是USB gadget

在OpenHarmony如何配置

configfs配置USB gadget流程

什么是USB gadget

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

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

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

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

在OpenHarmony如何配置

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

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

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

configfs配置USB gadget流程

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

"mountconfigfsnone/config"

建立gadgets, 創(chuàng)建g1/目錄之后,該目錄下會生成很多配置目錄,這里的g1表示 gadget 1,一個 UDC 對應(yīng)一個 gadget,如果你的 SOC 上有多個 gadget,可以創(chuàng)建多個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相關(guān)配置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支持

內(nèi)核配置需要使能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下生成設(shè)備節(jié)點,虛擬串口節(jié)點一般為:ttyGSx(即:Gadget Serial)

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

數(shù)據(jù)驗證:

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7973

    瀏覽量

    265438
  • hdc
    hdc
    +關(guān)注

    關(guān)注

    1

    文章

    44

    瀏覽量

    3604
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3740

    瀏覽量

    16460
收藏 人收藏

    評論

    相關(guān)推薦

    stm32 usb復(fù)合設(shè)備支持鍵盤鼠標和hid串口通信可以實現(xiàn)嗎?

    stm32 usb復(fù)合設(shè)備支持鍵盤鼠標和hid串口通信可以實現(xiàn)
    發(fā)表于 05-24 08:20

    何在一個USB設(shè)備同時實現(xiàn)USBHID和USB讀卡器

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

    靈動微課堂(第109講) | MM32 USB功能學(xué)習(xí)筆記 —— USB復(fù)合設(shè)備

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

    怎樣去編寫STM32 USB復(fù)合設(shè)備

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

    STM32 USB復(fù)合設(shè)備編寫的目的是什么

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

    如何利用OpenHarmony實現(xiàn)智能設(shè)備面板的設(shè)計

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

    OpenHarmony標準設(shè)備應(yīng)用開發(fā)筆記匯總

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

    USB復(fù)合設(shè)備工作不正常是因為端點太多了嗎?

    我在H7芯片上成功運行了ThreadX+USBX程序。使用的是USB復(fù)合設(shè)備(CDC ACM+HID),所以我嘗試在F105RBT6上實現(xiàn)同樣的功能,但是遇到了麻煩,在F105上運行
    發(fā)表于 12-27 06:58

    無法將工作USB復(fù)合設(shè)備應(yīng)用程序從LPC54114移植到LPC11U68怎么解決?

    我無法將工作USB 復(fù)合設(shè)備應(yīng)用程序從 LPC54114 移植到 LPC11U68。問題背景:在此應(yīng)用程序
    發(fā)表于 04-14 06:34

    USB復(fù)合設(shè)備的概念及CDC MSC的講解

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

    WinCE系統(tǒng)USB設(shè)備自動檢測實現(xiàn)

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

    實現(xiàn)stm32 usb復(fù)合設(shè)備開發(fā)

    cube的stm32 usb代碼分析以及復(fù)合設(shè)備開發(fā)
    的頭像 發(fā)表于 07-05 00:11 ?9380次閱讀
    <b class='flag-5'>實現(xiàn)</b>stm32 <b class='flag-5'>usb</b><b class='flag-5'>復(fù)合</b><b class='flag-5'>設(shè)備</b>開發(fā)

    MM32 USB功能學(xué)習(xí)筆記 —— USB復(fù)合設(shè)備

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

    何在OpenHarmony上開發(fā)服務(wù)卡片

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

    USB復(fù)合設(shè)備介紹

    電子發(fā)燒友網(wǎng)站提供《USB復(fù)合設(shè)備介紹.pdf》資料免費下載
    發(fā)表于 08-01 10:37 ?0次下載
    <b class='flag-5'>USB</b><b class='flag-5'>復(fù)合</b><b class='flag-5'>設(shè)備</b>介紹
    主站蜘蛛池模板: 欧美一区二区三区精品| 欧美婷婷| 综合亚洲色图| 国产在线成人一区二区| 二级片在线| 亚洲a影院| 日韩欧美一级| 老色批影院| 大色视频| 天天做天天爽爽快快| 九九精品在线观看| 人人澡人人澡人人看青草| 中文字幕 视频一区| 日本不卡视频一区二区三区| 5g影院天天爽| 亚洲人成电影院| 日本精品一卡二卡≡卡四卡| 寄宿日记免费看| 永久视频在线观看| 久久99热精品免费观看k影院| 欧美伦理一区| 国产男女怕怕怕免费视频| 天堂网视频| 久久久五月天| 777人体粉嫩u美图| 狠狠ri| 亚洲a网站| 婷婷久| 经典三级一区在线播放| 亚洲深夜在线| 窝窝视频成人影院午夜在线| 久热99| 1024手机在线看永久免费| 国产区亚洲区| 人碰人操| 一级特黄视频| 91破处视频| 伊人98| 黄色激情小说视频| 末发育娇小性色xxxxx视频| ass日本69|