在漫长的协议研究中,自己有一些总结,本想出书,但是自费我是出不起这个钱的,所以我会慢慢的在这个论坛上慢慢的将这个笔记慢慢的展示给大家,我不是专家,所以难免会有错误,希望大家一起学习。
目 录
第一章 协议组成图 1
1.1、协议由HOST层和CONTROLLER层组成 1
1.1.1、CONTROLLER组成 1
1.1.2、HOST组成 2
第二章 控制器 2
2.1、PHY物理层 2
2.1.1、频段 2
2.1.2、调制 2
2.1.3、射频信道 3
2.1.4、发射功率 3
2.2、链路层描述 4
2.2.1、链路层的状态机 4
2.2.2、状态描述 5
2.2.3、bit数据流格式 7
2.2.4、Preamble前导码 8
2.2.4、Access Address接入地址 9
2.2.6、Cyclic Redundancy Check (CRC) 循环冗余码校验 11
2.2.7、DATA WHITENING数据白化 11
2.3、链路层报文结构 13
2.3.1、PDU的报头和长度 14
2.3.2、广播通道的PDU格式 15
2.3.3、数据通道的PDU格式 18
2.4、链路层设备滤波 20
2.5、NRF51822的Radio 21
2.5.1、EasyDMA 21
2.5.2、包结构 22
2.5.3、设备地址--白名单 26
2.5.4、Radio的状态机和时间参数 27
2.5.5、Radio的基本配置 32
2.6、信道 32
2.6.1、调频 34
2.6.2、自适应调频 35
2.7、非连接状态 40
2.7.1、就绪态 40
2.7.2、广播态 40
2.7.2.1、广播通道选择 40
2.7.2.2、广播间隔 41
2.7.2.3、非定向可连接广播事件(ADV_IND) 42
2.7.2.4、定向可连接广播事件(ADV_DIRECT_IND) 44
2.7.2.5、非定向不可连接事件(ADV_NONCONN_IND) 45
2.7.2.6、可发现不可连事件(ADV_DISCOVER_IND/ADV_SCAN_IND) 46
2.7.3、扫描态 46
2.7.4、发起态 47
2.7.5、软件设计广播状态流程图 47
2.8、连接状态 48
2.8.1、连接事件 49
2.8.2、监管超时 50
2.8.3、连接事件传输窗口 50
2.8.4、连接状态--主机 54
2.8.5、连接状态--从机 55
2.8.6、连接事件关闭 57
2.8.7、窗口扩展 58
2.8.8、软件设计连接态流程图 60
2.9、空中接口包 62
2.9.1、广播通道PDU 62
2.9.1.1、Advertising PDUs 62
2.9.1.1.1、ADV_IND、ADV_NONCONN_IND、ADV_SCAN_IND 62
2.9.1.1.2、ADV_DIRECT_IND 66
2.9.1.2、Scanning PDUs 67
2.9.1.2.1、SCAN_REQ 67
2.9.1.2.2、SCAN_RSP 67
2.9.1.3、Initialing PDUS 68
2.9.1.3.1、CONNECT_REQ 68
2.9.2、数据通道PDU 68
2.9.2.1、LL Data PDU 69
2.9.2.2、LL Control PDU 70
2.9.2.2.1、LL_CONNECTION_UPDATE_REQ 72
2.9.2.2.2、LL_CHANNEL_MAP_REQ 73
2.9.2.2.3、LL_TERMINATE_IND 74
2.9.2.2.4、LL_ENC_REQ 75
2.9.2.2.5、LL_ENC_RSP 76
2.9.2.2.6、LL_START_ENC_REQ 77
2.9.2.2.7、LL_START_ENC_RSP 78
2.9.2.2.8、LL_UNKNOWN_RSP 78
2.9.2.2.9、LL_FEATURE_REQ 78
2.9.2.2.10、LL_FEATURE_RSP 79
2.9.2.2.11、LL_PAUSE_ENC_REQ 80
2.9.2.2.12、LL_PAUSE_ENC_RSP 80
2.9.2.2.13、LL_VERSION_IND 80
2.9.2.2.14、LL_REJECT_IND 82
2.9.3、连接态的数据包确认和重发以及多数据发送标志 84
2.9.3.1、序列号(SN) 84
2.9.3.2、预期序列号(NESN) 85
2.9.3.3、更多数据(MD) 85
2.9.3.4、SN、NESN和MD应用的例子 85
2.9.3.5、确认和重发的软件实现 89
2.10、直接测试单元(DTU) 91
2.10.1、UART测试接口 91
2.10.2、测试模式RADIO配置 92
2.10.3、发射机测试 93
2.10.4、接收机测试 94
2.10.5、命令和事件 95
2.10.5.1、命令 95
2.10.5.2、事件 97
2.10.5.2.1、测试状态事件 98
2.10.5.2.2、测试报告报文事件 98
2.10.6、DTU软件设计 99
2.10.7、NRF51822的测试结果 101
2.10.8、测试结果对应的命令和事件 104
2.11、主机控制接口(HCI) 108
2.11.1、物理接口 108
2.11.1.1、UART 109
2.11.2、逻辑接口—HCI包格式 110
2.11.2.1、命令数据包 110
2.11.2.2、事件数据包 112
2.11.2.3、数据包 114
2.11.3、命令和事件类型 115
2.11.4、HCI软件设计 125
2.11.5、HCI模拟数据传输 126
第三章 主机 130
3.1、逻辑链路控制和适配协议(L2CAP) 133
3.1.1、L2CAP信道 133
3.1.2、L2CAP数据包格式 134
3.1.3、低功耗信令信道包格式 135
3.1.3.1、命令拒绝 136
3.1.3.2、连接参数更新请求和响应 137
3.2、属性构成 140
3.2.1、属性句柄(Attribute Handle) 143
3.2.2、属性类型(Attribute Type) 144
3.2.3、属性值(Attribute Value) 146
3.2.4、属性许可(Attribute Permissions) 146
3.3、GATT服务器构成 148
3.3.1、服务 149
3.3.1.1、服务声明 150
3.3.1.1.1、服务声明格式 152
3.3.2、包含服务«Include» 153
3.3.3、属性类型分组 154
3.3.4、特性«Characteristic» 155
3.3.4.1、特性声明 156
3.3.4.1.1、属性值—特性性质(Characteristic Properties) 156
3.3.4.1.2、属性值—特性的属性句柄(Characteristic Value Attribute Handle) 157
3.3.4.1.3、属性值—特性的属性类型(Characteristic UUID) 157
3.3.4.2、特性值声明 157
3.3.4.3、特性描述符声明 158
3.3.4.3.1、特性扩展性质描述符 158
3.3.4.3.2、特性用户描述描述符 159
3.3.4.3.3、客户端特性配置描述符 159
3.3.4.3.4、服务器特性配置描述符 160
3.3.4.3.5、特性表示格式描述符 161
3.3.4.3.6、特性聚合格式描述符 163
3.4、属性协议(ATT) 164
3.4.1、通信协议方法 164
3.4.2、属性协议包格式 165
3.4.3、属性协议PDUs 165
3.4.3.1、交换MTU 166
3.4.3.2、找信息请求\应答(Find Information Request\Response) 167
3.4.3.3、按类型值查找请求\应答(Find By Type Value Request\Response) 169
3.4.3.4、按类型读请求\应答(Read By Type Request\Response) 171
3.4.3.5、读请求\应答(Read Request\Response) 174
3.4.3.6、大对象读请求\应答(Read Blob Request\Response) 176
3.4.3.7、多重读取请求\应答(Read Multiple Request\Response) 177
3.4.3.8、按组类型读取请求\应答(Read By Group Type Request\Response) 178
3.4.3.9、写请求\应答(Write Request\Response) 181
3.4.3.10、写命令(Write Command) 182
3.4.3.11、签名写命令(Signed Write Command) 183
3.4.3.12、准备写请求\应答(Prepare Write Request\Response) 和执行写请求\应答(ExecuteWrite Request\Response) 184
3.4.3.13、句柄通知(Handle Value Notification) 188
3.4.3.14、句柄指示\确认(Handle Value Indication\Confirmation) 189
3.4.3.15、错误应答 190
3.5、GATT规程和ATT协议映射 195
3.5.1、GATT规程 195
3.5.1.1、发现服务和特性 195
3.5.2、ATT协议与GATT映射表 196
3.6、安全管理( Security Manager (SM)) 205
3.6.1、加密做了什么和加密需求 205
3.6.2、加密相关计算公式 207
3.6.3、加密配对绑定过程 209
3.6.3.1、配对特征交换得到临时密钥(TK)值 211
3.6.3.1.1、Input和Output能力 213
3.6.3.1.2、Just Work:只工作 214
3.6.3.1.3、Passkey Entry:输入密码 215
3.6.3.1.4、Out of Band:带外 215
3.6.3.2、身份确认以及短期秘钥(STK)生产 216
3.6.3.2.1、身份确认值计算 216
3.6.3.2.2、短期秘钥(STK)值计算 217
3.6.3.3、特定密钥计算 218
3.6.3.3.1、长期密钥LTK计算 218
3.6.3.3.2、设备地址类型和身份解析密钥IRK 220
3.6.3.3.3、连接签名解析密钥CSRK 222
3.6.3.3.4、签名计算 222
3.6.4、加密标准AES-CCM 223
3.6.5、完整加密过程图表 226
3.6.6、安全管理传输协议 229
3.6.6.1、安全管理命令包格式 229
3.6.6.2、配对请求Pairing Request和配对应答Pairing Response 229
3.6.6.3、配对确认值Pairing Confirm 232
3.6.6.4、配对随机数Pairing Random 233
3.6.6.5、配对失败Pairing Failed 234
3.6.6.6、加密信息Encryption Information 235
3.6.6.7、主机鉴定Master Identification 235
3.6.6.8、身份信息Identity Information 236
3.6.6.9、身份地址信息Identity Address Information 237
3.6.6.10、签名信息Signing Information 238
3.6.6.11、安全请求Security Request 238
3.6.7、NRF51822加密硬件模块 239
3.6.7.1、电子密码本AES Electronic Codebook mode encryption 239
3.6.7.1.1、ECB程序设计 239
3.6.7.2、AES CCM Mode Encryption (CCM) 241
3.6.7.2.1、AES-CCM模块工作流程 241
3.6.7.2.2、AES-CCM模块加密过程 241
3.6.7.2.3、AES-CCM模块解密过程 242
3.6.7.2.4、CCM数据结构 243
2.6.7.2.5、AES-CCM模块要求RADIO的配置 244
2.6.7.2.6、加密包在RADIO中传输模式 245
2.6.7.2.7、解密包在RADIO中接收模式 245
3.6.7.3、快速地址解析模块(Accelerated Address Resolver (AAR)) 247
3.6.8、安全管理空中数据计算和分析 248
3.6.8.1确认值计算 249
3.6.8.2、第1次连接加密----配对绑定STK和SK计算 253
3.6.8.3、第2次连接加密----LTK和SK计算 256
================================ 欢迎加入 蓝牙BLE4.0协议研究 177341833 大家庭
================================
|