您好,
是这样的,我目前在搞KEAZ1284 CAN BUS bootloader 升级,由于工作原因(需要与其他同事对接再加上cw已经过期)我把官方bootloader移植到了keil的环境下,因为我们的开发APP程序也是在keil环境中。bootloader和APP都是用的官方库文件。bootloader是移植好了,但调转不到APP 里面。
1、我的bootloader程序是从0x00000000-0x00004000 共16KB空间。
我的跳转是这么定义的:
typedef void(*JumpToPtr)(void);
uint32_t *pNewAppEntry = (uint32_t*)0x00004004;
pJumpTo = ((JumpToPtr)(*pNewAppEntry));
pJumpTo();
2、我的APP程序是从0x00004000-0x00020000空间。
如下是我的APP程序生成的S19文件,部分赋值如下:
S3150000400078F8FF1F97410000658100006581000078
S315000040106581000065810000658100006581000002
S3150000402065810000658100006581000065810000F2
S3150000403065810000658100006581000065810000E2
S3150000404065810000658100006581000065810000D2
S3150000405065810000658100006581000065810000C2
S31500004060FD64000065810000658100006581000037
S3150000407021760000357600004976000021430000D5
S31500004080658100006581000065810000355C0000E7
S31500004090F96C000065810000916C0000AD6C0000B9
S315000040A039660000616600006581000065810000D8
S315000040B06581000065810000C16A00005D6B00003B
由此可以看出我的APP程序地址已经跳转到了0x00004000这个地方开始,但bootloader升级下载完后为什么不能运行呢?
目前我已经尝试了好多种地址跳转的方法,未能成功。请freescale工程师分析分析。不胜感激。