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
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.
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,
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)))(); }