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

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

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

AMD Xilinx Linux 2022.1 USB Gadget使用

jf_pJlTbmA9 ? 來源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-07-07 14:15 ? 次閱讀

問題

有客戶使用Linux中的USB Gadget功能,把MPSoC器件做USB從設(shè)備。在執(zhí)行“mkdir functions/.”時(shí),得到錯(cuò)誤“Device or resource busy”。

mkdir:can'tcreatedirectory'functions/ffs.usb0':Deviceorresourcebusy

分析

根據(jù)配置項(xiàng)CONFIG_USB_F_FS分析對(duì)應(yīng)的代碼drivers/usb/gadget/function/f_fs.c, 使能其中的調(diào)試信息,并增加額外的調(diào)試信息,發(fā)現(xiàn)_ffs_alloc_dev中的_ffs_get_single_dev得到了有效指針,就會(huì)返回EBUSY。_ffs_get_single_dev返回的指針,從鏈表ffs_devices中獲取。

staticstructffs_dev*_ffs_alloc_dev(void)
{
structffs_dev*dev;
intret;

if(_ffs_get_single_dev()){
returnERR_PTR(-EBUSY);
}

......

returndev;
}

繼續(xù)跟蹤代碼,發(fā)現(xiàn)drivers/usb/gadget/legacy/g_ffs.c中向鏈表ffs_devices添加了設(shè)備。

因此禁止g_ffs.c對(duì)應(yīng)的配置CONFIG_USB_FUNCTIONFS,再次使用USB gadget功能,沒有錯(cuò)誤“Device or resource busy”。

創(chuàng)建USB gadget功能的腳本

#!/bin/sh

echo"USBffsinit"

uname-a

CONFIGFS_HOME=/sys/kernel/config

echo$CONFIGFS_HOME
modprobelibcomposite
mountnone$CONFIGFS_HOME-tconfigfs
ls-l$CONFIGFS_HOME

mkdir$CONFIGFS_HOME/usb_gadget/hkug
ls-l$CONFIGFS_HOME/usb_gadget/hkug

cd$CONFIGFS_HOME/usb_gadget/hkug
pwd

echo0x0104>idProduct
echo0x1d6b>idVendor

mkdirstrings/0x409
ls-lstrings/0x409

echohkug12345678>strings/0x409/serialnumber
echohkug>strings/0x409/manufacturer
echohkugtester>strings/0x409/product


mkdirconfigs/hkugcfgname.1
ls-lconfigs/hkugcfgname.1

mkdirconfigs/hkugcfgname.1/strings/0x409
ls-lconfigs/hkugcfgname.1/strings/0x409

echohkugtcfg>configs/hkugcfgname.1/strings/0x409/configuration

echo120>configs/hkugcfgname.1/MaxPower

echo"functions/ffs.usb0"
mkdirfunctions/ffs.usb0
ls-lfunctions/ffs.usb0

ln-sfunctions/ffs.usb0configs/c.1

echo"UDC"
#echo>UDC
echohkug>UDC

ls/sys/class/udc/

ls/sys/class/udc/>UDC

其它

CONFIG_USB_F_FS(USB_F_FS)的定義在文件drivers/usb/gadget/Kconfig:

configUSB_F_FS
	tristate

CONFIG_USB_FUNCTIONFS(USB_FUNCTIONFS)的定義在文件drivers/usb/gadget/Kconfig:

configUSB_FUNCTIONFS
	tristate"FunctionFilesystem"
	selectUSB_LIBCOMPOSITE
	selectUSB_F_FS
	selectUSB_FUNCTIONFS_GENERICif!(USB_FUNCTIONFS_ETH||USB_FUNCTIONFS_RNDIS)
	help
	TheFunctionFilesystem(FunctionFS)letsonecreateUSB
	compositefunctionsinuserspaceinthesamewayGadgetFS
	letsonecreateUSBgadgetsinuserspace.Thisallowscreation
	ofcompositegadgetssuchthatsomeofthefunctionsare
	implementedinkernelspace(forinstanceEthernet,serialor
	massstorage)andotherareimplementedinuserspace.

	Ifyousay"y"or"m"hereyouwillbeablewhatkindof
	configurationsthegadgetwillprovide.

	Say"y"tolinkthedriverstatically,or"m"tobuild
	adynamicallylinkedmodulecalled"g_ffs".

奇怪的是,會(huì)主動(dòng)選擇CONFIG_USB_F_FS。

審核編輯:湯梓紅

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

    關(guān)注

    25

    文章

    5376

    瀏覽量

    133378
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7772

    瀏覽量

    262374
  • Xilinx
    +關(guān)注

    關(guān)注

    70

    文章

    2137

    瀏覽量

    120386
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    在Ubuntu Linux OS上安裝Xilinx USB電纜不起作用

    你好;我購買了Xilin Virtex 5(SXT版)。我試圖在Ubuntu Linux工作站上安裝Xilinx USB電纜。我從Xilinx網(wǎng)站下載install_drivers.t
    發(fā)表于 11-20 14:14

    如何配置USB OTG為Gadget serial device?

    現(xiàn)需要將OKA40i-C板子上的OTG下載口配置為虛擬串口,實(shí)現(xiàn)u***串行通信,利用linux已存在的u***轉(zhuǎn)虛擬串口驅(qū)動(dòng):USB Gadget Drivers (Serial Gadge
    發(fā)表于 01-04 06:47

    分享一種將RK3399配置成USB gadget設(shè)備的方法

    1、RK3399的USB type-c接口初始化配置RK3399中提供了USB gadget設(shè)備的支持,程序在內(nèi)核中目錄“kernel/drivers/u***/gadget”中,支持
    發(fā)表于 05-24 10:35

    基于Linux內(nèi)核的Rockchip USB Gadget UAC開發(fā)資料分享

    1、Rockchip USB Gadget UAC開發(fā)步驟本文檔提供 Rockchip 平臺(tái)基于 Linux 內(nèi)核的 USB Gadget
    發(fā)表于 08-10 16:03

    RK3288使用USB GADGET實(shí)現(xiàn)大容量存儲(chǔ)腳本

    (){mount -t configfs none /sys/kernel/configmkdir /sys/kernel/config/usb_gadget/rockchip -m
    發(fā)表于 11-18 16:33

    求助,關(guān)于USB gadget安裝虛擬網(wǎng)口問題求解

    1.make linux-menuconfig USB support ----> <*>USB Gadget Support ---->
    發(fā)表于 09-01 06:14

    usb xilinx源代碼

    usb xilinx代碼,usb xilinx源代碼,usb xilinx程序 The lac
    發(fā)表于 06-14 09:04 ?41次下載

    [嵌入式linux]將linux板卡虛擬為USB網(wǎng)卡設(shè)備(Ethernet Gadget

    kernel menuconfig-> Device Drivers ->USB support -> USB Gadget Support 建議最好選成M,作為內(nèi)核驅(qū)動(dòng)模塊,便于
    發(fā)表于 11-02 11:36 ?12次下載
    [嵌入式<b class='flag-5'>linux</b>]將<b class='flag-5'>linux</b>板卡虛擬為<b class='flag-5'>USB</b>網(wǎng)卡設(shè)備(Ethernet <b class='flag-5'>Gadget</b>)

    Vivado 2022.1的新特性

    Vivado 2022.1已正式發(fā)布,今天我們就來看看其中的一個(gè)新特性。
    的頭像 發(fā)表于 07-03 17:00 ?2286次閱讀

    如何使用Vivado 2022.1版本工具鏈實(shí)現(xiàn)ZCU102 USB啟動(dòng)(上)

    本文依據(jù) Vivado 2022.1 版本工具鏈的特性,對(duì) UG1209( 最新版本為 2020.1 )中介紹的 USB BOOT 啟動(dòng)步驟做了修改,此外,介紹了 WINDOWS 10 中 DFU 工具的使用。
    的頭像 發(fā)表于 10-28 09:50 ?2026次閱讀

    AMD Xilinx K26從eMMC啟動(dòng)Ubuntu

    AMD Xilinx K26支持Ubuntu。從ubuntu amd-xilinx下載映像后,把image燒入到TF卡
    的頭像 發(fā)表于 07-10 15:58 ?632次閱讀

    AMD-Xilinx MPSoC的Watchdog在Linux中使用的簡(jiǎn)明教程

    AMD-Xilinx MPSoC的器件里,提供了內(nèi)置的Watchdog
    的頭像 發(fā)表于 07-07 14:15 ?920次閱讀

    USB Gadget serial應(yīng)用實(shí)例(上)

    1. 硬件體驗(yàn) 使用 Linux 自帶的 USB Gadget 驅(qū)動(dòng) /drivers/usb/gadget/legacy/serial.c
    的頭像 發(fā)表于 07-13 11:06 ?2278次閱讀
    <b class='flag-5'>USB</b> <b class='flag-5'>Gadget</b> serial應(yīng)用實(shí)例(上)

    USB Gadget zero應(yīng)用實(shí)例程序

    1. 編寫程序 1.1 編程思路 涉及的程序如下圖所示: PC 端基于 libusb 編寫應(yīng)用程序,開發(fā)板端直接使用 Linux 自帶的 USB Gadget 驅(qū)動(dòng) zero.c【/drivers
    的頭像 發(fā)表于 07-13 11:14 ?870次閱讀
    <b class='flag-5'>USB</b> <b class='flag-5'>Gadget</b> zero應(yīng)用實(shí)例程序

    從硬件軟件角度理解Gadget框架

    2. 從硬件軟件角度理解 Gadget 框架 USB 傳輸?shù)暮诵氖?endpoint,使用 endpoint 可以收發(fā)數(shù)據(jù)。在 endpoint 之上,就可以模擬 USB 串口、USB
    的頭像 發(fā)表于 07-13 11:32 ?821次閱讀
    從硬件軟件角度理解<b class='flag-5'>Gadget</b>框架