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.

RM48L950 Start Address Problem



Dear. Manager

I want to change start address 0x0 to 0x80000, for bootloader.

I already modified linker command file, It didn't works.

Is it another option?

 

[linker command file]

 

MEMORY

 {   

 VECTORS (X)  : origin=0x00080000 length=0x00000020    

 FLASH0  (RX) : origin=0x00080020 length=0x000FFFE0

 FLASH1  (RX) : origin=0x00180000 length=0x00180000

 STACKS  (RW) : origin=0x08000000 length=0x00001500

 RAM     (RW) : origin=0x08001500 length=0x00026B00

 /*    

 VECTORS (X)  : origin=0x00000000 length=0x00000020  

 FLASH0  (RX) : origin=0x00000020 length=0x0017FFE0  

 FLASH1  (RX) : origin=0x00180000 length=0x00180000  

 STACKS  (RW) : origin=0x08000000 length=0x00001500  

 RAM (RW) : origin=0x08001500 length=0x00026B00

*/

 }

 

 

  • Bongju,

    The start address is not changeable. It will always be 0x0. You may find useful information in the following thread about how to handle interrupts in bootloader and application.

    http://e2e.ti.com/support/microcontrollers/hercules/f/312/p/206272/736221.aspx#736221

    Thanks and regards,

    Zhaohong

  • Zhaohong,

    I made bootloader.

    It's start address is 0x00000, jump address is 0x80000 after complete download application binary.

    I want address jump scenario.

    power on -> bootloader : 0x00000 -> application run : 0x80000.

    How can I do for it?

     

     

     

  • Bongju,

    Assume that bootloader and application are two independent programs. They have independent  interrupt vector tables. The thread in my earlier reply explains one way to handle it between bootloader and application. In that example, the bootloader uses mempry from 0x0 to 0x7fff, and application uses from 0x800 and above. The vector table for the application is located at 0x8000. You can modify those addresses to meet the requirement of your application.

    At the end of your boot loader, you can use the following instruction to jump to you application at 0x80000.

    mov r0,0x80000

    b r0

    Let me know if this addresses your question.

    Thanks and regards,

    Zhaohong

  • Zhaohong,

    I made the bootloader. It is operating as updating application when the GPIO is “On”, as jumper to application(on 0x80000) when the GPIO is “Off”.

    I tested whether this bootloader is updating or not, with 2 applications.

    The first application, “LED toggle program”, is worked, which is not using Interrupt.

    Another isn’t worked, which has Interrupt.

     

    I modified like followings in both of “link cmd file”

    -----------------followings----------------------

    MEMORY{

    VECTORS (X) : origin=0x00080000 length=0x00000020

    FLASH0 (RX) : origin=0x00080020 length=0x0007FFE0

    FLASH1 (RX) : origin=0x00100000 length=0x00080000

    STACKS (RW) : origin=0x08000000 length=0x00002000

    RAM (RW) : origin=0x08002000 length=0x0003ED00

    }

    ------------------------------------------------------------

    Am I right or not?

    If not, which part do I modify?

    Like interrupt vector? If yes, how can I?

     

    Thank you.

  • Zhaohong,

    The first application, “LED toggle program”, is Hercules_RM48_Blinky_Example.

     

    Thank you.