Added USB Gadget Mass Storage and CDC ACM

This commit is contained in:
Michel-FK 2018-03-05 07:56:33 +01:00
parent f1c81cc332
commit 0777af6a55
4 changed files with 148 additions and 31 deletions

View File

@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Busybox version: 1.27.2
# Sat Feb 24 11:11:49 2018
# Tue Mar 6 00:09:21 2018
#
CONFIG_HAVE_DOT_CONFIG=y
@ -529,9 +529,9 @@ CONFIG_VLOCK=y
#
# Linux Ext2 FS Progs
#
CONFIG_CHATTR=y
# CONFIG_CHATTR is not set
CONFIG_FSCK=y
CONFIG_LSATTR=y
# CONFIG_LSATTR is not set
# CONFIG_TUNE2FS is not set
#
@ -571,13 +571,13 @@ CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
# CONFIG_ACPID is not set
# CONFIG_FEATURE_ACPID_COMPAT is not set
# CONFIG_BLKDISCARD is not set
CONFIG_BLKID=y
# CONFIG_BLKID is not set
# CONFIG_FEATURE_BLKID_TYPE is not set
# CONFIG_BLOCKDEV is not set
# CONFIG_CAL is not set
CONFIG_CHRT=y
CONFIG_DMESG=y
CONFIG_FEATURE_DMESG_PRETTY=y
# CONFIG_DMESG is not set
# CONFIG_FEATURE_DMESG_PRETTY is not set
CONFIG_EJECT=y
# CONFIG_FEATURE_EJECT_SCSI is not set
CONFIG_FALLOCATE=y
@ -586,25 +586,25 @@ CONFIG_FBSET=y
CONFIG_FEATURE_FBSET_FANCY=y
CONFIG_FEATURE_FBSET_READMODE=y
CONFIG_FDFORMAT=y
CONFIG_FDISK=y
# CONFIG_FDISK is not set
# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set
CONFIG_FEATURE_FDISK_WRITABLE=y
# CONFIG_FEATURE_FDISK_WRITABLE is not set
# CONFIG_FEATURE_AIX_LABEL is not set
# CONFIG_FEATURE_SGI_LABEL is not set
# CONFIG_FEATURE_SUN_LABEL is not set
# CONFIG_FEATURE_OSF_LABEL is not set
CONFIG_FEATURE_GPT_LABEL=y
CONFIG_FEATURE_FDISK_ADVANCED=y
# CONFIG_FEATURE_GPT_LABEL is not set
# CONFIG_FEATURE_FDISK_ADVANCED is not set
# CONFIG_FINDFS is not set
CONFIG_FLOCK=y
# CONFIG_FLOCK is not set
CONFIG_FDFLUSH=y
CONFIG_FREERAMDISK=y
# CONFIG_FSCK_MINIX is not set
CONFIG_FSFREEZE=y
CONFIG_FSTRIM=y
# CONFIG_FSTRIM is not set
CONFIG_GETOPT=y
CONFIG_FEATURE_GETOPT_LONG=y
CONFIG_HEXDUMP=y
# CONFIG_HEXDUMP is not set
# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
# CONFIG_HD is not set
CONFIG_XXD=y
@ -627,14 +627,14 @@ CONFIG_FEATURE_MDEV_EXEC=y
# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
CONFIG_MESG=y
CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y
CONFIG_MKE2FS=y
# CONFIG_MKE2FS is not set
# CONFIG_MKFS_EXT2 is not set
# CONFIG_MKFS_MINIX is not set
# CONFIG_FEATURE_MINIX2 is not set
# CONFIG_MKFS_REISER is not set
CONFIG_MKDOSFS=y
# CONFIG_MKFS_VFAT is not set
CONFIG_MKSWAP=y
# CONFIG_MKSWAP is not set
# CONFIG_FEATURE_MKSWAP_UUID is not set
CONFIG_MORE=y
CONFIG_MOUNT=y
@ -653,8 +653,8 @@ CONFIG_MOUNTPOINT=y
CONFIG_PIVOT_ROOT=y
CONFIG_RDATE=y
# CONFIG_RDEV is not set
CONFIG_READPROFILE=y
CONFIG_RENICE=y
# CONFIG_READPROFILE is not set
# CONFIG_RENICE is not set
# CONFIG_REV is not set
# CONFIG_RTCWAKE is not set
# CONFIG_SCRIPT is not set
@ -663,11 +663,11 @@ CONFIG_SETARCH=y
CONFIG_LINUX32=y
CONFIG_LINUX64=y
CONFIG_SETPRIV=y
CONFIG_SETSID=y
CONFIG_SWAPON=y
# CONFIG_SETSID is not set
# CONFIG_SWAPON is not set
# CONFIG_FEATURE_SWAPON_DISCARD is not set
# CONFIG_FEATURE_SWAPON_PRI is not set
CONFIG_SWAPOFF=y
# CONFIG_SWAPOFF is not set
CONFIG_SWITCH_ROOT=y
# CONFIG_TASKSET is not set
# CONFIG_FEATURE_TASKSET_FANCY is not set
@ -683,18 +683,14 @@ CONFIG_FEATURE_UMOUNT_ALL=y
CONFIG_FEATURE_MOUNT_LOOP=y
CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
# CONFIG_FEATURE_MTAB_SUPPORT is not set
CONFIG_VOLUMEID=y
#
# Filesystem/Volume identification
#
# CONFIG_VOLUMEID is not set
# CONFIG_FEATURE_VOLUMEID_BCACHE is not set
# CONFIG_FEATURE_VOLUMEID_BTRFS is not set
# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set
CONFIG_FEATURE_VOLUMEID_EXFAT=y
CONFIG_FEATURE_VOLUMEID_EXT=y
CONFIG_FEATURE_VOLUMEID_F2FS=y
CONFIG_FEATURE_VOLUMEID_FAT=y
# CONFIG_FEATURE_VOLUMEID_EXFAT is not set
# CONFIG_FEATURE_VOLUMEID_EXT is not set
# CONFIG_FEATURE_VOLUMEID_F2FS is not set
# CONFIG_FEATURE_VOLUMEID_FAT is not set
# CONFIG_FEATURE_VOLUMEID_HFS is not set
# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set
# CONFIG_FEATURE_VOLUMEID_JFS is not set
@ -708,7 +704,7 @@ CONFIG_FEATURE_VOLUMEID_FAT=y
# CONFIG_FEATURE_VOLUMEID_ROMFS is not set
# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set
# CONFIG_FEATURE_VOLUMEID_SYSV is not set
CONFIG_FEATURE_VOLUMEID_UBIFS=y
# CONFIG_FEATURE_VOLUMEID_UBIFS is not set
# CONFIG_FEATURE_VOLUMEID_UDF is not set
# CONFIG_FEATURE_VOLUMEID_XFS is not set

View File

@ -46,6 +46,8 @@ CONFIG_DEVTMPFS_MOUNT=y
CONFIG_MTD=y
CONFIG_MTD_M25P80=y
CONFIG_MTD_SPI_NOR=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_LOOP_MIN_COUNT=1
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_NETDEVICES=y
@ -118,7 +120,9 @@ CONFIG_USB_MUSB_HDRC=y
CONFIG_USB_MUSB_SUNXI=y
CONFIG_NOP_USB_XCEIV=y
CONFIG_USB_GADGET=y
CONFIG_USB_CDC_COMPOSITE=y
CONFIG_USB_MASS_STORAGE=m
CONFIG_USB_G_SERIAL=m
CONFIG_USB_G_ACM_MS=m
CONFIG_MMC=y
CONFIG_MMC_SUNXI=y
CONFIG_NEW_LEDS=y
@ -147,6 +151,7 @@ CONFIG_NVMEM_SUNXI_SID=y
CONFIG_EXT4_FS=y
CONFIG_VFAT_FS=y
CONFIG_TMPFS=y
CONFIG_CONFIGFS_FS=y
# CONFIG_MISC_FILESYSTEMS is not set
# CONFIG_NETWORK_FILESYSTEMS is not set
CONFIG_NLS_CODEPAGE_437=y

View File

@ -0,0 +1,115 @@
#!/bin/sh
#set -x
THIS=$(basename $0)
case "${1}" in
start)
if [ ! -f /mass_storage ]; then
echo "$THIS: no shared storage file, create it" | tee /dev/kmsg
dd if=/dev/zero of=/mass_storage bs=1M seek=1024 count=0 &&
cat <<EOF | sfdisk /mass_storage
,,C
EOF
if [ $? -ne 0 ]; then
echo "$THIS: cannot create shared storage file" | tee /dev/kmsg
exit 1
fi
UNIT_LINE=$(fdisk -l /mass_storage | egrep Units)
set $UNIT_LINE
UNIT=${8}
PART_LINE=$(fdisk -l /mass_storage | egrep /mass_storage1)
set $PART_LINE
let START="${2} * $UNIT"
if [ x"$START" = x -o $START -eq 0 ]; then
echo "$THIS: cannot find shared storage file start" | tee /dev/kmsg
exit 2
fi
losetup -o$START /dev/loop0 /mass_storage &&
mkdosfs /dev/loop0 &&
losetup -d /dev/loop0
if [ $? -ne 0 ]; then
echo "$THIS: cannot format shared storage file" | tee /dev/kmsg
exit 3
fi
fi
lsmod | egrep -q ^g_mass_storage
if [ $? -eq 0 ]; then
echo "$THIS; shared storage already started" | tee /dev/kmsg
exit 4
fi
echo "$THIS: start shared storage" | tee /dev/kmsg
modprobe g_mass_storage file=/mass_storage
if [ $? -ne 0 ]; then
echo "$THIS: cannot start shared storage" | tee /dev/kmsg
exit 5
fi
echo "$THIS: shared storage started" | tee /dev/kmsg
;;
stop)
echo "$THIS: stop shared storage" | tee /dev/kmsg
lsmod | egrep -q ^g_mass_storage
if [ $? -eq 0 ]; then
modprobe -r g_mass_storage
if [ $? -ne 0 ]; then
echo "$THIS: cannot stop shared storage" | tee /dev/kmsg
exit 6
fi
else
echo "$THIS: shared storage not started" | tee /dev/kmsg
exit 7
fi
echo "$THIS: shared storage stopped" | tee /dev/kmsg
;;
mount)
if [ ! -f /mass_storage ]; then
echo "$THIS: no shared storage file" | tee /dev/kmsg
exit 8
fi
echo "$THIS: mounting shared storage" | tee /dev/kmsg
UNIT_LINE=$(fdisk -l /mass_storage | egrep Units)
set $UNIT_LINE
UNIT=${8}
PART_LINE=$(fdisk -l /mass_storage | egrep /mass_storage1)
set $PART_LINE
let START="${2} * $UNIT"
if [ x"$START" = x -o $START -eq 0 ]; then
echo "$THIS: cannot find shared storage file start" | tee /dev/kmsg
exit 9
fi
losetup -o$START /dev/loop0 /mass_storage &&
mount -t vfat /dev/loop0 /mnt/
if [ $? -ne 0 ]; then
echo "$THIS: cannot mount shared storage file" | tee /dev/kmsg
exit 10
fi
echo "$THIS: shared storage mounted" | tee /dev/kmsg
;;
umount)
losetup -a | egrep -q /mass_storage
if [ $? -ne 0 ]; then
echo "$THIS: no mounted shared storage file" | tee /dev/kmsg
exit 11
fi
echo "unmounting shared storage"
umount /mnt &
losetup -d /dev/loop0
if [ $? -ne 0 ]; then
echo "$THIS: cannot unmount shared storage" | tee /dev/kmsg
exit 12
fi
echo "$THIS: shared storage unmounted" | tee //dev/kmsg
;;
*)
echo "Usage ${0} {start|stop|mount|umount}"
exit 13
;;
esac

View File

@ -49,6 +49,7 @@ BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_FUNKEY_PATH)/board/funkey/busybox.con
# E2fsprog package for e2fsck and resize2fs
BR2_PACKAGE_E2FSPROGS=y
# BR2_PACKAGE_E2FSPROGS_FSCK is not set
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
# SDL package for Retro games