当前文档版本为v0.3.0,您可以访问 开发中 的文档以获取最近可能的更新。

SDK 整体框架介绍

1 简介

PAN1080 SDK 基于开源实时操作系统 Zephyr OS 修改而来(目前使用的Zephyr内核版本为v2.7.0-lts)。

Zephyr OS是一个内存占用极低的内核,它主要设计用于资源受限系统:从简单的嵌入式环境传感器、LED 可穿戴设备,到复杂的智能手表、IoT 无线网关。有关Zephyr的详细说明,请参考官方文档:Zephyr Project Documentation

image-20220224140819534

为了方便开发,我们对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 配置文件。

  • bootloaderbootloader程序源码,包括mcubootpanboot

  • 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

gatt.c

CONFIG_BT_GAP_SERVICE=y (default)

GATT Service Changed

gatt.c

CONFIG_BT_GATT_SERVICE=y (default)
CONFIG_BT_GATT_SERVICE_CHANGED=y (default)

源码路径:<home>/01_SDK/zephyr/subsys/bluetooth/services

GATT Service

File

Configuration

BAS (Battery Service)

bas.c

CONFIG_BT_BAS=y

TPS (TX Power Service)

tps.c

CONFIG_BT_TPS=y

HRS (Heart Rate Service)

hrs.c

CONFIG_BT_HRS=y

DIS (Device Information Service)

dis.c

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

cfg_cli.c

CONFIG_BT_MESH_CFG_CLI=y

Configuration Server model

cfg_srv.c

-

Health Client model

health_cli.c

CONFIG_BT_MESH_HEALTH_CLI=y

Health Server model

health_srv.c

-

源码路径:<home>/01_SDK/zephyr/subsys/bluetooth/mesh_models/sig_models

Mesh Model

File

Configuration

SIG OTA Server model

blob_srv.c

CONFIG_BT_MESH_SIG_OTA_SRV=y

PB Remote Server model

remote_srv.c

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

ptv_srv.c

CONFIG_BT_PAN_MESH_MODELS=y
CONFIG_BT_MESH_PTV_SRV=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测试代码。