• 正文
  • 相关推荐
申请入驻 产业图谱

STM32MP257的USB虚拟网口和Wifi连接操作指南

10/10 10:25
705
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

前段时间我们介绍了如何在Linux系统中使用STM32CubeProgrammer为STM32MP257烧录镜像OpenSTLinux于SD卡中。

为了方便操作,我使用MobaXterm利用串口进行连接使用命令行来操作。

使用触摸屏操作的话默认是weston用户,用MobaXterm默认用户操作权限高一点,weston用户没有什么权限(当然在触摸屏那边的话使用su -也可以切换到管理员用户)

因为开发板有ETH接口,但是我的校园网需要进行认证,也是比较麻烦的,于是检查IP地址的发现:

root@stm32mp2unknownunknown:~# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu?65536?qdisc noqueue state UNKNOWN group default qlen?1000? ??link/loopback?00:00:00:00:00:00?brd?00:00:00:00:00:00? ??inet?127.0.0.1/8?scope host lo? ? ? ?valid_lft?forever preferred_lft forever? ??inet6?::1/128?scope host noprefixroute? ? ? ?valid_lft?forever preferred_lft forever2: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu?1500?qdisc fq_codel state DOWN group default qlen?1000? ??link/ether?50:26:ef:ae:b9:6e brd ff:ff:ff:ff:ff:ff3: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu?1500?qdisc fq_codel state UP group default qlen?1000? ??link/ether a6:e0:c0:29:09:52?brd ff:ff:ff:ff:ff:ff? ??inet?192.168.137.141/24?brd?192.168.137.255?scope global usb0? ? ? ?valid_lft?forever preferred_lft forever

系统总共有三个设备,其中是没有eth设备,有一个wlan和一个usb0的虚拟网口,STM32MP257应该是通过这个虚拟网口进行连接的。

1、网络连接的要素

要建立一条正常的网络连接,需要几个基本要素。

首先,设备必须具备网络接口(如以太网口或 Wi-Fi 模块),这是接入物理网络的基础。其次,系统需要分配一个IP 地址,同时配置子网掩码来划分局域网的范围。若设备需要访问外部网络,还必须指定默认网关,通常由路由器承担转发功能。为了让用户能够通过域名而不是 IP 地址访问网站,还需要配置DNS 服务器完成域名解析。只有当这些要素齐备并正确配置时,设备才能实现从本地到外网的完整通信。

在STM32MP257中usb0作为虚拟网口,我们用它连接到了PC中,但这只是网络连接的第一步。此时虽然有了接口和链路,但整个网络连接还缺少几个关键要素:设备需要获取一个有效的 IP 地址,并且要有子网掩码来判断通信范围;若要访问外部网络,还必须配置默认网关,将数据包转发到真正的出口;同时还需要DNS服务器来完成域名解析。只有当这些配置补齐后usb0才能从单纯的虚拟接口转变为真正可用的网络连接,实现与外部主机乃至互联网的通信。

2、STM32MP2网络连接

root@stm32mp2unknownunknown:/home/weston/code#?ping -c?4?8.8.8.8?ping:?connect:?Network?is unreachable

当我ping一个ip的时候出现了网络无法连接的问题,并且使用apt安装软件的时候也没办法连接网络从而导致错误,因此我们急需解决网络问题。

在 STM32MP257 板子的 usb0 虚拟网口上,通过 DHCP 自动从连接的 PC 获取 IP 地址、子网掩码和默认网关,同时配置 DNS 服务器,确保板子能够正确路由数据并解析域名,从而实现通过 PC 上的网络共享访问外部网络,建立完整的网络连接。

因此我们需要在PC上共享一个可用的网络到STM32MP257.

在网络共享中心中,我们可以启用网络共享,将我的Wifi进行转发到以太网,这样子STM32MP257便可以使用usb虚拟网口连接网络。

但是这个时候还无法连接到网络,我们还需要配置DNS:

Windows 开启ICS后,会在共享出来的接口上给设备分配一个网段,不过由于我们启动的时候STM32MP257的IP地址是:192.168.7.1,因此我们还需要通过DHCP获取Windows分配的地址:

sudo?ip addr flush dev usb0

通过flush指令可以清掉原本usb0分配的地址,随后使用DHCP来获取IP地址:

sudo udhcpc -i?usb0

可以看到新的IP地址被成功的分配了:192.168.137.141,得到新的ip地址之后我们测试一下能不能ping通外网:

可以看到,经过了上述操作,STM32MP257就可以成功的连接到了外部网络,接下来我们测试一下能不能成功的解析DNS:

域名也是可以正确的解析。

接着我们使用apt指令看一下能不能成功:

可以看到apt指令也是能够正常的访问ST那边的软件源库。

2、Wifi连接和使用

可以看到,其实STM32MP257的板子上还有一个wlan0即wifi,但是没有连接状态,因此我们可以使用wifi来进行网络连接。

"使能Wifi"sudo ip?link?set?wlan0 up?"扫描可用的wifi网络"sudo iw dev wlan0 scan | grep SSID

首先要使能wifi功能,之后使用iw看一下有没有可以用的wifi:

wpa_passphrase?"yiyang""12345678"?| sudo?tee?/etc/wpa_supplicant.confsudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf

生成一下我们的wifi连接配置,以便我们连接wifi,之后连接wifi可以看到wifi连接成功,之后我们来获取ip地址:

sudo udhcpc -i?wlan0

看到如上的日志输出就代表着我们正确的获得了ip地址,接下来测试一下能不能ping通网站(依旧拔掉了usb)

可以看到,我们已经使用wifi连接到了外网。

相关推荐