tao_z
2022-08-07 f453cfb645516628a6d1fa36e2ca633e1da6d708
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "fbl_ap.h"
#include "fbl_def.h"
#include "xl_nvic.h"
#include <string.h>
__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
}