buildroot 树莓派3B+ WiFi

buildroot 树莓派3B+ WiFi懂的越多,不懂的就越多。

大家好,又见面了,我是你们的朋友全栈君。

硬件资源

请添加图片描述

WiFi

今天研究 WiFi,所以重点关注板子的这两个部件:

部件 型号 描述
SOC BCM2837B0 4 核 Cortex-A53, 64位,ARMv8-A 指令集架构,1.4GHz
WiFi / 蓝牙 BCM/CYW43455 802.11 b/g/n/ac + Bluetooth 4.2 BLE

关于 WiFi 芯片的名称 BCM/CYW43455,这里我想说一下。芯片丝印上是 CYW43455,但是驱动名称又是 brcmfmac.ko,包括芯片的固件名称是 brcmfmac43455-sdio.bin。CYW 和 Broadcom 明明是两家公司呀,一家是赛普拉斯,一家是博通,这颗芯片到底和这两家是什么关系呀?
后来了解到,原来赛普拉斯收购了博通的 Wi-Fi,蓝牙和 ZigBee 物联网产品线和相关知识产权。这样一切都解释的通了,应该是 CYW43455 = BCM43455 = BCM/CYW43455。收购关系产生的不同叫法而已。

构建镜像

我们选择使用 buildroot 构建镜像,不使用官方镜像,不然就不需要费心考虑这些底层细节了。

人生四大境界

为什么要费心自己去构建镜像呢?是因为麻烦和收获是成正比的,遇到的麻烦越多,才能思考得更深,从而收获得更多。这就是为什么,懂的越多,不懂的就越多。

人生四大境界:

  1. 不知道自己不知道
  2. 知道自己不知道
  3. 不知道自己知道
  4. 知道自己知道
    在这里插入图片描述

很多时候停留在第一层。。。

努力让自己到达第二层,之后就好办了。

default 编译

buildroot 选择 raspberrypi3_defconfig 进行编译,烧录后是没有 WiFi 的,因为默认配置选项没有启用 WiFi。

启用 WiFi

make menuconfig 使能以下选项

  1. Target packages → Hardware handling → Firmware → rpi-wifi-firmware
  2. Target packages → Hardware handling → Firmware → rpi-firmware

安装驱动

将编译好的镜像 sdcard.img 烧录到 SD 卡,启动系统。
/lib/modules/5.10.36-v7/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac 目录下有 brcmfmac.ko,我们手动将它安装

# modprobe brcmfmac.ko

查看 WiFi 是否驱动成功

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr B8:27:EB:8A:BC:F4
          inet addr:192.168.1.38  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::ba27:ebff:fe8a:bcf4/64 Scope:Link
          inet6 addr: 240e:3a1:1848:e1e0:ba27:ebff:fe8a:bcf4/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3032 errors:0 dropped:96 overruns:0 frame:0
          TX packets:449 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:210412 (205.4 KiB)  TX bytes:61314 (59.8 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr B8:27:EB:DF:E9:A1
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

看到已经有 wlan0 设备了,说明 WiFi 子卡驱动成功,接下来只要 ifconfig wlan0 up,然后配合 wpa_supplicant 和 hostapd 就可以开心地使用 WiFi 了。

细节

成功驱动 WiFi 之后,我们对前面的操作进行分析,使我们对底层细节更加了解。

  1. 选中 rpi-wifi-firmware 是为了让镜像包含以下三个文件

    brcmfmac43455-sdio.bin
    brcmfmac43455-sdio.clm_blob
    brcmfmac43455-sdio.txt
    

    其中 brcmfmac43455-sdio.bin 就是 BCM/CYW43455 子卡的固件

  2. 选中 rpi-firmware 是为了让镜像包含 brcmfmac.ko,这个文件就是 BCM/CYW43455 子卡的驱动

在安装驱动 brcmfmac.ko 时,驱动会将 brcmfmac43455-sdio.bin 固件安装到子卡。这样,子卡能够正常运行,驱动也能正常运行,两者一对接,WiFi 功能就实现了,后面再启用应用层软件 wpa_supplicant 或 hostapd,就可以配置 WiFi 作为 STA 或 AP 进行工作了。

技术统览

请添加图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152904.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • chmod 命令用法

    chmod 命令用法指令名称:chmod使用权限:所有使用者使用方式:chmod[-cfvR][–help][–version]modefile…说明:Linux/Unix的档案调用权限分为三级:档案拥有者、群组、其他。利用chmod可以藉以控制档案如何被他人所调用。参数:mode:权限设定字串,格式如下:[ugoa…][[±=][rwxX]…][,…],其中u表示该档案的拥有者,g表示与该档案的拥有者属于同一个群体(group)者,o表示其他以外的人,a表示这

    2022年6月29日
    35
  • web开发中前端页面是如何跟后端服务器数据交互的「建议收藏」

    web开发中前端页面是如何跟后端服务器数据交互的「建议收藏」后端服务器一般是指servlet容器,用于执行java源程序常见的网页有html,htm,shtml,asp,aspx,php,jsp等格式前两个常用于静态网页,后面几个常用于动态网页。这里前端网页以比较常见的xx.html和xx.jsp网页作为介绍,其它类似一、静态页面xx.html如何跟后台交互:先来看一个最简单的登陆界面源代码 <body>…

    2022年6月12日
    29
  • Lerp 实现匀速运动「建议收藏」

    Lerp 实现匀速运动「建议收藏」Mathf.Lerp的常见误用是Update(){Transform.position=newVector3(transform.position.x,targetPosition,Time.deltaTime);}首先它是这样工作的:每帧都重新获取物体当前的位置,计算物体和目标距离的差距,再按照当前帧的持续时间(当做一个百分比)来移动这个比例的位置。因此整体运动是缓动的,先

    2022年10月24日
    0
  • 树莓派3B+ 安装系统

    树莓派3B+ 安装系统树莓派3B+安装系统对于树莓派3B+系统安装方法有很多,我就介绍比较普通的一种。适合小白操作!安装概要步骤:官网下载系统-》刷入TF卡-》设置开启显示器和SSH-》通电-》进入系统详细步骤进入官方网站下载系统镜像。https://www.raspberrypi.org/downloads/来到下面这个页面如果感觉下载速度慢,可以将下载链接放到迅雷里面下,基本可以做到满速下载!下载

    2022年6月25日
    36
  • Android 【实现自动轮询的RecycleView】

    Android 【实现自动轮询的RecycleView】

    2021年3月12日
    163
  • 宿主机和虚拟机的网络_vmware独享宿主机网卡

    宿主机和虚拟机的网络_vmware独享宿主机网卡问题描述:宿主机为win10家庭版,虚拟机为Centos7,上午还可以正常的进行互通,中间应该是弹出来一个外设的接入通知,其他的没有什么明显的操作,下午就不能互相访问了,原因不明。解决方法:首先检查虚拟机的网络配置,分为如下几步:1、编辑–>虚拟机网络编辑器,选择桥接模式,同时选择要桥接的网络:这个网路需要和宿主机中的网络保持一致,如果宿主机中存在多个网络连接,比如无线连接和有线连接,那就根据实际需要,看虚拟机需要连接到哪个网络中,就对应选择。选择完之后,确

    2022年8月21日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号