记录一下编译和运行开源蓝牙协议栈btstack的过程。
btstack蓝牙协议栈的GitHub网址:https://github.com/bluekitchen/btstack
使用的环境是win10系统,virtual box软件,在virtual box软件上安装了Ubuntu 20.04系统。
btstack下载可以直接访问上文GitHub网址,选择使用网址下载或者下载zip。使用网址下载
btstack需要使用git软件,需要在win10或者Ubuntu虚拟机中有git软件。
在git软件中输入命令下载代码
git clone https://github.com/bluekitchen/btstack.git
目前自己有Ubuntu20.04虚拟机和stm32F4开发板,所以想尝试在这两个环境下运行btstack。
通过阅读btstack工程目录结构发现在port目录下有libusb文件夹这个便是对应运行在Ubuntu系统的程序,基于自己现有的Ubuntu20.04虚拟机环境,切换到port/libusb/目录下执行make命令编译工程。
在编译的过程中遇到了报错发现没有libusb.h文件,百度了一下发现需要安装libusb-1.0-0-dev和libusb-1.0-doc软件包。安装过后编译通过了。
port目录下的stm32-f4discovery-usb正是对应开发的型号,基于自己现有的Ubuntu20.04虚拟机环境,切换到port/stm32-f4discovery-usb/目录下执行make命令编译工程。
在编译的过程中遇到了报错发现需要搭建交叉编译环境,安装gcc-arm-none-eabi安装包。安装后编译成功。安装软件使用了Ubuntu20.04的新立得软件synaptic来对软件升级和安装。也可以在命令行中输入命令来安装软件包。
例如:
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install gcc-arm-none-eabi
btstack主要包含了蓝牙协议栈的profile以及针对不同环境实现对应的驱动。所以想将btstack运行起来并连接其他蓝牙设备需要有另外的蓝牙controller和射频模块。手上正好有一个USB蓝牙适配器是CSR 8510 A10芯片,可以直接插到电脑上和stm32F4开发板的USB接口上。
在port/libusb目录下输入命令即可运行btstack的例程
sudo ./a2dp_sink_demo
可以阅读example下面的程序源码输入stdin命令来操作btstack协议栈。
使用stm32串口下载工具FlyMcu.exe来下载程序到stm32F407,可执行文件在port/stm32-f4discovery-usb/build目录下面。下载完之后可以连接手机。但是目前没有看到串口上输出日志,有空会继续研究将日志输出的代码添加上。