OpenEdv-开源电子网

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

关于STM32的IAP和APP之间跳转升级的问题

[复制链接]

3

主题

9

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2014-4-29
在线时间
1 小时
发表于 2014-12-5 17:50:09 | 显示全部楼层 |阅读模式
5金钱
原子大哥, 我买了你的MINI战舰开发板. 目前正在做一个项目. 需要用到IAP功能

看了MINI板的IAP介绍和源码. 结合我的项目. 我有几个疑问想请教

1:  看战舰开发板的IAP例子.  IAP和应用程序是2个keil工程的.  这个能合并到一个KEIL工程里吗?

2: 如果不能开机升级的话. 有什么工具可以把IAP和应用程序都烧录到一个新的MCU里呢?


总的来说.我是希望在一个工程里实现IAP和应用部分. IAP和应用代码部分可以互相跳转. 原子哥能给个思路吗?


以上问题暂时弄清楚了.  下面还有个问题请教:

如果我要在APP程序执行的时候. 跳转到IAP程序来更新MCU. 

那跳转过去后. 要拿什么来判断是否更新呢?(因为是2个工程.全局变量都都没办法共享);

最佳答案

查看完整内容[请看2#楼]

1.最好分开两个工程,APP一个工程,Bootloader另一个工程。 2.两个工程编译都编译成BIN文件,然后用Bin文件合并工具将两者合并,再一次烧录进MCU里面。或者可以使用STVP指定地址烧录
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

702

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3339
金钱
3339
注册时间
2013-7-30
在线时间
708 小时
发表于 2014-12-5 17:50:10 | 显示全部楼层
1.最好分开两个工程,APP一个工程,Bootloader另一个工程。
2.两个工程编译都编译成BIN文件,然后用Bin文件合并工具将两者合并,再一次烧录进MCU里面。或者可以使用STVP指定地址烧录
思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2014-4-29
在线时间
1 小时
 楼主| 发表于 2014-12-6 10:10:19 | 显示全部楼层
回复【2楼】小温:
---------------------------------
如果我要在APP程序执行的时候. 跳转到IAP程序来更新MCU.

那跳转过去后. 要拿什么来判断是否更新呢?(因为是2个工程.变量都都没办法共享);
回复

使用道具 举报

19

主题

702

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3339
金钱
3339
注册时间
2013-7-30
在线时间
708 小时
发表于 2014-12-6 19:41:14 | 显示全部楼层
APP在运行过程中,接收到外部发送的更新指令后,跳转到Bootloader中运行,外部把最新的APP的BIN文件通过某种方式(例如串口)传送给MCU进行APP区的更新,当整个APP区更新完后,通过函数指针跳转至APP区运行最新的程序
思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2014-4-29
在线时间
1 小时
 楼主| 发表于 2014-12-8 09:49:12 | 显示全部楼层
回复【4楼】小温:
---------------------------------
APP在运行过程中,接收到外部发送的更新指令后,跳转到Bootloader中运行,

这一步我已经实现. 但是进入Bootloader后. 依据什么来进行更新程序呢.  如果没有依据. 那开机又怎么判断进入APP呢.还是更新MCU
回复

使用道具 举报

19

主题

702

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3339
金钱
3339
注册时间
2013-7-30
在线时间
708 小时
发表于 2014-12-8 22:06:12 | 显示全部楼层
回复【5楼】zf1127:
---------------------------------
为什么跳进bootloader,是因为要进行IAP操作才进入bootloader,进入bootloader后,程序只是在等待升级数据的到来,如果没有升级数据的到来,则超时跳回APP区运行
思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2014-4-29
在线时间
1 小时
 楼主| 发表于 2014-12-9 17:15:30 | 显示全部楼层
回复【6楼】小温:
---------------------------------
我现在调到BOOTLOADER后. 感觉串口工作不正常. 收发数据过一会. 就不动了. 

是不是从APP跳BOOTLOADER. 有什么需要注意的我没发现
回复

使用道具 举报

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2012-11-14
在线时间
7 小时
发表于 2014-12-10 16:33:06 | 显示全部楼层
回复【7楼】zf1127:
---------------------------------
分成两个区的话,要注意bootload与app的中断向量表地址不同。
另外,要约定好协议,也就是说确定跳转成功后再传数据!
回复

使用道具 举报

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2012-11-14
在线时间
7 小时
发表于 2014-12-10 16:41:35 | 显示全部楼层
现用方案是规划bootload,app1及app2三个区。bootload比较app1、app2内容决定是否将app2 COPY到app1。

楼主问题1:那跳转过去后. 要拿什么来判断是否更新呢?(因为是2个工程.全局变量都都没办法共享);
------用备份寄存器传递!
回复

使用道具 举报

20

主题

143

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-8-28
在线时间
108 小时
发表于 2015-10-29 15:24:10 | 显示全部楼层
回复【9楼】饮马南山:
---------------------------------
回复【9楼】饮马南山:
---------------------------------
用Flash传递
回复

使用道具 举报

13

主题

225

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2013-11-12
在线时间
29 小时
发表于 2015-10-29 16:55:03 | 显示全部楼层
可以用BKP来做标志,跳回IAP升级过程中主要就是要注意APP中所使用到的中断
回复

使用道具 举报

1

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
315
金钱
315
注册时间
2015-12-22
在线时间
40 小时
发表于 2016-3-2 23:22:00 | 显示全部楼层
原子哥的程序,这里有个问题,就是,iap和app都烧进去后,重新上电后,一直在iap中运行,没有在自动跳转到app
我思故我在!
回复

使用道具 举报

1

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
241
金钱
241
注册时间
2016-1-6
在线时间
33 小时
发表于 2016-3-11 19:11:25 | 显示全部楼层
markmark
回复

使用道具 举报

19

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
439
金钱
439
注册时间
2016-6-8
在线时间
47 小时
发表于 2016-7-19 11:32:23 | 显示全部楼层
APP如何调转到IAP中呐?
回复

使用道具 举报

0

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2014-12-25
在线时间
20 小时
发表于 2017-9-5 14:49:52 | 显示全部楼层
楼主是否有尝试,将IAP和APP合并到一个工程下?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-14 21:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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