#include "fbl_ap.h" #include "fbl_def.h" #include "xl_nvic.h" #include __IO uint8_t ProgramRequest[8] __attribute__((section(".noinit_bootReqFlag"))); // __IO uint32_t VectorTable[99] __attribute__((section(".RAMVectorTable"))); void FblSetFblProgramRequestFlag(void) { ProgramRequest[0] = kProgramRequestByte0; ProgramRequest[1] = kProgramRequestByte1; ProgramRequest[2] = kProgramRequestByte2; ProgramRequest[3] = kProgramRequestByte3; ProgramRequest[4] = kProgramRequestByte4; ProgramRequest[5] = kProgramRequestByte5; ProgramRequest[6] = kProgramRequestByte6; ProgramRequest[7] = kProgramRequestByte7; } uint8_t FblChkFblProgramRequestFlag(void) { return (((ProgramRequest[0] == kProgramRequestByte0) && (ProgramRequest[1] == kProgramRequestByte1) && (ProgramRequest[2] == kProgramRequestByte2) && (ProgramRequest[3] == kProgramRequestByte3) && (ProgramRequest[4] == kProgramRequestByte4) && (ProgramRequest[5] == kProgramRequestByte5) && (ProgramRequest[6] == kProgramRequestByte6) && (ProgramRequest[7] == kProgramRequestByte7)) ? 1u : 0u); } void FblClrFblProgramRequestFlag(void) { uint8_t byteIndex; for (byteIndex = 0; byteIndex < 8; byteIndex++) { ProgramRequest[byteIndex] = 0x00u; } } static void Ostick_ReInit(void) { SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk; //¹Ø±ÕSYSTICKÖÐ¶Ï SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; //¹Ø±ÕSYSTICK } extern void AP_StartApp(void) { void (*pAppFun)(void); uint32_t JumpAddr; JumpAddr = (*((__IO uint32_t *)((APPLSTART_OFFSET + (uint32_t)4)))); pAppFun = (void (*)(void))(JumpAddr); __set_MSP(*(__IO uint32_t *)APPLSTART_OFFSET); Ostick_ReInit(); NVIC_SetVectorTable(NVIC_VectTab_FLASH, APPLSTART_OFFSET); pAppFun(); // jump }