1、前言
1.1 文档简介
本文档主要介绍了如何在 Linux 平台移植
XR819S 蓝牙驱动。
1.2 目标读者
XR819S 开发使用人员
1.3 适用范围
此文档适用于 R328 + XR819S
2、概述
XR819S是一颗集成Wi-Fi/BLE的无线连接Combo
芯片,支持2.4G IEEE 802.11b/g/n协议、BLE5.0,具有优秀的射频性能、高可靠性、低功耗、外围电路简单等优点。Wi-Fi基于SDIO2.0接口,BLE基于UART接口,软硬件开发便捷,可满足用户对Wi-Fi、BLE、低功耗等多方面的需求,快速开发
智能产品应用, 包括平板、机顶盒、物联网(IoT)、智能家居、智能玩具等。
2.1 Bluez框架
本文针对Bluez平台介绍如何移植XR819S的BLE驱动,Bluez的框架图如图2-1所示。驱动移植主要是移植hciattach部分,它会去加载固件和初始化hci,并把hci与uart绑定起来进而让host下发指令给controller,并让controller回复事件给host。
3、Linux
kernel 移植
Xradio BLE Linux 移植包括 Xradio BLE 驱动移植及平台配置。下面基于 R328 Linux-4.9 内核版本,给出具 体的移植步骤。
3.1 Xradio BLE 驱动添加
3.1.1 蓝牙上电模块
蓝牙上电模块使用 Linux 默认的 rfkill 子系统, 该驱动在应用层为用户提供了操作蓝牙上下电的接 口。配置如表 3-1 所示。
Device Drivers --->
Misc devices --->
[ * ].
Allwinner rfkill driver
3.1.2 蓝牙休眠模块
Bluetooth休眠唤醒代码路径在 lichee/linux4.9/drivers/bluetooth/目录下,移植步骤如下:
1. 拷贝源文件 下列源码位于产品包 sleep/文件夹中。
A. 拷贝 xradio_ldisc.c 与 xradio_btlpm.c 文件至/drivers/bluetooth/路径下。
2. 修改 lichee/linux4.9/drivers/bluetooth/Makefile 文件,添加如下信息,如表 3-2 所示。
obj-$(CONFIG_XR_BT_LPM) += xradio_btlpm.o
obj-$(CONFIG_XR_BT_FDI) += xradio_btfdi.o
3. 修改 lichee/linux4.9/drivers/bluetooth/Kconfig 文件,添加如下信息,如表 3-3 所示.
config XR_BT_LPM
tristate "Xradio Bluetooth sleep driver support"
help
Bluetooth Bluetooth sleep Driver.
This driver provides the dynamic active power saving
MEChanism for bluetooth radio devices.
......
4. 配置 menuconfig,编译休眠唤醒模块, 在 Tina 根目录下输入 make kernel_menuconfig 选择 Networking support -> Bluetooth subsystem support -> Bluetooth device drivers,如表 3-4 所示。
Networking support --->
<*> Bluetooth subsystem support --->
Bluetooth device drivers --->
<*> Xradio Bluetooth sleep driver support
3.1.3 蓝牙板级配置
本文以 R328 平台 Tina Linux4.9 内核为例介绍 XR819S 的配置, 硬件板级包配置路径在 /device/config/chips/r328s2/configs/perf2_XR829/sys_config.fex 文件下。
更多详细内容请下载附件查看