怎样 *** 作linux的usb设备

怎样 *** 作linux的usb设备,第1张

Linux不直接支持NTFS文件系统,如果U盘是NTFS文件系统就无法直接挂载使用。
首先用lsblk列出所有块设备
lsblk
sd表示SCSI磁盘,后面跟a,b,c之类的字母表示第几个磁盘,字母之后再跟数字表示这个磁盘的第几个分区。大部分人只有一个硬盘,此时再接一个U盘,这个U盘就是sdb,U盘上的分区就是sdb1。除此以外,还可以根据显示的容量判断U盘设备名是sdb还是sdc。其他情况以此类推。
然后可以在用户目录创建一个usb目录:(也可以根据喜好设置在其他地方,下面的挂载地址跟着改变即可)
mkdir ~/usb1
最后把U盘分区挂载到这个目录即可:(可能会提示输入密码,输入密码后回车即可)
sudo mount /dev/sdb1 ~/usb1
然后就可以通过访问 ~/usb1目录来访问U盘:
cd ~/usb1
ls
最后要拔出U盘以前,要卸载U盘:(卸载时要退出usb1目录,不然无法卸载)(可能会提示输入密码,输入密码后回车即可)
sudo umount /dev/sdb1

用FDISK-l 来找,一般U盘会被LINUX认为SCSI设备,如果有SCSI设备那么U盘一般是最后一个SCSI设备如果没有SCSI设备,一般sda就是U盘。

若第一个插入的u盘一般是sda,但第二个插入的不同牌子的u盘有可能是sdb,而且下次插入时还是如此。

具体步骤:

1查看所有的设备文件

在linux的文件系统中, /dev中存放着所有的设备文件

cd /dev #进入dev文件夹

ls #查看所有的文件

其中名为sda的系类是磁盘设备, sdb系列是U盘设备

2外部设备挂载点

在linux中, 外部设备需要挂载在/mnt文件夹中

cd /mnt#进入/mnt文件夹

ls #列出所有文件, 发现一个也没有

mkdir usb #创建一个名为usb的文件夹, 今后将usb设备挂载在此文件夹上

3使用mount命令挂载设备

先查看/dev文件夹中的U盘设备具体名称(以sdb开头, 我的U盘名称是sdb4, 如果有多个, 请一个一个尝试, 我的由两个(sdb, sdb4))

sudo mount -t vfat /dev/sdb4 /mnt/usb#将外部名为sdb4的U盘设备挂载到/mnt/usb文件夹上

cd /mnt/usb

ls #查看U盘中所有文件

请用后卸载设备 umount /dev/sdb4

方法一:在/etc/initd/rcS中添加mount -t usbfs none /proc/bus/usb
方法二:在终端中输入mount -t usbfs /proc/bus/usb /proc/bus/usb
前提是在编译内核时选中usb device filesystem。
# cat /proc/bus/usb /device
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 1, #Iso= 0
D: Ver= 110 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0001 Rev= 206
S: Manufacturer=Linux 26322-ltls ohci_hcd
S: Product=S3C24XX OHCI
S: SerialNumber=s3c24xx
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int) MxPS= 2 Ivl=255ms
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 4
D: Ver= 110 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 125
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int) MxPS= 1 Ivl=255ms
T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 7 Spd=12 MxCh= 0
D: Ver= 200 Cls=ff(vend) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=160a ProdID=3184 Rev= 205
S: Manufacturer=VIA Networking Technologies, Inc
S: Product=VNT USB-80211 Wireless LAN Adapter
C: #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend) Sub=00 Prot=00 Driver=vntwusb
E: Ad=81(I) Atr=03(Int) MxPS= 32 Ivl=1ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

是不是你读取的通道配错了?譬如你想在EP1上收发数据,却配成了EP2,而事实上EP1的MPS是64,EP2的MPS是512?
把usb_bulk_msg的最后一个参数Timeout值设的大一点试一下,另外提醒下,usb_bulk_msg是阻塞的,也就是说你要读一定长度的数据,只有底层完全读到这些数据或者超时才会返回,如果在超时时间内设备未发送完全部的数据,那么此时返回err值,最简单的办法是加大Timeout值,最标准的做法是用usb_submit_urb异步方式提交URB包,效率比较高,Linux下的USB分层机制作的比较好,你可以看一下drivers/usb/serial下面就是最简单的主机侧串口驱动,里面基本上用的都是异步方式,看你帮定的应用是哪个应用Class对应看usb下面的代码

1、首先Linux 系统使用 /dev 目录下特定的设备文件来标识插入的设备。会发现该目录下的某些文件,包括 /dev/sda 或者 /dev/hda 表示第一个主设备,每个分区使用一个数字来表示,比如 /dev/sda1 或 /dev/hda1 表示主设备的第一个分区等。

2、使用 df 命令来找出插入的 USB 设备名,查看插入你系统里的每一个设备及对应的挂载点,你可以使用下图中的 df 命令检查 Linux 系统磁盘空间使用情况:$ df -h。

3、使用 lsblk 命令查找 USB 设备名。也可以使用下面的 lsblk 命令(列出块设备)来列出插入系统里的所有块设备:$ lsblk。

4、使用 fdisk 工具识别 USB 设备名。fdisk 是一个功能强大的工具,用于查看系统中的所有分区表,包括所有的 USB 设备,使用 root 权限执行如下命令:$ sudo fdisk -l。

5、使用 dmesg 命令来识别出 USB 设备名,运行如下命令来查看内核 *** 作信息,同时也会打印出 USB 设备的信息:$ dmesg。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13373983.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-24
下一篇 2023-07-24

发表评论

登录后才能评论

评论列表(0条)

保存