找回密码
 立即注册
查看: 2349|回复: 16

STC8H-OTA-WIFI模块标准XMODEM协议透传升级问题

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:185
  • 最近打卡:2025-04-30 15:20:38

12

主题

58

回帖

936

积分

高级会员

积分
936
发表于 2023-9-12 17:36:04 | 显示全部楼层 |阅读模式
1.平台:STC8H8K64U

2.模块:小米WIFI模块
3.串口:串口2.2
4.问题:bootloader程序负责搬运APP2至APP1,不带其他功能
            APP1程序负责运行,并对接XMODEM协议进行固件的接收,然后写入到APP2区域内,均为内部flash
            需要解决的问题:1.bootloader程序如何跟app1拼接然后下载到mcu中,因为boot不带升级功能,所以要把app程序一并下载,后续升级就一个循环擦写
            不理解的地方:app固件如何生成,地址跳转前三个字节如何写入如何设置
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2023-9-12 22:06:54 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:185
  • 最近打卡:2025-04-30 15:20:38

12

主题

58

回帖

936

积分

高级会员

积分
936
发表于 2023-9-13 08:31:30 | 显示全部楼层
神*** 发表于 2023-9-12 22:06
深圳国芯人工智能有限公司-在线升级 (stcai.com)

这个例程我看了大佬,看不懂他的协议
主要是协议没有公开,我现在用的是模块集成好的标准协议,跟你们做的那个软件协议不一样
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:185
  • 最近打卡:2025-04-30 15:20:38

12

主题

58

回帖

936

积分

高级会员

积分
936
发表于 2023-9-13 11:04:34 | 显示全部楼层
按照思路我进行了如下操作:
首先:我的目的是在app1操作app2,在bootloader操作app1,因此我设置的用户EEPROM大小为64K
第一步:编写bootloader程序,判断xdata最后一位0x1ffc是否为升级标志,是的话擦除1,拷贝2到1,擦除2,跳转1;
第二步:编写app程序,设置程序起始地址 截图202309131100064463.jpg 设置中断向量 截图202309131100291862.jpg ,编译生成hex,将hex转为bin 截图202309131101135328.jpg ,通过软件,将bin文件进行拼接,将02 43 BD放置于0x1000地址,拼接完毕如下 截图202309131102033937.jpg
第三步:将bootloader程序与app程序进行拼接 截图202309131102561353.jpg 截图202309131103078297.jpg ,拼接完成后下载程序

运行结果:可以进入bootlader进行判断,然后进行跳转,跳转完之后,APP中的中断无法执行,修改验证,APP可以正常执行如下程序 截图202309131104194976.jpg


请教各位大佬,怎么分析下原因
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:185
  • 最近打卡:2025-04-30 15:20:38

12

主题

58

回帖

936

积分

高级会员

积分
936
发表于 2023-9-13 14:37:02 | 显示全部楼层
研究了一天例程,尝试多种组合终于发现,官方例程最重要的地方没有说明
使用官方的ispdemo,使用官方的升级软件,下载我自己的app程序,可以正常工作

最关键的地方如下: 截图202309131434185926.jpg


我将自己的bootloader添加中断向量表后,可以正常跳转并且正常进入中断
正在测试app1写入app2后跳转copy,稍后反馈
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:185
  • 最近打卡:2025-04-30 15:20:38

12

主题

58

回帖

936

积分

高级会员

积分
936
发表于 2023-9-13 14:46:19 | 显示全部楼层
测试完成,功能正常,可以正常升级
截图202309131446167138.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-04-16 17:09:20

1

主题

30

回帖

243

积分

中级会员

积分
243
发表于 2023-11-15 17:31:52 | 显示全部楼层
楼主可以共享代码学习一下吗?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-04-18 11:04:27

0

主题

7

回帖

54

积分

注册会员

积分
54
发表于 2024-4-1 11:28:18 | 显示全部楼层
留个记号
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:185
  • 最近打卡:2025-04-30 15:20:38

12

主题

58

回帖

936

积分

高级会员

积分
936
发表于 2024-4-16 11:21:36 | 显示全部楼层
总结一下
1、boot里做搬运,地址是0,大小很小0x600
2、做双区,app1和app2,大小为(64k-boot)/2
3、app1运行升级程序,接收处理,将bin写到app2,校验成功之后重启进入boot搬运
4、keil设置两个地方,一个是epromstart为boot大小+3,这个3为stc的跳转地址长度,固定的,还有就是epromsize是app大小;第二个地方就是interrupt vectors at address,这个地址为app起始地址,就是boot大小0x600,可以根据自己写的修改;
5、剩余的就是处理app的bin,keil生成的中间一部分是空白,保留前面3个地址内容,删除中间ff,找到app1起始地址0x603那里,保存下来
6、合并boot+app,将boot生成的bin与app处理完的bin合并起来就可以烧录了
7、ota,wfi模块通过协议将app.bin发送,在app1里处理就行了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:185
  • 最近打卡:2025-04-30 15:20:38

12

主题

58

回帖

936

积分

高级会员

积分
936
发表于 2024-5-24 16:21:46 | 显示全部楼层
我又回来了,由于功能增加,单片机容量已经用到40k,不足以放下ab区的双区OTA,故增加了外部flash来做备份和升级;
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 04:01 , Processed in 0.145705 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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