| | |
| | | #include "xl_nvic.h" |
| | | #include <string.h> |
| | | __IO uint8_t ProgramRequest[8] __attribute__((section(".noinit_bootReqFlag_ram"))); |
| | | __IO uint32_t VectorTable[99] __attribute__((section(".RAMVectorTable"))); |
| | | // __IO uint32_t VectorTable[99] __attribute__((section(".RAMVectorTable"))); |
| | | |
| | | void FblSetFblProgramRequestFlag(void) |
| | | { |
| | |
| | | { |
| | | void (*pAppFun)(void); |
| | | uint32_t JumpAddr; |
| | | JumpAddr = (void (*)(void))(*((uint32_t *)((APPLSTART_OFFSET + (uint32_t)4)))); |
| | | pAppFun = (void (*)(void))JumpAddr; |
| | | JumpAddr = (*((__IO uint32_t *)((APPLSTART_OFFSET + (uint32_t)4)))); |
| | | pAppFun = (void (*)(void))(JumpAddr); |
| | | |
| | | __set_MSP(*(__IO uint32_t *)APPLSTART_OFFSET); |
| | | /* Copy application vector table to RAM */ |
| | | (void)memcpy((void *)VectorTable, (void *)APPLSTART_OFFSET, sizeof(VectorTable)); |
| | | |
| | | __asm volatile("cpsid i"); // disable all interrupt |
| | | Ostick_ReInit(); |
| | | /* Relocate vector table in SRAM at the adress 0x20000000 */ |
| | | NVIC_SetVectorTable(NVIC_VectTab_RAM, 0); // set vector table at start of ram ((uint32_t)0x20000000) |
| | | |
| | | (*pAppFun)(); // jump |
| | | NVIC_SetVectorTable(NVIC_VectTab_FLASH, APPLSTART_OFFSET); |
| | | pAppFun(); // jump |
| | | } |