USB OTG功能
PanGu开发板上提供了一个Micro USB OTG接口,默认为Host模式。
Host模式
直接使用Micro USB转USB Type A转换线缆,连接U盘至开发板即可,开发板会自动识别USB设备。U盘的分区格式支持FAT32, EXT4。以下例子中,插入了一个USB读卡器,读卡器上的SD有5个分区。
root@stm32mp1:~# [ 249.888684] usb 2-1: new high-speed USB device number 2 using dwc2
[ 250.145373] usb-storage 2-1:1.0: USB Mass Storage device detected
[ 250.151823] scsi host0: usb-storage 2-1:1.0
[ 250.339823] usbcore: registered new interface driver uas
[ 251.490554] scsi 0:0:0:0: Direct-Access SD Card Reader 1.00 PQ: 0 ANSI: 6
[ 251.503690] sd 0:0:0:0: [sda] 15122432 512-byte logical blocks: (7.74 GB/7.21 GiB)
[ 251.512018] sd 0:0:0:0: [sda] Write Protect is off
[ 251.516889] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 251.528144] sd 0:0:0:0: [sda] No Caching mode page found
[ 251.538272] sd 0:0:0:0: [sda] Assuming drive cache: write through
[ 251.565430] sda: sda1 sda2 sda3 sda4 sda5
[ 251.573607] sd 0:0:0:0: [sda] Attached SCSI removable disk
root@stm32mp1:~# ls /dev/sda
sda sda1 sda2 sda3 sda4 sda5
root@stm32mp1:~# ls /dev/sda*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5
Device模式
PanGu开发板的Micro USB接口也可以作为从设备,连接至其它USB主设备的端口。默认是作为USB 以太网设备,主要实现的是将开发板的 USB OTG 接口作为从设备模式,模拟成一个网络接口,然后主机通过 USB 连接开发板。
使用Micro USB线连接开发板J5和PC USB Host接口。PanGu开发板上usb0为网络设备,默认IP地址为192.168.7.2。
Micro USB线插入PC USB接口后,PC也会出现一个usb网络设备,一般名称为NDIS,然后为网卡配置IP地址为192.168.7.10,就可以双向Ping来测试。
先检查PC usb是否有识别到新设备,是用lsusb命令可以看到有个新设备已经检测到了,dmesg命令可以看到这个新设备已经被识别为RNDIS设备。
$ lsusb
...
Bus 001 Device 014: ID 1d6b:0104 Linux Foundation Multifunction Composite Gadget
...
$ sudo dmesg | tail
[2940815.737462] usb 1-2: new high-speed USB device number 15 using xhci_hcd
[2940815.878227] usb 1-2: New USB device found, idVendor=1d6b, idProduct=0104
[2940815.878229] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[2940815.878230] usb 1-2: Product: STM32MP1
[2940815.878230] usb 1-2: Manufacturer: STMicroelectronics
[2940815.878231] usb 1-2: SerialNumber: 0
[2940815.884117] rndis_host 1-2:1.0 usb0: register 'rndis_host' at usb-0000:00:14.0-2, RNDIS device, 26:b1:26:7b:cf:a9
这里可以使用ip命令就可以看到有个usb0的设备了。注意,在较新版本的Linux系统上会把usb0设备重命名为"enp"开头的设备,可以在dmesg中看到,实际操作时也以这个设备名称为准。
[4843414.437098] rndis_host 1-7:1.0 enp0s29f7u7: renamed from usb0
PC配置IP地址,这里的usb0可以替换为"enp0s29f7u7"设备名称
$ sudo ifconfig usb0 192.168.7.10
PC上ping开发板
# ifconfig
# ping 192.168.7.2
Device模式的可移动磁盘
先禁用usbotg-config.service服务,重启后再加载g_mass_storage驱动。
# systemctl disable usbotg-config.service
# modprobe g_mass_storage file=/dev/mmcblk1p5 removable=1
作者:SteveChen 创建时间:2024-09-18 11:38
最后编辑:SteveChen 更新时间:2024-09-18 11:38
最后编辑:SteveChen 更新时间:2024-09-18 11:38