SDK 整体框架介绍¶
1 简介¶
PAN1080 SDK 基于开源实时操作系统 Zephyr OS 修改而来(目前使用的Zephyr内核版本为v2.7.0-lts
)。
Zephyr OS是一个内存占用极低的内核,它主要设计用于资源受限系统:从简单的嵌入式环境传感器、LED 可穿戴设备,到复杂的智能手表、IoT 无线网关。有关Zephyr的详细说明,请参考官方文档:Zephyr Project Documentation。
为了方便开发,我们对Zephyr进行了裁剪,只保留了arm架构,去掉了PAN1080不支持的子系统,添加了 PAN1080 BLE Controller 等,并适配了 VS Code。
PAN1080 SDK 源码树结构如下:
<home>/01_SDK
├─.west
├─bootloader
├─build
├─modules
├─sdk_quick_build_samples
├─zephyr
└─PAN1080 SDK CLI
.west
:west 配置文件。bootloader
:bootloader
程序源码,包括mcuboot
和panboot
。build
:编译时自动生成,包含VS Code 的.code-workspace
文件及zephyr子目录下载烧录相关的.bin
、.elf
、.hex
文件。modules
:必要的一些模组,包括:PAN1080外设库,Controller库等。quick_build_samples
:编译脚本,可以快速编译和下载例程。zephyr
:zephyr 主文件夹,包括:zephyr os,板级适配,例程。PAN1080 SDK CLI
:快捷方式,用以启动PAN1080 SDK命令行终端。
2 sdk_quick_build_samples¶
PAN1080 SDK 快速编译脚本树结构如下:
<home>/01_SDK/quick_build_samples
├─basic
├─bluetooth
├─drivers
├─proprietary_radio
├─solutions
└─_cmd
basic
:zephyr基础例程快速编译下载脚本。bluetooth
:pan1080 bluetooth快速编译下载脚本。drivers
:pan1080适配zephyr的driver快速编译下载脚本。proprietary_radio
:pan1080 2.4G例程快速编译下载脚本。solutions
:pan1080应用方案快速编译下载脚本。_cmd
:脚本核心逻辑源文件。
例程有关源码的更多内容请参考1.2.4章节。
有关例程的更多内容请参考:PAN1080例程介绍。
3 zephyr¶
PAN1080 SDK zephyr源码树结构如下:
<home>/01_SDK/zephyr
├─arch
├─boards
├─cmake
├─doc
├─drivers
├─dts
├─include
├─kernel
├─lib
├─misc
├─modules
├─samples_panchip
├─scripts
├─share
├─soc
├─subsys
└─tests_panchip
arch
:存放芯片 CPU 架构级信息,由于 PAN1080 是 ARM 架构,因此其中只保留了 ARM 架构信息。boards
:存放板级信息,比如 PAN1080 各种 EVB 开发板。cmake
:存放 CMake 构建 Zephyr App 所需的相关配置和脚本文件。doc
:Zephyr 官方文档,其内容与 Zephyr文档官网一致。drivers
:存放设备驱动代码,例如pan1080 spi驱动文件。dts
:存放 DeviceTree(芯片硬件初始化配置) 信息。include
:存放 Zephyr 公开的 API 头文件。kernel
:存放 Zephyr OS 内核代码。lib
:存放库文件,包含一个简单的标准C语言库等。misc
:其他一些不便分类的文件。modules
:存放关联第三方文件和目录的modules目录,提供第三方模块Kconfig相关定义途径。samples_panchip
:存放 Panchip 提供的 PAN1080 官方例程。scripts
:存放编译测试相关的脚本文件。share
:存放一些额外的架构无关的数据,目前包含 Zephyr CMake Package。soc
:存放芯片 SoC 级信息及一些默认配置。subsys
:Zephyr 子系统,包括:USB Device Stack(USB 设备栈)、File System(文件系统)、Bluetooth Host and Controller(低功耗蓝牙Host端与Controller端)等实现代码。tests_panchip
:存放 Panchip 提供的适配zephyr公开的API测试case。
3.1 boards¶
pan1080 SDK提供了两种不同板级信息,其结构树如下:
<home>/01_SDK/zephyr/boards
├─arm
├─pan1080a_afld_evb
└─pan1080a_afx_evb
pan1080a_afld_evb
:存放64 PIN封装,Flash大小为1MB的PAN1080A SoC板级信息。pan1080a_afx_evb
:存放32PIN封装,Flash大小为1MB的PAN1080A SoC板级信息。
有关pan1080板级信息配置的更多内容请参考:Zephyr Board配置指南。
3.2 drivers¶
pan1080 SDK适配的zephyr驱动结构树如下:
<home>/01_SDK/zephyr/drivers
├─acc
├─adc
├─console
├─counter
├─flash
├─gpio
├─i2c
├─pinmux
├─pwm
├─qdec
├─serial
├─spi
└─timer
3.3 dts¶
pan1080 SDK DeviceTree初始化配置信息结构树如下:
<home>/01_SDK/zephyr/dts
├─arm
└─panchip
└─pan1080
└─bindings
arm/panchip/pan1080
:存放pan1080芯片硬件初始化配置信息。bindings
:bindings中包含一系列.yaml格式的文件,其中描述了dts各个节点中各个属性的实际含义。
有关DeviceTree的更多内容请参考:Zephyr配置系统指南的Devicetree配置部分介绍。
3.4 samples_panchip¶
pan1080 SDK 提供驱动及应用相关例程的官方源码,其结构树如下:
<home>/01_SDK/zephyr/samples_panchip
├─basic
├─bluetooth
├─drivers
├─proprietary_radio
└─solutions
basic
:存放基础例程源码。bluetooth
:存放bluetooth系列例程源码。drivers
:存放driver系列例程源码。proprietary_radio
:存放2.4G系列例程源码。solutions
:存放应用方案系列例程源码。
以basic\blinky
为例
blinky
├── CMakeLists.txt
├── prj.conf
├── README.rst
└── src
└── main.c
src\main.c
:工程源码。prj.conf
:工程配置文件。README.rst
:工程说明文件。
有关例程的更多内容请参考:PAN1080例程介绍。
3.5 subsys¶
3.5.1 bluetooth¶
Controller
源码路径:<home>/01_SDK/zephyr/subsys/bluetooth/controller_panchip
。
通过 HCI 控制 Controller,启动了两个线程:
controller_thread_data
:controller 中断处理函数。recv_thread_data
:接收 controller上报的 L2CAP、HCI Events数据。
Host
源码路径:<home>/01_SDK/zephyr/subsys/bluetooth/host
。
GATT Services
源码路径:<home>/01_SDK/zephyr/subsys/bluetooth/host
。
GATT Service |
File |
Configuration |
---|---|---|
GAP Service |
|
CONFIG_BT_GAP_SERVICE=y (default) |
GATT Service Changed |
|
CONFIG_BT_GATT_SERVICE=y (default) |
源码路径:<home>/01_SDK/zephyr/subsys/bluetooth/services
。
GATT Service |
File |
Configuration |
---|---|---|
BAS (Battery Service) |
|
CONFIG_BT_BAS=y |
TPS (TX Power Service) |
|
CONFIG_BT_TPS=y |
HRS (Heart Rate Service) |
|
CONFIG_BT_HRS=y |
DIS (Device Information Service) |
|
CONFIG_BT_DIS=y |
Mesh
源码路径:<home>/01_SDK/zephyr/subsys/bluetooth/mesh
。
TBD
Mesh Models
源码路径:<home>/01_SDK/zephyr/subsys/bluetooth/mesh
。
Mesh Model |
File |
Configuration |
---|---|---|
Configuration Client model |
|
CONFIG_BT_MESH_CFG_CLI=y |
Configuration Server model |
|
- |
Health Client model |
|
CONFIG_BT_MESH_HEALTH_CLI=y |
Health Server model |
|
- |
源码路径:<home>/01_SDK/zephyr/subsys/bluetooth/mesh_models/sig_models
。
Mesh Model |
File |
Configuration |
---|---|---|
SIG OTA Server model |
|
CONFIG_BT_MESH_SIG_OTA_SRV=y |
PB Remote Server model |
|
CONFIG_BT_MESH_PB_REMOTE_SRV=y |
Vendor Models
源码路径:<home>/01_SDK/zephyr/subsys/bluetooth/mesh_models/vendor_models
。
Mesh Model |
File |
Configuration |
---|---|---|
Packet Test Vendor Server model |
|
CONFIG_BT_PAN_MESH_MODELS=y |
3.6 tests_panchip¶
pan1080 SDK 提供驱动API测试例程的官方源码,其结构树如下:
<home>/01_SDK/zephyr/tests_panchip
├─bluetooth
├─drivers
└─subsys
bluetooth
:存放bluetooth API测试代码。drivers
:存放驱动API测试代码。subsys
:存放power manage、storage等API测试代码。