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.

怎样才能从MSP432P401的icf文件找到程序RESET时中断向量指向的地址?

Other Parts Discussed in Thread: MSP430F5438A

怎样才能从MSP432P401的icf文件找到程序RESET时中断向量指向的地址?

MSP430F5438A的xcl文件

// ---------------------------

// Code

//

-Z(CODE)CSTART,ISR_CODE=5C00-FF7F

// ---------------------------

// Constant data

//

-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM=5C00-FF7F

// -------------------------------------

// All memory 0-FFFFF

//

// ---------------------------

// Code

//

-P(CODE)CODE=5C00-FF7F,10000-45BFF

-Z(CODE)CODE_ID

// ---------------------------

// Constant data

//

-Z(CONST)DATA20_C,DATA20_ID=5C00-FF7F,10000-45BFF

// -------------------------------------

// Interrupt vectors

//

-Z(CODE)INTVEC=FF80-FFFF

-Z(CODE)RESET=FFFE-FFFF    //复位时中断向量指向的地址

 

 

MSP432P401的icf文件

/*###ICF### Section handled by ICF editor, don't touch! ****/

/*-Editor annotation file-*/

/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */

/*-Specials-*/

define symbol __ICFEDIT_intvec_start__ = 0x00000000;

/*-Memory Regions-*/

define symbol __ICFEDIT_region_ROM_start__ = 0x00000000;

define symbol __ICFEDIT_region_ROM_end__   = 0x0003FFFF;

define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;

define symbol __ICFEDIT_region_RAM_end__   = 0x2000FFFF;

/*-Sizes-*/

define symbol __ICFEDIT_size_cstack__ = 0x1000;

define symbol __ICFEDIT_size_heap__   = 0x2000;

/**** End of ICF editor section. ###ICF###*/

 

define memory mem with size = 4G;

define region ROM_region   = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];

define region RAM_region   = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];

 

define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };

define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };

 

initialize by copy { readwrite };

do not initialize  { section .noinit };

 

place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };

place in ROM_region   { readonly };

place in RAM_region   { readwrite,

                        block CSTACK, block HEAP };

 

 

 

问题:在MSP430F5438A的xcl文件中可以看到程序RESET时中断向量指向“FFFE-FFFF”。但在MSP432P401的icf文件中却没有程序RESET时指向的地址,怎样才能确定MSP432P401程序RESET时中断向量指向的地址?

  • 内核不同,有些东西差异比较大。

    MSP432P401的复位向量地址好像在0x0000_0004,具体看MSP432P4xx Family Technical Reference Manual 吧

  • MSP432是M4内核 MSP430是16bits MSP430内核,两者完全不一样。

    建议先仔细阅读用户手册。

  • #pragma DATA_SECTION(interruptVectors, ".intvecs")
    void (* const interruptVectors[])(void) =
    {
    (void (*)(void))((uint32_t)&__STACK_END),
    /* The initial stack pointer */
    resetISR, /* The reset handler */
    nmiISR, /* The NMI handler */
    faultISR, /* The hard fault handler */
    defaultISR, /* The MPU fault handler */
    defaultISR, /* The bus fault handler */
    defaultISR, /* The usage fault handler */
    0, /* Reserved */
    0, /* Reserved */
    0, /* Reserved */
    0, /* Reserved */
    defaultISR, /* SVCall handler */
    defaultISR, /* Debug monitor handler */
    0, /* Reserved */
    defaultISR, /* The PendSV handler */
    SysTick_ISR, /* The SysTick handler */
    defaultISR, /* PSS ISR */
    defaultISR, /* CS ISR */
    defaultISR, /* PCM ISR */
    defaultISR, /* WDT ISR */
    defaultISR, /* FPU ISR */
    defaultISR, /* FLCTL ISR */
    defaultISR, /* COMP0 ISR */
    defaultISR, /* COMP1 ISR */
    defaultISR, /* TA0_0 ISR */
    defaultISR, /* TA0_N ISR */
    TimerA1_ISR, /* TA1_0 ISR */
    defaultISR, /* TA1_N ISR */
    TimerA2_ISR, /* TA2_0 ISR */
    defaultISR, /* TA2_N ISR */
    defaultISR, /* TA3_0 ISR */
    defaultISR, /* TA3_N ISR */
    EusciA0_ISR, /* EUSCIA0 ISR */
    defaultISR, /* EUSCIA1 ISR */
    defaultISR, /* EUSCIA2 ISR */
    defaultISR, /* EUSCIA3 ISR */
    defaultISR, /* EUSCIB0 ISR */
    defaultISR, /* EUSCIB1 ISR */
    defaultISR, /* EUSCIB2 ISR */
    defaultISR, /* EUSCIB3 ISR */
    defaultISR, /* ADC14 ISR */
    defaultISR, /* T32_INT1 ISR */
    defaultISR, /* T32_INT2 ISR */
    defaultISR, /* T32_INTC ISR */
    defaultISR, /* AES ISR */
    defaultISR, /* RTC ISR */
    defaultISR, /* DMA_ERR ISR */
    defaultISR, /* DMA_INT3 ISR */
    defaultISR, /* DMA_INT2 ISR */
    defaultISR, /* DMA_INT1 ISR */
    defaultISR, /* DMA_INT0 ISR */
    Port1IsrHandler, /* PORT1 ISR */
    defaultISR, /* PORT2 ISR */
    defaultISR, /* PORT3 ISR */
    defaultISR, /* PORT4 ISR */
    defaultISR, /* PORT5 ISR */
    defaultISR, /* PORT6 ISR */
    defaultISR, /* Reserved 41 */
    defaultISR, /* Reserved 42 */
    defaultISR, /* Reserved 43 */
    defaultISR, /* Reserved 44 */
    defaultISR, /* Reserved 45 */
    defaultISR, /* Reserved 46 */
    defaultISR, /* Reserved 47 */
    defaultISR, /* Reserved 48 */
    defaultISR, /* Reserved 49 */
    defaultISR, /* Reserved 50 */
    defaultISR, /* Reserved 51 */
    defaultISR, /* Reserved 52 */
    defaultISR, /* Reserved 53 */
    defaultISR, /* Reserved 54 */
    defaultISR, /* Reserved 55 */
    defaultISR, /* Reserved 56 */
    defaultISR, /* Reserved 57 */
    defaultISR, /* Reserved 58 */
    defaultISR, /* Reserved 59 */
    defaultISR, /* Reserved 60 */
    defaultISR, /* Reserved 61 */
    defaultISR, /* Reserved 62 */
    defaultISR, /* Reserved 63 */
    defaultISR /* Reserved 64 */
    };

    中断向量表MAP文件

    address name
    ------- ----
    00000000 __TI_static_base__
    00000000 interruptVectors
    00000200 __STACK_SIZE