
前言 在一文中,我们获悉了如何借助 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 接口(如下图右侧)。 ![]() 本文同时认为你已经按照所介绍的方法,正常烧录了 STM32MP1 Starter 开发包,并启动了开发板如下: ![]() USB ethernet gadget 在 STM32MP1 上的配置 Windows 串口终端的配置 如果你使用 Teraterm,选择 new connection,端口会自动显示。直接选择就可以了,如下图示。 ![]() 在 setup->Serial port…中选择波特率设置如下: ![]() 显示 ethernet gadget 的配置 在串口终端敲入 ifconfig 命令,我们可以看到开发板所有的网络接口,其中 eth0 是以太网口,usb0 就是我们这里所关注的USB ethernet gadget。我们可以看到 STM32MP1 Starter 开发包已经自动将 usb0 当成以太网卡使用,同时也将 IP 固定为192.168.7.2。我们对 STM32MP1 并不需要什么额外的配置,感觉相当方便。 ![]() Windows 上配置网络参数并测试 TCP/IP 连接 将开发板连接到 Windows(我们这里使用的是 Win10),我们可以在【控制面板】【网络和因特网】【网络连接】界面下看到:多了一个 Remote NDIS 网络接口,如下所示: ![]() 我们选中 Remote NDIS 网卡,右键选择属性 Properties,配置网络地址为 192.168.7.90(或者其它地址,注意不要和192.168.7.2 重复) ![]() 现在就可以打开 Windows 命令行,执行 ping 命令可以看到 Windows 和 STM32MP1 已经连通。 ![]() 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 命令如下:
效果如下: ![]() 第一次会提示是否接受对方主机的公钥,当然选 yes。 ![]() 假设我们希望将 STM32MP1 上的 /home/root/my.py 复制到 c:\mcu 目录,则使用 scp 命令如下:
效果如下: ![]() 从 Windows 上 ssh 连接 STM32MP1 使用 ssh 连接开发板命令如下:
第一次会提示是否接受对方主机的公钥,当然选 yes。 ![]() 连接成功后,我们可以不再需要 ST-Link 连接的串口终端,而直接使用 ssh 的网络终端输入命令。 例如,我们可以查看刚才复制的文件,效果如下: ![]() 注意 在使用 ssh 命令时有时候它会提示
这个时候你可以使用命令 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 等命令进行文件复制操作。 |
【源码】STLINK-V3MINI 高速USB仿真器,成功改刷【高速CMSIS-DAP】
基于STM32MP1和STM32MP2在嵌入式Linux平台上部署有效的安全保护机制
最全USB HID开发资料,悉心整理一个月,亲自测试
利用STM32MP1和STM32MP2为嵌入式Linux提供有效的安全措施:供当今决策者参考的3条宝贵经验
实战经验 | 选择USBX模块生成USB CDC ACM无PD的项目
STM32 USB HID键盘例程
STM32MP1 WiFi连接
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
刘氓兔的杂谈【001】-片上USB 高速PHY
【STM32MPU 安全启动】 TF-A BL2 TrustedBoot原理学习