
点击上方“硬核王同学”选择“置顶/星标公众号”
福利干货第一时间送达!!
大家好,我是硬核王同学,最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作!
最近移植了一个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插入到内核之前,需要添加参数
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 ------
如果觉得有用请点个免费的赞
您的支持是我最大的动力,这对我很重要!!!