yocto linux 添加usb storage 功能

本文详细介绍如何在Linux系统中配置USB Gadget功能,包括必要的内核配置选项,如CONFIG_USB、CONFIG_USB_STORAGE等,以及如何设置USB设备的VID、PID和功能配置,如U盘、以太网和串口等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux的usb storage,原生系统默认是没有的,需要自己配置。那就需要配置usb的gadget功能。在kernel的config开关中需要保证

这些开关打开

CONFIG_USB=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_MXC=y
CONFIG_USB_STORAGE=y
CONFIG_USB_CHIPIDEA=y
CONFIG_USB_CHIPIDEA_UDC=y
CONFIG_USB_CHIPIDEA_HOST=y
CONFIG_NOP_USB_XCEIV=y
CONFIG_USB_MXS_PHY=y
CONFIG_USB_GADGET=y
CONFIG_USB_MASS_STORAGE=y

顺便说一下gadget,Gadget 框架提出了一套标准API, 在底层, USB 设备控制器 (USB Device Controller, UDC) 驱动则实现这一套 API, 不同的 UDC (通常是 SOC 的一部分) 需要不同的驱动, 甚至基于同样的 UDC 的不同板子也需要进行代码修改。这一层我们可以称之为平台相关层。
有了gadget功能,我们就可以将我们的主板配置为U盘,鼠标,键盘等usb接口功能了。

Ø  Gadget Zero, 类似于 dummyhcd, 该驱动用于测试 udc 驱动。它会帮助您通过 USB-IF 测试。

Ø  Ethernet over USB, 该驱动模拟以太网网口,它支持多种运行方式:

²   CDC Ethernet: usb 规范规定的 CommunicationsDevice Class “Ethernet Model” protocol。

²  CDC Subset: 对硬件要求最低的一种方式,主要是 Linux 主机支持该方式。

²  RNDIS: 微软公司对 CDCEthernet 的变种实现。

Ø   File-backed Storage Gadget最常见的 U 盘功能实现。

Ø  Serial Gadget 实现,包括:

²   Generic Serial 实现(只需要Bulk-in/Bulk-out端点+ep0)

²  CDC ACM 规范实现。

Ø    Gadget Filesystem, 将 GadgetAPI 接口暴露给应用层,以便在应用层实现user modedriver。

Ø  MIDI: 暴露ALSA接口,提供 recording 以及 playback 功能。

添加完上述开关之后,需要配置一些属性了,包括VID PID等信息,以及空间配置,这个可以通过如下的shell脚本打包实现:

 #!/bin/sh

#set -xv
set -e
mount -t configfs none /sys/kernel/config/
cd /sys/kernel/config/usb_gadget/
mkdir g2
cd g2/ 

echo "0xABCD" >idVendor 
echo "0x1017" >idProduct  
cat idVendor 
cat idProduct
 
mkdir strings/0x409/
echo "012345678ABCDEF"        >strings/0x409/serialnumber 
echo "Dragon"                             >strings/0x409/manufacturer 
echo "DragonMSC"                     >strings/0x409/product 

mkdir functions/mass_storage.usb0
echo /dev/mmcblk1p1 >functions/mass_storage.usb0/lun.0/file 

mkdir configs/c.1
mkdir configs/c.1/strings/0x409/

echo "abc" > configs/c.1/strings/0x409/configuration 
cat configs/c.1/strings/0x409/configuration 
ln -s functions/mass_storage.usb0/ configs/c.1/

ls /sys/class/udc/
echo ci_hdrc.0 >UDC

echo !!!!!!!!!!!!!!!!!!
echo !!!!!OK!!!!!!!!!!!
echo !!!!!!!!!!!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值