查看: 3165|回复: 31

[分享] 图文讲解 WiFi 驱动移植过程

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3300

    主题

    6547

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32032
    最后登录
    2024-4-26
    发表于 2021-6-15 17:53:04 | 显示全部楼层 |阅读模式
    图文讲解 WiFi 驱动移植过程


    本篇文章是对WiFi 驱动移植的系列文章进行一次系统性的总结、复盘,分享一下自己的思考过程,遇到的问题等。


    1 简介
    WiFi 是什么?能用来做什么?

    都 2021 年了,相信您对 WiFi 一定不陌生了。


    可以参考这里的百度百科释义:【百度百科 - WiFi(https://baike.baidu.com/item/Wi- ... d=803834&fr=aladdin)】


    那 WiFi 能用来干什么呢?

    以手机为例,很明显有两个功能:

    ·开启 WiFi ,连接到路由器;
    ·开启热点(AP),让别人连接到由自己设备 WiFi 开出来的路由;
    这两个场景,在实际中已经很常见了。


    本次 WiFi 驱动移植,应用场景是什么呢?

    简单的说,就是我有一块控制板,现在需要增加 WiFi 模块,让设备可以通过 WiFi ,正常连接到网络。


    应用场景也有很多,比如这些:


    ·对安装环境要求较高的地方(尽可能少的接线);
    ·不易连接有线网络的地方;
    ·低成本,不想用 4G 的地方;
    ·仅用作局域网通信;
    ...
    说到这里,还有一个比较重要的场景,就是设备端作为一个 Web 服务器,可以接入其他设备,比如手机 APP 等,进行功能参数的配置。这块考虑后边单独写一篇文章总结。


    设备怎么与 WiFi 模块通信?有哪几种方式?

    目前主流的方案有两种:USB 和 SDIO ;

    不过由于 USB 方案,适配相对简单,因此选用 USB 方式的芯片。

    生活中常见的 USB 无线网卡,类似的也是这种方式。

    备注:具体使用哪种接口,还要结合实际情况选择。


    关于 USB 方式和 SDIO 方式,可以看看这份参考资料,WIFI的USB和SDIO接口是什么??(https://zhidao.baidu.com/question/117152584.html


    硬件怎么连接?是否需要天线?如果不需要天线有什么问题?天线不适配又有什么问题?
    使用 USB 方式的 WiFi 模组,硬件接线较为方便,如下图所示
    11.png
    截图源自创凌官网
    由上图可以看到,引脚功能如下:

    ·D+:USB接口+
    ·D-:USB接口-
    ·ANT:天线接口
    而且整体尺寸很小,图中尺寸单位为 毫米(mm)。

    下一个问题,肯定是需要天线的,否则 WiFi 无法发射出来信号。现象就是:AP 模式下,搜索不到路由。
    如果天线不适配,则不能达到最大利用率。实际现象:WiFi 网速慢,网络连接不稳定,ping 丢包等。

    2 整体流程
    这一部分,就回顾一下,从拿到 WiFi 模块,到最后产品交付的全流程,然后复盘总结一下。


    我把整个过程大致分为三个阶段,图示如下:
    12.png
    其实在这之前,还应该有一个硬件环境准备阶段。为了尽量详细,简要描述如下:
    (如果您已了解,可直接看下一部分
    13.png

    硬件连接图,简要图示如下:
    14.png

    2.1 基础移植
    此阶段的终极目的:使系统检测到 WiFi 网卡。为什么呢?

    USB WiFi 的基本操作,都是通过 命令行 实现,因此必须要先检测到 WiFi 网卡,才能针对此网卡,进行特定操作。
    本质与操作有线网卡 eth0 类似。
    这里首先要做的就是 驱动移植 ,将官方的驱动,移植到现有内核中,这样才能在内核菜单中看到对应模块。

    接着需要修改内核选项,使能所用的 WiFi 模块。

    可以参考文章「详细记录丨Realtek RTL8188FU WiFi 驱动移植」

    最后肯定是要编译,生成新的内核文件,可以使用挂载内核的方式,验证一下新编译的文件是否正常运行。

    如果可以看到 WiFi 网卡驱动,则表示内核编译无误;否则,需要重复上述步骤,进行检查;

    PS:一定要确保硬件连线无误,没有断路、短路、接反等问题。

    2.2 命令交叉编译
    经过上个阶段,我们已经可以正常检测到网卡了。

    这个阶段,主要是准备一些 工具 ,也就是一些用来操作 WiFi 的命令、依赖的库文件等;

    这个阶段可以参考文章:「详细记录丨Realtek RTL8188FU WiFi 命令编译」

    最后记得把编译生成的命令,放到文件系统中的对应路径。

    注意命令权限,正常应该是 755 ,一定要有可执行权限!!!
    当我们准备好所需命令后,就可以编写一些自动化的脚本,这样在程序中,只需调用对应脚本文件即可。

    当然了,一些特殊文件,比如保存 WiFi 名称密码的文件,由于需要经常修改,因此还需要在程序中进行写文件操作。

    我的做法是先在文件系统中,给一个默认的初始文件,当参数有改变时,重新再写一次文件。

    其实也可以单独修改文件中的某一部分,但是经过评估,发现数据量不大,直接擦了重写,更加简单方便!

    2.3 业务开发
    第一个应用场景:连接路由

    即需要控制 WiFi 模块,连接到特定的路由,进行网络通信、数据交互等。

    此时可以参考文章:「详细记录丨Realtek RTL8188FU WiFi 连接路由」

    第二个应用场景:开启 AP 热点

    也就是设备本身,需要发射出来信号,以供其他设备连接。

    此时可以参考文章:「详细记录丨Realtek RTL8188FU WiFi 开启热点」

    其实还有另外一个应用场景:Web服务器 ,不过我想后边单独出一篇文章来写。

    是什么呢?简单说就是一个 HTTP Server ,这个 Server 可以处理 POST 请求,进而实现与其他移动端设备的数据交互。

    结合本项目,是用于 APP 给设备配置功能参数。

    3 问题汇总
    由于自己在做这一块的时候,遇到太多坑了,因此觉得很有必要再总结一下,希望能帮到您~

    WiFi 配置为 AP 模式需要做什么?注意什么?

    WiFi 开启 AP 模式,说白了,就两点要求:找得到,连得上;

    找得到:我们总得能看到这个 WiFi 热点吧?
    连得上:我们即使看到了,也得能正常连上去吧?
    这里进一步延伸,就有两个技术点

    必须要选择合适的天线,否则信号较难发射出来,又或者信号不好;
    服务端需要有 DHCP 功能,确保设备可以正常连接,正常获取到 IP 地址;
    其实脚本文件中的这一步,就是自动分配 IP 地址的过程。
    15.png

    如果没有开启 DHCP 功能,有什么异常?

    我实际遇到的异常是:手机打开 WiFi 开关,点击连接 WiFi ,发现一直处于 获取 IP 地址的过程中 ,始终无法连接上去,后经查找资料,才发现还需要服务端自动分配 IP 地址。

    WiFi 开启 AP 模式,信道选择有什么注意的?
    关于这个问题,强烈推荐这篇教程 为什么WiFi自动信道选到的信道多数在1/6/11(https://blog.csdn.net/linuxjourney/article/details/39828553

    经过实际测试,发现修改为信道 11 ,效果要好一点。当然,这个还是要结合实际情况来定
    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2023-1-31 09:34
  • 签到天数: 202 天

    [LV.7]常住居民III

    7

    主题

    1515

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3816
    最后登录
    2024-2-19
    发表于 2021-6-15 23:32:00 | 显示全部楼层
    这是为主题月做准备
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3300

    主题

    6547

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32032
    最后登录
    2024-4-26
     楼主| 发表于 2021-6-16 09:01:44 | 显示全部楼层
    zhangt0713 发表于 2021-6-15 23:32
    这是为主题月做准备

    是的
    签到签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    昨天 08:13
  • 签到天数: 558 天

    [LV.9]以坛为家II

    34

    主题

    5917

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    5705
    最后登录
    2024-4-26
    发表于 2021-6-16 16:18:33 | 显示全部楼层

    这是为主题月做准备
    看来wifi是下一阶段的发力点了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:32
  • 签到天数: 1279 天

    [LV.10]以坛为家III

    21

    主题

    1万

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    13244
    最后登录
    2024-4-26
    发表于 2021-6-16 16:18:45 | 显示全部楼层
    给个8266, 我也参加主题月活动
    跟着日天混 ,三天饱九顿!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-21 11:31
  • 签到天数: 35 天

    [LV.5]常住居民I

    7

    主题

    1876

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1802
    最后登录
    2024-4-1
    发表于 2021-6-16 16:19:02 | 显示全部楼层
    很好的流程,学习了。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    昨天 09:42
  • 签到天数: 1783 天

    [LV.Master]伴坛终老

    65

    主题

    7543

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    12759
    最后登录
    2024-4-26
    发表于 2021-6-16 16:19:16 | 显示全部楼层
    不错不错。。。。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    1 小时前
  • 签到天数: 1941 天

    [LV.Master]伴坛终老

    61

    主题

    1万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    17298
    最后登录
    2024-4-26
    发表于 2021-6-16 16:23:41 | 显示全部楼层
    看看
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-9-21 09:03
  • 签到天数: 33 天

    [LV.5]常住居民I

    0

    主题

    266

    帖子

    1

    高级会员

    Rank: 4

    积分
    848
    最后登录
    2024-4-1
    发表于 2021-6-16 16:24:59 | 显示全部楼层
    学习了学习了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    昨天 13:40
  • 签到天数: 1254 天

    [LV.10]以坛为家III

    4

    主题

    2848

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    6738
    最后登录
    2024-4-26
    发表于 2021-6-16 16:28:06 | 显示全部楼层
    裸硬件可以移植应用吗?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-27 01:26 , Processed in 0.159533 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表