找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5812|回复: 15
收起左侧

STC8单片机远程升级

  [复制链接]
ID:99580 发表于 2019-3-7 15:17 | 显示全部楼层 |阅读模式
STC8A8K64,片内eeprom通过官方的ISP程序设置为64k,升级包远程发送到片外flash,有40多k。升级代码在0xE000处。原理是用升级代码擦除0xE000以下的空间后再把升级包写进去,重启完成升级。
首先擦除片内eeprom,从0x0000开始,一直擦到0x4e00所在扇区都没问题,下个擦除地址是0x5000,就死机了。
要是升级包小于20k就没问题,擦除写入重启一切正常。只要操作0x5000就死机。问了官方技术支持,说这种升级方式没问题。为什么0x5000死机不知道,反正这种方式没问题,只要设置了64k的eeprom,整个代码空间都可以擦,小心别擦到自己就行。
回复

使用道具 举报

ID:99580 发表于 2019-3-7 15:18 | 显示全部楼层
死机跟看门狗没关系
回复

使用道具 举报

ID:123289 发表于 2019-3-8 08:50 | 显示全部楼层
要点:
自己的程序中负责升级的部分不是很长,运行升级程序时,先将这部分程序复制到擦除不到的区域,而后跳再去运行升级,这样就可以了。
好就是前面最后一句话:“小心别擦到自己就行。”
回复

使用道具 举报

ID:99580 发表于 2019-3-8 11:33 | 显示全部楼层
本帖最后由 isis69 于 2019-3-8 11:55 编辑

主程序地址是从0到A370,负责升级的程序地址从E000到E16B。升级时程序在E000到E16B执行,没有使用函数和中断,总中断也关了,看门狗也关了。
现在小于20k的程序,远程升级是成功的。
回复

使用道具 举报

ID:99580 发表于 2019-3-8 11:37 | 显示全部楼层
各个程序段的地址在主程序运行时可以通过串口命令行读代码区内容来查看,验证过的。
回复

使用道具 举报

ID:301968 发表于 2019-4-21 14:40 | 显示全部楼层
楼主能详细说说细节吗,我也在研究这个问题 ,总不成功,是不是程序写错了。
回复

使用道具 举报

ID:99580 发表于 2019-4-23 11:55 | 显示全部楼层
邓文雄ABC 发表于 2019-4-21 14:40
楼主能详细说说细节吗,我也在研究这个问题 ,总不成功,是不是程序写错了。

原理就是整个代码空间都设置为flash空间,用户程序可以在运行时修改flash内容。
具体办法:收到的升级代码放在外部flash,用户程序擦除内部flash(即旧代码),将外部flash的升级代码写入内部falsh,最后重启。
用户程序分成两部分,正常的应用部分和升级部分。两部分分开存放,升级部分只擦除、写入应用部分的flash空间。
回复

使用道具 举报

ID:400402 发表于 2019-10-15 11:07 | 显示全部楼层
我也用的是这个芯片;研究了两天两夜不合眼;终于搞定;有成就感 ;程序有33K;先把HEX文件转成BIN文件;经测试;BIN文件传输容易乱码;于是转成了TXT文件;但是转成TXT后;文件大了一倍;放到FTP服务器上;监控程序从TFP服务器上下载;保存到片外FLASH;用的是W25Q32;下载完成后;再升级;完全没问题;升级监控程序也可以用中断;但是不能和主程序重叠(如用户程序用了定时0;监控程序就不能用定时0;不然跳转会出问题);升级监控程序我只用了定时0;主要是因为定时0的跳转地址离开头最近;空间利用率最高;用定时器0模拟了串口1和串口2;串口1连接电脑方便调试;串口2连接接GSM模块;用于下载升级包;在擦除和写入第一他扇区时要关中断;把升级监控程序的主跳转地址和定时器0的跳转地址重新写入数组;写完第一个扇区就可以开中断了;中断的跳转地址都放在第一扇区的前面几行;
回复

使用道具 举报

ID:400402 发表于 2019-10-15 11:18 | 显示全部楼层
我也是用的这个芯片;研究了两天两夜没合眼;终于成功了;
用户程序有33K;把HEX文件转成BIN;经测试发现BIN文件传输容易出现乱码;后转成TXT文件;但转换后文件大了一倍;但是传输稳定;把升级文件放到FTP服务器上;升级监控程序通过GSM连接FTP服务器;下载升级文件后;存储在片外FLASH;我用的是W25Q32;全部下载完成后;需要将数据转成16进制;然后才能写入;升级监控程序也可以使用中断;只要不和用户程序重叠就可以;监控升级程序我用了定时器0;使用定时器0模块了串口1和串口2;串口1连接电脑方便调试;串口2连接GSM模块下载升级文件;在擦除第一扇区前一定要关中断;写入第一扇区数据后;就可以开中断了;因为中断跳转地址都放在第一扇区的前面几行;写入第一扇区时;一定要将升级监控程序的主跳转地址和定时器0的跳转地址重写进去;不然升级控制程序将被破坏;
回复

使用道具 举报

ID:144776 发表于 2019-10-17 21:54 | 显示全部楼层
moneylhc 发表于 2019-10-15 11:18
我也是用的这个芯片;研究了两天两夜没合眼;终于成功了;
用户程序有33K;把HEX文件转成BIN;经测试发现B ...

佩服!佩服!
回复

使用道具 举报

ID:154265 发表于 2021-1-5 14:48 | 显示全部楼层
你好!能否分享一下老大你这个成功的硬件和软件,兄弟也想学习一下
回复

使用道具 举报

ID:154265 发表于 2021-1-5 14:52 | 显示全部楼层
程序远程升级,兄弟也想学一下,能否赏赐兄弟一下成功的硬件和软件资料,叩谢!
回复

使用道具 举报

ID:154265 发表于 2021-1-5 14:52 | 显示全部楼层
最好把资料发帖里,共同分享一下!
回复

使用道具 举报

ID:414556 发表于 2021-1-5 22:53 | 显示全部楼层
设置接收校验,如果错了重传
回复

使用道具 举报

ID:866290 发表于 2022-7-21 21:42 | 显示全部楼层
moneylhc 发表于 2019-10-15 11:07
我也用的是这个芯片;研究了两天两夜不合眼;终于搞定;有成就感 ;程序有33K;先把HEX文件转成BIN文件;经 ...

分析下软件吧,我们学习下。
回复

使用道具 举报

ID:879348 发表于 2022-7-22 08:24 | 显示全部楼层
没什么问题的,认真检查写地址
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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