前提:常见的项目架构:应用层-驱动层-硬件层
软件组织架构
顶层⽂件夹:algorithm,application,boot,common,drivers,proj_lib,stack,vendor
algorithm:提供⼀aes_等一些加密算法ccm。⼤C对应于大多数算法⽂零件封装在仓库里⽂在零件中,只留下相应的头⽂件。application:提供⼀些通⽤的应⽤print等处理程序、keyboard、audio等。boot:提供MCU的softwarebotloader,即MCU上电启动或deepslep唤醒后的汇编处理程序⾯C程序的运⾏做准备。common:提供⼀些通⽤跨平台处理函数,如内存处理函数、字符串处理函数等。drivers:提供Clock等MCU外设驱动程序、Flash、I2C、USB、GPIO、UART等。proj_lib:存储SDK运输⾏所必需的库⽂件。BLE协议栈、RF驱动、PM驱动等⽂零件,包装在仓库里⽂用户无法在件中看到源文件。stack:存放与BLE协议栈相关的头部⽂件。源⽂将零件编译到仓库⽂件⾥⾯,对用户来说是不可能的⻅。vendor:⽤存储democode或用户⾃⼰code。
demo文件结构
蓝牙协议栈:
PHY层:用于指定BLE使用的无线频段、调制解调方法和方法。PHY层是否好直接决定了整个BLE芯片的功耗、灵敏度和射频指标,如selectivity。
LL层:LL层是整个BLE协议栈的核心,也是BLE协议栈的难点和重点。LL层有很多事情要做,比如选择哪个射频通道进行通信,如何识别空中数据包,在哪个时间点发送数据包,如何保证数据的完整性,如何接收ACK,如何重传,如何管理和控制链路。LL层只负责发送或收回数据,并将数据分析给上述GAP或GATT。
HCI:HCI是可选的,主要用于实现BLE协议栈的两个芯片,用于规范两者之间的通信协议和通信命令。
GAP层:GAP是两种分析LL层payload的方法之一。CAP简单地规范和定义了LLPayload,因此GAP可以实现的功能极其有限。目前,GAP主要用于广播、扫描和启动连接。
L2CAP层:L2CAP对LL进行了简单的包装。LL只关心传输的数据本身。L2CAP应区分是加密通道还是普通通道,并管理连接间隔。
SMP:SMP用于管理BLE连接的加密性和安全性,如何在不影响用户体验的情况下保证连接的安全性,这些都是SMP应考虑的工作。
ATT:ATT层用于定义用户命令和命令操作的数据,如读取或编写数据。在BLE协议栈中,ATT是开发者接触最多的。BLE引入了ATTribute概念来描述一个接一个的数据。ATTribute除了定义数据外,还定义了可用于数据的ATT命令,因此该层称为ATT层。
GATT:规范attribute中的数据内容,并利用group的概念对attribute进行分类管理。没有GATTT、BLE协议栈也可以运行,但互联互通会有问题。正是因为GATT和各种应用程序,BLE拜托了zigbee等无锡的一点兼容性困境,成为出货量最大的4G无线通信产品
文章为作者独立观点,不代表股票交易接口观点