WIFI驱动移植实验:WIFI从路由器动态获取IP地址与联网

一. 简介

前面两篇文章,一篇文章实现了WIFI联网前要做的工作,另一篇文章配置了WIFI配置文件,进行了WIFI热点的连接。文章如下:

WIFI驱动移植实验:WIFI 联网前的工作-CSDN博客

WIFI驱动移植实验:连接WIFI热点-CSDN博客

本文在上面两篇文章中工作实现的基础上进行。文学习 WIFI设备从路由器上动态获取ip地址,最后,通过 ping 百度(www.baidu.com)测试WIFI 功能。

二. WIFI驱动移植实验:WIFI从路由器动态获取IP地址与联网

这里在连接成功了 WIFI热点的基础上进行。即在运行了如下命令:

wpa_supplicant -D wext -c /etc/wpa_supplicant.conf -i wlan0 &

串口有打印如下红色框中的连接信息时进行:

1. WIFI设备从路由器动态获取IP地址

设置 wlan0 的 IP 地址,这里使用 udhcpc 命令从路由器申请 IP 地址,输入如下命令:

udhcpc -i wlan0  //从路由器动态获取 IP地址

运行后结果如下:


可以看出,这里路由器已经动态分配到了 ip地址。
输入如下命令查看 wlan0是否已经设置ip地址:

ifconfig wlan0

结果如下:


这里可以看出,无线网卡没有设置ip地址。这里可以看出,从路由器动态获取 ip地址出现了问题。

登录路由器网页查看设备是否动态获取到了一个 ip地址,登录 "tglogin.cn" 网址,一定要确认是否是自己的路由器。这里我的路由器型号为 :

输入管理员密码登录后,查看 "路由设置" -> "DHCP服务器"。可以看到 如下信息:

经过排查,可以确定 匿名主机这个就是我的开发板设备。可以看到分配到了 IP地址,分配到的 IP地址为 192.168.0.102 ,确实与设备串口打印信息显示的 IP地址一样。接下来就是先解决这个问题吧。

三. 解决 udhcpc动态获取 IP地址问题

经过咨询做开发的同学,百度等等,排查到可能就是 udhcpc工具的功能不全。需要一个脚本文件。解决方法如下(来自一个CSDN技术网友):
嵌入式Linux:解决busybox udhcpc获取IP但没有设置系统DNS的问题_busybox dns-CSDN博客

1. 总结

**动态获取ip的方式:**udhcpc 是给路由器服务端发送广播udhcpc包,路由器接收到后,回复可以分配的一个IP地址,然后,udhcpc工具默认会执行一个脚本文件来设置设置设备的ip地址。

2. 具体解决方法

(1) 首先,从 windows系统下重新拷贝一份 busybox-1.29.0 到 ubuntu系统下。解压压缩包文件。解压后进入加压后的 busybox-1.29.0 文件目录下,将 /examples/udhcp/simple.script 文件拷贝到 开发板文件系统 /usr/share/udhcpc/ 目录下。
首先,开发板上电,进入文件系统下,进入 /usr/目录下创建 share/udhcpc/ 目录:

进入 /usr/share目录下创建 udhcpc目录:

最后,(ubuntu系统下)终端进入 busybox-1.29.0文件根目录下,将 /examples/udhcp/simple.script 拷贝到开发板文件系统 /usr/share/udhcpc/ 目录下:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/busybox-1.29.0$ sudo cp ./examples/udhcp/simple.script /home/wangtian/linux/nfs_File/rootfs/usr/share/udhcpc/ -f

(2) 其次,将 开发板上文件系统 /usr/share/udhcpc/目录下的 simple.script 重命名为 default.script:

重新运行 获取 IP地址的命令

重新运行 从路由器 获取 ip地址的命令: "udhcpc -i wlan0":

运行 "ifconfig wlan0" 命令查看无线网卡是否已分配到 IP地址:

可以看出, wlan0已经分配并设置好了 ip地址。

四. 联网测试

可以直接在开发板上使用 wlan0 来 ping 一下百度网站,输入如下命令:

ping -I 192.168.0.102 www.baidu.com

结果如下:

可以看出,WIFI设备已经可以 连接外网,至此,WIFI功能已经调试通过。

相关推荐
vvw&几秒前
Docker Build 命令详解:在 Ubuntu 上构建 Docker 镜像教程
linux·运维·服务器·ubuntu·docker·容器·开源
李白你好6 分钟前
家用无线路由器的 2.4GHz 和 5GHz
运维·网络
嵌入(师)20 分钟前
嵌入式驱动开发详解21(网络驱动开发)
网络·驱动开发
冷曦_sole26 分钟前
linux-21 目录管理(一)mkdir命令,创建空目录
linux·运维·服务器
最后一个bug28 分钟前
STM32MP1linux根文件系统目录作用
linux·c语言·arm开发·单片机·嵌入式硬件
dessler1 小时前
Docker-Dockerfile讲解(二)
linux·运维·docker
卫生纸不够用1 小时前
子Shell及Shell嵌套模式
linux·bash
柒烨带你飞1 小时前
路由器的原理
网络·智能路由器·php
xserver21 小时前
ensp 基于EASY IP的公司出口链路配置
网络·tcp/ip·智能路由器
world=hello1 小时前
关于科研中使用linux服务器的集锦
linux·服务器