打印
[PIC®/AVR®/dsPIC®产品]

bootloader中断向量表怎么重映射

[复制链接]
504|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jlyuan|  楼主 | 2023-1-15 23:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PIC24F的片子,在bootloader程序和app程序中都有中断,那在切换到app程序中时怎么重映射中断向量表呢

使用特权

评论回复
沙发
wenfen| | 2023-1-15 23:32 | 只看该作者
可以先参考一下16bit的bootloader,使用MCC可以直接选择要REMAP的中断到Applicaiton。
https://www.microchip.com/SWLibraryWeb/product.aspx?product=16-bit-Bootloader

使用特权

评论回复
板凳
yszong| | 2023-1-15 23:35 | 只看该作者
也可以参考AN1157
https://www.microchip.com/wwwAppNotes/AppNotes.aspx?appnote=en533906

使用特权

评论回复
地板
jlyuan|  楼主 | 2023-1-15 23:37 | 只看该作者
你可以大概讲解一下app中断向量表跳转过程吗,看AN1157我的个人理解是,bootloader的gld文件中先写好bootloader和app的中断向量表,然后在app程序中调用中断时按地址调用,一种是按void __attribute__((__interrupt__,address(0x3000 + 0x0EC),__no_auto_psv__)) _USB1Interrupt(void)调用,另一种是按void __attribute__ ((address(0x3000 + 0x0EC))) ISRTable()进行跳转的。

使用特权

评论回复
5
stly| | 2023-1-15 23:39 | 只看该作者
简单的理解就是bootloader将自己的IRQ向量表中要转出去的IRQ,放一个GOTO xxx汇编指令,这个xxx就是Application IRQ的入口地址,所以Bootloader需要知道Application的IRQ表的地址(MCC支持图形化配置相关的地址),这个方法并不需要改gld文件,也是新的16bit bootloader的实现方式。当然如果MCU支持AIVT也可以用直接切中断向量表,这个在application中切就可以了(https://microchipdeveloper.com/faq:2702)

下面是讲解16bit interrupt的文档可以参考。
https://microchipdeveloper.com/16bit:exceptions
http://ww1.microchip.com/downloads/en/DeviceDoc/39707a.pdf

使用特权

评论回复
6
jlyuan|  楼主 | 2023-1-15 23:41 | 只看该作者
我用过切换AIVT的方法 ,但是app的中断还是没起来

使用特权

评论回复
7
jlyuan|  楼主 | 2023-1-15 23:42 | 只看该作者
boot的主程序是这样的:
int main(void)

{

    bool Init;

    INTCON2bits.ALTIVT = 1;

    SYSTEM_Initialize();

    if(_RB5 == 1)  //button press

    {

        INTCON2bits.ALTIVT = 0;

        __asm__("goto 0x3000");

    }

    Init = Initialize();



    while(1)

    {   

        if (Init)

        ProcessCommand();

        else

        {

        }

    }

    return 1;

}

使用特权

评论回复
8
jlyuan|  楼主 | 2023-1-15 23:45 | 只看该作者
在我的boot程序里导入不带中断的app程序运行是正常的,换了带中断的程序就不运行了,有没有大神指导一下

使用特权

评论回复
9
liliang9554| | 2023-1-15 23:47 | 只看该作者
app程序的问题吧,单独跑呢?什么情况

使用特权

评论回复
10
午夜粪车| | 2023-1-15 23:48 | 只看该作者
看看应用笔记文档应该有帮助

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

880

主题

12030

帖子

4

粉丝