关于IAP与APP互相跳转的实现(4)

发布时间:2021-06-08

1. 改IAP程序,加上加载APP程序功能。就是按下某个键时,从U盘读取APP程

序,并把它写到FLASH中。这个参考附件。

2. 在APP程序中,选择输出HEX文件。目前来说,HEX文件是比较方便处理的文

件。

点魔术棒,打开目标选项设置。

选Output选项卡,Create HEX File打上勾。

编译,生成HEX文件。

3. 把APP。HEX拷到U盘中,然后用IAP程序加载。

第六步:让IAP区分是复位运行,还是从APP转过来运行的。

打开你的启动文件(我这里是stm32f10x_vector.s),看一下它里面栈空间是多大,堆空间是多大。在IAP程序主函数第一句设个断点,记下此时的SP值,一般这个值比 栈+堆+全局变量还要大一些。在这个值+8之上的内部RAM空间,是程序用不上的。所以可以让APP程序在RAM空间的顶端设置一个标志,然I后让AP程序去根据这个标志来区别复位运行、从APP转过来的运行。

区分IAP的运行方式有一个特殊的用途,那就是从APP程序中,跳转IAP程序,来更新APP程序。这是真正的在线升级。

最后,我总结一下,要做IAP和APP间的互相跳转,要注间以下几点:

1. APP程序是放在FLASH的中间位置运行的,所以在编译、下载、调试时,都要指定

它的入口(本例是0X08010000)。具体实现就是在魔术棒中的设置。

2. 程序可以是从另外一个程序转来的,而另外一个程序的RCC,NVIC设置不可知,所

以必须在初始化时,恢复RCC,NVIC为复位状态,并且设置正确的NVIC向量表。

3. 在要跳到别的程序之前,要恢复NVIC为复位状态,防止在跳转过程中出现中断。

4. 如果IAP要判断是复位开始运行的,还是从APP跳转过来的,应该用程序启动部分

不会被改变的内存、外存存储一个标志,用它来判定从哪跳来的。

关于IAP与APP互相跳转的实现(4).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219