T536主板的USB功能/ADB/OTG功能使用-盈鹏飞嵌入式

CoM-T536产品特性:

  • 采用Allwinner公司Cortex-A55四核T536处理器,最高速度为1.6GHZ;
  • 支持2TOPS NPU,仅特定型号支持;
  • 支持4K/25fps H.264视频编码,支持4K/15fps MJPEG编码;
  • 支持1-4G Bytes LPDDR4 SDRAM;
  • 支持EMMC 4G-64G大容量电子盘,可启动;或支持SPI NAND启动;
  • 支持双通道LVDS,分辨率最高1920x1080@60fps;支持MIPI DSI显示, 分辨率最高1920x1020@60fps;
  • 支持PCIE2.1;支持最多17路UART;支持四路CANFD;支持双路千兆以太网;
  • 稳定的操作系统的支持,可预装LINUX 5.10/Ubuntu 20.04
  • 邮票孔198POS设计, 尺寸为:53.5*45MM

CoM-T536功能图:

image

STK-T536评估板功能图:

image

3.5、USB测试

3.5.1、USB 2.0 Host接口测试

本节通过相关命令测试USB Host接口。测试USB Host接口最直接的办法是接入U盘后可以识别U盘并进行读写。在没有测试前,我们简单介绍下STK-T536评估板上各个USB Host接口性能和分布情况。
以下3个USB Host接口(CN18、CN19)都是通过CH334 HUB芯片扩展出来,通信速度是High Speed(480Mbps)。其中CN18是双层的USB Host;CN19采用的是接口PH2.0_1X4接口引出,需要通过转接线引出USB Host。
image

image

1)查看USB设备信息
将U盘(测试使用的是Sandisk品牌的U盘)连接到评估板的USB Host接口(例如:CN22),内核提示信息(或者热插拔USB盘时的信息)如下:

点击查看代码
root@T536-embfly:/etc/init.d$ 
[ 2245.183496] usb 1-1.3: new high-speed USB device number 3 using sunxi-ehci
[ 2245.304650] usb 1-1.3: New USB device found, idVendor=0781, idProduct=5581, bcdDevice= 1.00
[ 2245.314060] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2245.322289] usb 1-1.3: Product: Ultra
[ 2245.326411] usb 1-1.3: Manufacturer: SanDisk
[ 2245.331220] usb 1-1.3: SerialNumber: 4C530000051021111080
[ 2245.338336] usb-storage 1-1.3:1.0: USB Mass Storage device detected
[ 2245.346044] scsi host0: usb-storage 1-1.3:1.0
[ 2246.384618] scsi 0:0:0:0: Direct-Access     SanDisk  Ultra            1.00 PQ: 0 ANSI: 6
[ 2246.395493] sd 0:0:0:0: [sda] 30629376 512-byte logical blocks: (15.7 GB/14.6 GiB)
[ 2246.405303] sd 0:0:0:0: [sda] Write Protect is off
[ 2246.410670] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
[ 2246.417290] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 2246.446119]  sda: sda1 sda2
[ 2246.453422] sd 0:0:0:0: [sda] Attached SCSI removable disk
[ 2247.016687] FAT-fs (sda2): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

从上述信息可以看到U盘是一个高速设备“new high-speed USB device”,另外,可以看到该U盘有两个分区,分区的节点分别为sda1/sda2。最后还可以看到U盘的品牌信息“SanDisk”。本次测试插入的一个U盘,插入一个U盘,那么设备节点一般是sda1,如果多插入一个U盘,那么设备节点一般会是sdb1,依次类推。
如果要访问U盘,首先要将U盘挂载到某一个目录下,评估板已经实现了自动挂载,可以先通过df指令查看挂载的目录,然后在进行读写测试。

点击查看代码
root@T536-embfly:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 1.9G    731.6M      1.2G  37% /
tmpfs                     1.9G         0      1.9G   0% /dev/shm
tmpfs                     1.9G    224.0K      1.9G   0% /tmp
tmpfs                     1.9G    264.0K      1.9G   0% /run
devtmpfs                  1.9G         0      1.9G   0% /dev
/dev/mmcblk1p1           29.7G      2.1G     27.6G   7% /media/mmcblk1p1
/dev/mmcblk0p1          127.7M      6.8M    120.9M   5% /logo
/dev/mmcblk0p5           12.1G     24.0K     11.5G   0% /userdata
/dev/sda2               747.5M      6.5M    741.0M   1% /media/sda2
cgroup                    1.9G         0      1.9G   0% /sys/fs/cgroup
/dev/root                 1.9G    731.6M      1.2G  37% /var/lib/docker
root@T536-embfly:~#

2)浏览U盘文件
从df指令获得挂载信息来看,sda2挂载的目录是/media/sda2,浏览U盘文件指令如下:
root@T536-embfly:~# ls /media/sda2
3)手动挂载U盘
如果通过df指令未发现U盘自动挂载,可以通过指令手动,以下指令是以挂载sda2为例,挂载到目录/mnt
root@T536-embfly:~#mount /dev/sda2 /mnt/
4)写文件

点击查看代码
root@T536-embfly:~# cd /media/sda2
root@T536-embfly:~# touch test.txt
root@T536-embfly:~# echo ”helloworld!!!” > test.txt
root@T536-embfly:~# cat test.txt
helloworld!!!

写完文件后需要执行sync命令,确保数据完全写入U盘后,才可以卸载U盘设备。
5)卸载操作
评估板已实现自动卸载,如要手工卸载U盘,首先要退出挂载目录才能卸载,卸载指令如下:
[root@T536-embfly:~#umount /media/sda2

3.5.2、USB OTG接口使用(U盘测试)

USB OTG接口是一种即可以作为USB Host,也可以作为USB Device的一种接口。在没有介绍前,我们简单介绍下评估板上USB OTG接口的位置和性能。
STK-T536评估板的USB OTG接口设计比较特殊,它采用TYPE-C接口样式(见下图CN9)。该接口的通信速度是Highspeed(480Mbps)。
image
本小节把该接口作为USB Host进行测试。直接插入Type-c接口的U盘到该接口,该接口自动设置为USB Host,本次测试使用的是Sandisk公司的128GB的U盘进行测试,终端串口的信息如下:

点击查看代码
root@T536-embfly:~# [ 1375.891645] sunxi:sunxi_usbc:[INFO]: insmod_host_driver
[ 1375.891645]
[ 1375.899193] sunxi:ehci_sunxi:[INFO]: [ehci0-controller]: sunxi_usb_enable_ehci
[ 1375.907312] sunxi:ehci_sunxi:[INFO]: [sunxi-ehci0]: probe, pdev->name: 4101000.ehci0-controller, sunxi_ehci: 0xffffffc009722400, 0x:ffffffc009a05000, irq_no:87
[ 1375.923937] sunxi-ehci 4101000.ehci0-controller: supply hci not found, using dummy regulator
[ 1375.933693] sunxi-ehci 4101000.ehci0-controller: supply vbusin not found, using dummy regulator
[ 1375.944765] sunxi-ehci 4101000.ehci0-controller: EHCI Host Controller
[ 1375.952075] sunxi-ehci 4101000.ehci0-controller: new USB bus registered, assigned bus number 3
[ 1375.961962] sunxi-ehci 4101000.ehci0-controller: irq 135, io mem 0x04101000
[ 1375.983681] sunxi-ehci 4101000.ehci0-controller: USB 2.0 started, EHCI 1.00
[ 1375.991721] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.15
[ 1376.000991] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1376.009086] usb usb3: Product: EHCI Host Controller
[ 1376.014555] usb usb3: Manufacturer: Linux 5.15.147 ehci_hcd
[ 1376.020802] usb usb3: SerialNumber: sunxi-ehci
[ 1376.026471] hub 3-0:1.0: USB hub found
[ 1376.030735] hub 3-0:1.0: 1 port detected
[ 1376.036796] sunxi:ohci_sunxi:[INFO]: [ohci0-controller]: sunxi_usb_enable_ohci
[ 1376.044904] sunxi:ohci_sunxi:[INFO]: [sunxi-ohci0]: probe, pdev->name: 4101400.ohci0-controller, sunxi_ohci: 0xffffffc009723048
[ 1376.058078] sunxi-ohci 4101400.ohci0-controller: supply hci not found, using dummy regulator
[ 1376.067771] sunxi-ohci 4101400.ohci0-controller: supply vbusin not found, using dummy regulator
[ 1376.077668] sunxi-ohci 4101400.ohci0-controller: OHCI Host Controller
[ 1376.084916] sunxi-ohci 4101400.ohci0-controller: new USB bus registered, assigned bus number 4
[ 1376.094638] debugfs: Directory 'sunxi-ohci' with parent 'ohci' already present!
[ 1376.102913] sunxi-ohci 4101400.ohci0-controller: irq 136, io mem 0x04101400
[ 1376.171888] usb usb4: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 5.15
[ 1376.181166] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1376.189266] usb usb4: Product: OHCI Host Controller
[ 1376.194731] usb usb4: Manufacturer: Linux 5.10.198 ohci_hcd
[ 1376.200975] usb usb4: SerialNumber: sunxi-ohci
[ 1376.206640] hub 4-0:1.0: USB hub found
[ 1376.210901] hub 4-0:1.0: 1 port detected
[ 1376.359652] usb 3-1: new high-speed USB device number 2 using sunxi-ehci
[ 1376.525947] usb 3-1: New USB device found, idVendor=0781, idProduct=55b1, bcdDevice= 1.10
[ 1376.535163] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1376.543202] usb 3-1: Product: SanDisk 3.2 Gen1
[ 1376.548202] usb 3-1: Manufacturer: SanDisk
[ 1376.552813] usb 3-1: SerialNumber: A2003AA32C087435
[ 1376.559285] usb-storage 3-1:1.0: USB Mass Storage device detected
[ 1376.566990] scsi host1: usb-storage 3-1:1.0
[ 1377.584773] scsi 1:0:0:0: Direct-Access     SanDisk  SanDisk 3.2 Gen1 DL17 PQ: 0 ANSI: 6
[ 1377.595476] sd 1:0:0:0: [sdb] 244457472 512-byte logical blocks: (125 GB/117 GiB)
[ 1377.604742] sd 1:0:0:0: [sdb] Write Protect is off
[ 1377.610146] sd 1:0:0:0: [sdb] Mode Sense: 45 00 00 00
[ 1377.616742] sd 1:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
root@T536-embfly:~# [ 1379.509022]  sdb: sdb1
[ 1379.515097] sd 1:0:0:0: [sdb] Attached SCSI removable disk
从信息中看到,一个U盘插在该接口上,U盘的品牌是“SanDisk 3.2 Gen1”,容量是117GiB,识别出U盘后,其余挂载等测试过程可以按照3.5.1章节进行验证。

3.5.3、USB OTG接口使用(使用ADB)

USB OTG接口可以作为一个桥梁让计算机与评估板通过ADB工具进行交互。
开发板Linux系统启动后将启动ADB服务,USB OTG接口默认设置为USB Device,可通过ps指令判断是否启动ADB服务:

Target# ps

点击查看代码
root@T536-embfly:/# ps
PID   USER     COMMAND
    1 root     init
2 root     [kthreadd]
……
425 root     adbd
  436 mosquitt /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
  445 root     /usr/bin/pulseaudio --daemon --exit-idle-time=-1 -v
  448 root     /usr/libexec/pulse/gsettings-helper
  454 root     [irq/124-usb_id]
  456 root     sshd: /usr/sbin/sshd [listener] 0 of 10-100 startups
  461 root     /usr/sbin/telnetd -F
  465 root     /usr/bin/dockerd
  472 root     rpc.statd
  495 root     /usr/sbin/phc2sys -a -r -S 1.0
  500 root     /usr/sbin/vsftpd
  502 root     lv_examples 0
  508 root     /usr/sbin/cupsd -C /etc/cups/cupsd.conf -s /etc/cups/cups-files
  520 root     [kworker/1:3-mm_]
  530 root     containerd --config /var/run/docker/containerd/containerd.toml --log-level info
  586 root     /sbin/swupdate-progress -w
  589 root     -/bin/bash
  821 root     [mmc_complete]
 1102 root     [kworker/3:0-eve]

从以上信息可以看到adbd服务已经运行,此时可以通过计算机上的ADB工具与主板进行交互,例如把编译好程序上传到开发板,方便应用程序的黑盒调试。
在软件资料目录中“03-Tools/PlatformTools”目录下找到 PlatformTools.zip 压缩包,解压后进入该目录(如下演示是把platform-tools放到D盘)。进入cmd指令行,输入adb devices指令,查看设备是否正确连接:

image

List of devices attached表示当前连接的设备。然后在通过如下指令“adb shell”进入主板shell:
image

出现”daemon started successfully”,表示工作正常。同时输入ls指令可以看到主板根文件系统中的相关文件。
通过adb上传和下载文件的相关指令如下:

adb pull <评估板路径> <本机路径> 从手机中拉取信息到本地电脑上
adb push <本机路径> <评估板路径> 从本地电脑推送信息到手机上

下图中是演示上传wfxy.wav文件到开发板,该文件d:/platform-tools目录下,指令是:adb push wfxy.wav /,该指令是把wfxy.wav文件上传到开发板的/(根)目录。

image

posted @ 2026-04-17 15:33  embfly168  阅读(34)  评论(0)    收藏  举报