前段时间我们介绍了如何在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连接到了外网。
705