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.

Executing Code from Flash - MSP430f5438A

Other Parts Discussed in Thread: MSP430F5438A

I have written a small program which receives data over UART and dumps the received Data in to the Flash of msp430f5438a. The data received over UART is a stripped or raw hex file ( for example Blinky Led.hex after removing the TI or Intel information from the Hex file ) and flashed to the proper non overlapping flash address. Lastly I call jump ( using function pointer ) to the starting address of the hex file where it is stored but instead of seeing LED blinking the mcu goes in to infinite loop. 

So my question is can we execute from flash , is it even possible to jump to a new flash location and start the execution from there.

My environment : MSP430F5438A , CCS 

Starting Flash Address : 0x20000 , Hex file received size = 232 bytes

CCS linker file mentioned start flash address is 0x5C00.

  • Yes, MSP430F5438A (as well as a lot of other chips) is designed to execute from flash, and to jump conditionally ore unconditionally according to the code in flash.

    Where is your "small program" stored in Flash? (The address.) Can you produce a hex file with either TI or Intel format?

    Can you also show us the Blinky Led.hex file?

    Using c and c-compiler is just for the convenience of the programmer. The CPU does not understand that at all. It what you eventually put into the Flash memory that counts!
  • "Small Program " is stored or starts at 0x5C00 and it will not over lap the with the received or dumped data in to the flash as dumping of data begins from 0x20000 which is actually the jump location for my jump instruction.

    Blinky_hex file :

    :1A5C00008100005CB11398000C930224B11300000C43B1136E00B1139C00E7
    :02FFD20092009B
    :02FFD400920099
    :02FFD600920097
    :02FFD800920095
    :02FFDA00920093
    :02FFDC00920091
    :02FFDE0092008F
    :02FFE00092008D
    :02FFE20092008B
    :02FFE400920089
    :02FFE600920087
    :02FFE800920085
    :02FFEA00920083
    :02FFEC00920081
    :02FFEE0092007F
    :02FFF00092007D
    :02FFF20092007B
    :02FFF400920079
    :02FFF600920077
    :02FFF800920075
    :02FFFA00920073
    :02FFFC00920071
    :02FFFE00005CA5
    :020000040001F9
    :200000002A1440181A425C014018B240805A5C018F0000009F000100142889000000880094
    :2000200000000D3C0C097F4C4F4F5F0600185F4F0000A90004000D094F13A9000400D9081B
    :20004000F12B7AC23AD0085A4018824A5C018F0000009F00000009248A000000033C6A13BA
    :20006000AA0004009A000000FA2328161001F103B240805A5C01D2D30402D2E30202B1405A
    :20008000102700009183000081930000F627FA3F034332D01000FD3F1C4310010343FF3F23
    :00000001FF

    The above one is actual one i.e before removing intel information from it.

    Here is what i get when i remove the Intel information :

    0081 5C00 13B1 0098 930C 2402 13B1 0000 430C 13B1 006E 13B1 009C
    0092 0092 0092 0092 0092 0092 0092 0092 0092 0092 0092 0092 0092
    0092 0092 0092 0092 0092 0092 0092 0092 0092 5C00 142A 1840 421A
    015C 1840 40B2 5A80 015C 008F 0000 009F 0001 2814 0089 0000 0088
    0000 3C0D 090C 4C7F 4F4F 065F 1800 4F5F 0000 00A9 0004 090D 134F
    00A9 0004 08D9 2BF1 C27A D03A 5A08 1840 4A82 015C 008F 0000 009F
    0000 2409 008A 0000 3C03 136A 00AA 0004 009A 0000 23FA 1628 0110
    03F1 40B2 5A80 015C D3D2 0204 E3D2 0202 40B1 2710 0000 8391 0000
    9381 0000 27F6 3FFA 4303 D032 0010 3FFD 431C 0110 4303 3FFF

    I think I have taken care of the endianness for msp430.
  • It's pretty hard to download hex code and make it always work.
    If you compile the code at a specific address and memory-save that part and place it back at the same location it should work.
    Once it's compiled its pure machine-code and BR and Calls may crash as it's based on fixed absolute address.
    jmp/jne/jeq will be fine as it's a +-512 step system.

    But what about ISR vectors, did they change?
    Does it need to be Relocatable code?,
    Does it use absolute address for calls within itself that can not change?

    So if you just want to see if it can be done, yes it can but I recommend you move on to some other project you want to do.
  • You did a nice job removing the Intel information and did take care of the endianess of msp430.

    However, you also removed the information about where each bytes should have been placed in the Flash. Specifically,  the original Intel hex file says the first 26 (0x1A) bytes should be placed starting at address 0x05C00 (and ending at 0x05C19) . And the subsequent bytes should be placed starting at 0x0FFD2 (and ending at 0x1009F).

    Unless your "small program" knows this and placed each byte where it belongs and without overlapping that with itself, this code will not run correctly because it is in the wrong place.

    Here is Blinky in its right place:

    005C00    0081 5C00          mova    #0x5C00,SP

    005C04    13B1 0098          calla   #0x10098

    005C08    930C               tst.w   R12

    005C0A    2402               jeq     0x5C10

    005C0C    13B1 0000          calla   #0x10000

    005C10    430C               clr.w   R12

    005C12    13B1 006E          calla   #0x1006E

    005C16    13B1 009C          calla   #0x1009C

    00FFD2    0092 0092          ;useless vectors

    00FFD6    0092 0092

    00FFDA    0092 0092

    00FFDE    0092 0092

    00FFE2    0092 0092

    00FFE6    0092 0092

    00FFEA    0092 0092

    00FFEE    0092 0092

    00FFF2    0092 0092

    00FFF6    0092 0092

    00FFFA    0092 0092

    00FFFE    5C00               ;reset vector

    010000    142A               pushm.a #3,R10

    010002    1840 421A 015C     movx.w  &WDTCTL,R10

    010008    1840 40B2 5A80     movx.w  #0x5A80,&WDTCTL

              015C

    010010    008F 0000          mova    #0x0,R15

    010014    009F 0001          cmpa    #0x1,R15

    010018    2814               jnc     0x10042

    01001A    0089 0000          mova    #0x0,R9

    01001E    0088 0000          mova    #0x0,R8

    010022    3C0D               jmp     0x1003E

    010024    090C               mova    @R9,R12

    010026    4C7F               mov.b   @R12+,R15

    010028    4F4F               mov.b   R15,R15

    01002A    065F               rlam.w  #2,R15

    01002C    1800 4F5F 0000     movx.a  0x0(R15),R15

    010032    00A9 0004          adda    #0x4,R9

    010036    090D               mova    @R9,R13

    010038    134F               calla   R15

    01003A    00A9 0004          adda    #0x4,R9

    01003E    08D9               cmpa    R8,R9

    010040    2BF1               jnc     0x10024

    010042    C27A               bic.b   #0x8,R10

    010044    D03A 5A08          bis.w   #0x5A08,R10

    010048    1840 4A82 015C     movx.w  R10,&WDTCTL

    01004E    008F 0000          mova    #0x0,R15

    010052    009F 0000          cmpa    #0x0,R15

    010056    2409               jeq     0x1006A

    010058    008A 0000          mova    #0x0,R10

    01005C    3C03               jmp     0x10064

    01005E    136A               calla   @R10

    010060    00AA 0004          adda    #0x4,R10

    010064    009A 0000          cmpa    #0x0,R10

    010068    23FA               jne     0x1005E

    01006A    1628               popm.a  #3,R10

    01006C    0110               reta

    01006E    03F1               decda   SP

    010070    40B2 5A80 015C     mov.w   #0x5A80,&WDTCTL

    010076    D3D2 0204          bis.b   #0x1,&P1DIR

    01007A    E3D2 0202          xor.b   #0x1,&P1OUT

    01007E    40B1 2710 0000     mov.w   #0x2710,0x0(SP)

    010084    8391 0000          dec.w   0x0(SP)

    010088    9381 0000          tst.w   0x0(SP)

    01008C    27F6               jeq     0x1007A

    01008E    3FFA               jmp     0x10084

    010090    4303               nop

    010092    D032 0010          bis.w   #0x10,SR

    010096    3FFD               jmp     0x10092

    010098    431C               mov.w   #0x1,R12

    01009A    0110               reta

    01009C    4303               nop

    01009E    3FFF               jmp     0x1009E

  • Thanks for reply and for finding the bug in my process.
    So the only way for me to make this working is by doing changes in the linker file for the 'Blinky' project. Am i right? and if that's the case then how can i tell linker/compiler to produce a hex file with linear addresses only? I don't think i should change the Interrupt vector locations in linker.
    Is there a way around?
  • You are correct, but the devil is in the detail.

    Your Blinky is very short and actually does not use interrupts at all. Your c-compiler/linker currently splits the object in many pieces. First, some 26 bytes at the beginning of "lower memory" (with 16-bit address). Next, 23 pieces of 2-byte vectors at the end of "lower memory". And last, 160 bytes in "higher memory" (with 20-bit address). In cases like this, it is possible to have all the object in one continuous block of "lower memory". But in general, this is not possible. Only 0x5C00-0xFF&F are available for both your Loader and "Loadee" in the "lower memory".

    Thus if you want to use your method, you need to modify you Loader to handle disjoint "Loadee".

    The TI "BSL" and "MSP430Flasher" can already do what your Loader intend to do. They added a lot of other bells and whistles and carry excessive baggage/idiosyncrasy. When in Rome, do as the Romans do

  • Hello,

     I did manage to change the Linker Script for the Blinky_Led Project , and i got it working 90%. why 90% -> the control jumps to the new flash location ( i.e. starting location of Blinky Hex file starting from 0x92B0 ) and it starts executing the Hex code but instead of LED blinking it just stays ON. Reason , CCS Debugger is not allowing me to change the RESET address. I cannot have RESET vector in sequential order.  And RESET is the reason for the Infinite loop or for the LED blinking.

    Do you have any idea how to change RESET address? It has to be in sequence or linear with the other addresses.

    MEMORY
    {
    SFR : origin = 0x0000, length = 0x0010
    PERIPHERALS_8BIT : origin = 0x0010, length = 0x00F0
    PERIPHERALS_16BIT : origin = 0x0100, length = 0x0100
    RAM : origin = 0x1C00, length = 0x4000
    INFOA : origin = 0x1980, length = 0x0080
    INFOB : origin = 0x1900, length = 0x0080
    INFOC : origin = 0x1880, length = 0x0080
    INFOD : origin = 0x1800, length = 0x0080
    FLASH : origin = 0x92B0, length = 0x001A
    FLASH2 : origin = 0x92F6, length = 0x00FA
    INT00 : origin = 0xFF80, length = 0x0002
    INT01 : origin = 0xFF82, length = 0x0002
    INT02 : origin = 0xFF84, length = 0x0002
    INT03 : origin = 0xFF86, length = 0x0002
    INT04 : origin = 0xFF88, length = 0x0002
    INT05 : origin = 0xFF8A, length = 0x0002
    INT06 : origin = 0xFF8C, length = 0x0002
    INT07 : origin = 0xFF8E, length = 0x0002
    INT08 : origin = 0xFF90, length = 0x0002
    INT09 : origin = 0xFF92, length = 0x0002
    INT10 : origin = 0xFF94, length = 0x0002
    INT11 : origin = 0xFF96, length = 0x0002
    INT12 : origin = 0xFF98, length = 0x0002
    INT13 : origin = 0xFF9A, length = 0x0002
    INT14 : origin = 0xFF9C, length = 0x0002
    INT15 : origin = 0xFF9E, length = 0x0002
    INT16 : origin = 0xFFA0, length = 0x0002
    INT17 : origin = 0xFFA2, length = 0x0002
    INT18 : origin = 0xFFA4, length = 0x0002
    INT19 : origin = 0xFFA6, length = 0x0002
    INT20 : origin = 0xFFA8, length = 0x0002
    INT21 : origin = 0xFFAA, length = 0x0002
    INT22 : origin = 0xFFAC, length = 0x0002
    INT23 : origin = 0xFFAE, length = 0x0002
    INT24 : origin = 0xFFB0, length = 0x0002
    INT25 : origin = 0xFFB2, length = 0x0002
    INT26 : origin = 0xFFB4, length = 0x0002
    INT27 : origin = 0xFFB6, length = 0x0002
    INT28 : origin = 0xFFB8, length = 0x0002
    INT29 : origin = 0xFFBA, length = 0x0002
    INT30 : origin = 0xFFBC, length = 0x0002
    INT31 : origin = 0xFFBE, length = 0x0002
    INT32 : origin = 0xFFC0, length = 0x0002
    INT33 : origin = 0xFFC2, length = 0x0002
    INT34 : origin = 0xFFC4, length = 0x0002
    INT35 : origin = 0xFFC6, length = 0x0002
    INT36 : origin = 0xFFC8, length = 0x0002
    INT37 : origin = 0xFFCA, length = 0x0002
    INT38 : origin = 0xFFCC, length = 0x0002
    INT39 : origin = 0xFFCE, length = 0x0002
    INT40 : origin = 0xFFD0, length = 0x0002
    INT41 : origin = 0x92CA, length = 0x0002
    INT42 : origin = 0x92CC, length = 0x0002
    INT43 : origin = 0x92CE, length = 0x0002
    INT44 : origin = 0x92D0, length = 0x0002
    INT45 : origin = 0x92D2, length = 0x0002
    INT46 : origin = 0x92D4, length = 0x0002
    INT47 : origin = 0x92D6, length = 0x0002
    INT48 : origin = 0x92D8, length = 0x0002
    INT49 : origin = 0x92DA, length = 0x0002
    INT50 : origin = 0x92DC, length = 0x0002
    INT51 : origin = 0x92DE, length = 0x0002
    INT52 : origin = 0x92E0, length = 0x0002
    INT53 : origin = 0x92E2, length = 0x0002
    INT54 : origin = 0x92E4, length = 0x0002
    INT55 : origin = 0x92E6, length = 0x0002
    INT56 : origin = 0x92E8, length = 0x0002
    INT57 : origin = 0x92EA, length = 0x0002
    INT58 : origin = 0x92EC, length = 0x0002
    INT59 : origin = 0x92EE, length = 0x0002
    INT60 : origin = 0x92F0, length = 0x0002
    INT61 : origin = 0x92F2, length = 0x0002
    INT62 : origin = 0x92F4, length = 0x0002
    RESET : origin = 0xFFFE, length = 0x0002
    }

  • I posted a wrong linker file , here is the correct one:




    MEMORY
    {
    SFR : origin = 0x0000, length = 0x0010
    PERIPHERALS_8BIT : origin = 0x0010, length = 0x00F0
    PERIPHERALS_16BIT : origin = 0x0100, length = 0x0100
    RAM : origin = 0x1C00, length = 0x4000
    INFOA : origin = 0x1980, length = 0x0080
    INFOB : origin = 0x1900, length = 0x0080
    INFOC : origin = 0x1880, length = 0x0080
    INFOD : origin = 0x1800, length = 0x0080
    FLASH : origin = 0x92B0, length = 0x001A
    FLASH2 : origin = 0x92F8, length = 0x00FA
    INT00 : origin = 0xFF80, length = 0x0002
    INT01 : origin = 0xFF82, length = 0x0002
    INT02 : origin = 0xFF84, length = 0x0002
    INT03 : origin = 0xFF86, length = 0x0002
    INT04 : origin = 0xFF88, length = 0x0002
    INT05 : origin = 0xFF8A, length = 0x0002
    INT06 : origin = 0xFF8C, length = 0x0002
    INT07 : origin = 0xFF8E, length = 0x0002
    INT08 : origin = 0xFF90, length = 0x0002
    INT09 : origin = 0xFF92, length = 0x0002
    INT10 : origin = 0xFF94, length = 0x0002
    INT11 : origin = 0xFF96, length = 0x0002
    INT12 : origin = 0xFF98, length = 0x0002
    INT13 : origin = 0xFF9A, length = 0x0002
    INT14 : origin = 0xFF9C, length = 0x0002
    INT15 : origin = 0xFF9E, length = 0x0002
    INT16 : origin = 0xFFA0, length = 0x0002
    INT17 : origin = 0xFFA2, length = 0x0002
    INT18 : origin = 0xFFA4, length = 0x0002
    INT19 : origin = 0xFFA6, length = 0x0002
    INT20 : origin = 0xFFA8, length = 0x0002
    INT21 : origin = 0xFFAA, length = 0x0002
    INT22 : origin = 0xFFAC, length = 0x0002
    INT23 : origin = 0xFFAE, length = 0x0002
    INT24 : origin = 0xFFB0, length = 0x0002
    INT25 : origin = 0xFFB2, length = 0x0002
    INT26 : origin = 0xFFB4, length = 0x0002
    INT27 : origin = 0xFFB6, length = 0x0002
    INT28 : origin = 0xFFB8, length = 0x0002
    INT29 : origin = 0xFFBA, length = 0x0002
    INT30 : origin = 0xFFBC, length = 0x0002
    INT31 : origin = 0xFFBE, length = 0x0002
    INT32 : origin = 0xFFC0, length = 0x0002
    INT33 : origin = 0xFFC2, length = 0x0002
    INT34 : origin = 0xFFC4, length = 0x0002
    INT35 : origin = 0xFFC6, length = 0x0002
    INT36 : origin = 0xFFC8, length = 0x0002
    INT37 : origin = 0xFFCA, length = 0x0002
    INT38 : origin = 0xFFCC, length = 0x0002
    INT39 : origin = 0xFFCE, length = 0x0002
    INT40 : origin = 0xFFD0, length = 0x0002
    INT41 : origin = 0x92CA, length = 0x0002
    INT42 : origin = 0x92CC, length = 0x0002
    INT43 : origin = 0x92CE, length = 0x0002
    INT44 : origin = 0x92D0, length = 0x0002
    INT45 : origin = 0x92D2, length = 0x0002
    INT46 : origin = 0x92D4, length = 0x0002
    INT47 : origin = 0x92D6, length = 0x0002
    INT48 : origin = 0x92D8, length = 0x0002
    INT49 : origin = 0x92DA, length = 0x0002
    INT50 : origin = 0x92DC, length = 0x0002
    INT51 : origin = 0x92DE, length = 0x0002
    INT52 : origin = 0x92E0, length = 0x0002
    INT53 : origin = 0x92E2, length = 0x0002
    INT54 : origin = 0x92E4, length = 0x0002
    INT55 : origin = 0x92E6, length = 0x0002
    INT56 : origin = 0x92E8, length = 0x0002
    INT57 : origin = 0x92EA, length = 0x0002
    INT58 : origin = 0x92EC, length = 0x0002
    INT59 : origin = 0x92EE, length = 0x0002
    INT60 : origin = 0x92F0, length = 0x0002
    INT61 : origin = 0x92F2, length = 0x0002
    INT62 : origin = 0x92F4, length = 0x0002
    RESET : origin = 0xFFFE, length = 0x0002
    }
  • In your old original post, you said:

    “The data received over UART is a stripped or raw hex file ( for example Blinky Led.hex after removing the TI or Intel information from the Hex file ) and flashed to the proper non overlapping flash address. Lastly I call jump ( using function pointer ) to the starting address of the hex file where it is stored …”

    Thus in the current situation, it should jump to 0x92B0.

    You also knew that “I don't think i should change the Interrupt vector locations in linker.”  And now you did change them. But in this case, it does not hurt. This is because Blinky did not use interrupt at all. The vectors CCS generated are of no use and you can put them anywhere as long as they do not replace useful code/constants. The reset vector you worried about is only used to start the Blinky code. Since you jump to it, you could use “RESET : origin = 0x92F6, length = 0x0002” with no harm done too.

  • I did this " RESET : origin = 0x92F6, length = 0x0002 " but it never works , I know i shouldn't be changing Interrupt vectors in Linker script , but i have to make this thing work.

    if i change RESET to 0x92F6 , CCS debugger never gets attached. Even if i flash the Hex file it never works. Is there any solution to change the RESET address in CCS. Still searching for a solution.
  • Your original post says:

    gagan gaba said:
    I have written a small program which receives data over UART and dumps the received Data in to the Flash of msp430f5438a. The data received over UART is a stripped or raw hex file ( for example Blinky Led.hex after removing the TI or Intel information from the Hex file ) and flashed to the proper non overlapping flash address. Lastly I call jump ( using function pointer ) to the starting address of the hex file where it is stored but instead of seeing LED blinking the mcu goes in to infinite loop. 

    Is that still what you are doing now?

    It should have worked.

    Could you try to use the following raw hex file?

    :105C00008100005CF103B240805A5C01D2D30402EF
    :105C1000D2E30202B140102700009183000081937B
    :085C20000000F627FA3F0343E0

    Like you

  • For some reason, my previous reply was cut short. It should continue as follows.

    ............................................................................................................................

    Like you did before, after the Intel formatting stuff are removed you get.

     0081 5C00
     03F1
     40B2 5A80 015C
     D3D2 0204
     E3D2 0202
     40B1 2710 0000
     8391 0000
     9381 0000
     27F6
     3FFA
     4303

    If you compare this with what you got in one of your earlier post:

    0081 5C00 13B1 0098 930C 2402 13B1 0000 430C 13B1 006E 13B1 009C
    0092 0092 0092 0092 0092 0092 0092 0092 0092 0092 0092 0092 0092
    0092 0092 0092 0092 0092 0092 0092 0092 0092 5C00 142A 1840 421A
    015C 1840 40B2 5A80 015C 008F 0000 009F 0001 2814 0089 0000 0088
    0000 3C0D 090C 4C7F 4F4F 065F 1800 4F5F 0000 00A9 0004 090D 134F
    00A9 0004 08D9 2BF1 C27A D03A 5A08 1840 4A82 015C 008F 0000 009F
    0000 2409 008A 0000 3C03 136A 00AA 0004 009A 0000 23FA 1628 0110
    03F1 40B2 5A80 015C D3D2 0204 E3D2 0202 40B1 2710 0000 8391 0000
    9381 0000 27F6 3FFA 4303 D032 0010 3FFD 431C 0110 4303 3FFF

    You can see that I discarded all the red herring generated by your compiler/linker ;)

  • Sorry for my late reply , i have been trying a lot to achieve above thing.

    I tried your way of stripping the Hex file ( i.e. without INT Vectors ) but no success at all. Then I was browsing through various TI post of this kind and i found some thing very cool and interesting. Please find the attach. 

    The developer from TI suggested to create virtual interrupt table like sort of double jump on an interrupt. 

    I tried his solution too but my debugger will never attach to the code. In the CCS i get no play button activated. I am 100% confident of this solution , it will work.

    Some inputs would be highly appreciated.Custom ISR Structure.zip

  • gagan gaba said:
    I tried your way of stripping the Hex file ( i.e. without INT Vectors ) but no success at all.

    Did you do that with what you said in your first posting?

    gagan gaba said:
    I have written a small program which receives data over UART and dumps the received Data in to the Flash of msp430f5438a. The data received over UART is a stripped or raw hex file ( for example Blinky Led.hex after removing the TI or Intel information from the Hex file ) and flashed to the proper non overlapping flash address. Lastly I call jump ( using function pointer ) to the starting address of the hex file where it is stored...

    I suspect that you did not do it that way, or did not do it correctly. Especially the last part "call jump ( using function pointer ) to the starting address of the hex file where it is stored"

    Is it possible that you show me the code how you did that (that is, what you called "a small program which receives data over UART and ...")

    As for the other method you read about, that should work too if you implement that correctly. But that method is too complicated and unnecessary.  

  • Well I did tried your way of Blink_LED and You are right i was missing a step , so it works :) but now i want to use interrupt. I want to use and learn the concept of virtual vector table and want to use it to make it generic.

    In my last reply I attached some files ( which i downloaded from one of the forums in TI ), I want to implement that and learn that.

    The files are meant for 5419 where as i am working on 5438a , but i saw there is no difference between two as far as Interrupt Vectors are concerned.

    So i took those files and integrated in my project but after i gets compiled successfully and generates a Hex file , I am never able to attach the debugger.

    Do i have to do some extra setting under project properties?  Any linker settings?

    Here is the output of compiler when i have custom Linker file :

    "Led_Blinky.out" .int00 ==> .int00
    "Led_Blinky.out" .int01 ==> .int01
    "Led_Blinky.out" .int02 ==> .int02
    "Led_Blinky.out" .int03 ==> .int03
    "Led_Blinky.out" .int04 ==> .int04
    "Led_Blinky.out" .int05 ==> .int05
    "Led_Blinky.out" .int06 ==> .int06
    "Led_Blinky.out" .int07 ==> .int07
    "Led_Blinky.out" .int08 ==> .int08
    "Led_Blinky.out" .int09 ==> .int09
    "Led_Blinky.out" .int10 ==> .int10
    "Led_Blinky.out" .int11 ==> .int11
    "Led_Blinky.out" .int12 ==> .int12
    "Led_Blinky.out" .int13 ==> .int13
    "Led_Blinky.out" .int14 ==> .int14
    "Led_Blinky.out" .int15 ==> .int15
    "Led_Blinky.out" .int16 ==> .int16
    "Led_Blinky.out" .int17 ==> .int17
    "Led_Blinky.out" .int18 ==> .int18
    "Led_Blinky.out" .int19 ==> .int19
    "Led_Blinky.out" .int20 ==> .int20
    "Led_Blinky.out" .int21 ==> .int21
    "Led_Blinky.out" .int22 ==> .int22
    "Led_Blinky.out" .int23 ==> .int23
    "Led_Blinky.out" .int24 ==> .int24
    "Led_Blinky.out" .int25 ==> .int25
    "Led_Blinky.out" .int26 ==> .int26
    "Led_Blinky.out" .int27 ==> .int27
    "Led_Blinky.out" .int28 ==> .int28
    "Led_Blinky.out" .int29 ==> .int29
    "Led_Blinky.out" .int30 ==> .int30
    "Led_Blinky.out" .int31 ==> .int31
    "Led_Blinky.out" .int32 ==> .int32
    "Led_Blinky.out" .int33 ==> .int33
    "Led_Blinky.out" .int34 ==> .int34
    "Led_Blinky.out" .int35 ==> .int35
    "Led_Blinky.out" .int36 ==> .int36
    "Led_Blinky.out" .int37 ==> .int37
    "Led_Blinky.out" .int38 ==> .int38
    "Led_Blinky.out" .int39 ==> .int39
    "Led_Blinky.out" .int40 ==> .int40
    "Led_Blinky.out" .int41 ==> .int41
    "Led_Blinky.out" .int42 ==> .int42
    "Led_Blinky.out" .int43 ==> .int43
    "Led_Blinky.out" .int44 ==> .int44
    "Led_Blinky.out" .int45 ==> .int45
    "Led_Blinky.out" .int46 ==> .int46
    "Led_Blinky.out" .int47 ==> .int47
    "Led_Blinky.out" .int48 ==> .int48
    "Led_Blinky.out" .int49 ==> .int49
    "Led_Blinky.out" .int50 ==> .int50
    "Led_Blinky.out" .int51 ==> .int51
    "Led_Blinky.out" .int52 ==> .int52
    "Led_Blinky.out" .int53 ==> .int53
    "Led_Blinky.out" .int54 ==> .int54
    "Led_Blinky.out" .int55 ==> .int55
    "Led_Blinky.out" .int56 ==> .int56
    "Led_Blinky.out" .int57 ==> .int57
    "Led_Blinky.out" .int58 ==> .int58
    "Led_Blinky.out" .int59 ==> .int59
    "Led_Blinky.out" .int60 ==> .int60
    "Led_Blinky.out" .int61 ==> .int61
    "Led_Blinky.out" .int62 ==> .int62
    "Led_Blinky.out" .reset ==> .reset
    "Led_Blinky.out" .text:_isr ==> .text:_isr
    "Led_Blinky.out" .text ==> .text

    I can see that i never compiles the .mainintvec and .brintvec  and i am curious to know why? 

    Thanks for your all the help.

**Attention** This is a public forum