WiFi、蓝牙模块移植+调试
硬核王同学
2026年01月22日 08:00

点击上方“硬核王同学”选择“置顶/星标公众号” 

福利干货第一时间送达!!

大家好,我是硬核王同学,最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作!

最近移植了一个WiFi、蓝牙芯片,这里记录下移植调试过程。

过去移植过一个纯WiFi芯片,可以参考之前写的这篇文章: 网页链接​

这篇文章重点写蓝牙部分的移植+调试。

一、驱动移植

1.首先保存好原厂的驱动代码,放到自己的文件路径下。

2.配置编译环境,修改驱动文件中的Makefile,配置对应的内核路径、交叉编译工具链、平台架构等。

3.修改WiFi、蓝牙驱动的配置信息,即.config。可以直接vim修改,也可以make menuconfig修改。

包括选择芯片信号、通信总线协议(USB、SDIO、SPI)、选择固件方式、WiFi名称、蓝牙支持等,下图就是选择支持蓝牙功能。

4.编译驱动(记得提前编译内核,WiFi驱动需要内核的某些链接),编译成功后会获得一个.ko文件和一些其他的工具。

完整的编译完驱动会生成以下文件: 

ATBM606x_wifi_usb.ko //WiFi 驱动 

cfg80211.ko //WiFi6 建议不用内核自带 cfg80211,WiFi4 可以直接使用内核自带。 

nimble_linux //BLE 应用,使用 BLE 时拷到板子上。 

atbm_cli //跟 BLE 通讯,用于 AT 指令透传控制;不用指令控制 BLE 时可以不用。

二、调试

WiFi调试也可参考之前写的那篇文章。这里着重讲下蓝牙功能的调试。

1.在WiFi插入到内核之前,需要添加参数 

代码块
JavaScript
自动换行
复制代码
insmod XXXXXXXx_wifi.ko wifi_bt_comb=1 
//1:加载 WiFi+BLE 固件 0:加载完整版 WiFi 固件
复制成功

查看一下驱动加载状态,成功完成置为 1:

Cat /sys/module/

2.将驱动中生成的nimble_linux、atbm_cli 文件拷贝到设备中,运行nimble_linux 即打开蓝牙协议栈

此时如果碰到以下错误,可能是跟/tmp/目录没有权限相关

跟驱动中的SER_SOCKET_PATH路径相关,只需要chmod 777 /tmp/目录即可。

3.手机下载BLE调试助手,测试连接蓝牙后发送数据是否可以接收。

打开后扫描蓝牙,找到nimble_linux 启动时打印的物理地址相同的蓝牙,连接后发送数据,通过打印可以看到数据。

蓝牙助手:(应用商店均可下载。或者联系我发给你)

------  END  ------

如果觉得有用请点个免费的赞

您的支持是我最大的动力,这对我很重要!!!