This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430G2 BOOTLoader

hi,everyone

求助!!

现BOOTLOADER和APP已经实现相互跳转,Flash=8000-FFFF,分布:BOOTFLASH=F000-FFFF(中断:FFE0-FFFF);APPFLASH=8000-EFFF(中断:EFE0-EFFF)。但是在BOOT中不能使用中断,虚拟中断也不行(可能自己没搞懂)。映射中断改怎么处理!!!

BOOT的XCL配置:

// -------------------------------------
// Constant data
//

-Z(CONST)DATA16_C,DATA16_ID,TLS16_ID,DIFUNCT,CHECKSUM=F000-FFDD

// -------------------------------------
// Code
//

-Z(CODE)CSTART,ISR_CODE,CODE_ID=F000-FFDD
-P(CODE)CODE=F000-FFDD
// -------------------------------------
// Signature memory and interrupt vectors
//

-Z(CONST)SIGNATURE=FFDE-FFDF
-Z(CODE)INTVEC=FFE0-FFFF
-Z(CODE)RESET=FFFE-FFFF

APP的XCL配置:

// -------------------------------------
// Constant data
//

-Z(CONST)DATA16_C,DATA16_ID,TLS16_ID,DIFUNCT,CHECKSUM=8000-EFDD

// -------------------------------------
// Code
//

-Z(CODE)CSTART,ISR_CODE,CODE_ID=8000-EFDD
-P(CODE)CODE=8000-EFDD
// -------------------------------------
// Signature memory and interrupt vectors
//

-Z(CONST)SIGNATURE=EFDE-EFDF
-Z(CODE)INTVEC=EFE0-EFFF
-Z(CODE)RESET=EFFE-EFFF

  • 这个mcu没有把vector映射到RAM的那种寄存器。只能用其他思路的。

  • wo没有映射到RAM而是映射到FLASH。

    现在的问题是我原来的中断处理程序和映射的中断无法共存

    中断处理函数:

    // USCI_B0 Data ISR
    #pragma vector = USCIAB0TX_VECTOR
    __interrupt void USCIAB0TX_ISR(void)
    {
    if (IFG2 & UCB0TXIFG)
     {
     TI_transmit_callback(&UCB0TXBUF);
     }
     else
     {
     TI_receive_callback(UCB0RXBUF);
     }
    }

    中断映射:

    #pragma vector=TIMER1_A1_VECTOR
    __interrupt void intec_0(void)
    {
    asm("br &0xEFE0;");
    }
    #pragma vector=TIMER1_A0_VECTOR
    __interrupt void intec_1(void)
    {
    asm("br &0xEFE2;");
    }
    #pragma vector=PORT1_VECTOR
    __interrupt void intec_2(void)
    {
    asm("br &0xEFE4;");
    }
    #pragma vector=PORT2_VECTOR
    __interrupt void intec_3(void)
    {
    asm("br &0xEFE6;");
    }
    #pragma vector=TRAPINT_VECTOR
    __interrupt void intec_4(void)
    {
    asm("br &0xEFE8;");
    }
    #pragma vector=ADC10_VECTOR
    __interrupt void intec_5(void)
    {
    asm("br &0xEFEA;");
    }
    #pragma vector=USCIAB0TX_VECTOR
    __interrupt void intec_6(void)
    {
    asm("br &0xEFEC;");
    }
    #pragma vector=USCIAB0RX_VECTOR
    __interrupt void intec_7(void)
    {
    asm("br &0xEFEE;");
    }
    #pragma vector=TIMER0_A1_VECTOR
    __interrupt void intec_8(void)
    {
    asm("br &0xEFF0;");
    }
    #pragma vector=TIMER0_A0_VECTOR
    __interrupt void intec_9(void)
    {
    asm("br &0xEFF2;");
    }
    #pragma vector=WDT_VECTOR
    __interrupt void intec_10(void)
    {
    asm("br &0xEFF4;");
    }
    #pragma vector=COMPARATORA_VECTOR
    __interrupt void intec_11(void)
    {
    asm("br &0xEFF6;");
    }
    #pragma vector=TIMERB1_VECTOR
    __interrupt void intec_12(void)
    {
    asm("br &0xEFF8;");
    }
    #pragma vector=TIMERB0_VECTOR
    __interrupt void intec_13(void)
    {
    asm("br &0xEFFA;");
    }
    #pragma vector=NMI_VECTOR
    __interrupt void intec_14(void)
    {
    asm("br &0xEFFC;");
    }

  • yue feng 1 ,你好!

    我现在也在做430的自定义升级,方便加个Q,交流一下吗(我的:9052604)