From cc432b761c884a0bd8e9d83db0a4e26109fc08b1 Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期五, 08 十一月 2024 15:35:38 +0800 Subject: [PATCH] 安邦手环GPS删除部分无用数据和修改4G波特率9600出厂测试固件 --- keil/include/devices/MK800X/Source/startup_MK800X.c | 271 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 271 insertions(+), 0 deletions(-) diff --git a/keil/include/devices/MK800X/Source/startup_MK800X.c b/keil/include/devices/MK800X/Source/startup_MK800X.c new file mode 100644 index 0000000..20fdf80 --- /dev/null +++ b/keil/include/devices/MK800X/Source/startup_MK800X.c @@ -0,0 +1,271 @@ +/****************************************************************************** + * @file startup_MK8000.c + * @brief CMSIS-Core(M) Device Startup File for MK8000 + * @version V2.0.3 + * @date 31. March 2020 + ******************************************************************************/ +/* + * Copyright (c) 2009-2020 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. + */ + +#include "MK800X.h" + +/*---------------------------------------------------------------------------- + External References + *----------------------------------------------------------------------------*/ +extern uint32_t __INITIAL_SP; +#ifndef STD_LIBC +extern void update_libc_rom_table(void); +#endif + +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) +extern __NO_RETURN void __PROGRAM_START(void); +#endif + +const struct BOOT_DESC_T mk_boot_desc = { + .header_marker = BOOT_HEADER_MARKER, + .boot_flag = APP_BOOT_FLAG, +#if defined(XIP_EN) + .boot_addr = FLASH_BASE, +#else + .boot_addr = SRAM_BASE, +#endif + .cpc = APP_CPC, + .image_len = (uint32_t)&mk_boot_desc, + .image_crc = 0, + .image_ver = APP_VERSION, + .code_crc = 0, +#if SECURE_EN + .image_sig = {0}, +#endif + .isp_unprotect_pw = {0}, + .isp_backdoor_pw = {0}, + .copy_len = (uint32_t)&mk_build_inf + sizeof(mk_build_inf), + .crc = 0, +}; + +#if defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdate-time" +#endif +const char mk_build_inf[80] = + "\n" + "Vendor\t: " + "MKSEMI" + "\n" + "Chip\t: " + "MK8000" + "\n" + "Date\t: " __DATE__ + "\n" + "Version\t: " FIRMWARE_VERSION "\0"; + +#if defined(__GNUC__) +#pragma GCC diagnostic pop +#endif + +/*---------------------------------------------------------------------------- + Internal References + *----------------------------------------------------------------------------*/ +__NO_RETURN void Reset_Handler(void); +__NO_RETURN void Default_Handler(void); + +/*---------------------------------------------------------------------------- + Exception / Interrupt Handler + *----------------------------------------------------------------------------*/ +/* Exceptions */ +void NMI_Handler(void) __attribute__((weak, alias("Default_Handler"))); +void HardFault_Handler(void) __attribute__((weak, alias("Default_Handler"))); +void SVC_Handler(void) __attribute__((weak, alias("Default_Handler"))); +void PendSV_Handler(void) __attribute__((weak, alias("Default_Handler"))); +void SysTick_Handler(void) __attribute__((weak, alias("Default_Handler"))); + +void BOD_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void ACMP0_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void ACMP1_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void DMA_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void SLEEP_TIMER_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void MAC_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void PHY_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void GPIO_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void AES_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void ADC_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void TRNG_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void FLASH_CTRL_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void LSP_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void WDT_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void RTC_ALARM_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void RTC_TICK_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void PWM_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void TIMER0_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void TIMER1_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void TIMER2_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void TIMER3_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void I2C0_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void SPI0_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void SPI1_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void UART0_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void UART1_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void CALIB_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void RCO32K_CAL_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void WAKEUP_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); +void PHY_TIMER_IRQHandler(void) __attribute__((weak, alias("Default_Handler"))); + +/*---------------------------------------------------------------------------- + Exception / Interrupt Vector table + *----------------------------------------------------------------------------*/ + +#if defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" +#endif + +extern const VECTOR_TABLE_Type __VECTOR_TABLE[48]; +const VECTOR_TABLE_Type __VECTOR_TABLE[48] __VECTOR_TABLE_ATTRIBUTE = { + (VECTOR_TABLE_Type)(&__INITIAL_SP), /* Initial Stack Pointer */ + Reset_Handler, /* Reset Handler */ + NMI_Handler, /* -14 NMI Handler */ + HardFault_Handler, /* -13 Hard Fault Handler */ + 0, /* Reserved */ + 0, /* Reserved */ + 0, /* Reserved */ + 0, /* Reserved */ + 0, /* Reserved */ + (VECTOR_TABLE_Type)((uint32_t)&mk_boot_desc), /* Pointer of boot descriptor */ + (VECTOR_TABLE_Type)((uint32_t)&mk_build_inf), /* Pointer of build information */ + SVC_Handler, /* -5 SVCall Handler */ + 0, /* Reserved */ + 0, /* Reserved */ + PendSV_Handler, /* -2 PendSV Handler */ + SysTick_Handler, /* -1 SysTick Handler */ + + /* Interrupts */ + BOD_IRQHandler, /* 0 BOD */ + ACMP0_IRQHandler, /* 1 ACMP0 */ + ACMP1_IRQHandler, /* 2 ACMP1 */ + SLEEP_TIMER_IRQHandler, /* 3 SLEEP_TIMER */ + MAC_IRQHandler, /* 4 MAC */ + PHY_IRQHandler, /* 5 PHY */ + DMA_IRQHandler, /* 6 DMA */ + GPIO_IRQHandler, /* 7 GPIO */ + AES_IRQHandler, /* 8 AES */ + ADC_IRQHandler, /* 9 ADC */ + TRNG_IRQHandler, /* 10 TRNG */ + FLASH_CTRL_IRQHandler, /* 11 FLASH_CTRL */ + LSP_IRQHandler, /* 12 LSP */ + WDT_IRQHandler, /* 13 WDT */ + RTC_ALARM_IRQHandler, /* 14 RTC ALARM */ + RTC_TICK_IRQHandler, /* 15 RTC TICK */ + PWM_IRQHandler, /* 16 PWM */ + TIMER0_IRQHandler, /* 17 TIMER0 */ + TIMER1_IRQHandler, /* 18 TIMER1 */ + TIMER2_IRQHandler, /* 19 TIMER2 */ + TIMER3_IRQHandler, /* 20 TIMER3 */ + I2C0_IRQHandler, /* 21 I2C0 */ + SPI0_IRQHandler, /* 22 SPI0 */ + SPI1_IRQHandler, /* 23 SPI1 */ + UART0_IRQHandler, /* 24 UART0 */ + UART1_IRQHandler, /* 25 UART1 */ + CALIB_IRQHandler, /* 26 CALIBRATION */ + RCO32K_CAL_IRQHandler, /* 27 RCO32K CAL */ + WAKEUP_IRQHandler, /* 28 WAKEUP */ + PHY_TIMER_IRQHandler, /* 29 PHY TIMER */ + + /* Interrupts 30..31 are left out */ +}; + +#if defined(__GNUC__) +#pragma GCC diagnostic pop +#endif + +/*---------------------------------------------------------------------------- + Reset Handler called on controller reset + *----------------------------------------------------------------------------*/ + +#if defined(__CC_ARM) +/* ARM RVDS or Keil MDK */ +__asm void start_main_asm(void) +{ + IMPORT __PROGRAM_START; + LDR R0, = __PROGRAM_START; + BX R0; +} +#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) +/* ARM CLANG */ +__NO_RETURN void start_main_asm(void) __attribute__((naked)); +void start_main_asm(void) +{ + __ASM volatile( + "ldr r0, = __main\n" + "bx r0\n"); +} +#elif defined(__ICCARM__) +/* IAR */ +__NO_RETURN void start_main_asm(void) __attribute__((naked)); +extern void __iar_program_start(void); +void start_main_asm(void) +{ + __ASM volatile( + "ldr r0, = __iar_program_start\n" + "bx r0\n"); + while (1) + { + } +} +#else +/* GCC */ +__NO_RETURN void start_main_asm(void) __attribute__((naked)); +__NO_RETURN void __cmsis_start_(void) +{ + __cmsis_start(); +} + +void start_main_asm(void) +{ + __ASM volatile( + "ldr r0, = __cmsis_start_\n" + "bx r0\n"); +} +#endif + +__NO_RETURN void Reset_Handler(void) +{ +#if defined(XIP_EN) + // Remap FLASH + SYSCON->SYS_CTRL &= ~(SYSCON_SYS_CTRL_REMAP_MSK); + SYSCON->SYS_CTRL |= SYSCON_SYS_CTRL_REMAP(0x02); +#else + // Remap SRAM + SYSCON->SYS_CTRL &= ~(SYSCON_SYS_CTRL_REMAP_MSK); + SYSCON->SYS_CTRL |= SYSCON_SYS_CTRL_REMAP(0x01); +#endif +#ifndef STD_LIBC + update_libc_rom_table(); +#endif + SystemInit(); /* CMSIS System Initialization */ + start_main_asm(); /* Enter PreMain (C library entry point) */ +} + +/*---------------------------------------------------------------------------- + Default Handler for Exceptions / Interrupts + *----------------------------------------------------------------------------*/ +__NO_RETURN void Default_Handler(void) +{ + while (1) + { + } +} -- Gitblit v1.9.3