项目简介
这是一个基于C语言开发的精简蓝牙协议栈,不包含OS部分,具有良好的移植性,支持多种芯片,且保留了好用的GATT Service接口模型,同时具备丰富的日志系统。
项目的主要特性和功能
- 轮询架构:不包含OS部分,移植非常方便。
- hci同步发送机制:在无OS情况下实现hci sync机制,参考STM32做法,虽增加一定porting难度,但大大降低了蓝牙HCI的使用成本。
- Zephyr GATT Service调用接口:保留了Zephyr项目中好用的GATT Service接口模型。
- 多芯片支持:支持多种厂商的不同芯片,可通过makefile配置
CHIPSET
选择。 - 日志系统丰富:支持多种debug方式,生成的日志文件保存在
output/log
目录下,方便分析。
安装使用步骤
编译环境搭建
目前仅支持Windows编译,最终生成exe可在PC上运行。需安装以下环境:
- 安装Python3,用于Kconfig、代码格式化、RAM&ROM分析等。装好后运行python_require_env.py
脚本安装所需的python环境:
shell
python python_require_env.py
- 安装GCC环境,可参考Win7下msys64安装mingw工具链,笔者使用的是msys64 + mingw。
代码编译
项目由makefile组织编译,编译整个项目执行make all
,调用make help
可查看帮助。可调整以下参数:
- APP:选择example
中的例程,默认beacon
。
- PORT:选择porting
中的环境,即当前平台和HCI接口类型,默认windows_libusb_win32
。
- CHIPSET:选择chipset
中的芯片种类,默认csr8510_usb
。
示例编译指令:
shell
make all APP=beacon PORT=windows_libusb_win32 CHIPSET=csr8510_usb
HCI Dongle部署
USB设备使用
- 下载Zadig。
- 菜单栏点击Options -> List All Devices。
- 通过下拉选中当前连接的蓝牙dongle,更换设备driver为
libusb-win32
。
UART设备使用
查看设备的串口号,在代码里配置好即可(后续准备放在Makefile中操作)。
Code Size分析环境搭建及编译
目前仅支持CM0编译,最终生成elf用于评估协议栈Code Size。在Windows环境基础上,还需安装Arm GNU Toolchain。切换到CM0/GCC目录下,调整Makefile中的Toolchain路径,执行make all
。参考zephyr对生成的elf进行分析,会生成ram.json和rom.json,可导入到nordic的vscode环境下借助图形化工具分析。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】