迪文科技论坛

 找回密码
 立即注册
搜索
查看: 1488|回复: 13

【提问】T5L如何做C51 OTA?

[复制链接]

1

主题

4

回帖

50

积分

注册会员

Rank: 2

积分
50
发表于 2021-6-28 20:15:32 | 显示全部楼层 |阅读模式
T5L试了可以SD卡升级或者串口一升级C51代码;但是我在C51中通过蓝牙接收到了Bin文件,已经存到用户变量区了,我该怎么通过0X06来OTA?还是T5L不支持OTA!!!
回复

使用道具 举报

3

主题

111

回帖

1831

积分

金牌会员

Rank: 6Rank: 6

积分
1831
发表于 2021-6-28 21:36:41 | 显示全部楼层
本身您通过蓝牙已经发到屏的变量数据空间,然后使用0X06接口,启动一次C51程序更新就可以了。
回复

使用道具 举报

0

主题

19

回帖

471

积分

中级会员

Rank: 3Rank: 3

积分
471
发表于 2021-6-28 21:44:15 | 显示全部楼层
把程序缓存到变量区域,直接按照规定写06就可以了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

1

主题

4

回帖

50

积分

注册会员

Rank: 2

积分
50
 楼主| 发表于 2021-6-29 10:22:19 | 显示全部楼层
dwin123456 发表于 2021-6-28 21:36
本身您通过蓝牙已经发到屏的变量数据空间,然后使用0X06接口,启动一次C51程序更新就可以了。 ...

bin我通过蓝牙下发时有校验和SumA,然后将整个bin写入0x8000开始的地址后,重新读出来计算一遍校验和SumB,将读出来计算的校验和SumB与 上位机发我的SumA相等后,执行toolOsBinUpdate(0x8000);然后toolReboot();板子重启,然后原程序不运行,也没运行下载的bin程序;
void toolOsBinUpdate(u32 DgusAddr){
        u8 temp[4]={0};
        temp[0] = 0x5A;
        temp[1] = 0xA5;
        temp[2] = (u8)(DgusAddr >> 8);
        temp[3] = (u8)(DgusAddr);
        write_dgus_vp(OS_UPDATE, temp, 2);
}
void toolReboot(void){
        u8 temp[4]={0};
        temp[0] = 0x55;
        temp[1] = 0xAA;
        temp[2] = 0x5A;
        temp[3] = 0xA5;
        write_dgus_vp(OS_REBOOT, temp, 2);
}
回复

使用道具 举报

1

主题

4

回帖

50

积分

注册会员

Rank: 2

积分
50
 楼主| 发表于 2021-6-29 10:23:18 | 显示全部楼层
古天乐桃源分乐 发表于 2021-6-28 21:44
把程序缓存到变量区域,直接按照规定写06就可以了

嗯,我是按照这个说明操作的,但是执行之后有问题;
回复

使用道具 举报

1

主题

4

回帖

50

积分

注册会员

Rank: 2

积分
50
 楼主| 发表于 2021-6-29 10:42:11 | 显示全部楼层
我的蓝牙协议,每次传输128字节,接收到后从0X8000变量区开始写,bin文件17167 字节,总共发135包,最后一包15字节,我用0x00补完整128字节;所以总共135包下发写入到0X8000开始的地址;


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0

主题

1

回帖

95

积分

注册会员

Rank: 2

积分
95
发表于 2021-6-29 11:47:55 | 显示全部楼层
本帖最后由 神秘の宅叔 于 2021-6-29 13:12 编辑

您好,您这边是用的串口1吗?波特率是用的961200,固定的通讯格式是采用迪文的5A A5帧头82/83指令
回复

使用道具 举报

1

主题

4

回帖

50

积分

注册会员

Rank: 2

积分
50
 楼主| 发表于 2021-6-29 14:07:45 | 显示全部楼层
问题已找到;地址偏移问题;
回复

使用道具 举报

0

主题

7

回帖

97

积分

注册会员

Rank: 2

积分
97
发表于 2022-6-17 10:36:01 | 显示全部楼层
   write_dgus_vp(OS_REBOOT, temp, 2);  这个函数内容是啥,我还不会怎么用 c 语言访问系统变量接口,看到了分享下呗,
回复

使用道具 举报

4

主题

309

回帖

2194

积分

金牌会员

Rank: 6Rank: 6

积分
2194
发表于 2022-6-17 22:54:43 | 显示全部楼层
liusha0906270 发表于 2022-6-17 10:36
write_dgus_vp(OS_REBOOT, temp, 2);  这个函数内容是啥,我还不会怎么用 c 语言访问系统变量接口,看到 ...

值,地址,长度
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-5-13 01:52 , Processed in 0.096527 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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