Add configurations files.

Add configuration files of TFLite Micro, its dependent third-party libraries and CMSIS_NN.

Signed-off-by: renzhiyuan1 <renzhiyuan1@xiaomi.com>
This commit is contained in:
renzhiyuan1 2023-11-17 19:01:19 +08:00 committed by Xiang Xiao
parent bdfce937e9
commit 71cbcb2618
21 changed files with 823 additions and 0 deletions

25
math/gemmlowp/Kconfig Normal file
View file

@ -0,0 +1,25 @@
############################################################################
# apps/math/gemmlowp/Kconfig
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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.
#
############################################################################
config MATH_GEMMLOWP
bool "Gemmlowp"
default n
---help---
Enable gemmlowp.

23
math/gemmlowp/Make.defs Normal file
View file

@ -0,0 +1,23 @@
############################################################################
# apps/math/gemmlowp/Make.defs
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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.
#
############################################################################
ifneq ($(CONFIG_MATH_GEMMLOWP),)
CONFIGURED_APPS += $(APPDIR)/math/gemmlowp
endif

41
math/gemmlowp/Makefile Normal file
View file

@ -0,0 +1,41 @@
############################################################################
# apps/math/gemmlowp/Makefile
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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 $(APPDIR)/Make.defs
MODULE = $(CONFIG_MATH_GEMMLOWP)
GEMMLOWP_VER = 719139ce755a0f31cbf1c37f7f98adcc7fc9f425
gemmlowp.zip:
$(Q) curl -L https://github.com/google/gemmlowp/archive/$(GEMMLOWP_VER).zip -o gemmlowp.zip
$(Q) unzip -o gemmlowp.zip
$(Q) mv gemmlowp-$(GEMMLOWP_VER) gemmlowp
# Download and unpack tarball if no git repo found
ifeq ($(wildcard gemmlowp/.git),)
context:: gemmlowp.zip
distclean::
$(call DELDIR, gemmlowp)
$(call DELFILE, gemmlowp.zip)
endif
include $(APPDIR)/Application.mk

25
math/kissfft/Kconfig Normal file
View file

@ -0,0 +1,25 @@
############################################################################
# apps/math/kissfft/Kconfig
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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.
#
############################################################################
config MATH_KISSFFT
bool "kissfft"
default n
---help---
Enable kissfft.

23
math/kissfft/Make.defs Normal file
View file

@ -0,0 +1,23 @@
############################################################################
# apps/math/kissfft/Make.defs
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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.
#
############################################################################
ifneq ($(CONFIG_MATH_KISSFFT),)
CONFIGURED_APPS += $(APPDIR)/math/kissfft
endif

45
math/kissfft/Makefile Normal file
View file

@ -0,0 +1,45 @@
############################################################################
# apps/math/kissfft/Makefile
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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 $(APPDIR)/Make.defs
CSRCS += kissfft/tools/kiss_fftr.c
CSRCS += kissfft/kiss_fft.c
CFLAGS += ${INCDIR_PREFIX}$(APPDIR)/math/kissfft/kissfft
KISSFFT_VER = 130
KISSFFT_UNPACK = kissfft
kissfft.zip:
$(Q) curl -L https://github.com/mborgerding/kissfft/archive/refs/tags/v$(KISSFFT_VER).zip -o kissfft.zip
$(Q) unzip -o kissfft.zip
$(Q) mv kissfft-$(KISSFFT_VER) kissfft
$(Q) patch -d $(KISSFFT_UNPACK) -p1 < kissfft.patch
# Download and unpack tarball if no git repo found
ifeq ($(wildcard kissfft/.git),)
context:: kissfft.zip
distclean::
$(call DELDIR, kissfft)
$(call DELFILE, kissfft.zip)
endif
include $(APPDIR)/Application.mk

116
math/kissfft/kissfft.patch Normal file
View file

@ -0,0 +1,116 @@
diff --git a/_kiss_fft_guts.h b/_kiss_fft_guts.h
index ba66144..1a0f4c2 100644
--- a/_kiss_fft_guts.h
+++ b/_kiss_fft_guts.h
@@ -1,3 +1,6 @@
+#ifndef _KISS_FFT_GUTS_H
+#define _KISS_FFT_GUTS_H
+
/*
Copyright (c) 2003-2010, Mark Borgerding
@@ -135,7 +138,7 @@ struct kiss_fft_state{
#else
# define KISS_FFT_COS(phase) (kiss_fft_scalar) cos(phase)
# define KISS_FFT_SIN(phase) (kiss_fft_scalar) sin(phase)
-# define HALF_OF(x) ((x)*.5)
+# define HALF_OF(x) ((x)*(kiss_fft_scalar).5)
#endif
#define kf_cexp(x,phase) \
@@ -162,3 +165,4 @@ struct kiss_fft_state{
#define KISS_FFT_TMP_ALLOC(nbytes) KISS_FFT_MALLOC(nbytes)
#define KISS_FFT_TMP_FREE(ptr) KISS_FFT_FREE(ptr)
#endif
+#endif // _KISS_FFT_GUTS_H
diff --git a/kiss_fft.c b/kiss_fft.c
index 465d6c9..9133a01 100644
--- a/kiss_fft.c
+++ b/kiss_fft.c
@@ -375,7 +375,7 @@ void kiss_fft_stride(kiss_fft_cfg st,const kiss_fft_cpx *fin,kiss_fft_cpx *fout,
//It just performs an out-of-place FFT into a temp buffer
kiss_fft_cpx * tmpbuf = (kiss_fft_cpx*)KISS_FFT_TMP_ALLOC( sizeof(kiss_fft_cpx)*st->nfft);
kf_work(tmpbuf,fin,1,in_stride, st->factors,st);
- memcpy(fout,tmpbuf,sizeof(kiss_fft_cpx)*st->nfft);
+ /* memcpy(fout,tmpbuf,sizeof(kiss_fft_cpx)*st->nfft); */
KISS_FFT_TMP_FREE(tmpbuf);
}else{
kf_work( fout, fin, 1,in_stride, st->factors,st );
diff --git a/kiss_fft.h b/kiss_fft.h
index 64c50f4..24e4d0c 100644
--- a/kiss_fft.h
+++ b/kiss_fft.h
@@ -7,7 +7,7 @@
#include <string.h>
#ifdef __cplusplus
-extern "C" {
+extern "C++" {
#endif
/*
@@ -29,13 +29,13 @@ extern "C" {
#define KISS_FFT_MALLOC(nbytes) _mm_malloc(nbytes,16)
#define KISS_FFT_FREE _mm_free
#else
-#define KISS_FFT_MALLOC malloc
-#define KISS_FFT_FREE free
+#define KISS_FFT_MALLOC(X) (void*)(0x0) /* Patched. */
+#define KISS_FFT_FREE(X) /* Patched. */
#endif
#ifdef FIXED_POINT
-#include <sys/types.h>
+#include <stdint.h> /* Patched. */
# if (FIXED_POINT == 32)
# define kiss_fft_scalar int32_t
# else
diff --git a/tools/kiss_fftr.c b/tools/kiss_fftr.c
index b8e238b..0d22a04 100644
--- a/tools/kiss_fftr.c
+++ b/tools/kiss_fftr.c
@@ -31,7 +31,7 @@ kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem,size_t * lenme
size_t subsize, memneeded;
if (nfft & 1) {
- fprintf(stderr,"Real FFT optimization must be even.\n");
+ /* fprintf(stderr,"Real FFT optimization must be even.\n"); */
return NULL;
}
nfft >>= 1;
@@ -71,8 +71,8 @@ void kiss_fftr(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_cpx *fr
kiss_fft_cpx fpnk,fpk,f1k,f2k,tw,tdc;
if ( st->substate->inverse) {
- fprintf(stderr,"kiss fft usage error: improper alloc\n");
- exit(1);
+ /* fprintf(stderr,"kiss fft usage error: improper alloc\n"); */
+ return; /* exit(1); */
}
ncfft = st->substate->nfft;
@@ -126,8 +126,8 @@ void kiss_fftri(kiss_fftr_cfg st,const kiss_fft_cpx *freqdata,kiss_fft_scalar *t
int k, ncfft;
if (st->substate->inverse == 0) {
- fprintf (stderr, "kiss fft usage error: improper alloc\n");
- exit (1);
+ /* fprintf (stderr, "kiss fft usage error: improper alloc\n"); */
+ return; /* exit (1); */
}
ncfft = st->substate->nfft;
diff --git a/tools/kiss_fftr.h b/tools/kiss_fftr.h
index 72e5a57..b888a28 100644
--- a/tools/kiss_fftr.h
+++ b/tools/kiss_fftr.h
@@ -3,7 +3,7 @@
#include "kiss_fft.h"
#ifdef __cplusplus
-extern "C" {
+extern "C++" {
#endif

25
math/ruy/Kconfig Normal file
View file

@ -0,0 +1,25 @@
############################################################################
# apps/math/ruy/Kconfig
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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.
#
############################################################################
config MATH_RUY
bool "Ruy"
default n
---help---
Enable ruy.

23
math/ruy/Make.defs Normal file
View file

@ -0,0 +1,23 @@
############################################################################
# apps/math/ruy/Make.defs
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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.
#
############################################################################
ifneq ($(CONFIG_MATH_RUY),)
CONFIGURED_APPS += $(APPDIR)/math/ruy
endif

42
math/ruy/Makefile Normal file
View file

@ -0,0 +1,42 @@
############################################################################
# apps/math/ruy/Makefile
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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 $(APPDIR)/Make.defs
RUY_VER = 54774a7a2cf85963777289193629d4bd42de4a59
ruy.zip:
$(Q) curl -L https://github.com/google/ruy/archive/$(RUY_VER).zip -o ruy.zip
$(Q) unzip -o ruy.zip
$(Q) mv ruy-$(RUY_VER) ruy
# Download and unpack tarball if no git repo found
ifeq ($(wildcard ruy/.git),)
context:: ruy.zip
distclean::
$(call DELDIR, ruy)
$(call DELFILE, ruy.zip)
endif
CFLAGS += ${INCDIR_PREFIX}$(APPDIR)/math/ruy/ruy
CXXFLAGS += ${INCDIR_PREFIX}$(APPDIR)/math/ruy/ruy
include $(APPDIR)/Application.mk

View file

@ -0,0 +1,25 @@
############################################################################
# apps/mlearning/cmsis-nn/Kconfig
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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.
#
############################################################################
config MLEARNING_CMSIS_NN
bool "CMSIS_NN Library"
default n
---help---
Enable CMSIS_NN.

View file

@ -0,0 +1,25 @@
############################################################################
# apps/mlearning/cmsis/Make.defs
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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.
#
############################################################################
ifneq ($(CONFIG_MLEARNING_CMSIS_NN),)
CONFIGURED_APPS += $(APPDIR)/mlearning/cmsis-nn
CFLAGS += ${INCDIR_PREFIX}$(APPDIR)/mlearning/cmsis-nn/cmsis-nn/Include
CXXFLAGS += ${INCDIR_PREFIX}$(APPDIR)/mlearning/cmsis-nn/cmsis-nn/Include
endif

View file

@ -0,0 +1,51 @@
############################################################################
# apps/mlearning/cmsis-nn/Makefile
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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 $(APPDIR)/Make.defs
CMSIS_NN = cmsis-nn/Source
CMSIS_NN_VER = bfc54edb61e873039ec0857cacc40df36b1d644e
cmsis-nn.zip:
$(Q) curl -L https://github.com/ARM-software/CMSIS-NN/archive/$(CMSIS_NN_VER).zip -o cmsis-nn.zip
$(Q) unzip -o cmsis-nn.zip
$(Q) mv CMSIS-NN-$(CMSIS_NN_VER) cmsis-nn
ifeq ($(wildcard cmsis-nn/.git),)
context:: cmsis-nn.zip
distclean::
$(call DELDIR, cmsis-nn)
$(call DELFILE, cmsis-nn.zip)
endif
CSRCS += $(wildcard $(CMSIS_NN)/ActivationFunctions/*.c)
CSRCS += $(wildcard $(CMSIS_NN)/BasicMathFunctions/*.c)
CSRCS += $(wildcard $(CMSIS_NN)/PoolingFunctions/*.c)
CSRCS += $(wildcard $(CMSIS_NN)/ConvolutionFunctions/*.c)
CSRCS += $(wildcard $(CMSIS_NN)/SVDFunctions/*.c)
CSRCS += $(wildcard $(CMSIS_NN)/FullyConnectedFunctions/*.c)
CSRCS += $(wildcard $(CMSIS_NN)/NNSupportFunctions/*.c)
CSRCS += $(wildcard $(CMSIS_NN)/ConcatenationFunctions/*.c)
CSRCS += $(wildcard $(CMSIS_NN)/SoftmaxFunctions/*.c)
CSRCS += $(CMSIS_NN)/LSTMFunctions/arm_lstm_unidirectional_s8_s16.c
CSRCS += $(CMSIS_NN)/ReshapeFunctions/arm_reshape_s8.c
include $(APPDIR)/Application.mk

View file

@ -0,0 +1,24 @@
############################################################################
# apps/mlearning/tflite-micro/Kconfig
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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.
#
############################################################################
config TFLITEMICRO
bool "TFLiteMicro"
default n
depends on SYSTEM_FLATBUFFERS && MATH_GEMMLOWP && MATH_KISSFFT && MATH_RUY

View file

@ -0,0 +1,23 @@
############################################################################
# apps/mlearning/tflite-micro/Make.defs
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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.
#
############################################################################
ifneq ($(CONFIG_TFLITEMICRO),)
CONFIGURED_APPS += $(APPDIR)/mlearning/tflite-micro
endif

View file

@ -0,0 +1,83 @@
############################################################################
# apps/mlearning/tflite-micro/Makefile
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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 $(APPDIR)/Make.defs
TFLITE_MICRO_VER = main
TFLITE_MICRO_UNPACK = tflite-micro
tflite-micro.zip:
$(Q) curl -L https://github.com/tensorflow/tflite-micro/archive/refs/heads/$(TFLITE_MICRO_VER).zip -o tflite-micro.zip
$(Q) unzip -o tflite-micro.zip
$(Q) mv tflite-micro-$(TFLITE_MICRO_VER) tflite-micro
$(Q) patch -d $(TFLITE_MICRO_UNPACK) -p1 < tflite-micro.patch
# Download and unpack tarball if no git repo found
ifeq ($(wildcard tflite-micro/.git),)
context:: tflite-micro.zip
distclean::
$(call DELDIR, tflite-micro)
$(call DELFILE, tflite-micro.zip)
endif
CXXEXT := .cc
COMMON_FLAGS += -DTF_LITE_STATIC_MEMORY
COMMON_FLAGS += -DTF_LITE_DISABLE_X86_NEON
COMMON_FLAGS += -Wno-undef
COMMON_FLAGS += -Wno-shadow
SRC_FILES := $(wildcard $(APPDIR)/mlearning/tflite-micro/tflite-micro/tensorflow/lite/micro/kernels/*.cc)
ifeq ($(CONFIG_MLEARNING_CMSIS_NN),y)
COMMON_FLAGS += -DCMSIS_NN
COMMON_FLAGS += ${INCDIR_PREFIX}$(APPDIR)/mlearning/cmsis-nn/cmsis-nn
NEW_SRC_FILES := $(wildcard $(APPDIR)/mlearning/tflite-micro/tflite-micro/tensorflow/lite/micro/kernels/cmsis_nn/*.cc)
SRC_FILES := $(filter-out $(notdir $(NEW_SRC_FILES)), $(notdir $(SRC_FILES)))
SRC_FILES := $(addprefix $(APPDIR)/mlearning/tflite-micro/tflite-micro/tensorflow/lite/micro/kernels/, $(SRC_FILES))
SRC_FILES += $(NEW_SRC_FILES)
endif
COMMON_FLAGS += ${INCDIR_PREFIX}$(APPDIR)/math/gemmlowp/gemmlowp
COMMON_FLAGS += ${INCDIR_PREFIX}$(APPDIR)/math/ruy/ruy
COMMON_FLAGS += ${INCDIR_PREFIX}$(APPDIR)/math/kissfft/kissfft
COMMON_FLAGS += ${INCDIR_PREFIX}$(APPDIR)/mlearning/tflite-micro/tflite-micro
CFLAGS += ${COMMON_FLAGS}
CXXFLAGS += ${COMMON_FLAGS}
SRC_FILES += $(wildcard $(APPDIR)/mlearning/tflite-micro/tflite-micro/tensorflow/lite/c/*.cc)
SRC_FILES += $(wildcard $(APPDIR)/mlearning/tflite-micro/tflite-micro/tensorflow/lite/schema/*.cc)
SRC_FILES += $(wildcard $(APPDIR)/mlearning/tflite-micro/tflite-micro/tensorflow/lite/core/c/*.cc)
SRC_FILES += $(wildcard $(APPDIR)/mlearning/tflite-micro/tflite-micro/tensorflow/lite/kernels/*.cc)
SRC_FILES += $(wildcard $(APPDIR)/mlearning/tflite-micro/tflite-micro/tensorflow/lite/kernels/internal/optimized/*.cc)
SRC_FILES += $(wildcard $(APPDIR)/mlearning/tflite-micro/tflite-micro/tensorflow/lite/kernels/internal/reference/*.cc)
SRC_FILES += $(wildcard $(APPDIR)/mlearning/tflite-micro/tflite-micro/tensorflow/lite/kernels/internal/*.cc)
SRC_FILES += $(wildcard $(APPDIR)/mlearning/tflite-micro/tflite-micro/tensorflow/lite/core/api/*.cc)
SRC_FILES += $(wildcard $(APPDIR)/mlearning/tflite-micro/tflite-micro/tensorflow/lite/micro/arena_allocator/*.cc)
SRC_FILES += $(wildcard $(APPDIR)/mlearning/tflite-micro/tflite-micro/tensorflow/lite/micro/memory_planner/*.cc)
SRC_FILES += $(wildcard $(APPDIR)/mlearning/tflite-micro/tflite-micro/tensorflow/lite/micro/*.cc)
SRC_FILES += $(wildcard $(APPDIR)/mlearning/tflite-micro/tflite-micro/tensorflow/lite/micro/tflite_bridge/*.cc)
SRC_FILES := $(filter-out %test.cc, $(SRC_FILES))
CXXSRCS += $(SRC_FILES)
include $(APPDIR)/Application.mk

View file

@ -0,0 +1,14 @@
diff --git a/signal/src/circular_buffer.cc b/signal/src/circular_buffer.cc
index 7638d912..3261be56 100644
--- a/signal/src/circular_buffer.cc
+++ b/signal/src/circular_buffer.cc
@@ -19,7 +19,9 @@ limitations under the License.
#include <stdlib.h>
#include <string.h>
+#ifndef ASSERT
#define ASSERT assert
+#endif
namespace tflite {
namespace tflm_signal {

View file

@ -0,0 +1,25 @@
############################################################################
# apps/system/flatbuffers/Kconfig
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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.
#
############################################################################
config SYSTEM_FLATBUFFERS
bool "flatbuffers"
default n
---help---
Enable flatbuffers.

View file

@ -0,0 +1,25 @@
############################################################################
# apps/system/flatbuffers/Make.defs
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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.
#
############################################################################
ifneq ($(CONFIG_SYSTEM_FLATBUFFERS),)
CONFIGURED_APPS += $(APPDIR)/system/flatbuffers
CFLAGS += ${INCDIR_PREFIX}$(APPDIR)/system/flatbuffers/flatbuffers/include
CXXFLAGS += ${INCDIR_PREFIX}$(APPDIR)/system/flatbuffers/flatbuffers/include
endif

View file

@ -0,0 +1,40 @@
############################################################################
# apps/system/flatbuffers/Makefile
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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 $(APPDIR)/Make.defs
FLATBUFFERS_VER = 23.5.26
FLATBUFFERS_UNPACK = flatbuffers
flatbuffers.tar.gz:
$(Q) curl -L https://github.com/google/flatbuffers/archive/v$(FLATBUFFERS_VER).tar.gz -o flatbuffers.tar.gz
$(Q) tar -xzf flatbuffers.tar.gz
$(Q) mv flatbuffers-$(FLATBUFFERS_VER) flatbuffers
$(Q) patch -d $(FLATBUFFERS_UNPACK) -p1 < flatbuffers.patch
# Download and unpack tarball if no git repo found
ifeq ($(wildcard flatbuffers/.git),)
context:: flatbuffers.tar.gz
distclean::
$(call DELDIR, flatbuffers)
$(call DELFILE, flatbuffers.tar.gz)
endif
include $(APPDIR)/Application.mk

View file

@ -0,0 +1,100 @@
diff --git a/include/flatbuffers/base.h b/include/flatbuffers/base.h
index 5c4cae79..1a631641 100644
--- a/include/flatbuffers/base.h
+++ b/include/flatbuffers/base.h
@@ -1,6 +1,16 @@
#ifndef FLATBUFFERS_BASE_H_
#define FLATBUFFERS_BASE_H_
+// For TFLM, we always want FLATBUFFERS_LOCALE_INDEPENDENT to be defined as 0.
+// We could achieve this by adding -DFLATBUFFERS_LOCALE_INDEPENDENT=0 to the
+// TFLM Makefile. However, for (at least) the Arduino, adding additional build
+// flags during the compilation can be a bit awkward. As such, we have instead
+// made a decision to change the default to be FLATBUFFERS_LOCALE_INDEPENDENT=0
+// for TFLM to make it easier for external IDE integration.
+#ifndef FLATBUFFERS_LOCALE_INDEPENDENT
+#define FLATBUFFERS_LOCALE_INDEPENDENT 0
+#endif
+
// clang-format off
// If activate should be declared and included first.
diff --git a/include/flatbuffers/default_allocator.h b/include/flatbuffers/default_allocator.h
index d4724122..975d9380 100644
--- a/include/flatbuffers/default_allocator.h
+++ b/include/flatbuffers/default_allocator.h
@@ -39,24 +39,18 @@ class DefaultAllocator : public Allocator {
// This is to avoid having a statically or dynamically allocated default
// allocator, or having to move it between the classes that may own it.
inline uint8_t *Allocate(Allocator *allocator, size_t size) {
- return allocator ? allocator->allocate(size)
- : DefaultAllocator().allocate(size);
+ return allocator->allocate(size);
}
inline void Deallocate(Allocator *allocator, uint8_t *p, size_t size) {
- if (allocator)
- allocator->deallocate(p, size);
- else
- DefaultAllocator().deallocate(p, size);
+ allocator->deallocate(p, size);
}
inline uint8_t *ReallocateDownward(Allocator *allocator, uint8_t *old_p,
size_t old_size, size_t new_size,
size_t in_use_back, size_t in_use_front) {
- return allocator ? allocator->reallocate_downward(old_p, old_size, new_size,
- in_use_back, in_use_front)
- : DefaultAllocator().reallocate_downward(
- old_p, old_size, new_size, in_use_back, in_use_front);
+ return allocator->reallocate_downward(old_p, old_size, new_size, in_use_back,
+ in_use_front);
}
} // namespace flatbuffers
diff --git a/include/flatbuffers/flexbuffers.h b/include/flatbuffers/flexbuffers.h
index 8e8cac14..52dae316 100644
--- a/include/flatbuffers/flexbuffers.h
+++ b/include/flatbuffers/flexbuffers.h
@@ -495,9 +495,24 @@ class Reference {
return static_cast<double>(ReadUInt64(Indirect(), byte_width_));
case FBT_NULL: return 0.0;
case FBT_STRING: {
+#if 1
+#if !defined( _MSC_VER)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wnull-dereference"
+#endif
+ // See b/173239141 for additional context. Patched via
+ // micro/tools/make/flexbuffers_download.sh
+ // Introduce a segfault for an unsupported code path for TFLM.
+ return *(static_cast<double*>(nullptr));
+#if !defined( _MSC_VER)
+#pragma GCC diagnostic pop
+#endif
+#else
+ // This is the original code
double d;
flatbuffers::StringToNumber(AsString().c_str(), &d);
return d;
+#endif
}
case FBT_VECTOR: return static_cast<double>(AsVector().size());
case FBT_BOOL:
diff --git a/include/flatbuffers/util.h b/include/flatbuffers/util.h
index 1ccf3517..34a75193 100644
--- a/include/flatbuffers/util.h
+++ b/include/flatbuffers/util.h
@@ -23,6 +23,12 @@
#include "flatbuffers/base.h"
#include "flatbuffers/stl_emulation.h"
+// For TFLM we always want to use FLATBUFFERS_PREFER_PRINTF=1. See
+// http://b/211811553 for more context.
+#ifndef FLATBUFFERS_PREFER_PRINTF
+#define FLATBUFFERS_PREFER_PRINTF 1
+#endif
+
#ifndef FLATBUFFERS_PREFER_PRINTF
# include <iomanip>
# include <sstream>