USB测试

设备模式

主机模式(Host Mode)

开发板作为USB主机,负责为连接的从设备供电并控制数据传输。


设备模式(Device/Peripheral Mode)

设备作为从设备(被主机控制),无法连接其他USB设备。


OTG模式(On-The-Go)

设备可动态切换主机模式设备模式,无需固定角色。

相关配置

设备树的修改

按照如下工程路径修改设备树文件:

image-20250714173454991

在该文件里添加如下内容:

USB作为虚拟串口的内核配置

参考:

1.https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842272/Zynq+Linux+USB+Device+Driver

2.https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841624/Zynq-7000+AP+SoC+USB+CDC+Device+Class+Design+Example+Techtip

使用命令:

在弹出的字符界面中使能如下内容:驱动可以编译到内核中,也可以编译成内核模块,在系统启动后再动态加载该模块。建议编译成内核模块。

重新编译

运用命令

将重新编译后的内核,设备树拷贝到SD卡里。上电加载系统,在console或者telnet中手动加载内核模块:

会看到/dev/ttyGS0设备:

image-20250715104809779

如果不想每次上电都手动去加载内核模块,可以将这些命令写入到一个启动脚本中,上电后自动加载该启动脚本。

测试USB

作为host

提前准备好的一个 U盘(必须是fat32格式),通过电脑在这个U盘上几个文档,比如创建两个文档分别命名为a.txt和b.txt。

image-20250715142024337

将开发板上的JP2和JP3用跳线帽短接,上电启动后,将U盘插入OTG对应的type-c接口(需要一个TYPE-C转TYPE-A母头的转换接头),将会在console串口上看到如下提示信息:

image-20250715105713572

接下来输入命令:查看U盘挂载及内存等使用情况。

image-20250715110308923

可以看到挂载点的位置处于”/run/media/sda1",按照上面的图上U盘的位置,输入 cd /run/media/sda1 进入U盘 。

接下来可以输入“ls"查看U盘内容:

image-20250715143127796

可以看到 文件夹下有 a.txt 和 b.txt两个文件。也可以直接对U盘内容进行修改。

OTG模式

我们在内核配置时,使能了USB CDC,所以当通过USB线接入到电脑上时,这个USB会被虚拟成串口。

正常上电并系统启动后,需要先加载前面的虚拟串口对应的内核模块。再用两端都是TYPE-C接口的USB线将开发板与电脑进行连接,可以看到在串口调试助手里面有两个串口,其中COM11是USB OTG接口所虚拟出来的串口,COM12则是zynq linux系统的console串口。

image-20250715113039885

 

虚拟出来的串口在zynq上对应的是/dev/ttyGS0。

9c36b01f-3723-4361-ad8c-843a5e21fa39

在电脑的串口终端上就会显示收到的数据:

c188e68c-74a3-4567-9c0f-ba140de34798

注:在终端中发送与接收串口数据都是以'\n'为终止条件,即发送的数据会追加'\n',接收的数据必须在收到'\n'时回显。

97e8b7b0-39f2-4343-a71e-3851c899638e