查看: 6759|回复: 0

[原创] 【经验分享】ble的otap协议分析

[复制链接]

该用户从未签到

715

主题

6374

帖子

0

超级版主

Rank: 8Rank: 8

积分
25234
最后登录
2025-8-20
发表于 2021-9-6 11:14:38 | 显示全部楼层 |阅读模式
本帖最后由 小恩GG 于 2021-9-6 15:36 编辑

      ble的otap协议分析

最近有小伙伴搞ble的otap搞得一头雾水,代码出了问题页不知道如何去查。对于像这样的通信协议,我们首先需要做的就是抓包,通过抓包,我们能很快的定位到底哪里出了问题。所以今天讲解一下NXP的otap协议。使用的板子是K32W-DK6的板子,例程使用的是otapc_att,使用wireshark和ble嗅探器抓到包,这个包是mcu和手机端的iot tool box的通信过程,需要参考的文档是sdk目录下的,Bluetooth Low Energy Application Developer's Guide.pdf, 下面我们来分析一下抓到的包。包一开始关于搜索服务的就不再看了。首先otap的第一条指令
1.PNG
最下面的Value就是协议了,我们下面要把它解析出来,参考文档,otap的指令有8个

2.PNG

我们看到Value开头是03,那么对应的就是New image info response command,这样我们就知道otap的第一条命令了
接着找到关于这条命令的详细描述
3.PNG
那么对应表格,我们就可以获得这条Value的含义
New image info response command  
03     |01 00    | 05 00 00 41 11 11 11 01 | 02 a1 05 00
         imageID     ImageVersion             ImageFileSize  

我们再分析一条,
4.PNG
那么首先就可以看出这是04命令,对应的就是Image block request command
再找一下命令具体描述
5.PNG
于是Value就被解析出来
04      | 01  00  | 00  00  00  00 | 00  f2  00  00 | f2  00       | 00                 | 04  00 |
cmdid      imageID   start pos           block size    chunk size    Transfer method   

以此类推,我们就可以获得协议发送过程。

有个小伙伴发现自己手机iot tool box没法传输otap数据,这时候我们怎么处理?首先还是抓包,我们发现前面的服务发现都没什么问题,如果出了问题,iot tool box是连都连不上的,焦点主要在otap协议上。然后仔细比对协议,发现了传输的问题。这是05命令,Image Chunk Command Parameters
6.PNG
它的otap协议传输,到这步都是正常的,这步是开始从手机发送image到mcu的第一条传输数据的指令,然而mcu返回了一个应答,正常应该没有应答的
7.PNG
07对应的是Error notification command,那么对照文档,就可以知道在05这条指令发生错误(也就是上面那条传输命令),0c代表着错误的代码
8.PNG
因为这条错误代码是从mcu发的,并且发的是0从,所以mcu代码里必然有关于0c到底是什么样的错误的定义,最终找到了这条解释,image too large
9.PNG
我们最终定位到了这里,当然那个小伙伴的问题并不是这么简单,还需要继续深挖哪里产生了too large错误。但是通过这些协议的解析是可以很有效的帮助开发ble的otap协议的。总结一下就是这样,OTAP一次完整传输就是这四个部分。
OTAP传输过程.png

敬请期待其它关于otap的文章



回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-8-21 11:47 , Processed in 0.076440 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表