问答

汇集网友智慧,解决技术难题

21ic问答首页 - PIC18的bootloader引导APP正常,但可能跑飞?

PIC18 Bootloader 跑飞

PIC18的bootloader引导APP正常,但可能跑飞?

beijk2023-06-16
硬件:        单片机: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));
        }
        ...
}



回答 +关注 14
2226人浏览 0人回答问题 分享 举报
0 个回答

您需要登录后才可以回复 登录 | 注册