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

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

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

Linux configfs的使用

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-07-13 10:59 ? 次閱讀

1. 體驗(yàn)

1.1 使用

所有命令都是在開發(fā)板上執(zhí)行。

  • 掛載 configfs 文件系統(tǒng)

    # modprobe libcomposite
    # mount -t configfs none /sys/kernel/config
    # ls /sys/kernel/config/
    usb_gadget
    
    #ls /sys/kernel/config/usb_gadget  // 一開始它是空目錄
    
  • 創(chuàng)建目錄

    # cd /sys/kernel/config/usb_gadget
    # mkdir test_serial
    # ls test_serial/ -l
    total 0
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 UDC
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 bDeviceClass
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 bDeviceProtocol
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 bDeviceSubClass
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 bMaxPacketSize0
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 bcdDevice
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 bcdUSB
    drwxr-xr-x    2 root     root             0 Jan  1 01:49 configs
    drwxr-xr-x    2 root     root             0 Jan  1 01:49 functions
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 idProduct
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 idVendor
    drwxr-xr-x    2 root     root             0 Jan  1 01:49 os_desc
    drwxr-xr-x    2 root     root             0 Jan  1 01:49 strings
    

    創(chuàng)建目錄后,里面就自動生成了很多文件、目錄,比如:

    • idVendor:表示廠家 ID,默認(rèn)值是 0
    • idProduct:表示產(chǎn)品 ID,默認(rèn)值是 0
  • 設(shè)置設(shè)備描述符,比如設(shè)置廠家 ID、產(chǎn)品 ID,這是可選的

    echo "0x1234" > idVendor
    echo "0x5678" > idProduct
    
  • 創(chuàng)建配置:格式為"configs/.",name 可以取任意字符,number 是配置編號

    mkdir configs/c.1
    
  • 創(chuàng)建功能(function、接口):格式為"functions/.",name 對應(yīng) function 的名字,比如 acm 對應(yīng) ACM 功能,對應(yīng)的驅(qū)動為usb_f_acm.ko;instance name 可以取任意字符

    mkdir functions/acm.test1
    
  • 把配置和功能聯(lián)系起來:ln -s functions/. configs/.

    ln -s functions/acm.test1  configs/c.1/
    
  • 使能 Gadget(確定使用哪個(gè) USB Device Controller):echo > UDC,可用的 UDC,可以在 /sys/class/udc/* 目錄下查看

    echo ci_hdrc.0 > UDC
    

1.2 清除

  • 禁止 Gadget
    echo "" > UDC
    
  • 移除配置里的功能(Remove functions from configurations):命令:rm configs/./
    rm  configs/c.1/acm.test1
    
  • 移除配置:rmdir configs/.
    rmdir configs/c.1
    
  • 移除功能:rmdir functions/.
    rmdir functions/acm.test1
    
  • 移除 Gadget
    rmdir test_serial
    

1.3 STM32MP157上的實(shí)驗(yàn)

因?yàn)?STM32MP157 系統(tǒng)里已經(jīng)使用 adb 設(shè)備,要想模擬串口設(shè)備,需要先清除 adb,命令如下:

cd /sys/kernel/config/usb_gadget/g1
echo "" > UDC
rm configs/b.1/ffs.adb
rmdir configs/b.1/strings/0x409
rmdir configs/b.1
rmdir functions/ffs.adb
rm strings/0x409
cd ..
rmdir g1

清除后,就按照《1.1 使用》來操作,需要注意的是最后一步:

ls  /sys/class/udc/
49000000.usb-otg

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

    關(guān)注

    5046

    文章

    18817

    瀏覽量

    298550
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207912
收藏 人收藏

    評論

    相關(guān)推薦

    樹莓派編譯內(nèi)核報(bào)錯(cuò)

    編譯的時(shí)候報(bào)錯(cuò)CC [M]fs/btrfs/volumes.ofs/btrfs/volumes.c:28:27: fatal error: linux/raid/pq.h: No such file
    發(fā)表于 09-29 09:47

    Linux系統(tǒng)啟動卡制作及系統(tǒng)固化

    :VMware14.1.1Kernel:Linux-4.9.65、Linux-RT-4.9.65Linux Processor SDK
    發(fā)表于 09-17 16:16

    怎么去解決D1s tina linux連接失敗的問題

    ] configfs-gadget gadget: high-speed config #1: c[13.729040] android_work: sent uevent USB_STATE=CONFIGURED
    發(fā)表于 12-28 06:19

    Imx6如何作為UVC wbcam相機(jī)?

    。在內(nèi)核日志中我看到:[ 78.763930] configfs-gadget 小工具:uvc:無法將請求排隊(duì) (-22)。[ 79.259922] ci_hdrc ci_hdrc.0: 未頁面
    發(fā)表于 04-21 07:17

    Linux之chardev_buttom_linux_struc

    Linux之chardev_buttom_linux_struct_poll教程,很好的Linux資料,快來學(xué)習(xí)吧
    發(fā)表于 04-15 17:49 ?7次下載

    Linux之chardev_buttom_linux_struc

    Linux之chardev_buttom_linux_struct_timer_debounce教程,很好的Linux自學(xué)資料,快來學(xué)習(xí)吧。
    發(fā)表于 04-15 17:59 ?5次下載

    REDIce-Linux--靈活的實(shí)時(shí)Linux內(nèi)核

    REDSonic, Inc. REDSonic的RedIce-Linux是一個(gè)實(shí)時(shí)Linux內(nèi)核,設(shè)計(jì)來支持以任務(wù)和時(shí)間為臨界的應(yīng)用,為你的系統(tǒng)提供質(zhì)量服務(wù)。RedIce-Linux包括高精度的微秒
    發(fā)表于 11-08 10:24 ?12次下載

    Linux教程之Linux的文件權(quán)限管理實(shí)驗(yàn)

    嚴(yán)格來講,Linux這個(gè)詞本身只表示Linux內(nèi)核,但在實(shí)際上人們已經(jīng)習(xí)慣了用Linux來形容整個(gè)基于Linux內(nèi)核,并且使用GNU工程各種工具和資料庫的操作系統(tǒng)(也被稱為GNU/
    發(fā)表于 11-20 17:08 ?5次下載
    <b class='flag-5'>Linux</b>教程之<b class='flag-5'>Linux</b>的文件權(quán)限管理實(shí)驗(yàn)

    如何學(xué)習(xí)Linux學(xué)習(xí)Linux的詳細(xì)步驟說明

    Linux系統(tǒng)現(xiàn)在越來越滿足人們對技術(shù)的要求,因此Linux不論在市場中還是企業(yè)里都備受歡迎,所以學(xué)習(xí)Linux的人越來越多,那么Linux到底應(yīng)該怎么學(xué)呢?有沒有
    發(fā)表于 01-15 17:17 ?63次下載
    如何學(xué)習(xí)<b class='flag-5'>Linux</b>學(xué)習(xí)<b class='flag-5'>Linux</b>的詳細(xì)步驟說明

    32位的linux和64位的linux有何不同

    32位的linux和64位的linux有何不同?
    發(fā)表于 06-12 09:29 ?1316次閱讀

    Linux的產(chǎn)生_Linux的發(fā)展

    Linux是一種計(jì)算機(jī)操作系統(tǒng),通常被稱為類Unix系統(tǒng),這是因?yàn)?b class='flag-5'>Linux和Unix有著很深的淵源。
    發(fā)表于 07-16 14:33 ?1317次閱讀

    國內(nèi)最好用的linux系統(tǒng)_linux系統(tǒng)入門命令

    linux是免費(fèi)開源的操作系統(tǒng),屬性linux系統(tǒng)的版本非常多,除了全球知名的幾款linux之外,國內(nèi)也有幾款非常不錯(cuò)的linux版本,下面小編和大家分享下三款最好用的國產(chǎn)
    發(fā)表于 08-26 10:18 ?4989次閱讀
    國內(nèi)最好用的<b class='flag-5'>linux</b>系統(tǒng)_<b class='flag-5'>linux</b>系統(tǒng)入門命令

    Linux有什么優(yōu)勢?Linux能替代Windows 嗎?

    Linux 能用嗎? Linux 有圖形界面 支持日常開發(fā) 社交溝通沒問題 Linux 能替代 Windows 嗎? Linux 下運(yùn)行 Android 應(yīng)用
    的頭像 發(fā)表于 10-26 12:02 ?4295次閱讀

    嵌入式linux和桌面linux的區(qū)別

    嵌入式linux和桌面linux的區(qū)別主要區(qū)別是:1. 硬件平臺:嵌入式Linux一般是Mips, ARM平臺, 桌面Linux一般是x86平臺。2. 根文件系統(tǒng)嵌入式
    發(fā)表于 10-20 15:36 ?4次下載
    嵌入式<b class='flag-5'>linux</b>和桌面<b class='flag-5'>linux</b>的區(qū)別

    Linux configfs的內(nèi)部機(jī)制介紹

    2.1 configfs 和 sysfs configfs 和 sysfs 都是基于內(nèi)存的虛擬文件系統(tǒng),但是它們并不相同。 對于 sysfs,當(dāng)內(nèi)核創(chuàng)建某個(gè)對象時(shí),比如注冊一個(gè)
    的頭像 發(fā)表于 07-13 11:00 ?1499次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>configfs</b>的內(nèi)部機(jī)制介紹