[STM32F0]

IAP 应用程序

[复制链接]
1821|13
手机看帖
扫描二维码
随时随地手机跟帖
wenshijian|  楼主 | 2017-12-21 09:11 | 显示全部楼层 |阅读模式
我做了个IAP应用程序,WINDOWS版本的,这里发出来大家试试。
网络上全是讲解IAP原理的,什么跳转什么设置还有什么RAM配置。。。就没有看到谁把IAP的应用界面做出了,所以我就不服,就要做别人没做过的。当然IAP是用的串口UART途径做的升级,IAP代码本身占用的空间也小很多。毕竟F0的FLASH还是有点小,不适合普通的YMODE,XMODE协议。
最重要的是,APP跳转到IAP的标志是采用BKP寄存器,而不是占用1K FLASH。

STM32F0xIAP应用程序

STM32F0xIAP应用程序

这里就发出来大家测试下,看有没有BUG之类的。反正我是测试了1000多次了。

软件介绍帖:
http://blog.csdn.net/triv2009/article/details/78706013

资源帖: IAP.BIN文件及文件合并工具都在里面
http://download.csdn.net/download/triv2009/10166626
heisexingqisi| | 2017-12-21 09:29 | 显示全部楼层
软件自己开发的?学习学习。

使用特权

评论回复
yklstudent| | 2017-12-21 10:27 | 显示全部楼层
分享一个升级软件有什么用,让他们帮你测试软件????
真想分享,就把IAP软件的源代码工程也分享出来

使用特权

评论回复
aozima| | 2017-12-21 10:38 | 显示全部楼层
因为“人家”都用Ymodem这类协议,上位机软件大家啊

使用特权

评论回复
憨厚诚实大叔| | 2017-12-21 10:42 | 显示全部楼层
最重要的是,APP跳转到IAP的标志是采用BKP寄存器,而不是占用1K FLASH。
楼主使用备用电池电源了么,楼主有没有考虑到升级一半掉电的情况呢。
另外不是没人做,只是一般只会在工作项目中做,哪些是不能发上来的。

使用特权

评论回复
heisexingqisi| | 2017-12-21 11:34 | 显示全部楼层
思路不错,学习下。

使用特权

评论回复
wahahaheihei| | 2017-12-21 13:57 | 显示全部楼层
如果可以提供源码就更好了,这个软件什么编写的?

使用特权

评论回复
wenshijian|  楼主 | 2017-12-21 14:35 | 显示全部楼层
憨厚诚实大叔 发表于 2017-12-21 10:42
最重要的是,APP跳转到IAP的标志是采用BKP寄存器,而不是占用1K FLASH。
楼主使用备用电池电源了么,楼主有 ...

BKP寄存器只是复位之后用于判断 IAP/APP支线的,时间很短,几乎可以忽略。其他时间用不着的啊。
而且APP跳转到IAP根本就不需要断电,直接软件复位就行。

使用特权

评论回复
憨厚诚实大叔| | 2017-12-21 14:45 | 显示全部楼层
wenshijian 发表于 2017-12-21 14:35
BKP寄存器只是复位之后用于判断 IAP/APP支线的,时间很短,几乎可以忽略。其他时间用不着的啊。
而且APP ...

在升级传数据过程中,断电了怎么办

使用特权

评论回复
wenshijian|  楼主 | 2017-12-21 14:57 | 显示全部楼层
本帖最后由 wenshijian 于 2017-12-21 14:58 编辑
憨厚诚实大叔 发表于 2017-12-21 14:45
在升级传数据过程中,断电了怎么办

你怎么不回复简单点的,比如楼主好赞,点子好棒,求开放源码啊什么的,我也好懒得回复了。。。
既然问起来,那么我就认真点回复你:
升级过程中断电,这其实很难处理。因为需要很高的代码冗余度才能尽量避免断电导致的错误,就算使用RAM空间来做缓存也无法完全避免断电导致的意外。而这些冗余处理必然导致IAP代码段占用很大的空间,所以。。。F0系列的我压根就没有处理断电导致什么意外。
这样的回复满意不? 呵呵,有空我们私聊,这问题我在F1系列的IAP是有处理的,但是F0系列的我们是用的STM32F030F4芯片,空间不够根本没法实现太多功能。

使用特权

评论回复
憨厚诚实大叔| | 2017-12-21 15:23 | 显示全部楼层
wenshijian 发表于 2017-12-21 14:57
你怎么不回复简单点的,比如楼主好赞,点子好棒,求开放源码啊什么的,我也好懒得回复了。。。
既然问起来 ...

用FLASH做标记位就可以很简单的解决这个问题,把擦除标记位的操作放到APP层,只有烧了正确的APP数据并跳转后才能擦除标记位,不然就永远停在IAP层等待数据更新。

使用特权

评论回复
Leeone| | 2017-12-22 13:30 | 显示全部楼层
类似软件我们公司已经有了

使用特权

评论回复
wenshijian|  楼主 | 2017-12-23 09:31 | 显示全部楼层
本帖最后由 wenshijian 于 2017-12-23 09:33 编辑
憨厚诚实大叔 发表于 2017-12-21 15:23
用FLASH做标记位就可以很简单的解决这个问题,把擦除标记位的操作放到APP层,只有烧了正确的APP数据并跳 ...

其实我最担心的是APP跑不起来,而不是升级不了,毕竟升级功能只是个很有必要的附属功能。
因为APP跑不起来会被客户投诉,那是很糟心的。
而只是掉电原因进不去IAP段,客户完全可以重新上电重新进行IAP升级操作,因为BKP寄存器是掉电丢失的。
用FLASH空间做IAP标志的方式就是比较容易进入IAP升级,但是也很容易因为升级失败导致客户投诉问题。
还有,我的前提是FLASH空间小,类似STM32F0xxF4之类FLASH只有16K空间,能省则省。
即使采用BKP方式,也很少因为掉电而导致升级失败的,除非是人为因数。

使用特权

评论回复
wenshijian|  楼主 | 2017-12-26 16:34 | 显示全部楼层
用FLASH做标记还有个毛病,就是通用性不好,比如STM32F0xx6,STM32F0xx8 FLASH空间是32K,64K,就必须修改IAP代码里面关于升级标志的FLASH地址设定。
但是BKP寄存器方式就不需要,大部分都能用。因为BKP寄存器的位置是固定的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:原车屏升级 IIC解码 电容屏IIC解码 IIC转UART

11

主题

149

帖子

4

粉丝