0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AMD Xilinx Linux 2022.1 USB Gadget使用

jf_pJlTbmA9 来源:jf_pJlTbmA9 作者:jf_pJlTbmA9 2023-07-07 14:15 次阅读

问题

有客户使用Linux中的USB Gadget功能,把MPSoC器件做USB从设备。在执行“mkdir functions/.”时,得到错误“Device or resource busy”。

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

分析

根据配置项CONFIG_USB_F_FS分析对应的代码drivers/usb/gadget/function/f_fs.c, 使能其中的调试信息,并增加额外的调试信息,发现_ffs_alloc_dev中的_ffs_get_single_dev得到了有效指针,就会返回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;
}

继续跟踪代码,发现drivers/usb/gadget/legacy/g_ffs.c中向链表ffs_devices添加了设备。

因此禁止g_ffs.c对应的配置CONFIG_USB_FUNCTIONFS,再次使用USB gadget功能,没有错误“Device or resource busy”。

创建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".

奇怪的是,会主动选择CONFIG_USB_F_FS。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • amd
    amd
    +关注

    关注

    25

    文章

    5467

    浏览量

    134131
  • usb
    usb
    +关注

    关注

    60

    文章

    7943

    浏览量

    264579
  • Xilinx
    +关注

    关注

    71

    文章

    2167

    浏览量

    121367
收藏 人收藏

    评论

    相关推荐

    在Ubuntu Linux OS上安装Xilinx USB电缆不起作用

    你好;我购买了Xilin Virtex 5(SXT版)。我试图在Ubuntu Linux工作站上安装Xilinx USB电缆。我从Xilinx网站下载install_drivers.t
    发表于 11-20 14:14

    如何配置USB OTG为Gadget serial device?

    现需要将OKA40i-C板子上的OTG下载口配置为虚拟串口,实现u***串行通信,利用linux已存在的u***转虚拟串口驱动:USB Gadget Drivers (Serial Gadge
    发表于 01-04 06:47

    分享一种将RK3399配置成USB gadget设备的方法

    1、RK3399的USB type-c接口初始化配置RK3399中提供了USB gadget设备的支持,程序在内核中目录“kernel/drivers/u***/gadget”中,支持
    发表于 05-24 10:35

    基于Linux内核的Rockchip USB Gadget UAC开发资料分享

    1、Rockchip USB Gadget UAC开发步骤本文档提供 Rockchip 平台基于 Linux 内核的 USB Gadget
    发表于 08-10 16:03

    RK3288使用USB GADGET实现大容量存储脚本

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

    求助,关于USB gadget安装虚拟网口问题求解

    1.make linux-menuconfig USB support ----> <*>USB Gadget Support ---->
    发表于 09-01 06:14

    usb xilinx源代码

    usb xilinx代码,usb xilinx源代码,usb xilinx程序 The lac
    发表于 06-14 09:04 41次下载

    [嵌入式linux]将linux板卡虚拟为USB网卡设备(Ethernet Gadget

    kernel menuconfig-> Device Drivers ->USB support -> USB Gadget Support 建议最好选成M,作为内核驱动模块,便于
    发表于 11-02 11:36 12次下载
    [嵌入式<b class='flag-5'>linux</b>]将<b class='flag-5'>linux</b>板卡虚拟为<b class='flag-5'>USB</b>网卡设备(Ethernet <b class='flag-5'>Gadget</b>)

    Vivado 2022.1的新特性

    Vivado 2022.1已正式发布,今天我们就来看看其中的一个新特性。
    的头像 发表于 07-03 17:00 2495次阅读

    如何使用Vivado 2022.1版本工具链实现ZCU102 USB启动(上)

    本文依据 Vivado 2022.1 版本工具链的特性,对 UG1209( 最新版本为 2020.1 )中介绍的 USB BOOT 启动步骤做了修改,此外,介绍了 WINDOWS 10 中 DFU 工具的使用。
    的头像 发表于 10-28 09:50 2351次阅读

    AMD Xilinx K26从eMMC启动Ubuntu

    AMD Xilinx K26支持Ubuntu。从ubuntu amd-xilinx下载映像后,把image烧入到TF卡
    的头像 发表于 07-10 15:58 728次阅读

    AMD-Xilinx MPSoC的Watchdog在Linux中使用的简明教程

    AMD-Xilinx MPSoC的器件里,提供了内置的Watchdog
    的头像 发表于 07-07 14:15 1099次阅读

    USB Gadget serial应用实例(上)

    1. 硬件体验 使用 Linux 自带的 USB Gadget 驱动 /drivers/usb/gadget/legacy/serial.c
    的头像 发表于 07-13 11:06 2820次阅读
    <b class='flag-5'>USB</b> <b class='flag-5'>Gadget</b> serial应用实例(上)

    USB Gadget zero应用实例程序

    1. 编写程序 1.1 编程思路 涉及的程序如下图所示: PC 端基于 libusb 编写应用程序,开发板端直接使用 Linux 自带的 USB Gadget 驱动 zero.c【/drivers
    的头像 发表于 07-13 11:14 1082次阅读
    <b class='flag-5'>USB</b> <b class='flag-5'>Gadget</b> zero应用实例程序

    从硬件软件角度理解Gadget框架

    2. 从硬件软件角度理解 Gadget 框架 USB 传输的核心是 endpoint,使用 endpoint 可以收发数据。在 endpoint 之上,就可以模拟 USB 串口、USB
    的头像 发表于 07-13 11:32 1095次阅读
    从硬件软件角度理解<b class='flag-5'>Gadget</b>框架