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/components/libc/libc.c | 1068 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 1,068 insertions(+), 0 deletions(-)

diff --git a/keil/include/components/libc/libc.c b/keil/include/components/libc/libc.c
new file mode 100644
index 0000000..5e965be
--- /dev/null
+++ b/keil/include/components/libc/libc.c
@@ -0,0 +1,1068 @@
+/*
+ * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and
+ * its subsidiaries and affiliates (collectly called MKSEMI).
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form, except as embedded into an MKSEMI
+ *    integrated circuit in a product or a software update for such product,
+ *    must reproduce the above copyright notice, this list of conditions and
+ *    the following disclaimer in the documentation and/or other materials
+ *    provided with the distribution.
+ *
+ * 3. Neither the name of MKSEMI nor the names of its contributors may be used
+ *    to endorse or promote products derived from this software without
+ *    specific prior written permission.
+ *
+ * 4. This software, with or without modification, must only be used with a
+ *    MKSEMI integrated circuit.
+ *
+ * 5. Any software provided in binary form under this license must not be
+ *    reverse engineered, decompiled, modified and/or disassembled.
+ *
+ * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL MKSEMI OR CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "libc_rom.h"
+
+#ifndef STD_LIBC
+
+#if defined(__ARMCC_VERSION)
+static const struct LIBC_ROM_T *libc_rom __attribute__((section(".bss.noinit")));
+#elif defined(__ICCARM__)
+__no_init static const struct LIBC_ROM_T *libc_rom;
+#elif defined(__GNUC__)
+static const struct LIBC_ROM_T *libc_rom __attribute__((section(".noinit")));
+#else
+#warning "Confirm compiler version"
+#endif
+
+void update_libc_rom_table(void)
+{
+    // A4
+    if (*(const volatile uint32_t *)(0x4000000C) == 0x00000020)
+    {
+        libc_rom = (const struct LIBC_ROM_T *)0x0301d624;
+    }
+    else
+    {
+        libc_rom = (const struct LIBC_ROM_T *)0x0301cf30;
+    }
+}
+
+#if !defined(__ICCARM__)
+void *memcpy(void *s1, const void *s2, size_t n)
+{
+    return libc_rom->memcpy(s1, s2, n);
+}
+
+void *memmove(void *s1, const void *s2, size_t n)
+{
+    return libc_rom->memmove(s1, s2, n);
+}
+#endif
+
+char *strcpy(char *s1, const char *s2)
+{
+    return libc_rom->strcpy(s1, s2);
+}
+
+char *strncpy(char *s1, const char *s2, size_t n)
+{
+    return libc_rom->strncpy(s1, s2, n);
+}
+
+char *strcat(char *s1, const char *s2)
+{
+    return libc_rom->strcat(s1, s2);
+}
+
+char *strncat(char *s1, const char *s2, size_t n)
+{
+    return libc_rom->strncat(s1, s2, n);
+}
+
+int memcmp(const void *s1, const void *s2, size_t n)
+{
+    return libc_rom->memcmp(s1, s2, n);
+}
+
+int strcmp(const char *s1, const char *s2)
+{
+    return libc_rom->strcmp(s1, s2);
+}
+
+int strncmp(const char *s1, const char *s2, size_t n)
+{
+    return libc_rom->strncmp(s1, s2, n);
+}
+
+int strcasecmp(const char *s1, const char *s2)
+{
+    return libc_rom->strcasecmp(s1, s2);
+}
+
+int strncasecmp(const char *s1, const char *s2, size_t n)
+{
+    return libc_rom->strncasecmp(s1, s2, n);
+}
+
+int strcoll(const char *s1, const char *s2)
+{
+    return libc_rom->strcoll(s1, s2);
+}
+
+size_t strxfrm(char *s1, const char *s2, size_t n)
+{
+    return libc_rom->strxfrm(s1, s2, n);
+}
+
+void *memchr(const void *s, int c, size_t n)
+{
+    return libc_rom->memchr(s, c, n);
+}
+
+char *strchr(const char *s, int c)
+{
+    return libc_rom->strchr(s, c);
+}
+
+size_t strcspn(const char *s1, const char *s2)
+{
+    return libc_rom->strcspn(s1, s2);
+}
+
+char *strpbrk(const char *s1, const char *s2)
+{
+    return libc_rom->strpbrk(s1, s2);
+}
+
+char *strrchr(const char *s, int c)
+{
+    return libc_rom->strrchr(s, c);
+}
+
+size_t strspn(const char *s1, const char *s2)
+{
+    return libc_rom->strspn(s1, s2);
+}
+
+char *strstr(const char *s1, const char *s2)
+{
+    return libc_rom->strstr(s1, s2);
+}
+
+char *strtok(char *s1, const char *s2)
+{
+    return libc_rom->strtok(s1, s2);
+}
+
+#if !defined(__ICCARM__)
+void *memset(void *s, int c, size_t n)
+{
+    return libc_rom->memset(s, c, n);
+}
+#endif
+
+char *strerror(int errnum)
+{
+    return libc_rom->strerror(errnum);
+}
+
+size_t strlen(const char *s)
+{
+    return libc_rom->strlen(s);
+}
+
+size_t strlcpy(char *dst, const char *src, size_t len)
+{
+    return libc_rom->strlcpy(dst, src, len);
+}
+
+size_t strlcat(char *dst, const char *src, size_t len)
+{
+    return libc_rom->strlcat(dst, src, len);
+}
+
+int sprintf(char *s, const char *format, ...)
+{
+    va_list ap;
+    int len;
+
+    va_start(ap, format);
+    len = libc_rom->vsnprintf(s, -(size_t)s, format, ap);
+    va_end(ap);
+    return (len);
+}
+
+int snprintf(char *s, size_t n, const char *format, ...)
+{
+    va_list ap;
+    int len;
+
+    va_start(ap, format);
+    len = libc_rom->vsnprintf(s, n, format, ap);
+    va_end(ap);
+    return (len);
+}
+
+int vsprintf(char *s, const char *format, va_list arg)
+{
+    return libc_rom->vsprintf(s, format, arg);
+}
+
+int vsnprintf(char *s, size_t n, const char *format, va_list arg)
+{
+    return libc_rom->vsnprintf(s, n, format, arg);
+}
+
+int sscanf(const char *s, const char *format, ...)
+{
+    va_list args;
+    int i;
+
+    va_start(args, format);
+    i = libc_rom->vsscanf(s, format, args);
+    va_end(args);
+    return i;
+}
+
+int vsscanf(const char *s, const char *format, va_list arg)
+{
+    return libc_rom->vsscanf(s, format, arg);
+}
+
+double atof(const char *nptr)
+{
+    return libc_rom->atof(nptr);
+}
+
+int atoi(const char *nptr)
+{
+    return libc_rom->atoi(nptr);
+}
+
+long int atol(const char *nptr)
+{
+    return libc_rom->atol(nptr);
+}
+
+long long atoll(const char *nptr)
+{
+    return libc_rom->atoll(nptr);
+}
+
+double strtod(const char *nptr, char **endptr)
+{
+    return libc_rom->strtod(nptr, endptr);
+}
+
+long int strtol(const char *nptr, char **endptr, int base)
+{
+    return libc_rom->strtol(nptr, endptr, base);
+}
+
+unsigned long int strtoul(const char *nptr, char **endptr, int base)
+{
+    return libc_rom->strtoul(nptr, endptr, base);
+}
+
+long long strtoll(const char *nptr, char **endptr, int base)
+{
+    return libc_rom->strtoll(nptr, endptr, base);
+}
+
+unsigned long long strtoull(const char *nptr, char **endptr, int base)
+{
+    return libc_rom->strtoull(nptr, endptr, base);
+}
+
+int rand(void)
+{
+    return libc_rom->rand();
+}
+
+void srand(unsigned int seed)
+{
+    libc_rom->srand(seed);
+}
+
+void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
+{
+    return libc_rom->bsearch(key, base, nmemb, size, compar);
+}
+
+void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
+{
+    libc_rom->qsort(base, nmemb, size, compar);
+}
+
+#if !defined(__ICCARM__)
+int abs(int j)
+{
+    return libc_rom->abs(j);
+}
+
+div_t div(int numer, int denom)
+{
+    return libc_rom->div(numer, denom);
+}
+
+long int labs(long int j)
+{
+    return libc_rom->labs(j);
+}
+
+ldiv_t ldiv(long int numer, long int denom)
+{
+    return libc_rom->ldiv(numer, denom);
+}
+
+long long llabs(long long j)
+{
+    return libc_rom->llabs(j);
+}
+
+lldiv_t lldiv(long long numer, long long denom)
+{
+    return libc_rom->lldiv(numer, denom);
+}
+#endif
+
+double acos(double x)
+{
+    return libc_rom->acos(x);
+}
+
+double asin(double x)
+{
+    return libc_rom->asin(x);
+}
+
+double atan(double x)
+{
+    return libc_rom->atan(x);
+}
+
+double atan2(double y, double x)
+{
+    return libc_rom->atan2(y, x);
+}
+
+double cos(double x)
+{
+    return libc_rom->cos(x);
+}
+
+double sin(double x)
+{
+    return libc_rom->sin(x);
+}
+
+double tan(double x)
+{
+    return libc_rom->tan(x);
+}
+
+double cosh(double x)
+{
+    return libc_rom->cosh(x);
+}
+
+double sinh(double x)
+{
+    return libc_rom->sinh(x);
+}
+
+double tanh(double x)
+{
+    return libc_rom->tanh(x);
+}
+
+double exp(double x)
+{
+    return libc_rom->exp(x);
+}
+
+double frexp(double value, int *exp)
+{
+    return libc_rom->frexp(value, exp);
+}
+
+double ldexp(double x, int exp)
+{
+    return libc_rom->ldexp(x, exp);
+}
+
+double log(double x)
+{
+    return libc_rom->log(x);
+}
+
+double log10(double x)
+{
+    return libc_rom->log10(x);
+}
+
+double modf(double value, double *iptr)
+{
+    return libc_rom->modf(value, iptr);
+}
+
+double pow(double x, double y)
+{
+    return libc_rom->pow(x, y);
+}
+
+double sqrt(double x)
+{
+    return libc_rom->sqrt(x);
+}
+
+double ceil(double x)
+{
+    return libc_rom->ceil(x);
+}
+
+double fabs(double x)
+{
+    return libc_rom->fabs(x);
+}
+
+double floor(double d)
+{
+    return libc_rom->floor(d);
+}
+
+double fmod(double x, double y)
+{
+    return libc_rom->fmod(x, y);
+}
+
+double acosh(double x)
+{
+    return libc_rom->acosh(x);
+}
+
+double asinh(double x)
+{
+    return libc_rom->asinh(x);
+}
+
+double atanh(double x)
+{
+    return libc_rom->atanh(x);
+}
+
+double cbrt(double x)
+{
+    return libc_rom->cbrt(x);
+}
+
+double erf(double x)
+{
+    return libc_rom->erf(x);
+}
+
+double erfc(double x)
+{
+    return libc_rom->erfc(x);
+}
+
+double expm1(double x)
+{
+    return libc_rom->expm1(x);
+}
+
+double hypot(double x, double y)
+{
+    return libc_rom->hypot(x, y);
+}
+
+double remainder(double x, double y)
+{
+    return libc_rom->remainder(x, y);
+}
+
+double rint(double x)
+{
+    return libc_rom->rint(x);
+}
+
+double scalbln(double x, long int n)
+{
+    return libc_rom->scalbln(x, n);
+}
+
+float scalblnf(float x, long int n)
+{
+    return libc_rom->scalblnf(x, n);
+}
+
+long double scalblnl(long double x, long int n)
+{
+    return libc_rom->scalblnl(x, n);
+}
+
+float fabsf(float x)
+{
+    return libc_rom->fabsf(x);
+}
+
+float sinf(float x)
+{
+    return libc_rom->sinf(x);
+}
+
+float cosf(float x)
+{
+    return libc_rom->cosf(x);
+}
+
+float tanf(float x)
+{
+    return libc_rom->tanf(x);
+}
+
+float acosf(float x)
+{
+    return libc_rom->acosf(x);
+}
+
+float asinf(float x)
+{
+    return libc_rom->asinf(x);
+}
+
+float atanf(float x)
+{
+    return libc_rom->atanf(x);
+}
+
+float atan2f(float y, float x)
+{
+    return libc_rom->atan2f(y, x);
+}
+
+float sinhf(float x)
+{
+    return libc_rom->sinhf(x);
+}
+
+float coshf(float x)
+{
+    return libc_rom->coshf(x);
+}
+
+float tanhf(float x)
+{
+    return libc_rom->tanhf(x);
+}
+
+float expf(float x)
+{
+    return libc_rom->expf(x);
+}
+
+float logf(float x)
+{
+    return libc_rom->logf(x);
+}
+
+float log10f(float x)
+{
+    return libc_rom->log10f(x);
+}
+
+float powf(float x, float y)
+{
+    return libc_rom->powf(x, y);
+}
+
+float sqrtf(float x)
+{
+    return libc_rom->sqrtf(x);
+}
+
+float ldexpf(float x, int exp)
+{
+    return libc_rom->ldexpf(x, exp);
+}
+
+float frexpf(float value, int *exp)
+{
+    return libc_rom->frexpf(value, exp);
+}
+
+float ceilf(float x)
+{
+    return libc_rom->ceilf(x);
+}
+
+float floorf(float x)
+{
+    return libc_rom->floorf(x);
+}
+
+float fmodf(float x, float y)
+{
+    return libc_rom->fmodf(x, y);
+}
+
+float modff(float value, float *iptr)
+{
+    return libc_rom->modff(value, iptr);
+}
+
+long double acosl(long double x)
+{
+    return libc_rom->acosl(x);
+}
+
+long double asinl(long double x)
+{
+    return libc_rom->asinl(x);
+}
+
+long double atanl(long double x)
+{
+    return libc_rom->atanl(x);
+}
+
+long double atan2l(long double x, long double y)
+{
+    return libc_rom->atan2l(x, y);
+}
+
+long double ceill(long double x)
+{
+    return libc_rom->ceill(x);
+}
+
+long double cosl(long double x)
+{
+    return libc_rom->cosl(x);
+}
+
+long double coshl(long double x)
+{
+    return libc_rom->coshl(x);
+}
+
+long double expl(long double x)
+{
+    return libc_rom->expl(x);
+}
+
+long double fabsl(long double x)
+{
+    return libc_rom->fabsl(x);
+}
+
+long double floorl(long double x)
+{
+    return libc_rom->floorl(x);
+}
+
+long double fmodl(long double x, long double y)
+{
+    return libc_rom->fmodl(x, y);
+}
+
+long double frexpl(long double x, int *p)
+{
+    return libc_rom->frexpl(x, p);
+}
+
+long double ldexpl(long double x, int p)
+{
+    return libc_rom->ldexpl(x, p);
+}
+
+long double logl(long double x)
+{
+    return libc_rom->logl(x);
+}
+
+long double log10l(long double x)
+{
+    return libc_rom->log10l(x);
+}
+
+long double modfl(long double x, long double *p)
+{
+    return libc_rom->modfl(x, p);
+}
+
+long double powl(long double x, long double y)
+{
+    return libc_rom->powl(x, y);
+}
+
+long double sinl(long double x)
+{
+    return libc_rom->sinl(x);
+}
+
+long double sinhl(long double x)
+{
+    return libc_rom->sinhl(x);
+}
+
+long double sqrtl(long double x)
+{
+    return libc_rom->sqrtl(x);
+}
+
+long double tanl(long double x)
+{
+    return libc_rom->tanl(x);
+}
+
+long double tanhl(long double x)
+{
+    return libc_rom->tanhl(x);
+}
+
+float acoshf(float x)
+{
+    return libc_rom->acoshf(x);
+}
+
+long double acoshl(long double x)
+{
+    return libc_rom->acoshl(x);
+}
+
+float asinhf(float x)
+{
+    return libc_rom->asinhf(x);
+}
+
+long double asinhl(long double x)
+{
+    return libc_rom->asinhl(x);
+}
+
+float atanhf(float x)
+{
+    return libc_rom->atanhf(x);
+}
+
+long double atanhl(long double x)
+{
+    return libc_rom->atanhl(x);
+}
+
+long double copysignl(long double x, long double y)
+{
+    return libc_rom->copysignl(x, y);
+}
+
+float cbrtf(float x)
+{
+    return libc_rom->cbrtf(x);
+}
+
+long double cbrtl(long double x)
+{
+    return libc_rom->cbrtl(x);
+}
+
+float erff(float x)
+{
+    return libc_rom->erff(x);
+}
+
+long double erfl(long double x)
+{
+    return libc_rom->erfl(x);
+}
+
+float erfcf(float x)
+{
+    return libc_rom->erfcf(x);
+}
+
+long double erfcl(long double x)
+{
+    return libc_rom->erfcl(x);
+}
+
+float expm1f(float x)
+{
+    return libc_rom->expm1f(x);
+}
+
+long double expm1l(long double x)
+{
+    return libc_rom->expm1l(x);
+}
+
+float log1pf(float x)
+{
+    return libc_rom->log1pf(x);
+}
+
+long double log1pl(long double x)
+{
+    return libc_rom->log1pl(x);
+}
+
+float hypotf(float x, float y)
+{
+    return libc_rom->hypotf(x, y);
+}
+
+long double hypotl(long double x, long double y)
+{
+    return libc_rom->hypotl(x, y);
+}
+
+float remainderf(float x, float y)
+{
+    return libc_rom->remainderf(x, y);
+}
+
+long double remainderl(long double x, long double y)
+{
+    return libc_rom->remainderl(x, y);
+}
+
+float rintf(float x)
+{
+    return libc_rom->rintf(x);
+}
+
+long double rintl(long double x)
+{
+    return libc_rom->rintl(x);
+}
+
+double exp2(double x)
+{
+    return libc_rom->exp2(x);
+}
+
+float exp2f(float x)
+{
+    return libc_rom->exp2f(x);
+}
+
+long double exp2l(long double x)
+{
+    return libc_rom->exp2l(x);
+}
+
+double fdim(double x, double y)
+{
+    return libc_rom->fdim(x, y);
+}
+
+float fdimf(float x, float y)
+{
+    return libc_rom->fdimf(x, y);
+}
+
+long double fdiml(long double x, long double y)
+{
+    return libc_rom->fdiml(x, y);
+}
+
+double fma(double x, double y, double z)
+{
+    return libc_rom->fma(x, y, z);
+}
+
+float fmaf(float x, float y, float z)
+{
+    return libc_rom->fmaf(x, y, z);
+}
+
+double fmax(double x, double y)
+{
+    return libc_rom->fmax(x, y);
+}
+
+float fmaxf(float x, float y)
+{
+    return libc_rom->fmaxf(x, y);
+}
+
+long double fmaxl(long double x, long double y)
+{
+    return libc_rom->fmaxl(x, y);
+}
+
+double fmin(double x, double y)
+{
+    return libc_rom->fmin(x, y);
+}
+
+float fminf(float x, float y)
+{
+    return libc_rom->fminf(x, y);
+}
+
+long double fminl(long double x, long double y)
+{
+    return libc_rom->fminl(x, y);
+}
+
+#if !defined(__GNUC__)
+double log2(double x)
+{
+    return libc_rom->log2(x);
+}
+#endif
+
+float log2f(float x)
+{
+    return libc_rom->log2f(x);
+}
+
+long double log2l(long double x)
+{
+    return libc_rom->log2l(x);
+}
+
+long lrint(double x)
+{
+    return libc_rom->lrint(x);
+}
+
+long lrintf(float x)
+{
+    return libc_rom->lrintf(x);
+}
+
+long long llrint(double x)
+{
+    return libc_rom->llrint(x);
+}
+
+long long llrintf(float x)
+{
+    return libc_rom->llrintf(x);
+}
+
+long lround(double x)
+{
+    return libc_rom->lround(x);
+}
+
+long lroundf(float x)
+{
+    return libc_rom->lroundf(x);
+}
+
+long long llround(double x)
+{
+    return libc_rom->llround(x);
+}
+
+long long llroundf(float x)
+{
+    return libc_rom->llroundf(x);
+}
+
+double nan(const char *tagp)
+{
+    return libc_rom->nan(tagp);
+}
+
+float nanf(const char *tagp)
+{
+    return libc_rom->nanf(tagp);
+}
+
+double nearbyint(double x)
+{
+    return libc_rom->nearbyint(x);
+}
+
+float nearbyintf(float x)
+{
+    return libc_rom->nearbyintf(x);
+}
+
+long double nearbyintl(long double x)
+{
+    return libc_rom->nearbyintl(x);
+}
+
+double remquo(double x, double y, int *quo)
+{
+    return libc_rom->remquo(x, y, quo);
+}
+
+float remquof(float x, float y, int *quo)
+{
+    return libc_rom->remquof(x, y, quo);
+}
+
+double round(double x)
+{
+    return libc_rom->round(x);
+}
+
+float roundf(float x)
+{
+    return libc_rom->roundf(x);
+}
+
+long double roundl(long double x)
+{
+    return libc_rom->roundl(x);
+}
+
+double tgamma(double x)
+{
+    return libc_rom->tgamma(x);
+}
+
+float tgammaf(float x)
+{
+    return libc_rom->tgammaf(x);
+}
+
+long double tgammal(long double x)
+{
+    return libc_rom->tgammal(x);
+}
+
+double trunc(double x)
+{
+    return libc_rom->trunc(x);
+}
+
+float truncf(float x)
+{
+    return libc_rom->truncf(x);
+}
+
+long double truncl(long double x)
+{
+    return libc_rom->truncl(x);
+}
+
+#else
+#if defined(__ARMCC_VERSION)
+static const void *libc_rom __attribute__((section(".bss.noinit"), used));
+#endif
+#endif

--
Gitblit v1.9.3