lpc1768 iap遇到的问题
在做iap编程 遇到点问题在0x10000放置的是用户代码 在iap中使用下面代码进行跳转
UserProgram = (void (*)()) (0x00010004);
(*UserProgram)() ;
单步调试F11可以进入到用户程序 但是使用F10及全速不能正常工作 不知道是哪里出现问题 你这是函数指针的形式,直接这样不可以吧,
SCB->VTOR= APP_START_ADDR; // 应用程序地址 重新定义向量表
在加载堆栈指针的位置和复位中断的入口地址
/* Load main stack pointer with application stack pointer initial value,
stored at first location of application area */
ldr r0, =APP_START_ADDR
ldr r0,
mov sp, r0
/* Load program counter with application reset vector address, located at
second word of application area. */
ldr r0, =APP_START_ADDR+4
ldr r0,
BXr0
看不见 发表于 2014-4-14 00:18
你这是函数指针的形式,直接这样不可以吧,
SCB->VTOR= APP_START_ADDR; // 应用程序地址 重新定 ...
仿真的时候使用F11 单步能够进入到用户程序的首地址 可是全速不行 F10也不行 所以我觉得KEIL在使用F11的时候会不会发送些特定的命令?
用户程序调试的时候是可以的
请大家帮忙呢 看不见 发表于 2014-4-14 00:18
你这是函数指针的形式,直接这样不可以吧,
SCB->VTOR= APP_START_ADDR; // 应用程序地址 重新定 ...
你这个是用于用户程序的吧 我现在用户程序的没有问题 只是由bootloader跳转到用户程序时出错 这样是可以的,我的bootloader是这样跳转的:
void (*user_code_entry)(void);
user_code_entry = (void (*)(void))(USER_START_SECTOR_ADDRESS | 0x00000001);
user_code_entry();
和楼主不同的是我后面地址只+1,楼主地址+4。
我是按官方的例子做的,里面也是+1,就是开始是设置sp,pc指的是下一个地址。这里的void指针应该是占的4个字节。 子鱼 发表于 2014-4-14 22:48
你这个是用于用户程序的吧 我现在用户程序的没有问题 只是由bootloader跳转到用户程序时出错 ...
你要在跳转之前,关闭外设,
页:
[1]