蓝牙协议栈
nrf51822开发中,蓝牙协议栈和应用开发是分开的。
(1)兼容蓝牙4.0低功耗协议栈基带层,L2CAP\AAT\SM\GAP\GATT协议,设备和广播,GATT客户端和服务器,SMP支持(包含MITM和OOB配对);
(2)应用部分和协议栈部分内存空间隔离;
(3)采用异步事件驱动程序架构;
(4)没用使用RTOS,可以方便移植到任何RTOS;
(5)SoftDevice是使用标准的C语言编写的,它是已经被编译好的二进制文件,需要使用者将它烧写到芯片中。
(6)API包含了Generic Attribute Protocol (GATT), Generic Access Profile (GAP), Logical Link Control and Adaptation Protocol(L2CAP).
Radio Notification
Radio Notification功能用于SoftDevice向应用层通知ACTIVE和INACTIVE(nACTIVE)消息,这两个消息通过中断发出。
(1)ACTIVE信号在RADIO事件发生前发出;
(2)INACTIVE(nACTIVE)在RADIO事件结束前发出。
上图描述了时间的消耗,在tndist-tprep时间内数据发送到协议栈。
配置的各个时间应满足:tndist+tevent < tinterval.
下表描述了tndist和tinterval组合后可发送最大包个数的关系:
Bootloader
要使用bootloader,它的起始地址设置在UICR.BOOTADDR寄存器中。芯片复位后,SoftDevice检查UICR.BOOTADDR的值是否为0xffffffff,如果它不是,说明使用了bootloader,它使用bootloader起始地址处的中断向量表并启动程序。如果它是,则没有使用bootloader,程序跳转到应用程序中执行。
SoftDevice和应用层资源使用
可以看到,s110使用了80KB的ROM和8KB的RAM空间。