打印

有关STM32-IAP ,跳转到用户程序的问题

[复制链接]
4271|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
15242026|  楼主 | 2011-3-7 14:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 15242026 于 2011-3-8 10:36 编辑

else if (key == 0x32)
    {
      JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
      /* Jump to user application */
      Jump_To_Application = (pFunction) JumpAddress;
      /* Initialize user application's Stack Pointer */
      __set_MSP(*(__IO uint32_t*) ApplicationAddress);
      Jump_To_Application();
    }

红色的那句代码我不是太懂,我把断点设在“Jump_To_Application();”,
ApplicationAddress=0x8002000
__set_MSP=0x8000156

(1)单步调下去,发现有回到了main(),这是为什么呢?

(2)对了,ApplicationAddress + 4  不就是用户程序的地址了吗?为什么还要“+4”呢?  我写到0x800200的程序就是点亮LED这么简单,为什么不行呢?

新问题: 当断点跳到Jump_To_Application();的时候,在反汇编窗口,可以看到,箭头指向
        0x08000A94  68e0  LDR    r0,[r4,#0x0c] ;点击“下一步”调试
        0x08000A96  4780  BLX    r0                  ;然后超级中断就不动了,LED也没亮。~~~~
      然后,我按下key3(USER)按键,有进入菜单界面。


我现在最主要解决的是download成功后,执行NEW program时,却进入不到app(应用程序)。谁能帮帮忙,我看到另一个帖子说,要使用
软件复位用固件库的NVIC_GenerateSystemReset()”  但是我不知道具体怎么做,假如复位了,不是又从程序最初0x8002000开始了吗?




沙发
15242026|  楼主 | 2011-3-7 16:01 | 只看该作者
为什么呀?这么多人看,却没有人回答~~~

使用特权

评论回复
板凳
STARM| | 2011-3-7 17:38 | 只看该作者
不知道是不是这个意思 ?

ApplicationAddress + 0 = stack
ApplicationAddress + 4 = reset vector

使用特权

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

本版积分规则

1

主题

24

帖子

1

粉丝