打印

STM32的IAP程序中的跳转问题

[复制链接]
6013|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
baiydcwy|  楼主 | 2011-9-8 12:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 baiydcwy 于 2011-9-8 13:16 编辑

现在在搞一个IAP的东西,对程序的的跳转一直都搞不明白,最近看了这样一个帖子,帖子的链接为:https://bbs.21ic.com/viewthread.php?tid=109925&highlight=iap
大家看看,帮我理解一下。
我自己做的IAP的思路是这样的,将Flash分成三个区域,其中交替存放新旧应用程序,第一个区域的起始地址为0x08000000,从这里开始放一小段程序,这一小段程序的功能相当于一个小boot,主要是在复位后对Flash中的一页数据进行标志判断,如果这一页的数据全为7,跳转到应用程序区1,若这一页的数据全为27,则跳转到应用程序区2。
在每个应用程序中都包含有这样一个功能,就是应用程序通过一定方式接收新的应用程序代码,并将应用程序代码保存在应用程序区(若当前执行的是应用程序区1,刚将接收到的新的应用程序代码保存在应用程序区2,保存后当然要进行数据校验;反之则一样),新的应用程序代码接收并校验完成后将Flash中的那个标志页写入相应的值(根据当前执行的程序区域来写7或27并检验),完了之后来一个系统复位,开始执行放在0x08000000的那一小段程序,根据标志页跳转到新的程序区域执行新的应用程序。
在是在实际写程序的时候,不知道那处跳转程序怎么搞,希望各位高手帮帮看看怎么解决哈。。。。。。。

IAP.rar (628.45 KB)
沙发
baiydcwy|  楼主 | 2011-9-9 10:25 | 只看该作者
好了,自己解决了,呵呵,基本模式已经运行通过了

使用特权

评论回复
板凳
fbhsy| | 2013-5-22 09:35 | 只看该作者
你好,想请问一下怎么从第二段程序再跳转回到起始地址执行,就是跳转的BOOT程序中去?谢谢

使用特权

评论回复
地板
fbhsy| | 2013-5-22 09:35 | 只看该作者
baiydcwy 发表于 2011-9-9 10:25
好了,自己解决了,呵呵,基本模式已经运行通过了

你好,想请问一下怎么从第二段程序再跳转回到起始地址执行,就是跳转的BOOT程序中去?谢谢

使用特权

评论回复
5
BSMGood| | 2013-8-9 16:24 | 只看该作者
我刚刚把IAP机制搞完,写了个简单的应用程序,也正常跳转了,现在问题是我的程序是通过远程升级的,利用GPRS将代码收下来,重点在于收二进制文件,如何确立握手机制,如何正确完整收完,等等,代码量太大100多KB,程序不能有错,因为没有空间给旧程序用了,FLASH容量小了点啊。

使用特权

评论回复
6
feilusia| | 2013-8-9 16:27 | 只看该作者
BSMGood 发表于 2013-8-9 16:24
我刚刚把IAP机制搞完,写了个简单的应用程序,也正常跳转了,现在问题是我的程序是通过远程升级的,利用GPR ...

请问怎么从内部FLASH跳到外部SRAM去??

使用特权

评论回复
7
BSMGood| | 2013-8-9 16:42 | 只看该作者
我没试过,一般程序设置在FLASH中运行,SRAM开辟堆栈,存储全局或者静态变量,我目前的MCUFLASH才256KB不够用,也需要扩展,摸石头过河咯

使用特权

评论回复
8
chuangpu| | 2013-8-9 20:30 | 只看该作者
问题解决了   恭喜楼主   恭喜啦   

使用特权

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

本版积分规则

0

主题

24

帖子

1

粉丝