硬件: 单片机:PIC18F25K80
情况:
1. bootloader单独跑没有问题;APP单独跑也没问题。
2. 将bootloader的hex文件,loadables到app工程,并将app的cod offset为0x0C00,成功进入app模式。
问题:
由bootloader引导app模式,存在程序跑飞的情况(中断已不响应)。有时候能正常运行半小时,有时仅能正常运行几十秒。
bootloader部分代码:
unsigned char isBootloader __at(0x00AA);
// Bootloader中的中断
void interrupt low_priority InterruptISR_Low(void)
{
if(0 == isBootloader)
{
asm ("pagesel " str (APP_LOW_VECTOR));
asm ("goto " str (APP_LOW_VECTOR));
}
else
lowPriorityISR();
}
void main()
{
...初始化
if(0 == isBootloader)
{
STKPTR = 0x00; // 清除 返回堆栈指针
BSR = 0x00;
asm ("pagesel " str(APP_RESET_VECTOR));
asm ("goto " str(APP_RESET_VECTOR));
}
...
}
|