有那些网站可以做担保交易的,美术馆网站网页设计方案,白酒pc网站建设方案,产业互联网平台本文基于沁恒CH58X 单片机的OTA功能 一键三连#xff0c;收藏点赞评论 私信可获取原文 #x1f4cb; 个人简介
#x1f496; 作者简介#xff1a;大家好#xff0c;我是喜欢记录零碎知识点的小菜鸟。#x1f60e;#x1f4dd; 个人主页#xff1a;欢迎访问我的 Ethern… 本文基于沁恒CH58X 单片机的OTA功能 一键三连收藏点赞评论 私信可获取原文 个人简介 作者简介大家好我是喜欢记录零碎知识点的小菜鸟。 个人主页欢迎访问我的 Ethernet_Comm 博客主页 支持我点赞收藏⭐️留言 系列专栏沁恒蓝牙mesh二次开发 格言写文档啊不是写文章重要的还是直白
OTA 下位机流程
下位机收到指令
【擦除】
收到数据帧 0x81 len xx xx xx xx // 1字节 cmd 1 字节长度 2字节 起始地址 2 字节 block 数量
执行动作 上位机发一帧数据下位机回应一帧ACK直到上位机发送完开始启动擦除
【编程】
收到 数据帧 0x80 len xx xx xx …… // 1字节 cmd 1 字节长度 2字节 地址 243 字节数据
执行动作 将接收到的数据一帧一帧的写到 APP2 的 flash 区域每写完一帧都和上位机回复ACK
【校验】
收到 数据帧 0x82 len xx xx xx …… // 1字节 cmd 1 字节长度 2字节 地址 243 字节数据
执行动作 依次读取 APP2 的 flash并校验直到结束期间每写完一帧都和上位机回复ACK
【发送信息】
收到数据帧 0x84 len xx xx xx …… // 1字节 cmd 1 字节长度 245 字节数据
执行动作 向上位机发送一些列信息
【编程结束】
收到数据帧 0x83 len xx xx xx xx // 1字节 cmd 1 字节长度 2 字节数据
执行动作 关中断、修改 flash 标志位软复位
下位机报文
【编程】
// 接收到一帧数据 写入 flash 向上位机发送 ack
// 0x80, 0xf0, 0x00, 0x01
// cmd 数据长度 240 起始地址 0x1000 236 字节的 flash 数据
IAP_PROM: 00027000 len:240
0x80, 0xf0, 0x00, 0x01, 0x6f, 0x00, 0xc0, 0x74, 0x90, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x20, 0x00, 0x20, 0x76, 0x22, 0x00, 0x20, 0xa9, 0xbd, 0xf9, 0xf5, 0x94, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x20, 0x00, 0x20, 0x98, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x20, 0x00, 0x20, 0xa0, 0x20, 0x00, 0x20, 0xa2, 0x20, 0x00, 0x20, 0xa4, 0x20, 0x00, 0x20, 0xa6, 0x20, 0x00, 0x20, 0xa8, 0x20, 0x00, 0x20, 0xaa, 0x20, 0x00, 0x20, 0xac, 0x20, 0x00, 0x20, 0xae, 0x20, 0x00, 0x20, 0xb0, 0x20, 0x00, 0x20, 0xb2, 0x20, 0x00, 0x20, 0xb4, 0x20, 0x00, 0x20, 0xf2, 0x22, 0x00, 0x20, 0xb8, 0x20, 0x00, 0x20, 0xba, 0x20, 0x00, 0x20, 0xbc, 0x20, 0x00, 0x20, 0xbe, 0x20, 0x00, 0x20, 0xc0, 0x20, 0x00, 0x20, 0xc2, 0x20, 0x00, 0x20, 0xc4, 0x20, 0x00, 0x20, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0xb7, 0x17, 0x00, 0x40, 0x93, 0x06, 0x70, 0x05, 0x23, 0x80, 0xd7, 0x04, 0x13, 0x07, 0x80, 0xfa, 0x23, 0x80, 0xe7, 0x04, 0x01, 0x00, 0x01, 0x00, 0x03, 0xc6, 0xb7, 0x04, 0x13, 0x76,
PROM:send ack to phone // 地址0x10f0
IAP_PROM: 000270f0 len:240
0x80, 0xf0, 0x0f, 0x01, ……………………………………………………
PROM:send ack to phone
【校验】
IAP_VERIFY: 00027000 len:240
0x82, 0xf0, 0x00, 0x01, 0x6f, 0x00, 0xc0, 0x74, 0x90, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x20, 0x00, 0x20, 0x76, 0x22, 0x00, 0x20, 0xa9, 0xbd, 0xf9, 0xf5, 0x94, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x20, 0x00, 0x20, 0x98, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x20, 0x00, 0x20, 0xa0, 0x20, 0x00, 0x20, 0xa2, 0x20, 0x00, 0x20, 0xa4, 0x20, 0x00, 0x20, 0xa6, 0x20, 0x00, 0x20, 0xa8, 0x20, 0x00, 0x20, 0xaa, 0x20, 0x00, 0x20, 0xac, 0x20, 0x00, 0x20, 0xae, 0x20, 0x00, 0x20, 0xb0, 0x20, 0x00, 0x20, 0xb2, 0x20, 0x00, 0x20, 0xb4, 0x20, 0x00, 0x20, 0xf2, 0x22, 0x00, 0x20, 0xb8, 0x20, 0x00, 0x20, 0xba, 0x20, 0x00, 0x20, 0xbc, 0x20, 0x00, 0x20, 0xbe, 0x20, 0x00, 0x20, 0xc0, 0x20, 0x00, 0x20, 0xc2, 0x20, 0x00, 0x20, 0xc4, 0x20, 0x00, 0x20, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0xb7, 0x17, 0x00, 0x40, 0x93, 0x06, 0x70, 0x05, 0x23, 0x80, 0xd7, 0x04, 0x13, 0x07, 0x80, 0xfa, 0x23, 0x80, 0xe7, 0x04, 0x01, 0x00, 0x01, 0x00, 0x03, 0xc6, 0xb7, 0x04, 0x13, 0x76,
VERIFY:send ack to phone 【结束】
IAP_END
Image Flag 03下位机地址计算
比如说编程时上位机传输的地址为第一帧0x1000 第二帧0x10f0
实际编程时第一帧地址0x00027000 第二帧地址 0x000270f0
计算
0x00 0x01 两个u8 转u16 小端格式存储 变为 0x1000 这是 Jump_IAP 的结束地址左移4位变为u32 0x0000_1000偏移 IMAGEA 地址 0x0000_1000 152K 0x00027000