协议栈分为两部分:控制器和主机
Phy 物理层 1mbps自适应跳频的GFSK射频 工作免于许可证的2.4GHz
LL链路层 控制设备的射频状态
设备的五种状态:
等待
广播 不需要建立链接就可以发送数据
扫描
初始化
链接
主机控制接口层: 为主机和控制器之间提供标准通信接口
逻辑链路控制及自适应协议层: 为上层提供数据封装服务
安全管理层: 定义配对和密钥分配方式,为协议栈其他层与另一设备之间的安全链接和数据交换
提供服务
属性协议层: 允许设备向另一设备展示一块特定的数据
通用属性配置文件层: 定义使用了ATT的服务框架和配置文件(profiles)
数据通信是通过GATT子程序处理
通用访问配置文件层: 直接与应用程序和配置文件通信的接口
应用开发配置:
单一设备: 控制器 主机 配置文件(profiles) 应用程序在一片cc2540上实现
网络处理器: 控制器和主机部分在cc2540上执行, 应用程序和Profiles在另一设备上执行
Ble协议栈的执行流程
操作系统抽象层(OSAL Operating System Abstraction layer)
资源(resource) 任务所占用的实体
共享资源(shared resource) 至少被两个任务所使用的资源
任务(task) 一个线程,在任务的执行过程中,cpu完全属于该任务
多任务运行(muti-task running) cpu可以使用任务调度策略将多个任务进行调度
内核(kernel) 负责管理各个任务
为每个任务分配cpu时间
任务调度,
任务间的通信
互斥(mutual exclusion) 多任务间通信,常用方法是共享数据,但必需保证写操作的唯一性,
避免晶振和数据不同步
保护共享资源的方法:
关中断(经常使用)
使用测试并置位指令
禁止任务切换
使用信号量
消息队列(Message Queue): 任务间消息传递,包含任务间同步的信息(通过指针)
Osal主要提供如下功能:
任务注册
任务间同步互斥
中断处理
存储器分配和管理
提供定时器功能