NDK 整体框架介绍¶
1 简介¶
PAN1080 NDK是基于开源蓝牙协议栈Nimble(Host)以及开源系统FreeRTOS,以及私有BLE Controller实现完成。Nimble和FreeRTOS均开发源码,BLE Controller通过标准化HCI接口实现。需要注意的是NDK依赖的IDE主要是KEIL。
2 NDK目录结构¶
PAN1080 NDK 源码树结构如下:
<home>/01_SDK
├── modules
│ └── hal
└── nimble
├── README.md
├── controller
├── host
├── lib
├── os
└── samples
moudules/hal
:与ZDK同根同源,属于外设和driver相关的硬件抽象层README.md:
nimble基本介绍controller
:nimble工程所需要的controller相关头文件host
:nimble host协议栈所在的主要目录,同时包含kv_store组件,该组件主要用于flash数据库存储。lib
:该文件包含两个版本controller的实现,具体实现以lib的形式添加到keil工程中。Controller两个版本分别是Origin版本,该版本是全功能版本,但是具体实现优化比较少,执行速度较慢,代码相对较大;另外一个版本是优化版本(Spark版本),该版本为精简和优化版本,速度更快功耗更低,但是目前主要实现BLE 4.2+版本feature,其他5.0+feature功能后续迭代升级。os
:freertos的相关代码samples
:基于nimble的相关demo
2.1 modules¶
modules在NDK中主要为外设以及USB,2.4G等依赖的库文件
<home>/01_SDK/modules
.
└── hal
└── panchip
└── panplat
└── pan1080
└── bsp
├── cmsis
├── device
├── peripheral
├── radio
└── usb
2.2 controller¶
controller中主要包含了两个版本controller依赖的头文件
<home>/01_SDK/nimble/controller
.
├── dummy.txt
├── pan108x
│ └── shrd_utils
└── pan108x_spark
└── include
2.3 host¶
host中包含nimble的主体实现以及其他必须的组件,目前nvs数据库存储使用是的kv_store组件,主要用于存储ble的配对信息。当然开发者也可以用于自己的项目存储数据。
<home>/01_SDK/nimble/host
.
├── kv_store
│ ├── mtb_init.c
│ ├── mtb_kvstore.c
│ ├── mtb_kvstore.h
│ └── mtd_kv_port.h
└── nimble
├── CODING_STANDARDS.md
├── LICENSE
├── NOTICE
├── README.md
├── RELEASE_NOTES.md
├── apps
├── babblesim
├── docs
├── ext
├── nimble
├── porting
├── repository.yml
├── targets
├── uncrustify.cfg
└── version.yml
kv_store
组件:支持任何可以建模为块设备的存储,包括内部闪存或外部闪存(例如通过QSPI)。
通过实例化库的多个实例来对存储进行分区。
设计为抗电源故障。
旨在促进存储的均匀磨损。
nimble
:参考nimble专页介绍,nimble基于V1.5.0版本移植实现。
2.4 lib¶
lib中主要包含了两个版本controller主体实现的库文件:
<home>/01_SDK/nimble/lib
.
├── pan108x
│ └── ble.lib
└── pan108x_spark
└── ble_spark.lib
Controller两个版本分别是Origin
版本,该版本是全功能版本,但是具体实现优化比较少,执行速度较慢,代码相对较大,所对应的库为pan108x/ble.lib
;
另外一个版本是优化版本,内部代号为Spark
,所对应的库为pan108x_spark/ble_spark.lib
。该版本为精简和优化版本,速度更快功耗更低,但是目前主要实现BLE 4.2+版本feature,其他5.0+feature功能后续迭代升级。
2.5 OS¶
OS目前只包含freertos的主体代码
2.6 samples¶
nimble示例工程:
<home>/01_SDK/nimble/samples
.
├── ble_central
│ ├── include
│ ├── keil
│ ├── src
│ └── startup
├── bleprph_enc
│ ├── include
│ ├── keil
│ ├── src
│ └── startup
└── bleprph_hr
├── include
├── keil
├── src
└── startup
目前包含三个工程
ble_central
:central功能实现,可以连接bleprph_enc
功能,工程中互相依赖的服务为ANS(Alert Notification Service
).bleprph_enc
:除了和ble_central
示例完成对测,也可以使用手机app通过蓝牙访问自定义特性,该特性为加密权限,会触发加密配对流程。bleprph_hr
:ble peripheral心跳设备演示。