大家好!我现在用9b96碰到个问题,纠结好久:就是我通过
ti提供的u***_stick_update 升级应用程序,升级成功后,应用程序为什么跑不起来?
这个demo---u***_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的专家指点下问题在哪里?
不甚感激!
0