广州大彩串口屏论坛_大彩开发者交流论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3482|回复: 4

OTA升级数据包包含结束标志

[复制链接]

1

主题

3

帖子

23

积分

新手上路

Rank: 1

积分
23
发表于 2023-6-1 12:09:32 | 显示全部楼层 |阅读模式
按照官方给的OTA升级方法一直失败,数据包发送到2%就卡住了,经检查是数据包中包含了结束标志(FF FC FF FF)。
打开ota.bin查看二进制发现数据前面有不少结束标志(FF FC FF FF),解决方法就是发送时特定字节(FF FC FF FF)的第一个FF用00代替并记下该字节索引。
替换完成再把数据和索引一起发给屏幕,lua会根据索引值恢复数据。

发送端C语言:
u32_t n = 0;
for (u32_t i = 0; i <= (size - 4); )
{
        if (sLCDUpdatePacket.pucPacket[i + 0] == 0xFF && sLCDUpdatePacket.pucPacket[i + 1] == 0xFC &&
                sLCDUpdatePacket.pucPacket[i + 2] == 0xFF && sLCDUpdatePacket.pucPacket[i + 3] == 0xFF)
        {
                sLCDUpdatePacket.pucPacket[i + 0] = 0x00;
                sLCDUpdatePacket.usRepIndex[n++] = i + 1;     // 记下索引,索引从1开始
                i = i + 4;
        }
        else
        {
                i++;
        }
}


接收端lua语言:
for i = 0, 49 do
        local repIndex= recvByteBuf[offset + (i * 2) + 6] | (recvByteBuf[offset + (i * 2) + 7] << 8)
        if (repIndex > 0) then
                recvByteBuf[offset + 106 + repIndex - 1] = 0xff
        end
end
ota_packet(sn, size, recvByteBuf, offset + 106)


回复

使用道具 举报

2

主题

1253

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
12619
发表于 2023-6-1 13:43:35 | 显示全部楼层
你用的升级指令指令是EE 06 ....... FF FC FF FF?
Easy doesn't enter into Grown-up life
成年人的生活里面没有“容易”二字
回复

使用道具 举报

1

主题

3

帖子

23

积分

新手上路

Rank: 1

积分
23
 楼主| 发表于 2023-6-2 18:48:09 | 显示全部楼层
If后要接end 发表于 2023-6-1 13:43
你用的升级指令指令是EE 06 ....... FF FC FF FF?

我是用 EE B5 自定义指令发送数据的,官方给的OTA升级例子也是利用这个指令(官方例子指令写的是 EE B6 可能是写错了吧,因为手册上写的是 EE B5)。升级操作都是通过lua来实现的。

大彩官方的指令协议只定义了起始标志 EE 和结束标志 FF FC FF FF,没有字段标明包的字节数,如果数据包中有结束标志  FF FC FF FF 就会造成包数据接收错误。

我现在的做法是把包数据中包含结束标志的地方用其他数据替代并记下该数据索引,然后在lua端再恢复数据。
回复

使用道具 举报

2

主题

1253

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
12619
发表于 2023-6-5 08:54:34 | 显示全部楼层
ginny20 发表于 2023-6-2 18:48
我是用 EE B5 自定义指令发送数据的,官方给的OTA升级例子也是利用这个指令(官方例子指令写的是 EE B6 可 ...

EE B5是自由串口协议的帧头,OTA升级用这个指令升级,数据位有FF FC FF FF是会被当成帧尾的。
OTA升级要用的是EE B6的帧头,这个B6可以用来排除数据中出现FF FC FF FF的问题
Easy doesn't enter into Grown-up life
成年人的生活里面没有“容易”二字
回复

使用道具 举报

1

主题

3

帖子

23

积分

新手上路

Rank: 1

积分
23
 楼主| 发表于 2023-6-8 17:59:47 | 显示全部楼层
If后要接end 发表于 2023-6-5 08:54
EE B5是自由串口协议的帧头,OTA升级用这个指令升级,数据位有FF FC FF FF是会被当成帧尾的。
OTA升级要 ...

谢谢回复,我现在已经改用 EE B6 指令了,这个指令后面有长度可以避免内容与结束字符冲突问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|广州大彩串口屏论坛_大彩开发者交流论坛

GMT+8, 2024-11-21 22:27 , Processed in 0.050152 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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