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.

msp430F6779 changing reset vector address

Other Parts Discussed in Thread: MSP430F6779

Hi, 

ıs there any methode for changin reset vector adress. I mean msp430f6779 starts C000h address. And ınterrupt vector table includes this address.

When I want to change reset address for example 2C000h(20 bit). How is this possible ?I couldnt reside this address on vector table couse this table for 16 bit addresses.

Best regards..

  • Hello,

    Please refer to this thread on how to create a custom reset vector.  System pre-initialization can be found in Section 6.8.1 of slau132.

    Thanks,

    Ryan

  • Ryan Brown1 said:
    Please refer to this thread on how to create a custom reset vector.

    Sure, but that won't solve what OP wants to do. The reason is:

    baycan vural said:
    When I want to change reset address for example 2C000h(20 bit). How is this possible ?I couldnt reside this address on vector table couse this table for 16 bit addresses.

    It is not possible, at least not directly. The MSP430 has the RESET Vector at 0xFFFE, and the vector can only be a 16-bit address (i.e. must be an address in lower 64KB address space.

    What you can do is to tell the tools not to include the reset vector at all. Then edit the linker file to add a symbol at the 0xFFFE location (named for instance CUSTOM_RESET), then place a variable there that points to a fixed location in lower FLASH (say 0xC000). At that address, place a JMP 0x2C000 instruction (can be hard coded and placed like any other fixed data segment).

    Finally, tell the linker to place your C_INT00 section at the 0x2C000 location.

  • Hi Brian, sorry for I could not reply earlier. I did what exactly you said and the result is positive.I write an assembly code which says to PC jump 2C000h address, and I reconfigure my linker file.So now it looks working fine.Thanks for your help.

    Best Regards.. 

  • Hi baycan

    I need to do the exact same thing and on the same processor but I can't quite get my head around how you code it.

    Please can you post the linker and relative code you implemented to get this working?

    Thanks very much

  • Hi Mark,

    If you want to do exact process you need to aply 3 different configuration:

    1-) You need to customise your linker file:

    If you chacked linker file before, you saw there are many memory related tags ( for example: INFO_MEMORY, DATA20_C,DATA20_ID ..) You need to create your own tag in this file. For instance my tag name is : BOOTLOADER_JUMP and I added this line into my linker file:

    -Z(CONST)BOOTLOADER_JUMP=1800-1808

    That means I tagged a memory location which has 8 bytes length on my memory. Now I can use this tag in my source code. Lets see second step.

    2-) Now I need to write in BOOTLOADER_JUMP area to JUMP "any address", to do this I need to add these codes just on my main function.

    #pragma location="BOOTLOADER_JUMP"
    __root const uint16_t bootloader_jump[] = {

    0x0280, 0xC000, // You need to reconfigure here for your own address
    };

    3-) Last step is about the where the program start after reset. I mean you need to configure reset vector address. For doing this I added a cstartup.s43 file in my project and I reconfigured my reset address easily.

    After added this, now we are all done.
  • Thanks Baycan

    We are using the TI-RTOS within the CCS environment and unfortunately cannot do the above. I've been given some suggestions and will try these.

    e2e.ti.com/.../455518

    Thanks for the help anyway.
  • Hi Baycan

    I have now actually done this using the same method.

    I have use INFOD (0x1800) as my area to put the jump instructions. This is already defined in the linker.

    Then I have use the following instruction in my linker to reassign _c_int00:

    .text:_isr:_c_int00 : {} > INFOD

    Then I put the following at the top of where my main lives (jump to 0x2C000) for the instruction:

    #pragma location=0x1800
    const uint32_t bootloader_jump[] = {
    0x00000280, 0x0002C000,
    };

    And it now works fine.

    Thanks again.

**Attention** This is a public forum