yincheng.zhong
2024-08-20 7744fffacb03dc81cc9dbaf9f5d86a0f21e79c03
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/******************************************************************************
 * @file     system_MK8000.h
 * @brief    CMSIS Device System Header
 *           File for Device MK8000
 * @version  V5.00
 * @date     10. January 2018
 ******************************************************************************/
/*
 * Copyright (c) 2009-2018 Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the License); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 
#ifndef SYSTEM_MK8000_H
#define SYSTEM_MK8000_H
 
#ifdef __cplusplus
extern "C" {
#endif
 
#include <stdint.h>
 
// define the firmware version
#define FIRMWARE_VERSION "V0.6.2"
#define VERSION_MAJOR (0)
#define VERSION_MID (6)
#define VERSION_MINOR (2)
 
// This version don't support secure boot
#define SECURE_EN 0
 
// User define
#define APP_BOOT_FLAG 0x10000000
#define APP_VERSION 0x00000002
#define APP_CPC 0x7F5AAAAA
 
#define BOOT_HEADER_MARKER 0x4D4BA5A5
 
#define SIG_LEN 256
#define PW_LEN 16
 
/**
  \brief Exception / Interrupt Handler Function Prototype
*/
typedef void (*VECTOR_TABLE_Type)(void);
 
struct BOOT_DESC_T
{
    uint32_t header_marker;
    uint32_t boot_flag;
    uint32_t boot_addr;
    uint32_t cpc;
    uint32_t image_len;
    uint32_t image_crc;
    uint32_t image_ver;
    uint32_t code_crc;
#if SECURE_EN
    uint8_t image_sig[SIG_LEN];
#endif
    const uint8_t isp_unprotect_pw[PW_LEN];
    const uint8_t isp_backdoor_pw[PW_LEN];
    uint32_t copy_len;
    uint32_t crc;
};
 
extern const struct BOOT_DESC_T mk_boot_desc __attribute__((aligned(16))) __attribute__((section(".ZBOOT_SECTION")));
extern const char mk_build_inf[80] __attribute__((section(".ZBUILD_SECTION")));
 
/**
  \brief System Clock Frequency (Core Clock)
*/
extern uint32_t SystemCoreClock;
 
/**
  \brief Setup the microcontroller system.
 
   Initialize the System and update the SystemCoreClock variable.
 */
extern void SystemInit(void);
 
/**
  \brief  Update SystemCoreClock variable.
 
   Updates the SystemCoreClock with current core Clock retrieved from cpu registers.
 */
extern void SystemCoreClockUpdate(void);
 
#ifdef __cplusplus
}
#endif
 
#endif /* SYSTEM_MK8000_H */