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.

CCS/LAUNCHXL2-TMS57012: Bootloader Proxy Interrupt usage guide

Part Number: LAUNCHXL2-TMS57012

Tool/software: Code Composer Studio

Hello,

I have completed a basic Bootloader program. Where Hex addresses and data array of the Application Test program was created and programmed using Bootloader Code. 

But for Interrupt Handling TI engineer from India, Banglore recommended the usage of Proxy interrupt branching for Application & Bootloader code. He was going to provide some documentation and example. But I am not able to connect with him and he has not sent the files. Sales guys of TI is connecting us with someone else but it is taking too much time.

Can anyone help me with the example code and documentation related to the same?

  • Hello Kalpesh,

    Please modify the interrupt exception table for your bootloader:

    ;*****************************************************************************
    .sect ".intvecs"

    ;-------------------------------------------------------------------------------
    ; import reference for interrupt routines
    .ref _c_int00

    ;-------------------------------------------------------------------------------
    ; interrupt vectors
    ; Please change the #0x???? for your specified image location defined in bl_config.h

    b _c_int00 ;0x00, this is _c_int00 of your bootloader
    b #(application start address -0x08) ;for example application is at 0x10100; 0x100F8=$10100-0x8
    b #(application start address -0x08) ;SW INT. for example application is at 0x10100; 0x100F8=$10100-0x8
    b #(application start address -0x08) ;PABORT. for example application is at 0x10100; 0x100F8=$10100-0x8
    b #(application start address -0x08) ;DABORT. for example application is at 0x10100; 0x100F8=$10100-0x8
    eservedEntry
    b reservedEntry ;0x14
    ldr pc,[pc, #-0x1b0] ;0x18
    ldr pc,[pc, #-0x1b0] ;0x1C
  • Yes, I am using the same interrupt exception table which as follows for start address of 0x10100:

    ;*****************************************************************************
    .sect ".intvecs"
    .arm
    ;-------------------------------------------------------------------------------
    ; import reference for interrupt routines
    .ref _c_int00
    ;-------------------------------------------------------------------------------
    ; interrupt vectors
    b _c_int00 ;0x00
    b #0x13FF8 ;0x04; 0x100F8=$10100-0x8; 0x10100 is the application start addr
    b #0x13FF8 ;0x08, Software interrupt
    b #0x13FF8 ;0x0C, Abort (prefetch)
    b #0x13FF8 ;0x10, Abort (data)
    reservedEntry
    b reservedEntry ;0x14
    ldr pc,[pc, #-0x1b0] ;0x18
    ldr pc,[pc, #-0x1b0] ;0x1C

    Can you please explain how the proxy interrupt thing really works in reference to bootloader & application programs?
  • Can you please explain QJ Wang?
  • Hello,

    The exception vector table for application is located at 0x10100. For example, the prefetch abort is at 0x10100+0x0C. If a prefetch abort is received by the CPU, the CPU branches to 0x0C (PC=0x0C+0x08). To execute the prefetch abort ISR in application, CPU needs to branch to 0x1010C. Program Counter (PC) always pointers two instructions beyond the current executed instruction.

    so the offset is: 0x1010C - 0x0C - 0x08 = 0x10100-0x08 = 0x100F8
  • Ok. Thank you, QJ Wang.