OpenEdv-开源电子网

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

新手请教STM32中关于IAP程序下载问题

[复制链接]

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2012-11-6
在线时间
0 小时
发表于 2012-11-6 11:58:28 | 显示全部楼层 |阅读模式
      我刚开始学STM32,现在在做IAP的程序,遇到一个问题。我是把FLASH分为三个区,IAP、APP1、APP2,先将原程序存放在APP1处。在IAP中判断,如需要下载更新程序,则将新程序放在APP2处;如不需要更新,则跳转到APP1地址,执行原程序。现在的问题是,IAP程序是放在FLASH的起始地址0X0800 0000 处的,那我的原程序放在这个地址之后的 某段地址,例如0X0800 3000--0X080 20000(地址划分可能有错),那我肯定要先将这段程序放到APP1地址处。问题就在这里,我怎样把我的程序放在指定的FLASH地址处呢?我个人觉得要修改“target option....”里的IROM1的起始地址,但是这个地址一改,调试就好像死掉了,我不知道还要改什么地方,是不是要改启动代码?如果要改要怎么改呢?请高手指教,不甚感激!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-11-6 17:34:54 | 显示全部楼层
回复【楼主位】luoxin:
---------------------------------
全部由bootloader控制!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2012-11-6
在线时间
0 小时
 楼主| 发表于 2012-11-6 21:50:24 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
不好意思,能说的详细点吗?我不太明白。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-11-6 22:09:17 | 显示全部楼层
也就是说,你只要刷了bootloader,剩下的什么APP1,APP2,哪怕是APP100,都应该由BOOTLOADER程序来控制写/执行.而不是通过什么jtag来刷这种办法.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2012-11-6
在线时间
0 小时
 楼主| 发表于 2012-11-8 10:14:03 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
      谢谢原子哥,我已经能把程序下载到指定位置了。没有来及时道谢,不好意思哈。我现在遇到了一个新的问题。按照STM的官方IAP文档,在下载完更新代码后返回主菜单,我现在不让他返回主菜单,直接执行更新后的程序。但是需要我手动来改更新后程序的地址,而且系统重启后,直接进入用户程序,他还是执行老程序(即更新前的程序),除非我再次手动改地址。这样在以后的应用中会很麻烦,多次升级后可能完全搞不清更新程序存储在哪一块。原子哥有什么好的解决办法吗?
    我想过在FLASH的最高两页存放一个指针变量,用它指向新程序的地址,每次更新完后自动更新此指针变量,系统复位后直接读取此指针所指向的地址。但是我还是不太会写。第一,我如何把这个指针变量准确定位到某FLASH地址呢?这句改怎么写,我不会(我的基础差,不要骂我)。第二,此指针在程序更新后要改变其指向的地址,肯定要在程序下载完成后,改如何保存更新后的指针,保存在何处,我也搞不清楚。
    我的表述可能比较混乱,见谅。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-11-8 14:45:51 | 显示全部楼层
回复【5楼】luoxin:
---------------------------------
这个做个标记就是了。
你可以参考下我们的《stm32开发指南》串口IAP部分,比官方的简单多了...我觉得。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2012-11-6
在线时间
0 小时
 楼主| 发表于 2012-11-8 15:04:52 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
好的,我去看看,谢谢原子哥。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-3-1 04:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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