stm32用IAP升级带操作系统的程序,下载成功,但运行失败

[复制链接]
 楼主| skymlj2000 发表于 2010-1-18 15:50 | 显示全部楼层 |阅读模式
stm32用IAP升级带操作系统的程序,下载成功,但运行失败?而升级不带操作系统的程序,都能成功运行,不知道为什么?操作系统用的是mdk自带的rtx,这个app直接跑是没有问题的,就是用iap起动不来,伤透脑了,那个大哥知道啊
 楼主| skymlj2000 发表于 2010-1-18 20:40 | 显示全部楼层
怎么一个人也没有回复啊,是问题太简单了,还是太难了?
again_gyf 发表于 2010-1-18 20:42 | 显示全部楼层
把最后跳转到应用程序的代码贴上来看看
 楼主| skymlj2000 发表于 2010-1-18 21:01 | 显示全部楼层
#define ApplicationAddress 0x08008000   //应用程序区

/* Jump to user application */
      JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
      Jump_To_Application = (pFunction) JumpAddress;
      /* Initialize user application's Stack Pointer */
      __set_MSP(*(__IO uint32_t*) ApplicationAddress);
      Jump_To_Application();


跳转代码应该是不会错的,因为我用别的不带操作系统的程序试过,是可以的,同一个iap程序。
 楼主| skymlj2000 发表于 2010-1-18 21:03 | 显示全部楼层
不知道带操作系统的程序与不带操作系统的程序,是不是有那里不同啊,比如初始化堆栈等?那位兄弟玩过啊?
mohanwei 发表于 2010-1-18 21:06 | 显示全部楼层
直接更换成人家的例程,需要注意向量表位置……
要和你的bootloader约定的“0x08008000”一致
LIU_XF 发表于 2010-1-18 21:48 | 显示全部楼层
你开中断了吗,跳转前把中断关掉试试。
tyz114499 发表于 2010-1-19 08:17 | 显示全部楼层
需要进行中断向量的重映射,你查一下以前STR710的帖子,里面有关于这方面的
ecomputer 发表于 2010-1-19 08:25 | 显示全部楼层
和普通的没有os的单线程iap一样的,我试过,没什么问题
 楼主| skymlj2000 发表于 2010-1-19 08:40 | 显示全部楼层
"LIU_XF",你好,我把所有中断都关了,还是不行。
 楼主| skymlj2000 发表于 2010-1-19 08:41 | 显示全部楼层
tyz114499,你好,请问怎么进行中断向量的重映射啊,我查了STR710的,没有啊?
 楼主| skymlj2000 发表于 2010-1-19 08:42 | 显示全部楼层
ecomputer,你好,我不是说iap带os,是app带os 的,起动不起来,但是用不带os 的app是可以的,用的同一个iap
 楼主| skymlj2000 发表于 2010-1-19 08:53 | 显示全部楼层
带os 的与不带os 的,跳转到的位置也不一样,很奇怪啊,
 楼主| skymlj2000 发表于 2010-1-19 08:54 | 显示全部楼层
本帖最后由 skymlj2000 于 2010-1-19 08:57 编辑

带os ,跳转后,pc 指向

带os ,跳转后,pc 指向

不带os ,跳转后的pc指向

不带os ,跳转后的pc指向
 楼主| skymlj2000 发表于 2010-1-19 21:26 | 显示全部楼层
都没有人回复嘛,自已顶一下!
成成 发表于 2010-1-23 14:59 | 显示全部楼层
在进行硬件初始化之后,必须要采用这个函数重新定位一下你的中断向量表
NVIC_SetVectorTable(Flash_Base,  App_Offset);
否则你的应用程序中断处理都会跑到IAP的中断向量表运行了
lshlin 发表于 2011-12-22 11:22 | 显示全部楼层
楼主的问题解决了吗?我也遇到一样的问题,升级MDK自带的RTX运行不正常,
很奇怪,用J-link直接下载又可以。
ningzb 发表于 2013-1-22 10:57 | 显示全部楼层
楼主和楼上的问题解决了么?我也遇到同样的问题了
goldsun_ 发表于 2013-1-22 14:13 | 显示全部楼层
BOOT线电平选择对,用stm32-stm8_flash_loader2.6下载非常方便,2个串口都能用,下载成功后,恢复BOOT电平,即可正常运行。
yyql008 发表于 2013-1-22 18:05 | 显示全部楼层
NVIC_SetVectorTable(Flash_Base,  App_Offset);重新定义中断向量表.
注意,这个一定要放在main函数的第一句.
你放在第一句试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

16

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部