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

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

[复制链接]
STMCU小助手 发布时间:2022-3-4 20:00
前言
5 G- @. u& Z- G9 {# f% f在一文中,我们获悉了如何借助 STM32CubeProgrammer,轻松将STM32MP1 开发板跑起来。在 STM32MP1 开发板跑起来之后,我们相当于有了一台微型嵌入式 PC,可以支持多种交互方式,例如接入鼠标、键盘、串口终端、以太网、支持 HDMI 的投影仪以及电视机等等。但是,有个问题,对于开发人员,有没有高效、简洁的方法来在 Windows 和 STM32MP1 之间建立 TCP/IP 连接?例如,如果我们已经在 Windows 上编译出了 Cortex-M4 固件,或者自己编写了一些 python 脚本,那么我们如何方便的将这些文件复制到 STM32MP1 上进行调试呢?使用 U 盘,肯定没有问题,但需要 U 盘拔来拔去;使用以太网接口,也没有问题。现在我们介绍一种基于 USB 物理线缆的以太网连接。
! L9 ~$ }3 {, s, y2 M. u# C0 M0 u2 u只需要一根 USB 线,复用之前的 DFU 固件下载接口,我们将 Windows 主机与 STM32MP1 连接起来构成TCP/IP 网络。本文介绍了基于 STM32MP1 的便捷网络配置,能够提高开发 STM32MP1 的工作效率。无论你是否拥有 Linux 环境,也无论你是否拥有 Linux 开发经验,本文都适合你阅读。
* s7 g$ j4 V* A- k8 C& n
8 O8 H* y/ l5 t: @/ G( VSTM32MP157C-DK2 开发板环境简介
( x9 L5 U, z6 Q  c0 i2 A本文认为读者已经拥有 STM32MP157C-DK2 开发板。如果你手中得到的是其他类型的 STM32MP1 官方开发板,例如 STM32MP157C-EV1,USB Ethernet gadget 操作并没有什么不同。7 H- r) U- p# y+ W3 z1 a/ a' C
ethernet gadget 的 USB 接口就是在 DFU 模式用来下载固件的 USB 接口(如下图右侧)。: p& c7 c  r6 J- N. }3 r7 i
0 \, v4 u; C, d
$KKTWZV_E(L3T4TDX~B690O.png
/ d$ m8 |, \2 W9 n) c3 d( Y1 R3 [% F
+ w3 o  x6 D* q: b本文同时认为你已经按照所介绍的方法,正常烧录了 STM32MP1 Starter 开发包,并启动了开发板如下:7 ^; U# f$ x2 x+ j$ L: ]

: i6 T7 s) D' i: w AS2GFK5I@HL5QPDZ8HLJEY4.png ' ~* K$ q) L4 S& t3 d
0 Z: G9 t2 t; u, D6 J- N  K
USB ethernet gadget 在 STM32MP1 上的配置: t" p( x3 h2 U5 V+ A" v8 l
Windows 串口终端的配置
- _4 n  H3 ~' q- h9 \% x/ _
如果你使用 Teraterm,选择 new connection,端口会自动显示。直接选择就可以了,如下图示。- F9 X. B8 g- X/ K6 a7 c+ Q, r$ F; g
: _  B* |. R: {, M
9BT4_6AT8CM1JHQXNSZ`N$Q.png & f" N9 |! D% r) D3 x6 n9 K' M

5 Q1 ?, l# C  Z2 G在 setup->Serial port…中选择波特率设置如下:6 Q) ?) b/ k1 ^7 a+ z  y" r
5 y) W9 a4 _& `0 R9 F4 d
J[2I@BGU0@JS5}BX9@{VL.png 7 D4 ^) J9 x7 H0 p# [; W8 Q. X1 E

5 |3 h6 `& j. O, Y  Z显示 ethernet gadget 的配置# O$ b3 Z6 O# b& f
在串口终端敲入 ifconfig 命令,我们可以看到开发板所有的网络接口,其中 eth0 是以太网口,usb0 就是我们这里所关注的USB ethernet gadget。我们可以看到 STM32MP1 Starter 开发包已经自动将 usb0 当成以太网卡使用,同时也将 IP 固定为192.168.7.2。我们对 STM32MP1 并不需要什么额外的配置,感觉相当方便。$ L0 Y) g8 f# n" A

) y3 b% e4 W6 ` 8[Z7O@1SF_@[I1[4KECY@7V.png
/ q; r8 n4 G4 V8 o. S
7 \: y$ H2 n& q3 b0 J7 U0 Q. h( E/ j  H& {( W
Windows 上配置网络参数并测试 TCP/IP 连接6 J+ X' n1 d- R& e$ [. ~
将开发板连接到 Windows(我们这里使用的是 Win10),我们可以在【控制面板】【网络和因特网】【网络连接】界面下看到:多了一个 Remote NDIS 网络接口,如下所示:
2 M( T+ c8 q( D# k) v* R3 W* \2 [" }9 i2 q7 z2 e, ^/ G
8ZKF2I2EHU_9E8B3I{UUFC9.png 5 H$ T3 s% T. k

5 P1 Y9 |* Y' k+ f8 w. z我们选中 Remote NDIS 网卡,右键选择属性 Properties,配置网络地址为 192.168.7.90(或者其它地址,注意不要和192.168.7.2 重复)- ?1 D% H5 ^$ a
$ Q- O) r; ~6 J% }- A. A9 b
5XL94_2N61$TO$BQZ_(9SMV.png - h" W/ n3 O4 f. ]% e
8 Y( j# q3 b* ?5 h& O
现在就可以打开 Windows 命令行,执行 ping 命令可以看到 Windows 和 STM32MP1 已经连通。9 N( y: R- E, T' c, b4 A
* o) u9 C" D2 x* T! s6 o! {
%QLVI`D%V]G1YAO8LF4Z_M8.png 7 |+ b9 S. d: x! X. C. _7 e

6 M9 x, B7 B8 g9 NTCP/IP 连接应用
7 B3 A" u! C1 E* b8 T有了 TCP/IP 连接,我们就可以做很多应用。例如,我们可以使用它来复制文件或者登陆到设备上去;我们需要用到 scp 和ssh 命令。
8 T/ r0 U) n8 q7 h
' _% m+ w! A1 Q) p% \, @) W1 R支持 scp 和 ssh 命令的 Windows 软件7 ]- ]% @( s1 F' a
有多个软件提供 scp 和 ssh 命令。一个最简单的选择是 Git for windows 提供的命令行环境 Git-bash。Git for windows 可以从下载安装。安装完成后,点击 git-bash 图标,就进入了命令行环境。你也可以选择 WindowsSubsystem Linux(WSL),安装也非常简单。
9 b/ {; @7 i% B, U2 k( `4 S
! c' O3 {/ r( ~/ i0 @7 [在 STM32MP1 与 Windows 之间复制文件2 C. B# @+ w6 e) J; f9 I  z/ A2 [
 假设我们希望将 c:\mcu\my.py 复制到 STM32MP1 上/home/root 目录,则使用 scp 命令如下:
+ k6 H; Y! N: I3 R. d
  1. scp /c/MCU/my.py <a href="mailto:root@192.168.7.2">root@192.168.7.2</a>:/home/root
复制代码
4 g0 J1 N, \$ H4 }
效果如下:. W7 g9 Q4 G4 z, w
. c% B7 Q3 ?$ N
2TBVFTZMEO`Y3)S)%D{Z76R.png ( b' p3 h9 y7 _  z0 A. B* d& f, U

( V3 g: e0 @1 X9 x- O第一次会提示是否接受对方主机的公钥,当然选 yes。
- P: n, A* q  v# w
% S3 @6 m' ^+ Z* e EJDA~J@98DZC~7JPP@BV9@V.png ( D  C3 b! m6 O0 ?3 d
+ a3 c1 {8 P  r+ d6 i$ h
 假设我们希望将 STM32MP1 上的 /home/root/my.py 复制到 c:\mcu 目录,则使用 scp 命令如下:
* ^" X  y3 o2 [+ d
  1. scp <a href="mailto:root@192.168.7.2">root@192.168.7.2</a>:/home/root/my.py /c/mcu/
复制代码

" a* l( Y2 s8 }' r8 i) Q3 i* x效果如下:
  ^( _) e8 G) Z8 {9 v8 A  E* _
" z# q- c: G" V& V7 b* L ){RRA3G~G]@Y`RO_MZ24P.png
! O& [8 F2 l! Q) ]" ^5 S6 z" C/ [7 l- H- `- z
从 Windows 上 ssh 连接 STM32MP1
& O' z- m1 w" L# p! [使用 ssh 连接开发板命令如下:
! @9 e; T0 m! z* Y6 ]. \' [5 \
  1. ssh <a href="mailto:root@192.168.7.2">root@192.168.7.2</a>
复制代码

1 c9 [3 v( Y" Q: D& I第一次会提示是否接受对方主机的公钥,当然选 yes。
  ]+ |6 f% W. b2 h
1 O( R- B- s) d. ] ){S}P@%3P0QEL`VE{GC8K`7.png
9 R. P8 K1 J* a' L8 |& ~& H9 ?- j/ S' k; i. |1 R0 z! f$ B3 W
连接成功后,我们可以不再需要 ST-Link 连接的串口终端,而直接使用 ssh 的网络终端输入命令。 例如,我们可以查看刚才复制的文件,效果如下:
& U, l9 }' q# E/ E, q
9 U1 j3 n- o% S; L( z DRA{)}~T7PQ)O7(1[G@AAX7.png
0 N, U5 F* ]. I; a, i% W6 P8 [. `# F$ e4 O! c3 `$ S; M
注意
3 H- V6 ^' ?9 s5 s/ b在使用 ssh 命令时有时候它会提示/ @' u& ~2 v9 ~" B/ B
  1. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3 [4 O% |8 ]/ P9 x0 r9 a, u
  2. @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @$ F  V- i8 }2 X4 w
  3. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
复制代码

7 f! a( _* k% J0 \# @2 Q/ F这个时候你可以使用命令 vim,在命令行界面里打开~/.ssh/known_hosts 删除改 IP 地址所对应的行就可以了。也可以用其他编辑器访问 C:\Users\xxx(你的用户名)\.ssh\known_hosts 删除所对应的行。' c% ]$ ]) B+ L0 c0 E' \
; j) r1 W% z) \* X# u  Z
' Z, T+ Y" a7 I
总结
! j0 E+ S7 E* H; a0 w; uTCP/IP 连接对开发过程很重要,它的作用不限于复制文件。本文使用开发人员熟悉的 Windows 系统,展示了使用STM32MP1 USB ethernet gadget 在 Windows 和 STM32MP1 建立 TCP/IP 连接的方案。我们可以看到 USB ethernet gadget配置简单,使用起来节省开发时间,值得我们在 STM32MP1 的开发中采用。
9 l# S. @. K' ?1 j. q采用 Linux PC 作为开发环境的读者,同样可以使用 STM32MP1 USB ethernet gadget 功能。你需要使用 ifconfig 命令配置
- W; {, F* F; V, R# y  ELinux PC 识别到的 USB 网卡,然后就可以使用 scp 等命令进行文件复制操作。2 ?' G/ f1 M0 F7 H; A6 c6 v) s
* u4 x# X9 j# N
7 E& Z, ^) I8 \
赞 收藏 评论0 发布时间:2022-3-4 20:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版