我目前正在配置便携式(基于嵌入式Linux的)设备,一旦插入计算机,该设备就会成为大容量存储提供商。 大容量存储介质必须与Windows和Mac兼容,因此我选择FAT作为文件系统(文件分配表)。
使用 mkdosfs
生成FAT连接到计算机时,我现在面临以下问题:
窗: - 想要总是修理驱动器,如果我允许它这样做它会回来没有发现错误....
苹果: - 安装后驱动器安装稍微停留一段时间后可以再次消失。这最终会定期尝试重新安装以便再次卸载。 此外,我在dmesg
中看到以下行USBMSC Identifier (non-unique) 0x00000000 0xXXXX 0x300 0x100, 2
如果我插入Windows机器并使用FAT(FAT 32)格式化外露的驱动器,Win和Mac盒子都对设备上的FAT系统感到满意。 这对我来说意味着mkdosfs不能产生有效的FAT,虽然它知道它是一个产生的vfat ......
是否有任何类似的问题让这种跨操作系统兼容性工作?我无法相信我是唯一一个面临这个问题的人。
这是我的g_mass_storage内核模块的设置例程:
内核:
modprobe libcomposite
cd /sys/kernel/config/usb_gadget
mkdir -p usbdisk
cd usbdisk
echo 0xXXXX > idVendor
echo 0x0300 > idProduct
echo 0x0100 > bcdDevice
echo 0x0200 > bcdUSB
mkdir -p strings/0x409
echo "42" > strings/0x409/serialnumber
echo "Spam and Eggs Inc." > strings/0x409/manufacturer
echo "My awesome Product" > strings/0x409/product
mkdir -p functions/mass_storage.usb0
echo 0 > functions/mass_storage.usb0/stall
echo 0 > functions/mass_storage.usb0/lun.0/cdrom
echo 0 > functions/mass_storage.usb0/lun.0/ro
echo 0 > functions/mass_storage.usb0/lun.0/nofua
echo "/dev/mmcblk0p1" > functions/mass_storage.usb0/lun.0/file
mkdir -p configs/c.1/strings/0x409
echo "My Mass Storage" > configs/c.1/strings/0x409/configuration
echo 500 > configs/c.1/MaxPower
ln -s functions/mass_storage.usb0 configs/c.1
echo ci_hdrc.0 > UDC
格式:
我尝试了以下方案:
使用支持文件fdisk和mkdosfs http://www.linux-usb.org/gadget/file_storage.html
在最新版本中,我使用块设备(SD卡)分区和格式 它与
mkdosfs -n LABEL -F 32 /dev/mmcblk0p1