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/TM4C1294NCPDT: TM4C1294NCPDT

Part Number: TM4C1294NCPDT

Tool/software: Code Composer Studio

hello

start my bootloader in address 0x80000

my application from 0 o 0x7ffff

how can I  jump  from the application to  address 0x80000 to  start the boot loader?

thanks

shimon

  • Hi,
    Have you had a chance to try the TivaWare bootloader examples? I will suggest you have the bootloader at 0x0 and the application at something like 0x4000 as shown in the example.

  • hi Charles
    thanks for the reply.
    I started the app in address 0
    an the bootloader in address 0x80000

    I need the way to jump to the boot address from the app.

    thanks

    shimon
  • Hi,

     I will suggest you reference the TivaWare boot_demo1 example. If you look at the boot_demo1.c file you will see that it passes the control to the bootloader by calling the JumpToBootLoader().

     In the JumpToBootLoader() it will first disable interrupts and then it will make a SVC call by jumping to vector 0x2C in the vector table. The SVC vector will then call the UpdateHandler function in the bootloader. Why don't you try the TivaWare example and get it to work first so you have some ideas how it behaves? Is there any reason why you want to place the bootloader at a non 0x0 location? We don't have such bootloader example. Let's us know if you get it to work.  

    //*****************************************************************************
    //
    // Passes control to the bootloader and initiates a remote software update.
    //
    // This function passes control to the bootloader and initiates an update of
    // the main application firmware image via UART0 or USB depending
    // upon the specific boot loader binary in use.
    //
    // \return Never returns.
    //
    //*****************************************************************************
    void
    JumpToBootLoader(void)
    {
        //
        // We must make sure we turn off SysTick and its interrupt before entering 
        // the boot loader!
        //
        ROM_SysTickIntDisable(); 
        ROM_SysTickDisable(); 
    
        //
        // Disable all processor interrupts.  Instead of disabling them
        // one at a time, a direct write to NVIC is done to disable all
        // peripheral interrupts.
        //
        HWREG(NVIC_DIS0) = 0xffffffff;
        HWREG(NVIC_DIS1) = 0xffffffff;
        HWREG(NVIC_DIS2) = 0xffffffff;
        HWREG(NVIC_DIS3) = 0xffffffff;
    
        //
        // Return control to the boot loader.  This is a call to the SVC
        // handler in the boot loader.
        //
        (*((void (*)(void))(*(uint32_t *)0x2c)))(); 
    }

  • Hi ,
    Why are you keeping your boot loader after the application? There is chance that your application will overwrite boot loader.
    Regards,
    Digvijay