打印

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

[复制链接]
楼主: skymlj2000
手机看帖
扫描二维码
随时随地手机跟帖
21
ningzb| | 2013-1-23 11:10 | 只看该作者 回帖奖励 |倒序浏览
int main(void)
{
  /* Setup STM32 system (clock, PLL and Flash configuration) */
        SystemInit();
        NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x8000);
       

  /* Add your application code here
     */
        os_sys_init (task1);  
       

  /* Infinite loop */
  while (1)
  {
  }
}


__task void task1 (void)
{
        while (1)
        {
        os_dly_wait (20);
        }
}

使用特权

评论回复
22
yyql008| | 2013-1-23 11:21 | 只看该作者
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x8000);
还是放在main第一句里面稳当.要是SystemInit();里面开启定时中断,并进入中断了,你咋搞,弄不好就出问题(跳到IAP的定时中断,然后影响应用程序的ram,可以出现任何问题).

使用特权

评论回复
23
ningzb| | 2013-1-23 11:50 | 只看该作者
目前的问题是可以运行一段时间,然后就会到汇编的一个死循环里面,文件startup_stm32f10x_hd.s的第324行,
DMA2_Channel3_IRQHandler
DMA2_Channel4_5_IRQHandler
                B       .;<-程序跳转到此处
d:\11.bmp

使用特权

评论回复
24
ningzb| | 2013-1-23 11:50 | 只看该作者
目前的问题是可以运行一段时间,然后就会到汇编的一个死循环里面,文件startup_stm32f10x_hd.s的第324行,
DMA2_Channel3_IRQHandler
DMA2_Channel4_5_IRQHandler
                B       .;<-程序跳转到此处
d:\11.bmp

使用特权

评论回复
25
jason_chdsh| | 2013-2-1 22:36 | 只看该作者
受教了,学习中

使用特权

评论回复
26
ly971021598| | 2013-5-16 17:18 | 只看该作者
楼主的问题,我今天也遇到了,刚才也解决了,解决方法如下:
我用的是STM32F103VE的芯片,操作系统用的是ucos-II的系统,楼主的跳转程序没问题,
一般是这样
int main()
{

  CPU_INT08U os_err;           /* 禁止所有中断 */               
        CPU_IntDis();         /* ucosII 初始化 */
        OSInit();             /* 硬件平台初始化 */       
//  NVIC_SetVectorTable(0x8010000, 0x0004);       
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x10000);

使用特权

评论回复
27
cjhk| | 2013-5-16 18:52 | 只看该作者
这个问题以前没有遇到过   楼主   帮你顶一个   看看别人的意见   顶一个   

使用特权

评论回复
28
cjhk| | 2013-5-16 18:53 | 只看该作者
没帮上忙   对不住   楼主   飘过

使用特权

评论回复
29
bbc960| | 2013-5-22 19:10 | 只看该作者
RTX问题,如需解决可以找我,呵呵,PSP与MSP使用错误。QQ:1059171043

使用特权

评论回复
30
timetim| | 2013-6-6 17:42 | 只看该作者
啊,我也是同样的问题,带RL-RTX就不行
用IAP只能升级不带RTX的程序,
求解决啊

使用特权

评论回复
31
jiayou0054| | 2013-6-6 23:58 | 只看该作者
用IAP加载的应用程序,至少需要设置两个地方:
1)在程序中,显示执行NVIC_SetVectorTable(),注明一个偏移地址,应该是256字节对齐的吧;
2)在编译器选项中,应指定ROM的起始地址为Flash首地址+1)中的偏移地址。

使用特权

评论回复
32
weifanti| | 2013-7-5 11:23 | 只看该作者
我遇到的是 LPC2132 IC  用IAP 烧录应用程序后  开机后出现死机, 但是如果是用NXP提供的ICP工具烧录的话 又可以正常工作。 用IAP烧录后,出现这种问题的概率该20% , 更换MCU后正常工作,不知道是什么原因照成的?

使用特权

评论回复
33
outstanding| | 2013-7-5 14:20 | 只看该作者

NVIC_SetVectorTable(Flash_Base,  App_Offset);  是的,这个函数才是关键,

使用特权

评论回复
34
andyjian| | 2013-12-7 15:56 | 只看该作者
应该是RTX的问题吧,看来高手还没有来呀

使用特权

评论回复
35
pattywu| | 2013-12-7 16:13 | 只看该作者
IAP要注意的地方:
1、MSP的值,是4字节对齐的;(调试时,可以看一下,是否)
2、跳转的地址,低位必须为1,表示为Thumb模式指令,而非ARM模式指令;
3、中转后的中断向量,应该指向APP的中断向量的位置(256字节对齐,低8位全是0);
4、IAP中用到的全局变量、中断等,在APP中是否有相应处理。

使用特权

评论回复
36
wangzhihai1986| | 2014-9-17 11:27 | 只看该作者
如果IAP程序中使用了操作系统,在进行跳转前一定要切换到MSP(主堆栈)。__set_CONTROL(0);

使用特权

评论回复
37
wangji666666| | 2014-10-10 14:11 | 只看该作者
楼主问题解决了吗?我也遇到了同样的问题,不行的话看来要换操作系统了

使用特权

评论回复
38
shentq| | 2015-9-8 01:32 | 只看该作者
你的那个iap运行操作系统的问题解决了吗?我也遇到了同样的问题。知道肯定是中断向量表的问题。但是不知道怎么修改。试了下网友回复的方法,也解决不了。可以跟我讲讲吗?联系方式qq995207301

使用特权

评论回复
39
wangzhihai1986| | 2015-9-8 08:31 | 只看该作者
skymlj2000 发表于 2010-1-18 21:01
#define ApplicationAddress 0x08008000   //应用程序区

/* Jump to user application */

__set_MSP(*(__IO uint32_t*) ApplicationAddress);
在它后面加段__set_CONTROL(0);试下。

使用特权

评论回复
40
baicaijin| | 2015-9-29 16:48 | 只看该作者
yyql008 发表于 2013-1-22 18:05
NVIC_SetVectorTable(Flash_Base,  App_Offset);重新定义中断向量表.
注意,这个一定要放在main函数的第 ...

你说的非常对,我的同样问题,按你说的,APP的 main 函数第一句就是设置中断向量表后,带RTX的APP起来了,运转正常,非常感谢,感谢!!!!!:lol

使用特权

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

本版积分规则