lm3s9b96的通过usb_stick_update 这个demo,用u盘升级应用程序,无法运行的问题



大家好!我现在用9b96碰到个问题,纠结好久:就是我通过ti提供的usb_stick_update 升级应用程序,升级成功后,应用程序为什么跑不起来?

这个demo---usb_stick_update的意思是,有三种检测是否升级应用的情况,我只保留了第一种,其他屏蔽了,就是查看APP_START_ADDRESS(0x3000) 是否有数据,有的话不升级直接运行应用程序;没有的话就是执行UpdaterMain()这个函数,来升级。

在我的应用程序端,作为升级端程序,运行地址不是0x00000;编译的时候,有三个地方的地址进行了修改,我用的是keil软件

1.target 里面IROM1  0x3000(start)   0x3d000(size)     

 2.linker里面R/O base 0x0003000 

3.是scatter file配置文件里面

LR_IROM1 0x00003000 0x0003D000  {    ; load region size_region
  ER_IROM1 0x00003000 0x0003D000 {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00018000  {  ; RW data
   .ANY (+RW +ZI)
  }
}

结果是升级是成功,我通过memory watch 可以看到 0x3000处,升级前都是0xffff;升级后,都有值了,而且和我产生的应用程序二进制数据一致。但是为何重新开机,应用程序跑不起来??重开机后,升级检测到有程序,但是运行这个CallApplication(),就没任何反应了。

   前提: 我的应用能够程序是能正常跑的,我把地址0x3000,都改成0x00000;通过jtag烧录,能正常运行。

 

请TI的专家指点下问题在哪里?

不甚感激!