OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4902|回复: 23

关于IAP的操作,如何在APP程序下,实现在线升级IAP程序

[复制链接]

3

主题

14

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2017-7-12
在线时间
4 小时
发表于 2017-7-13 11:08:48 | 显示全部楼层 |阅读模式
6金钱
如题,关于IAP的操作,如何在APP程序下,实现在线升级IAP程序
1、程序已经执行到了flash 中的 APP程序,怎样可以将IAP程序升级?
2、只能考虑在线的情况,无法使用ISP,无法置位Boot0等硬件操作
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2016-7-23
在线时间
6 小时
发表于 2017-7-13 16:34:17 | 显示全部楼层
回复

使用道具 举报

38

主题

196

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1177
金钱
1177
注册时间
2015-11-9
在线时间
249 小时
发表于 2017-7-13 16:57:05 | 显示全部楼层
rmfckaka 发表于 2017-7-13 16:34
参考我的博客http://blog.csdn.net/u012348655/article/details/74213823

__set_CONTROL(0);     //特权模式,为什么要加这一句?一般裸机bootload不都是运行在特权模式吗,这里为什么还要重新设置一遍?
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2016-7-23
在线时间
6 小时
发表于 2017-7-13 19:00:24 | 显示全部楼层
shibinjie 发表于 2017-7-13 16:57
__set_CONTROL(0);     //特权模式,为什么要加这一句?一般裸机bootload不都是运行在特权模式吗,这里为 ...

你好,我是参考的http://www.openedv.com/forum.php ... 3&highlight=iap 7楼的回复
回复

使用道具 举报

8

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
264
金钱
264
注册时间
2013-9-5
在线时间
31 小时
发表于 2017-7-13 19:30:57 | 显示全部楼层
我是这样处理的:上电或重启,进入IAP,需要升级程序就升级,不需要就执行APP,APP中设置满足某条件就重启。
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2017-7-12
在线时间
4 小时
 楼主| 发表于 2017-7-14 11:26:12 | 显示全部楼层
kuanglf 发表于 2017-7-13 19:30
我是这样处理的:上电或重启,进入IAP,需要升级程序就升级,不需要就执行APP,APP中设置满足某条件就重启 ...

恩,不过我是想用APP 升级IAP固件
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2017-7-12
在线时间
4 小时
 楼主| 发表于 2017-7-14 11:27:04 | 显示全部楼层
rmfckaka 发表于 2017-7-13 19:00
你好,我是参考的http://www.openedv.com/forum.php?mod=viewthread&tid=104233&highlight=iap 7楼的回复

恩恩 目前我用的平台都是裸机的
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2017-7-12
在线时间
4 小时
 楼主| 发表于 2017-7-14 11:28:38 | 显示全部楼层
yklstudent 发表于 2017-7-13 11:08
接收指令后跳动IAP啊,然后就执行IAP升级啊

这个没太明白,能否详细表述一下,多谢啦,另外 我是要用APP程序 升级IAP固件 不是升级APP
回复

使用道具 举报

2

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
395
金钱
395
注册时间
2016-8-18
在线时间
147 小时
发表于 2017-7-17 06:04:03 来自手机 | 显示全部楼层
在app中加入iap功能,将iap程序偏移地址设为0,看看行不行
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2017-7-17 09:08:51 | 显示全部楼层
应该问如何用APP升级boot代码,这想法不错,不过设计好点的boot差不多也就够用了。
够用就是不管什么情况想进入升级就能进入升级,而不用再次使用官网的进行再次写boot。
我的boot设计就三个事件:
1 检测APP代码为空,自动就如boot(基本上是初次下载时APP才是空的)。
2 上电前长按某个按键,进入boot(APP崩溃无法运行时)。
3 APP跳转BOOT,使用SRAM标记,软重启,boot检测对应SRAM值(boot编译时关闭对SRAM初始化)。

当然除了第一种,boot对应2 3事件可以进入超时自动运行APP功能。
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2017-7-12
在线时间
4 小时
 楼主| 发表于 2017-7-17 16:03:38 | 显示全部楼层
狂奔的菜鸟 发表于 2017-7-17 06:04
在app中加入iap功能,将iap程序偏移地址设为0,看看行不行

我试一下
回复

使用道具 举报

19

主题

107

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2015-3-5
在线时间
44 小时
发表于 2017-7-17 21:11:52 | 显示全部楼层
我告诉你一个最简单的方法,软件重启。在App中写一段程序,在串口收到某一段特定的数据后,重启mcu
回复

使用道具 举报

25

主题

138

帖子

0

精华

高级会员

Rank: 4

积分
612
金钱
612
注册时间
2016-6-7
在线时间
59 小时
发表于 2018-9-19 10:58:03 | 显示全部楼层
DongInker 发表于 2017-7-17 09:08
应该问如何用APP升级boot代码,这想法不错,不过设计好点的boot差不多也就够用了。
够用就是不管什么情况 ...

你好,如果涉及到单片机的引脚控制,那在APP跳转到BOOT中时,要怎样保持单片机的引脚状态是不变的呢?(例如引脚控制一个继电器,APP正常运行时继电器吸合,boot升级程序时,也要保证继电器不会断开)
回复

使用道具 举报

25

主题

138

帖子

0

精华

高级会员

Rank: 4

积分
612
金钱
612
注册时间
2016-6-7
在线时间
59 小时
发表于 2018-9-19 11:00:06 | 显示全部楼层
阿拓 发表于 2017-7-17 21:11
我告诉你一个最简单的方法,软件重启。在App中写一段程序,在串口收到某一段特定的数据后,重启mcu

软件重启的代码是什么?我现在使用asm("JPF $8000"); //STM8芯片,发现无法执行新程序,只有断电重启才执行。
回复

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2015-8-5
在线时间
45 小时
发表于 2018-9-19 15:21:15 | 显示全部楼层
所谓IAP和APP,
其实都是存储在FLASH中的数据。

不管是在IAP中升级APP
还是在APP中升级IAP
都是利用串口把收到的数据写入FLASH中。

要想随意升级,需要自己写上位机和IAP。
在APP中增加串口代码,收到指令后执行把IAP代码写入指定FLASH区域
接收、校验完成后,再从刚才写入的FLASH区域拷入IAP区域。
回复

使用道具 举报

0

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2015-7-24
在线时间
21 小时
发表于 2018-9-19 17:05:53 | 显示全部楼层
嘴角的上弦月 发表于 2018-9-19 11:00
软件重启的代码是什么?我现在使用asm("JPF $8000"); //STM8芯片,发现无法执行新程序,只有断电重启才执 ...

不是0x8000000?
回复

使用道具 举报

25

主题

138

帖子

0

精华

高级会员

Rank: 4

积分
612
金钱
612
注册时间
2016-6-7
在线时间
59 小时
发表于 2018-9-19 17:10:03 | 显示全部楼层

STM8芯片是这个地址,STM32是0x8000000
回复

使用道具 举报

0

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2015-7-24
在线时间
21 小时
发表于 2018-9-19 17:16:23 | 显示全部楼层
嘴角的上弦月 发表于 2018-9-19 17:10
STM8芯片是这个地址,STM32是0x8000000

我以为你用的32
回复

使用道具 举报

25

主题

138

帖子

0

精华

高级会员

Rank: 4

积分
612
金钱
612
注册时间
2016-6-7
在线时间
59 小时
发表于 2018-9-19 17:39:09 | 显示全部楼层

下一步打算做32的升级
回复

使用道具 举报

0

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2015-7-24
在线时间
21 小时
发表于 2018-9-19 17:47:27 | 显示全部楼层
嘴角的上弦月 发表于 2018-9-19 17:39
下一步打算做32的升级

应用层都是一样的。8的调通了32的改下底层驱动之类的就差不多了。
回复

使用道具 举报

0

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2015-7-24
在线时间
21 小时
发表于 2018-9-19 17:50:04 | 显示全部楼层
嘴角的上弦月 发表于 2018-9-19 17:39
下一步打算做32的升级

还有就是中断重定向跟8的不太一样,32不同系列的中断重定向也有点小差异。
回复

使用道具 举报

25

主题

138

帖子

0

精华

高级会员

Rank: 4

积分
612
金钱
612
注册时间
2016-6-7
在线时间
59 小时
发表于 2018-9-19 17:50:09 | 显示全部楼层
xiaomodao 发表于 2018-9-19 17:47
应用层都是一样的。8的调通了32的改下底层驱动之类的就差不多了。

问题是现在8出了点问题,解决不了了
你有32的升级例程没?不知道开源资料里面哪个盘里有,还没找到
回复

使用道具 举报

0

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2015-7-24
在线时间
21 小时
发表于 2018-9-19 17:52:33 | 显示全部楼层
嘴角的上弦月 发表于 2018-9-19 17:50
问题是现在8出了点问题,解决不了了
你有32的升级例程没?不知道开源资料里面哪个盘里有,还没找到

有,只升级APP的
回复

使用道具 举报

25

主题

138

帖子

0

精华

高级会员

Rank: 4

积分
612
金钱
612
注册时间
2016-6-7
在线时间
59 小时
发表于 2018-9-19 18:03:41 | 显示全部楼层

传我一份呗
我只升级APP,看看它的格式
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 01:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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