#include "fbl_ap.h"
|
#include "fbl_def.h"
|
#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")));
|
|
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 = (void (*)(void))(*((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
|
}
|