Android APP CC2640R2F OTA 流程

news/2025/3/15 14:30:33/

Android APP CC2640R2F OTA 流程

1.镜像(bin文件)验证

a.
ffc1写入(10:00)打开通知
ffc2写入(10:00)打开通知
ffc5写入(10:00)打开通知
发送CMD 01(1byte)到ffc5,返回3byte(第二个字节是返回需要修改的mtu大小
OAD_BLOCK_SIZE)
Get OAD Block Size Command 0x01 0 None
Get OAD Block Size Response 0x01 3 OAD_BLOCK_SIZE
b.校验header内容:

OAD Image Identification Value
1.鉴定OAD镜像是否是 CC2640R2F is 0x20474D492044414f (ASCII for ‘OAD IMG ‘) 2.让OAD Target快速识别镜像的合法性。
3.Provides a means for the BIM to find the flash page containing the start of OAD image for on-chip OAD
BIM Version
BIM判断版本是否正确
Image Header Version
检验镜像是否正确
Image Information
提供了关于OAD图像状态和类型的详细信息,如下:

Image Length
镜像的总长度, For On-chip OAD, the word size of the CC2640R2F is fixed.is
defined by EFL_OAD_ADDR_RESOLUTION
Software Version
用于跟镜像中包含的应用程序和堆栈修改

C.镜像校验成功
镜像校验成功在FFC1中返回一个字节(00 success),Start OAD’ command.需要开启
OTA,FFC5.开启成功后OAD Target进入configuration state,同时返回cmd 12和所需的第一
block number序列号,这时开始发送第一个block给OAD Target
Start OAD Process Command 0x03 0 None
Start OAD Process Response 0x03 5 Byte 0: Command ID (0x03)Byte 1-3: Block Number

2.镜像block 发送

确保通知是打开的
镜像块写入Char响应,CMD(0x12)
Image Block Write Char Response 0x12 6 Byte 0: Command ID (0x12)Byte 1: Status of the previous block receivedByte 2-5: Block number

byte1 的值:

3.根据发送block成功后会返回,第一个字节是请求FFC2发送Block number
4.如果整个bin文件的下载完成,OAD Target设备将响应状态码OAD_DL_COMPLETE和Block
number设置为0xFFFFFFFF。
5.bin文件下载完成后,收到OAD_DL_COMPLETE,需要发送0x04使OTA Target进行验证。
验证成功OTA Target会进行烧录,烧录成功后20s会断开蓝牙,进行重新连接
Enable OAD Image Command 0x04 0/4 LEN = 0: noneLEN = 4: Image type and image number of image to be downloaded

Enable OAD Image Response 0x04 2 Byte 0: Command ID (0x04)Byte 1: Return Status

3.OTA 完成

   接收完整镜像像后,如果CRC匹配会跳转到‘End’状态。

然后应用程序检查是否有更多的镜像等待下载。如果有,应用程序将返回到镜像下载状态。如果
没有更多的镜像下载,OAD Target将检查下载的镜像是否应该被复制到内部的flash中。
如果已接收到启用的OAD Target命令,则新的镜像将被复制到内部闪存中,设备将被重新设置。如果没有,当前驻留的镜像将继续正常执行。

4.OTA 时序图

http://www.plantuml.com/plantuml/uml/fLHDJnD163upl-8zwg59CU7IM4AXHKaW6Dh4U2BJtIcTkDsjixEed0eHYX_b8nW-eC6GKEI2U294GNwCdQNz5yxEbjrMOQFnqcpVZ-TzdkUTcI6ROyQTae6mnkaivWHIvJAWYHUSPmcRfHg93NgHnF1u1fooZZb6HTEITTOiOQ1I89OFtSqJT_jKh1srZkP5hNhzxJF21WVRqJHYsmN700tR1A4-sH4Rj7reIEZMIzEmi0vvQYAPUXYB1JalH4ozhm_ff9TTCWbZ9kKK6tGESsgPa4mY1Jp9SRe3ILX2L9V4OTNICMAau1EM1Jc6PmX784wsHVtOhTV4kuFHqNGSUTD0LYA4Ud1YWs6R5FkZ8glxGIpjYCL6kreJQwTY_RBv_R1rjISZaxcKUtmWBbRlC220acm3L9tQccMQHEF8rnp1e7Msw6wTYRKLz-s6k91aHkA-YERv–lTD-tAxlMdHc-_jBKBW3E7_8uVPYNU03mY72PJQHWsBEqvPEaSWH6hLCBIe969DCHVnVkZ9dIrJH6xR9as2ViYfCdP_MhkM4d-XyV4gr0–fz0LRo0gU4mqcskDFOFGhsu8PDEMpIF0SXop7mNdZ3BQxYn84gvJzpN_vHHBdKNCGjcAorvbGt9HnDve2Zumgr2mIOIu3Nm8kdWc4ufJnWWOjWteOu_KJp_0lYU7-o-QX2_3zxvH6hQhKlvr-twUEf5ONIco96ut0XQt9M6MDr2uii7HQbviTkw-YZszf54cKwDJsLIwMVJsLngAfT98t6quExNc-Srxo5QtcdNA_8jGlA2kfjVnUfwkpAlG7vM5jH5zqP67vc1yCZSDa-kyhPuX04P4-SD4bWGt2a6A2ZgRe04IAPtvi97mr-79NV7_kimgLqCoH-dPFm2

5.http://software-dl.ti.com/lprf/simplelink_cc2640r2_latest/docs/blestack/ble_user_guide/html/ble-stack-3.x-guide/reference.html
TI 官方OTA 介绍

文章来源:https://blog.csdn.net/walter247443819/article/details/80336505
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/news/490051.html

相关文章

全志A40i,linux v4l2驱动 ioctl的调用过程

最近在移植 A40i的红外摄像头驱动,把所研究的记录下来。 step1: v4l2-dev.c 通过v4l2_ioctl 的 ret vdev->fops->ioctl(filp, cmd, arg); 跳转到 step2 static const struct file_operations v4l2_fops {....unlocked_ioctl v4l2_ioctl,... }…

摄像头V4L2获取的YUY2格式转YUV420格式

摄像头取出格式YUY2(YUYV) Y U00Y V00Y U01Y V01Y U02Y V02Y U03Y V03YU10YV10YU11YV11YU12YV12YU13YV13YU20YV20YU21YV21YU22YV22YU23YV23YU30YV30YU31YV31YU32YV32YU33YV33 转为 NV12(YUV420) 这里的转化主要是我的电脑软件pyuv 只支持yuv420格式的预览…

正点原子imx6ull开发板视频监控项目实战系列5: 摄像头(V4L2)和声卡(ALSA)接口简介

1、摄像头: 1)、对于不同的摄像头,有不同的接口方式,eg:USB,CMOS等,但是他们都遵循同样的标准-V4L2. 所以,不同的APP可以使用同样的API访问不同硬件接口的摄像头。 2)、摄像头参数:…

Linux V4L2 源码分析

Linux V4L2 源码分析 前言层次必要的数据结构源码分析ov2640.c 前言 Video For Linux 2真的是一个很复杂的框架,抽象倒不是它复杂的原因,是因为耦合了其他框架的内容,导致要掌握V4L2必须得需要一个非常广的内核层知识面,以及Linu…

使用Linux的V4L2读取摄像头数据+Opencv图像处理

一、前言:对于Linux系统的V4L2的使用和JPEG软件解码库解码过程,大家可以另行查找和阅读相关的博文。 二、正题:使用Linux系统的V4L2接口读取USB摄像头数据,图像格式一般为MJPEG,使用JPEG软件解码库解码成RGB格式的数据…

一些新技术学习心得

实战为主: 看再多的文章不如敲几行代码。 推进度: 学新东西,遇到不懂的不要死磕,直接跳过去。 对应阶段:从0到入门,从啥都不懂到会的过程不要以原理为借口,长时间进度停滞。 关于原理&#…

我们如何实现业务操作日志功能?

1. 需求 我们经常会有这样的需求,需要对关键的业务功能做操作日志记录,也就是用户在指定的时间操作了哪个功能,操作前后的数据记录,必要的时候可以一键回退,今天我就为大家实现这个的功能,让大家可以直接拿…

Spark 4/5

4. 启动Spark Shell编程 4.1 什么是Spark Shell spark shell是spark中的交互式命令行客户端,可以在spark shell中使用scala编写spark程序,启动后默认已经创建了SparkContext,别名为sc 4.2 启动Spark Shell Shell /opt/apps/spark-3.2.3-bi…