低功耗蓝牙4.0BLE编程-nrf51822开发(3)

蓝牙协议栈

nrf51822开发中,蓝牙协议栈和应用开发是分开的。

(1)兼容蓝牙4.0低功耗协议栈基带层,L2CAP\AAT\SM\GAP\GATT协议,设备和广播,GATT客户端和服务器,SMP支持(包含MITM和OOB配对);

(2)应用部分和协议栈部分内存空间隔离;

低功耗蓝牙4.0BLE编程-nrf51822开发(3)

(3)采用异步事件驱动程序架构

(4)没用使用RTOS,可以方便移植到任何RTOS;

(5)SoftDevice是使用标准的C语言编写的,它是已经被编译好的二进制文件,需要使用者将它烧写到芯片中。

(6)API包含了Generic Attribute Protocol (GATT), Generic Access Profile (GAP), Logical Link Control and Adaptation Protocol(L2CAP).

低功耗蓝牙4.0BLE编程-nrf51822开发(3)

Radio Notification

Radio Notification功能用于SoftDevice向应用层通知ACTIVE和INACTIVE(nACTIVE)消息,这两个消息通过中断发出。

(1)ACTIVE信号在RADIO事件发生前发出;

(2)INACTIVE(nACTIVE)在RADIO事件结束前发出。

低功耗蓝牙4.0BLE编程-nrf51822开发(3)

上图描述了时间的消耗,在tndist-tprep时间内数据发送到协议栈。

配置的各个时间应满足:tndist+tevent < tinterval.

下表描述了tndist和tinterval组合后可发送最大包个数的关系:

低功耗蓝牙4.0BLE编程-nrf51822开发(3)

Bootloader

要使用bootloader,它的起始地址设置在UICR.BOOTADDR寄存器中。芯片复位后,SoftDevice检查UICR.BOOTADDR的值是否为0xffffffff,如果它不是,说明使用了bootloader,它使用bootloader起始地址处的中断向量表并启动程序。如果它是,则没有使用bootloader,程序跳转到应用程序中执行。

低功耗蓝牙4.0BLE编程-nrf51822开发(3)

SoftDevice和应用层资源使用

低功耗蓝牙4.0BLE编程-nrf51822开发(3)

低功耗蓝牙4.0BLE编程-nrf51822开发(3)

可以看到,s110使用了80KB的ROM和8KB的RAM空间。

上一篇:Eclipse实现Hibernate逆向工程:从数据库逆向生成实体类和hbm文件


下一篇:C++中emplace_back中的完美转发是什么