pyaudio usb playback_使用USB虚拟网线(USB Ethernet gadget)直连STM32MP1和Windows PC

在之前发布的<<零基础快速上手STM32MP1>>一文中,我们获悉了如何借助STM32CubeProgrammer,轻松将STM32MP1开发板跑起来。在STM32MP1开发板跑起来之后,我们相当于有了一台微型嵌入式PC,可以支持多种交互方式,例如接入鼠标、键盘、串口终端、以太网、支持HDMI的投影仪以及电视机等等。

但是,有个问题,对于开发人员,有没有高效、简洁的方法来在Windows和STM32MP1之间建立TCP/IP连接?例如,如果我们已经在Windows上编译出了Cortex-M4固件,或者自己编写了一些python脚本,那么我们如何方便的将这些文件复制到STM32MP1上进行调试呢?使用U盘,肯定没有问题,但需要U盘拔来拔去;使用以太网接口,也没有问题。现在我们介绍一种基于USB物理线缆的以太网连接。

只需要一根USB线,复用之前的DFU固件下载接口,我们将Windows主机与STM32MP1连接起来构成TCP/IP网络。本文介绍了基于STM32MP1的便捷网络配置,能够提高开发STM32MP1的工作效率。无论你是否拥有Linux环境,也无论你是否拥有Linux开发经验,本文都适合你阅读。

STM32MP157C-DK2

开发板环境简介

本文案例使用STM32MP157C-DK2开发板。如果你手中的是其他类型的STM32MP1官方开发板,例如STM32MP157C-EV1,USB Ethernet gadget操作并没有什么不同。

ethernet gadget的USB接口就是在DFU模式用来下载固件的USB接口(如下图右侧)。

2272f1d137b802a5da5e4db754400f70.png

本文同时认为你已经按照<<零基础快速上手STM32MP1>>(点击蓝字可查看相应文章)所介绍的方法,正常烧录了STM32MP1 Starter 开发包,并启动了开发板如下:

23c0d00f844c2ecf8bc83645712fdb36.png

USB ethernet gadget在STM32MP1上的配置

Windows串口终端的配置

如果你使用Teraterm,选择new connection,端口会自动显示。直接选择就可以了,如下图示。

01b0c6a81870ce0ece913f4968e342e3.png

在setup->Serial port…中选择波特率设置如下:

0337dfdc56da2f6fbdc80bfdf83e061d.png

显示ethernet gadget的配置

在串口终端敲入ifconfig命令,我们可以看到开发板所有的网络接口,其中eth0是以太网口,usb0就是我们这里所关注的USB ethernet gadget。我们可以看到STM32MP1 Starter开发包已经自动将usb0当成以太网卡使用,同时也将IP固定为192.168.7.2。我们对STM32MP1并不需要什么额外的配置,感觉相当方便。

f656b337faad08b6dfbfd7c532ca61ce.png

Windows上配置网络参数并测试TCP/IP连接

将开发板连接到Windows(我们这里使用的是Win10),我们可以在【控制面板】→【网络和因特网】→【网络连接】界面下看到:多了一个Remote NDIS网络接口,如下所示:

6c775b83128bf7c314b823af0364802a.png

我们选中Remote NDIS网卡,右键选择属性Properties,配置网络地址为192.168.7.90(或者其它地址,注意不要和192.168.7.2重复)

13ebe590d676474bcd335a44dc04dcfc.png

现在就可以打开Windows命令行,执行ping命令可以看到Windows和STM32MP1已经连通。

f96070dfe4356d9c19730d245eeafc40.png

TCP/IP连接应用

有了TCP/IP连接,我们就可以做很多应用。例如,我们可以使用它来复制文件或者登陆到设备上去;我们需要用到scp和ssh命令。

支持scp和ssh命令的Windows软件

有多个软件提供scp和ssh命令。一个最简单的选择是Git for windows提供的命令行环境Git-bash。Git for windows可以从https://gitforwindows.org/下载安装。安装完成后,点击git-bash图标,就进入了命令行环境。你也可以选择Windows Subsystem Linux(WSL),安装也非常简单。

在STM32MP1与Windows之间复制文件

  • 假设我们希望将c:\mcu\my.py复制到STM32MP1上/home/root目录,则使用scp命令如下:

f0bdc3a1ec7b512a1e39e231ba0f3f1c.png

效果如下:

6fa05eb474ef4f46db4991f68a04baa4.png

第一次会提示是否接受对方主机的公钥,当然选yes。

b834b0355a60c497e21e5ad2cfd8f101.png

  • 假设我们希望将STM32MP1上的 /home/root/my.py 复制到c:\mcu目录,则使用scp命令如下:

ad0de0c2f3c0fe621bfa9e5533ce701d.png

效果如下:

b7ab39d0e385f5a62a8f75eb006a345b.png

从Windows上ssh连接STM32MP1

使用ssh连接开发板命令如下:

d9cc2232f57b8e6c94c5f5592381f4f0.png

第一次会提示是否接受对方主机的公钥,当然选yes。

1efd3bc5fc50836a203f119c450860c4.png

连接成功后,我们可以不再需要ST-Link连接的串口终端,而直接使用ssh的网络终端输入命令。 例如,我们可以查看刚才复制的文件,效果如下:

ddd89d9e649858fdb09f1798020aa6a4.png

注意

在使用ssh命令时有时候它会提示

cee74609f7c0b2d86644f42ff596a78c.png

这个时候你可以使用命令vim,在命令行界面里打开~/.ssh/known_hosts删除改IP地址所对应的行就可以了。

也可以用其他编辑器访问C:\Users\xxx(你的用户名)\.ssh\known_hosts删除所对应的行。

6b772363c168874d6f812c50bf6a6d60.png

总结

TCP/IP连接对开发过程很重要,它的作用不限于复制文件。本文使用开发人员熟悉的Windows系统,展示了使用STM32MP1 USB ethernet gadget在Windows和STM32MP1建立TCP/IP连接的方案。我们可以看到USB ethernet gadget配置简单,使用起来节省开发时间,值得我们在STM32MP1的开发中采用。

采用Linux PC作为开发环境的读者,同样可以使用STM32MP1 USB ethernet gadget功能。你需要使用ifconfig命令配置Linux PC识别到的USB网卡,然后就可以使用scp等命令进行文件复制操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值