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功能已经调试通过。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/291403.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业镜头常用参数之实效F(Fno.)和像圈

Fno. 工业镜头中常用到的参数F,有时候用F/#,Fno.来表示,指的是镜头通光能力的参数。它可用镜头焦距及入瞳直径来表示,也可通过镜头数值孔径(NA)和光学放大倍率(β)来计算。有效Fno.…

【御控物联】JavaScript JSON结构转换(11):数组To数组——综合应用

文章目录 一、JSON结构转换是什么?二、术语解释三、案例之《JSON数组 To JSON数组》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么? JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0…

VOC(客户之声)赋能智能家居:打造个性化、交互式的未来生活体验

随着科技的飞速发展,智能家居已成为现代家庭不可或缺的一部分。然而,如何让智能家居更好地满足用户需求,提供更贴心、更智能的服务,一直是行业关注的焦点。在这个背景下,VOC(客户之声)作为一种用…

Java NIO详解

一、概念 NIO, 即new io,也叫非阻塞io 二、NIO三个核心组件: Buffer数据缓冲区Channel通道Selector选择器 1、Buffer缓冲区 缓冲区本质上是一个可以存放数据的内存块(类似数组),可以在这里进行数据写入和读取。此…

git 修改历史 commit message

目录 1,修改当前的2,修改历史的1,先查看 log2,开始修改 3,其他注意点1,中途不想修改了2,commit ID 会发生变化3,推送远程4,精准定位 1,修改当前的 直接使用下…

Linux实现m4a格式转换为wav格式

需要在linux上安装ffmpeg 参考博客 Linux上安装ffmpeg修改环境变量【这一点很重要,自己因为没有添加环境变量,捣鼓了很长时间】 将ffmpeg的绝对路径添加到 PATH 环境变量中,以让系统能找到ffmpeg的安装路径。 # /home//project/ffmpeg-6.1-a…

三个表的联合查询的场景分析-场景4:c表维护a和b表的id关联关系(一对多)

基础SQL演练,带详细分析,笔记和备忘。 目录 背景介绍 表数据 需求1:查询g表所有记录,以及关联的h的id 需求2:在需求1基础上,查出关联的h的其它字段(name) 需求3:在需…

【排序算法】希尔排序

文章目录 📝希尔排序( 缩小增量排序 )🌠分组思想🌠缩小增量的过程🌠 排序步骤🌉希尔排序的特性总结: 🚩总结 📝希尔排序( 缩小增量排序 ) 希尔排序是一种经典的排序算法&#xff0c…

Java复习第十三天学习笔记(HTML),附有道云笔记链接

【有道云笔记】十三 3.29 HTML https://note.youdao.com/s/Ru3zoNqM 一、基本标签 HTML:超文本标记语言 定义页面结构 CSS&#xff1a;层叠样式表 页面显示的样式、排版 BootStrap JS: JavaScript 界面交互(动态交互、逻辑) JQuery <!DOCTYPE html> <html> &l…

体育馆场地预约系统项目管理

1 前言 体育馆作为提供体育活动设施的重要场所&#xff0c;其使用和管理效率对于满足公众需求、提高体育活动质量具有重要意义。然而&#xff0c;传统体育馆场地预约方式仍然存在流程繁琐、效率低下等问题&#xff0c;已无法满足现代社会的需求。旨在提高体育馆的预约和管理效率…

WebGIS开发

1.准备工作 高德开发API注册账号&#xff0c;创建项目拿到key和密钥 高德key 2.通过JS API引入高德API <html><head><meta charset"utf-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><metaname&quo…

人工智能 框架 paddlepaddle 飞桨 使用指南 使用例子 线性回归模型demo 1

安装过程&使用指南&线性回归模型 使用例子 本来预想 是安装 到 conda 版本的 11.7的 但是电脑没有gpu 所以 安装过程稍有变动,下面简单讲下 conda create -n paddle_env117 python=3.9 由于想安装11.7版本 py 是3.9 所以虚拟环境名称也是 paddle_env117 activa…

HTTP 与 HTTPS 的区别

基本概念 HTTP&#xff08;HyperText Transfer Protocol&#xff1a;超文本传输协议&#xff09;是一种应用层协议&#xff0c;主要用于在网络上进行信息的传递&#xff0c;特别是用于Web浏览器和服务器之间的通信。 它使用明文方式发送数据&#xff0c;这意味着传输的内容可…

C++中的STL简介与string类

目录 STL简介 STL的版本 STL的六大组件 string类 标准库中的string类 string类的常用接口 string类对象对容量的操作 size()函数与length()函数 capacity()函数 capacity的扩容方式 reserve()函数 resize()函数 string类对象的操作 push_back()函数 append()函数 operator()函数…

LLM推理入门指南②:深入解析KV缓存

在本系列文章《LLM推理入门指南①&#xff1a;文本生成的初始化与解码阶段》中&#xff0c;作者对Transformer解码器的文本生成算法进行了高层次概述&#xff0c;着重介绍了两个阶段&#xff1a;单步初始化阶段&#xff0c;即提示的处理阶段&#xff0c;和逐个生成补全词元的多…

【Go】六、函数

文章目录 1、函数的定义2、内存分析3、注意点4、函数数据类型5、自定义数据类型&#xff08;起别名&#xff09;6、支持对返回值命名 1、函数的定义 语法&#xff1a; func 函数名&#xff08;形参列表)&#xff08;返回值类型列表&#xff09;{执行语句..return 返回值列…

HarmonyOS实战开发-Stage模型下Ability的创建和使用

介绍 本篇Codelab基于Stage模型&#xff0c;对Ability的创建和使用进行讲解。首先在课程中我们将带领大家使用DevEco Studio创建一个Stage模型Ability&#xff0c;并使用UIAbilityContext启动另一个Ability&#xff0c;然后借助Want&#xff0c;在Ability之间传递参数&#xf…

.Net 知识杂记

记录平日中琐碎的.net 知识点。不定期更新 目标框架名称(TFM) 我们创建C#应用程序时&#xff0c;在项目的工程文件(*.csproj)中都有targetFramework标签&#xff0c;以表示项目使用的目标框架 各种版本的TFM .NET Framework .NET Standard .NET5 及更高版本 UMP等 参考文档&a…

云主机8核16G配置租用优惠价格1198元1年、4688元三年

京东云8核16G租用优惠价格1198元1年、4688元三年&#xff0c;配置为8C16G-270G SSD系统盘-5M带宽-500G月流量&#xff0c;华北-北京地域。京东云8核16G服务器活动页面 atengyun.com/go/jd 京东云8核16G租用优惠价格 京东云&#xff1a;轻量云主机CPU内存&#xff1a;8C16G公网带…

从TCP/IP协议到socket编程详解

​ 我的所有学习笔记&#xff1a;https://github.com/Dusongg/StudyNotes⭐⭐⭐ ​ 文章目录 1 网络基础知识1.1 查看网络信息1.2 认识端口号1.3 UDP1.4 TCP1.4.1 确认应答机制1.4.2 TCP三次握手/四次挥手为什么是三次握手为什么是四次挥手listen 的第二个参数 backlog—— 全…