usb接口设备识别和处理

    嵌入式系统,在启动时,特别是有存储设备的,如果需要在脚本里面处理,则参考如下,可以对设备文件系统做识别,blkid 工具,另外对fat32,和ntfs系统,则,可以通过ntfs-3g处理,ntfs-3g可以处理读写数据,解决了ntfs自带的不能写的问题;

#Udisk corresponding to port3
UDISK_CORRESPOND_GL850GL1_PORT3="../devices/platform/hiusb-ehci.0/usb1/1-1/1-1.3"
#Mobile HD corresponding to port1
MOBILEHD_CORRESPOND_GL850GL1_PORT1="../devices/platform/hiusb-ehci.0/usb1/1-1/1-1.1"

#SD card corresponding to port3
SDCARD_CORRESPOND_GL850GL2_PORT3="../devices/platform/hiusb-ehci.0/usb1/1-2/1-2.3"
#eMMC card corresponding to port3
EMMCCARD_CORRESPOND_GL850GL2_PORT1="../devices/platform/hiusb-ehci.0/usb1/1-2/1-2.1"

devpartionname="$1"
devname=`echo $1 | tr -d 0-9`
#echo "devpartionname is $devpartionname, devname is $devname"
syshubportdevname=`ls  /sys/block/$devname -l | cut -d '>' -f 2  | cut -c 2-48`
#echo "syshubportdevname is $syshubportdevname"
RET_CODE=$?

#Udisk eMMC SDcard HDD SSD MobileHD are /dev/sd[a-z] device
if [ -n "$1" ]; then
    if [ -b /dev/$1 ]; then
		DEV_FILE_SYSTEM_TYPE=`/usr/tools/blkid /dev/$1 |  awk -F '=' '{print $NF}' | cut -d '"' -f 2 | tr -d '\n'`
		#distinguish (Udisk eMMC SDcard HDD SSD MobileHD) and SATA
		removeableflag=`cat /sys/block/$devname/removable`
		if [ $removeableflag -eq 1 ]; then
			case $syshubportdevname in
				$UDISK_CORRESPOND_GL850GL1_PORT3)
					#echo "/dev/$1 is a Udisk!!!"
					echo /dev/$1 |  tr  -d  '\n' > $UDISK_STORAGE_INSERTED_FLAG
					if [ ! -d  $UDISK_STORAGE_MOUNT_DIR ]; then
						rm -rf $UDISK_STORAGE_MOUNT_DIR
						mkdir $UDISK_STORAGE_MOUNT_DIR
					fi
					sleep 0.5
					if [ "$devpartionname" == "$devname" ]&&[ -f /dev/$devname1 ]; then
						echo "ignore Udisk mount!"
					else
						echo "Udisk mount $devpartionname..."
						RET_CODE=0
						TYPE="$DEV_FILE_SYSTEM_TYPE"
						if [ "$TYPE" == "ntfs" ]; then
							echo "try to use ntfs-3g to mount..."
							/usr/tools/ntfs-3g /dev/$devpartionname $UDISK_STORAGE_MOUNT_DIR	
							RET_CODE=$?
						elif [ "$TYPE" == "exfat" ]; then
							echo "try to use mount.exfat to mount..."
							/usr/tools/mount.exfat /dev/$devpartionname $UDISK_STORAGE_MOUNT_DIR	
							RET_CODE=$?
						elif [ "$TYPE" == "vfat" ]; then
							echo "try to mount..."
							mount /dev/$devpartionname $UDISK_STORAGE_MOUNT_DIR	
						else
							echo "Udisk type unsupport!"
							mount /dev/$devpartionname $UDISK_STORAGE_MOUNT_DIR	
						fi
						if [ $RET_CODE -ne 0 ]; then
							mount /dev/$devpartionname $UDISK_STORAGE_MOUNT_DIR	
 						fi
					fi
				;;
				$MOBILEHD_CORRESPOND_GL850GL1_PORT1)
					#echo "/dev/$1 is a Mobile HD!!!"
					echo /dev/$1 |  tr  -d  '\n' > $MOBILE_HD_STORAGE_INSERTED_FLAG
					if [ ! -d  $MOBILE_HD_STORAGE_MOUNT_DIR ]; then
						rm -rf $MOBILE_HD_STORAGE_MOUNT_DIR
						mkdir $MOBILE_HD_STORAGE_MOUNT_DIR
					fi
					#mount /dev/$devpartionname $MOBILE_HD_STORAGE_MOUNT_DIR
				;;
				$SDCARD_CORRESPOND_GL850GL2_PORT3)
					#echo "/dev/$1 is a SD card!!!"
					echo /dev/$1 |  tr  -d  '\n' > $SDCARD_STORAGE_INSERTED_FLAG
					if [ ! -d  $SDCARD_STORAGE_MOUNT_DIR ]; then
						rm -rf $SDCARD_STORAGE_MOUNT_DIR
						mkdir $SDCARD_STORAGE_MOUNT_DIR
					fi
					#mount /dev/$devpartionname $SDCARD_STORAGE_MOUNT_DIR
				;;
				$EMMCCARD_CORRESPOND_GL850GL2_PORT1)
					#echo "/dev/$1 is a eMMC card!!!"
					#EMMC special handling#			
					EMMC_BLOCK_DEV=/dev/$devname
					echo "EMMC_BLOCK_DEV=$EMMC_BLOCK_DEV"	
								
				;;
				*)
					echo "Unknown system HUB port device name: $syshubportdevname"
				;;
			esac
		else
			touch $HDD_STORAGE_INSERTED_FLAG
			#echo "/dev/$1 is a HDD!!!"
			echo /dev/$1 |  tr  -d  '\n' > $HDD_STORAGE_INSERTED_FLAG
			if [ ! -d  $HDD_STORAGE_MOUNT_DIR ]; then
				rm -rf $HDD_STORAGE_MOUNT_DIR
				mkdir $HDD_STORAGE_MOUNT_DIR
			fi
			#mount /dev/$devpartionname $HDD_STORAGE_MOUNT_DIR
		fi
	fi
fi

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硅谷魔术师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值