你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】使用 USB 虚拟网线(USB Ethernet gadget)直连 STM32MP1 和 Windows PC

[复制链接]
STMCU小助手 发布时间:2022-3-4 20:00
前言
在一文中,我们获悉了如何借助 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 接口(如下图右侧)。

$KKTWZV_E(L3T4TDX~B690O.png

本文同时认为你已经按照所介绍的方法,正常烧录了 STM32MP1 Starter 开发包,并启动了开发板如下:

AS2GFK5I@HL5QPDZ8HLJEY4.png

USB ethernet gadget 在 STM32MP1 上的配置
Windows 串口终端的配置

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

9BT4_6AT8CM1JHQXNSZ`N$Q.png

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

J[2I@BGU0@JS5}BX9@{VL.png

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

8[Z7O@1SF_@[I1[4KECY@7V.png


Windows 上配置网络参数并测试 TCP/IP 连接
将开发板连接到 Windows(我们这里使用的是 Win10),我们可以在【控制面板】【网络和因特网】【网络连接】界面下看到:多了一个 Remote NDIS 网络接口,如下所示:

8ZKF2I2EHU_9E8B3I{UUFC9.png

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

5XL94_2N61$TO$BQZ_(9SMV.png

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

%QLVI`D%V]G1YAO8LF4Z_M8.png

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

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

在 STM32MP1 与 Windows 之间复制文件
 假设我们希望将 c:\mcu\my.py 复制到 STM32MP1 上/home/root 目录,则使用 scp 命令如下:
  1. scp /c/MCU/my.py <a href="mailto:root@192.168.7.2">root@192.168.7.2</a>:/home/root
复制代码

效果如下:

2TBVFTZMEO`Y3)S)%D{Z76R.png

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

EJDA~J@98DZC~7JPP@BV9@V.png

 假设我们希望将 STM32MP1 上的 /home/root/my.py 复制到 c:\mcu 目录,则使用 scp 命令如下:
  1. scp <a href="mailto:root@192.168.7.2">root@192.168.7.2</a>:/home/root/my.py /c/mcu/
复制代码

效果如下:

){RRA3G~G]@Y`RO_MZ24P.png

从 Windows 上 ssh 连接 STM32MP1
使用 ssh 连接开发板命令如下:
  1. ssh <a href="mailto:root@192.168.7.2">root@192.168.7.2</a>
复制代码

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

){S}P@%3P0QEL`VE{GC8K`7.png

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

DRA{)}~T7PQ)O7(1[G@AAX7.png

注意
在使用 ssh 命令时有时候它会提示
  1. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  2. @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
  3. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
复制代码

这个时候你可以使用命令 vim,在命令行界面里打开~/.ssh/known_hosts 删除改 IP 地址所对应的行就可以了。也可以用其他编辑器访问 C:\Users\xxx(你的用户名)\.ssh\known_hosts 删除所对应的行。


总结
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 等命令进行文件复制操作。


收藏 评论0 发布时间:2022-3-4 20:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版