From db0f1ea687f83c7e3530ecd689ce2baa863bb488 Mon Sep 17 00:00:00 2001 From: Niklas Hauser Date: Tue, 27 Dec 2022 21:07:52 +0100 Subject: [PATCH 1/8] [ext] Add minimal stubs for Newlib syscalls --- ext/gcc/cabi_cortex.c | 84 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 73 insertions(+), 11 deletions(-) diff --git a/ext/gcc/cabi_cortex.c b/ext/gcc/cabi_cortex.c index 2b6bd98a74..7fed80a42b 100644 --- a/ext/gcc/cabi_cortex.c +++ b/ext/gcc/cabi_cortex.c @@ -9,27 +9,89 @@ */ // ---------------------------------------------------------------------------- +#include #include // ------------------------------------------------------------------------ - -extern void _exit(int); -void _exit(int status) +modm_weak void _exit(int status) { modm_assert(false, "libc.exit", "The libc exit(status) function was called!", status); } -extern void abort(void); -void abort(void) +modm_weak void abort(void) +{ + modm_assert(false, "libc.abort", + "The libc abort() function was called!"); +} + +modm_weak int atexit(void (*fn)(void)) +{ + (void) fn; + return 0; +} + +// ------------------------------------------------------------------------ +// Minimal stubs of Newlib system calls. +// See https://sourceware.org/newlib/libc.html#Syscalls + +modm_weak int _close(int file) +{ + (void) file; + return -1; +} + +modm_weak int _fstat(int file, struct stat *st) +{ + (void) file; + st->st_mode = S_IFCHR; + return 0; +} + +modm_weak int _isatty(int file) +{ + (void) file; + return 1; +} + +modm_weak int _lseek(int file, int ptr, int dir) +{ + (void) file; + (void) ptr; + (void) dir; + return 0; +} + +modm_weak void _kill(int pid, int sig) +{ + (void) pid; + (void) sig; +} + +modm_weak int _getpid(void) +{ + return -1; +} + +modm_weak int _write(int file, char *ptr, int len) +{ + (void) file; + (void) ptr; + (void) len; + return -1; +} + +modm_weak int _read(int file, char *ptr, int len) { - modm_assert(false, "libc.abort", - "The libc abort() function was called!"); + (void) file; + (void) ptr; + (void) len; + return -1; } -extern int atexit(void (*fn)(void)); -int atexit(void (*fn)(void)) +modm_weak int _gettimeofday(void *tp, void *tzp) { - (void) fn; - return 0; + (void) tp; + (void) tzp; + return -1; } From e2048bf66d6e8025cccac1c1e2cad935b474a287 Mon Sep 17 00:00:00 2001 From: Niklas Hauser Date: Mon, 26 Dec 2022 20:40:19 +0100 Subject: [PATCH 2/8] [ext] Update CMSIS-DSP to v1.14.2 --- .gitmodules | 3 ++ .../nucleo_f429zi/cmsis_dsp/bayes/main.cpp | 2 +- .../cmsis_dsp/class_marks/main.cpp | 2 +- .../cmsis_dsp/convolution/main.cpp | 6 ++-- .../cmsis_dsp/dotproduct/main.cpp | 2 +- .../nucleo_f429zi/cmsis_dsp/fft_bin/main.cpp | 4 +-- examples/nucleo_f429zi/cmsis_dsp/fir/main.cpp | 8 ++--- .../cmsis_dsp/graphic_equalizer/main.cpp | 8 ++--- .../cmsis_dsp/linear_interp/main.cpp | 8 ++--- .../nucleo_f429zi/cmsis_dsp/matrix/main.cpp | 6 ++-- .../cmsis_dsp/signal_converge/main.cpp | 8 ++--- .../nucleo_f429zi/cmsis_dsp/sin_cos/main.cpp | 2 +- examples/nucleo_f429zi/cmsis_dsp/svm/main.cpp | 2 +- .../nucleo_f429zi/cmsis_dsp/variance/main.cpp | 2 +- ext/arm/cmsis | 2 +- ext/arm/cmsis-dsp | 1 + ext/arm/core.md | 2 +- ext/arm/dsp.lb | 32 ++++++++++--------- ext/arm/dsp.md | 2 +- 19 files changed, 54 insertions(+), 48 deletions(-) create mode 160000 ext/arm/cmsis-dsp diff --git a/.gitmodules b/.gitmodules index 0be56feeac..2e18aa0512 100644 --- a/.gitmodules +++ b/.gitmodules @@ -43,3 +43,6 @@ [submodule "ext/nanopb/nanopb"] path = ext/nanopb/nanopb url = https://github.com/modm-ext/nanopb-partial.git +[submodule "ext/arm/cmsis-dsp"] + path = ext/arm/cmsis-dsp + url = https://github.com/modm-ext/cmsis-dsp-partial.git diff --git a/examples/nucleo_f429zi/cmsis_dsp/bayes/main.cpp b/examples/nucleo_f429zi/cmsis_dsp/bayes/main.cpp index 7f3def2325..145302694d 100644 --- a/examples/nucleo_f429zi/cmsis_dsp/bayes/main.cpp +++ b/examples/nucleo_f429zi/cmsis_dsp/bayes/main.cpp @@ -14,7 +14,7 @@ #define main arm_cmsis_dsp_example #define while return index; void -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_bayes_example/arm_bayes_example_f32.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_bayes_example/arm_bayes_example_f32.c" #undef while #undef main diff --git a/examples/nucleo_f429zi/cmsis_dsp/class_marks/main.cpp b/examples/nucleo_f429zi/cmsis_dsp/class_marks/main.cpp index 80f99848e5..dfddbb7567 100644 --- a/examples/nucleo_f429zi/cmsis_dsp/class_marks/main.cpp +++ b/examples/nucleo_f429zi/cmsis_dsp/class_marks/main.cpp @@ -15,7 +15,7 @@ #define main arm_cmsis_dsp_example #define std var_std #define while return ARM_MATH_SUCCESS; void // has no status variable -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_class_marks_example/arm_class_marks_example_f32.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_class_marks_example/arm_class_marks_example_f32.c" #undef while #undef main #undef std diff --git a/examples/nucleo_f429zi/cmsis_dsp/convolution/main.cpp b/examples/nucleo_f429zi/cmsis_dsp/convolution/main.cpp index a8309bf6b9..291d9471e5 100644 --- a/examples/nucleo_f429zi/cmsis_dsp/convolution/main.cpp +++ b/examples/nucleo_f429zi/cmsis_dsp/convolution/main.cpp @@ -15,10 +15,10 @@ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wsign-compare" #define main arm_cmsis_dsp_example -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_convolution_example/math_helper.h" -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_convolution_example/math_helper.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_convolution_example/math_helper.h" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_convolution_example/math_helper.c" #define while return status; void -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_convolution_example/arm_convolution_example_f32.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_convolution_example/arm_convolution_example_f32.c" #undef while #undef main #pragma GCC diagnostic pop diff --git a/examples/nucleo_f429zi/cmsis_dsp/dotproduct/main.cpp b/examples/nucleo_f429zi/cmsis_dsp/dotproduct/main.cpp index 97ee731a63..aaf5a3dafa 100644 --- a/examples/nucleo_f429zi/cmsis_dsp/dotproduct/main.cpp +++ b/examples/nucleo_f429zi/cmsis_dsp/dotproduct/main.cpp @@ -14,7 +14,7 @@ #define main arm_cmsis_dsp_example #define while return status; void -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/arm_dotproduct_example_f32.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_dotproduct_example/arm_dotproduct_example_f32.c" #undef while #undef main diff --git a/examples/nucleo_f429zi/cmsis_dsp/fft_bin/main.cpp b/examples/nucleo_f429zi/cmsis_dsp/fft_bin/main.cpp index 19eb0e78ab..d20b98d7ee 100644 --- a/examples/nucleo_f429zi/cmsis_dsp/fft_bin/main.cpp +++ b/examples/nucleo_f429zi/cmsis_dsp/fft_bin/main.cpp @@ -13,9 +13,9 @@ #include #define main arm_cmsis_dsp_example -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/arm_fft_bin_data.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_fft_bin_example/arm_fft_bin_data.c" #define while return status; void -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/arm_fft_bin_example_f32.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_fft_bin_example/arm_fft_bin_example_f32.c" #undef while #undef main diff --git a/examples/nucleo_f429zi/cmsis_dsp/fir/main.cpp b/examples/nucleo_f429zi/cmsis_dsp/fir/main.cpp index 8029cde16f..fa5adc8253 100644 --- a/examples/nucleo_f429zi/cmsis_dsp/fir/main.cpp +++ b/examples/nucleo_f429zi/cmsis_dsp/fir/main.cpp @@ -15,11 +15,11 @@ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wsign-compare" #define main arm_cmsis_dsp_example -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_fir_example/math_helper.h" -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_fir_example/math_helper.c" -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_fir_example/arm_fir_data.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_fir_example/math_helper.h" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_fir_example/math_helper.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_fir_example/arm_fir_data.c" #define while return status; void -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_fir_example/arm_fir_example_f32.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_fir_example/arm_fir_example_f32.c" #undef while #undef main #pragma GCC diagnostic pop diff --git a/examples/nucleo_f429zi/cmsis_dsp/graphic_equalizer/main.cpp b/examples/nucleo_f429zi/cmsis_dsp/graphic_equalizer/main.cpp index b03585e341..de7fa32ddd 100644 --- a/examples/nucleo_f429zi/cmsis_dsp/graphic_equalizer/main.cpp +++ b/examples/nucleo_f429zi/cmsis_dsp/graphic_equalizer/main.cpp @@ -15,11 +15,11 @@ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wsign-compare" #define main arm_cmsis_dsp_example -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/math_helper.h" -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/math_helper.c" -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/arm_graphic_equalizer_data.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_graphic_equalizer_example/math_helper.h" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_graphic_equalizer_example/math_helper.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_graphic_equalizer_example/arm_graphic_equalizer_data.c" #define while return status; void -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/arm_graphic_equalizer_example_q31.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_graphic_equalizer_example/arm_graphic_equalizer_example_q31.c" #undef while #undef main #pragma GCC diagnostic pop diff --git a/examples/nucleo_f429zi/cmsis_dsp/linear_interp/main.cpp b/examples/nucleo_f429zi/cmsis_dsp/linear_interp/main.cpp index 0e68654622..2658505246 100644 --- a/examples/nucleo_f429zi/cmsis_dsp/linear_interp/main.cpp +++ b/examples/nucleo_f429zi/cmsis_dsp/linear_interp/main.cpp @@ -15,11 +15,11 @@ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wsign-compare" #define main arm_cmsis_dsp_example -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/math_helper.h" -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/math_helper.c" -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/arm_linear_interp_data.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_linear_interp_example/math_helper.h" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_linear_interp_example/math_helper.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_linear_interp_example/arm_linear_interp_data.c" #define while return status; void -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/arm_linear_interp_example_f32.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_linear_interp_example/arm_linear_interp_example_f32.c" #undef while #undef main #pragma GCC diagnostic pop diff --git a/examples/nucleo_f429zi/cmsis_dsp/matrix/main.cpp b/examples/nucleo_f429zi/cmsis_dsp/matrix/main.cpp index 44838ebfb3..68cdc2c873 100644 --- a/examples/nucleo_f429zi/cmsis_dsp/matrix/main.cpp +++ b/examples/nucleo_f429zi/cmsis_dsp/matrix/main.cpp @@ -15,10 +15,10 @@ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wsign-compare" #define main arm_cmsis_dsp_example -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_matrix_example/math_helper.h" -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_matrix_example/math_helper.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_matrix_example/math_helper.h" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_matrix_example/math_helper.c" #define while return status; void -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_matrix_example/arm_matrix_example_f32.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_matrix_example/arm_matrix_example_f32.c" #undef while #undef main #pragma GCC diagnostic pop diff --git a/examples/nucleo_f429zi/cmsis_dsp/signal_converge/main.cpp b/examples/nucleo_f429zi/cmsis_dsp/signal_converge/main.cpp index 4d3cdc3910..461d8ea648 100644 --- a/examples/nucleo_f429zi/cmsis_dsp/signal_converge/main.cpp +++ b/examples/nucleo_f429zi/cmsis_dsp/signal_converge/main.cpp @@ -15,11 +15,11 @@ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wsign-compare" #define main arm_cmsis_dsp_example -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/math_helper.h" -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/math_helper.c" -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/arm_signal_converge_data.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_signal_converge_example/math_helper.h" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_signal_converge_example/math_helper.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_signal_converge_example/arm_signal_converge_data.c" #define while return status; void -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/arm_signal_converge_example_f32.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_signal_converge_example/arm_signal_converge_example_f32.c" #undef while #undef main #pragma GCC diagnostic pop diff --git a/examples/nucleo_f429zi/cmsis_dsp/sin_cos/main.cpp b/examples/nucleo_f429zi/cmsis_dsp/sin_cos/main.cpp index f81d89a965..5caa153ab0 100644 --- a/examples/nucleo_f429zi/cmsis_dsp/sin_cos/main.cpp +++ b/examples/nucleo_f429zi/cmsis_dsp/sin_cos/main.cpp @@ -14,7 +14,7 @@ #define main arm_cmsis_dsp_example #define while return status; void -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/arm_sin_cos_example_f32.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_sin_cos_example/arm_sin_cos_example_f32.c" #undef while #undef main diff --git a/examples/nucleo_f429zi/cmsis_dsp/svm/main.cpp b/examples/nucleo_f429zi/cmsis_dsp/svm/main.cpp index 6c752d16d0..ba1a15ecf1 100644 --- a/examples/nucleo_f429zi/cmsis_dsp/svm/main.cpp +++ b/examples/nucleo_f429zi/cmsis_dsp/svm/main.cpp @@ -14,7 +14,7 @@ #define main arm_cmsis_dsp_example #define while return result; void -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_svm_example/arm_svm_example_f32.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_svm_example/arm_svm_example_f32.c" #undef while #undef main diff --git a/examples/nucleo_f429zi/cmsis_dsp/variance/main.cpp b/examples/nucleo_f429zi/cmsis_dsp/variance/main.cpp index a1a10553cc..d140b25171 100644 --- a/examples/nucleo_f429zi/cmsis_dsp/variance/main.cpp +++ b/examples/nucleo_f429zi/cmsis_dsp/variance/main.cpp @@ -14,7 +14,7 @@ #define main arm_cmsis_dsp_example #define while return status; void -#include "../../../../ext/arm/cmsis/CMSIS/DSP/Examples/ARM/arm_variance_example/arm_variance_example_f32.c" +#include "../../../../ext/arm/cmsis-dsp/CMSIS-DSP/Examples/ARM/arm_variance_example/arm_variance_example_f32.c" #undef while #undef main diff --git a/ext/arm/cmsis b/ext/arm/cmsis index 2461a8cfbe..5211ec1798 160000 --- a/ext/arm/cmsis +++ b/ext/arm/cmsis @@ -1 +1 @@ -Subproject commit 2461a8cfbec562680ad71d500998039e723f5be1 +Subproject commit 5211ec1798bb2e237ad4706d164a7b5c59363af1 diff --git a/ext/arm/cmsis-dsp b/ext/arm/cmsis-dsp new file mode 160000 index 0000000000..2a1e6552e2 --- /dev/null +++ b/ext/arm/cmsis-dsp @@ -0,0 +1 @@ +Subproject commit 2a1e6552e2fe56f9fd9d33aead2756dc9e2b93fd diff --git a/ext/arm/core.md b/ext/arm/core.md index b0db77cde0..fc3250a901 100644 --- a/ext/arm/core.md +++ b/ext/arm/core.md @@ -8,4 +8,4 @@ peripherals: Please [see the API documentation][docs] for their content and how to use them. -[docs]: http://arm-software.github.io/CMSIS_5/Core/html/modules.html +[docs]: https://arm-software.github.io/CMSIS_5/Core/html/modules.html diff --git a/ext/arm/dsp.lb b/ext/arm/dsp.lb index 7b8c896fb5..96526bf6a5 100644 --- a/ext/arm/dsp.lb +++ b/ext/arm/dsp.lb @@ -39,7 +39,7 @@ class CmsisDspModule(Module): "fast_math": [":cmsis:dsp:tables"], "filtering": [":cmsis:dsp:fast_math", ":cmsis:dsp:tables", ":cmsis:dsp:support"], "interpolation": [], - "matrix": [], + "matrix": [":cmsis:dsp:basic_math", ":cmsis:dsp:fast_math"], "quaternion_math": [], "statistics": [":cmsis:dsp:basic_math", ":cmsis:dsp:fast_math"], "support": [], @@ -61,26 +61,27 @@ class CmsisDspModule(Module): operations = set() env.outbasepath = "modm/ext/cmsis/dsp" if "support" in self.name: - env.copy("cmsis/CMSIS/DSP/PrivateInclude/arm_sorting.h", "arm_sorting.h") + env.copy("cmsis-dsp/CMSIS-DSP/PrivateInclude/arm_sorting.h", "arm_sorting.h") if "transform" in self.name: - env.copy("cmsis/CMSIS/DSP/PrivateInclude/arm_vec_fft.h", "arm_vec_fft.h") + env.copy("cmsis-dsp/CMSIS-DSP/PrivateInclude/arm_vec_fft.h", "arm_vec_fft.h") if "filtering" in self.name: - env.copy("cmsis/CMSIS/DSP/PrivateInclude/arm_vec_filtering.h", "arm_vec_filtering.h") + env.copy("cmsis-dsp/CMSIS-DSP/PrivateInclude/arm_vec_filtering.h", "arm_vec_filtering.h") if "svm" in self.name: - env.copy("cmsis/CMSIS/DSP/Include/dsp/svm_defines.h", "dsp/svm_defines.h") + env.copy("cmsis-dsp/CMSIS-DSP/Include/dsp/svm_defines.h", "dsp/svm_defines.h") + if "matrix" in self.name: + env.copy("cmsis-dsp/CMSIS-DSP/Include/dsp/matrix_utils.h", "dsp/matrix_utils.h") if "tables" not in self.name: global includes includes.append(self.name) - operations |= env.copy("cmsis/CMSIS/DSP/Include/dsp/{}_functions.h".format(self.name), + operations |= env.copy("cmsis-dsp/CMSIS-DSP/Include/dsp/{}_functions.h".format(self.name), "dsp/{}_functions.h".format(self.name)) if env[":cmsis:dsp:with_f16"]: - operations |= env.copy("cmsis/CMSIS/DSP/Include/dsp/{}_functions_f16.h".format(self.name), + operations |= env.copy("cmsis-dsp/CMSIS-DSP/Include/dsp/{}_functions_f16.h".format(self.name), "dsp/{}_functions_f16.h".format(self.name)) - operations |= env.copy("cmsis/CMSIS/DSP/Source/{}".format(self.path), self.path, - ignore=env.ignore_files("arm_bitreversal2.c", - "" if env[":cmsis:dsp:with_f16"] else "*_f16*")) + operations |= env.copy("cmsis-dsp/CMSIS-DSP/Source/{}".format(self.path), self.path, + ignore=env.ignore_files("" if env[":cmsis:dsp:with_f16"] else "*_f16*")) # For all sources add these compile flags for key, values in metadata.items(): @@ -103,7 +104,7 @@ def prepare(module, options): description=descr_f16, default=False)) - for path in Path(localpath("cmsis/CMSIS/DSP/Source")).iterdir(): + for path in Path(localpath("cmsis-dsp/CMSIS-DSP/Source")).iterdir(): if path.is_dir(): module.add_submodule(CmsisDspModule(path)) @@ -113,15 +114,16 @@ def build(env): env.collect(":build:path.include", "modm/ext/cmsis/dsp/") env.outbasepath = "modm/ext/cmsis/dsp" - for path in Path(localpath("cmsis/CMSIS/DSP/Include/")).iterdir(): + for path in Path(localpath("cmsis-dsp/CMSIS-DSP/Include/")).iterdir(): if path.is_file() and not ("_f16" in path.name and not env["with_f16"]): # We need to replace this file to include the if path.name in ["arm_math_types.h", "arm_math.h", "arm_math_f16.h"]: continue; env.copy(path, path.name) - env.copy("cmsis/CMSIS/DSP/Include/dsp/none.h", "dsp/none.h") - env.copy("cmsis/CMSIS/DSP/Include/dsp/utils.h", "dsp/utils.h") - env.copy("cmsis/CMSIS/DSP/Include/arm_math_types.h", "arm_math_types_internal.h") + env.copy("cmsis-dsp/CMSIS-DSP/Include/dsp/none.h", "dsp/none.h") + env.copy("cmsis-dsp/CMSIS-DSP/Include/dsp/utils.h", "dsp/utils.h") + env.copy("cmsis-dsp/CMSIS-DSP/Include/dsp/debug.h", "dsp/debug.h") + env.copy("cmsis-dsp/CMSIS-DSP/Include/arm_math_types.h", "arm_math_types_internal.h") core = env[":target"].get_driver("core")["type"][8:] core = core.replace("+", "PLUS").replace("f", "").replace("d", "") diff --git a/ext/arm/dsp.md b/ext/arm/dsp.md index b1304393fb..fcd5765bb6 100644 --- a/ext/arm/dsp.md +++ b/ext/arm/dsp.md @@ -26,4 +26,4 @@ Example `` configuration: ``` -[docs]: http://arm-software.github.io/CMSIS_5/DSP/html/modules.html +[docs]: https://arm-software.github.io/CMSIS-DSP/latest/ From a7d6755a92215044747c36dd4432fa77f087c182 Mon Sep 17 00:00:00 2001 From: Niklas Hauser Date: Tue, 27 Dec 2022 13:58:37 +0100 Subject: [PATCH 3/8] [ext] Update FreeRTOS to 202212 release --- ext/aws/FreeRTOSConfig.h.in | 3 +++ ext/aws/freertos | 2 +- ext/aws/modm_port.cpp.in | 5 ++++- ext/aws/module.lb | 13 +++++++------ 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/ext/aws/FreeRTOSConfig.h.in b/ext/aws/FreeRTOSConfig.h.in index 486803a03b..1fcb8f7ad9 100644 --- a/ext/aws/FreeRTOSConfig.h.in +++ b/ext/aws/FreeRTOSConfig.h.in @@ -90,6 +90,9 @@ See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ #ifndef configUSE_IDLE_HOOK # define configUSE_IDLE_HOOK 0 #endif +#ifndef configUSE_MALLOC_FAILED_HOOK +# define configUSE_MALLOC_FAILED_HOOK 0 +#endif #ifndef configUSE_16_BIT_TICKS # define configUSE_16_BIT_TICKS 0 #endif diff --git a/ext/aws/freertos b/ext/aws/freertos index c665706d54..c6ae9ef30f 160000 --- a/ext/aws/freertos +++ b/ext/aws/freertos @@ -1 +1 @@ -Subproject commit c665706d54e884d5827e3ff13287ee5bb3ecbccf +Subproject commit c6ae9ef30f1d6a3d493f474989330b6fba98c111 diff --git a/ext/aws/modm_port.cpp.in b/ext/aws/modm_port.cpp.in index fbaaf8c5ff..b56824b4c5 100644 --- a/ext/aws/modm_port.cpp.in +++ b/ext/aws/modm_port.cpp.in @@ -12,6 +12,7 @@ #include #include #include +#include #include extern "C" void vApplicationStackOverflowHook(TaskHandle_t, char *); @@ -39,6 +40,9 @@ void __malloc_unlock(struct _reent *) // ---------------------------------------------------------------------------- // Make the FreeRTOS heap use Newlib heap +#if configUSE_MALLOC_FAILED_HOOK == 1 +extern "C" void vApplicationMallocFailedHook(void); +#endif extern "C" void *pvPortMalloc(size_t xWantedSize); void *pvPortMalloc(size_t xWantedSize) { @@ -48,7 +52,6 @@ void *pvPortMalloc(size_t xWantedSize) #if configUSE_MALLOC_FAILED_HOOK == 1 if(pvReturn == nullptr) { - extern "C" void vApplicationMallocFailedHook(void); vApplicationMallocFailedHook(); } #endif diff --git a/ext/aws/module.lb b/ext/aws/module.lb index f67d1a077b..b200734b46 100644 --- a/ext/aws/module.lb +++ b/ext/aws/module.lb @@ -45,15 +45,15 @@ class FreeRTOS_TCP(Module): def build(self, env): env.outbasepath = "modm/ext" env.substitutions = {"with_debug": env.has_module(":debug")} - env.copy("freertos/FreeRTOS-Plus-TCP", "freertos_plus_tcp", - ignore=env.ignore_files("portable")) - env.copy("freertos/FreeRTOS-Plus-TCP/portable/BufferManagement/BufferAllocation_2.c", "freertos_plus_tcp/BufferAllocation_2.c") + env.copy("freertos/FreeRTOS-Plus-TCP/source", "freertos_plus_tcp", ignore=env.ignore_files("portable")) + env.copy("freertos/FreeRTOS-Plus-TCP/source/portable/BufferManagement/BufferAllocation_2.c", "freertos_plus_tcp/BufferAllocation_2.c") + env.copy("freertos/FreeRTOS-Plus-TCP/tools", "freertos_plus_tcp", ignore=env.ignore_files("*.md", "*.cfg")) # Copy the compiler support files - env.copy("freertos/FreeRTOS-Plus-TCP/portable/Compiler/GCC/pack_struct_start.h", "freertos_plus_tcp/include/pack_struct_start.h") - env.copy("freertos/FreeRTOS-Plus-TCP/portable/Compiler/GCC/pack_struct_end.h", "freertos_plus_tcp/include/pack_struct_end.h") + env.copy("freertos/FreeRTOS-Plus-TCP/source/portable/Compiler/GCC/pack_struct_start.h", "freertos_plus_tcp/include/pack_struct_start.h") + env.copy("freertos/FreeRTOS-Plus-TCP/source/portable/Compiler/GCC/pack_struct_end.h", "freertos_plus_tcp/include/pack_struct_end.h") env.collect(":build:path.include", "modm/ext/freertos_plus_tcp/include") - env.collect(":build:path.include", "modm/ext/freertos_plus_tcp/tools/tcp_utilities/include") + env.collect(":build:path.include", "modm/ext/freertos_plus_tcp/tcp_utilities/include") env.template("FreeRTOSIPConfig.h.in", "freertos_plus_tcp/include/FreeRTOSIPConfig.h") # ----------------------------------------------------------------------------- @@ -119,6 +119,7 @@ def build(env): if "CM33" in path: env.copy("{}/portasm.c".format(path), "freertos/portasm.c") env.copy("{}/portasm.h".format(path), "freertos/inc/freertos/portasm.h") + env.copy("{}/portmacrocommon.h".format(path), "freertos/inc/freertos/portmacrocommon.h") # Generate the FreeRTOSConfig.h file env.template("FreeRTOSConfig.h.in", "freertos/inc/freertos/FreeRTOSConfig.h") From ca19b3cdff1a45b08d7b671b0f1b7203830aacea Mon Sep 17 00:00:00 2001 From: Niklas Hauser Date: Tue, 27 Dec 2022 17:51:27 +0100 Subject: [PATCH 4/8] [ext] Update FatFs to v0.15 --- ext/chan/fatfs | 2 +- ext/chan/ffconf.h | 26 +++++++------------------- ext/chan/module.lb | 1 + 3 files changed, 9 insertions(+), 20 deletions(-) diff --git a/ext/chan/fatfs b/ext/chan/fatfs index c600593861..148d9682d1 160000 --- a/ext/chan/fatfs +++ b/ext/chan/fatfs @@ -1 +1 @@ -Subproject commit c600593861dde9469bb0cb6704952022a76a6f25 +Subproject commit 148d9682d1c905c22f78d36f2f308555c6fcdba9 diff --git a/ext/chan/ffconf.h b/ext/chan/ffconf.h index e671edcf4e..7b050bbe4b 100644 --- a/ext/chan/ffconf.h +++ b/ext/chan/ffconf.h @@ -3,11 +3,7 @@ /---------------------------------------------------------------------------*/ #ifndef FFCONF_DEF -#define FFCONF_DEF 86631 /* Revision ID */ - -// Simply forward -#define ff_memalloc malloc -#define ff_memfree free +#define FFCONF_DEF 80286 /* Revision ID */ /* A header file that overwrites with local project settings. */ #if __has_include() @@ -359,33 +355,25 @@ / lock control is independent of re-entrancy. */ -/* #include // O/S definitions */ #ifndef FF_FS_REENTRANT # define FF_FS_REENTRANT 0 #endif #ifndef FF_FS_TIMEOUT # define FF_FS_TIMEOUT 1000 #endif -#ifndef FF_SYNC_t -# define FF_SYNC_t HANDLE -#endif /* The option FF_FS_REENTRANT switches the re-entrancy (thread safe) of the FatFs / module itself. Note that regardless of this option, file access to different / volume is always re-entrant and volume control functions, f_mount(), f_mkfs() / and f_fdisk() function, are always not re-entrant. Only file/directory access -/ to the same volume is under control of this function. +/ to the same volume is under control of this featuer. / -/ 0: Disable re-entrancy. FF_FS_TIMEOUT and FF_SYNC_t have no effect. +/ 0: Disable re-entrancy. FF_FS_TIMEOUT have no effect. / 1: Enable re-entrancy. Also user provided synchronization handlers, -/ ff_req_grant(), ff_rel_grant(), ff_del_syncobj() and ff_cre_syncobj() -/ function, must be added to the project. Samples are available in -/ option/syscall.c. +/ ff_mutex_create(), ff_mutex_delete(), ff_mutex_take() and ff_mutex_give() +/ function, must be added to the project. Samples are available in ffsystem.c. / -/ The FF_FS_TIMEOUT defines timeout period in unit of time tick. -/ The FF_SYNC_t defines O/S dependent sync object type. e.g. HANDLE, ID, OS_EVENT*, -/ SemaphoreHandle_t and etc. A header file for O/S definitions needs to be -/ included somewhere in the scope of ff.h. */ - +/ The FF_FS_TIMEOUT defines timeout period in unit of O/S time tick. +*/ /*--- End of configuration options ---*/ diff --git a/ext/chan/module.lb b/ext/chan/module.lb index 2df00b235b..3053a9ed4d 100644 --- a/ext/chan/module.lb +++ b/ext/chan/module.lb @@ -64,6 +64,7 @@ def build(env): env.copy("fatfs/full/source/ff.h", "ff.h") env.copy("fatfs/full/source/ff.c", "ff.c") env.copy("fatfs/full/source/ffunicode.c", "ffunicode.c") + env.copy("fatfs/full/source/ffsystem.c", "ffsystem.c") env.copy("fatfs/full/LICENSE.txt", "LICENSE.txt") env.copy("ffconf.h") From d56312a41832932d8f9bd6c36a1d84fed3aa711e Mon Sep 17 00:00:00 2001 From: Niklas Hauser Date: Tue, 27 Dec 2022 17:55:50 +0100 Subject: [PATCH 5/8] [ext] Update TinyUSB to v0.14.0 --- ext/hathach/module.lb | 2 ++ ext/hathach/tinyusb | 2 +- ext/hathach/tusb_config.h.in | 2 +- ext/rp/irq.h | 14 ++++++++++++-- ext/rp/pico.cpp.in | 2 ++ ext/rp/pico.h | 2 ++ 6 files changed, 20 insertions(+), 4 deletions(-) diff --git a/ext/hathach/module.lb b/ext/hathach/module.lb index f0273488c2..5b16d420ab 100644 --- a/ext/hathach/module.lb +++ b/ext/hathach/module.lb @@ -136,6 +136,8 @@ def build(env): speed = env.get("speed", "hs" if env[":target"].has_driver("usb_otg_hs") else "fs") port = 0 if speed == "fs" else 1 + tusb_config["CFG_TUSB_RHPORT0_MODE"] = "OPT_MODE_NONE" + tusb_config["CFG_TUSB_RHPORT1_MODE"] = "OPT_MODE_NONE" mode = None if has_device: mode = "OPT_MODE_DEVICE"; if has_host: mode = "OPT_MODE_HOST"; diff --git a/ext/hathach/tinyusb b/ext/hathach/tinyusb index 05410758f2..9009b0781b 160000 --- a/ext/hathach/tinyusb +++ b/ext/hathach/tinyusb @@ -1 +1 @@ -Subproject commit 05410758f24f67285b71b34b874024e06b282815 +Subproject commit 9009b0781b3583f2cd124b7f1179cb647a3aa5eb diff --git a/ext/hathach/tusb_config.h.in b/ext/hathach/tusb_config.h.in index c94ff4829c..0e96dcd0cb 100644 --- a/ext/hathach/tusb_config.h.in +++ b/ext/hathach/tusb_config.h.in @@ -35,4 +35,4 @@ TU_VERIFY_DEFINE(_cond, modm_assert_continue_fail(0, "tu", \ __FILE__ ":" MODM_STRINGIFY(__LINE__) " -> \"" #_cond "\""), _ret) -#define TU_ASSERT(...) GET_3RD_ARG(__VA_ARGS__, MODM_ASSERT_2ARGS, MODM_ASSERT_1ARGS,UNUSED)(__VA_ARGS__) +#define TU_ASSERT(...) _GET_3RD_ARG(__VA_ARGS__, MODM_ASSERT_2ARGS, MODM_ASSERT_1ARGS,UNUSED)(__VA_ARGS__) diff --git a/ext/rp/irq.h b/ext/rp/irq.h index 8b687a8554..203e42f59f 100644 --- a/ext/rp/irq.h +++ b/ext/rp/irq.h @@ -26,7 +26,17 @@ irq_set_enabled(int irqn, bool enable) static inline void irq_set_exclusive_handler(int irqn, void (*handler)()) { - (void)irqn; - (void)handler; + (void) irqn; + (void) handler; // do nothing, irq implemented at modm } + +static inline void +irq_add_shared_handler(unsigned int irqn, void (*handler)(), uint8_t order_priority) +{ + (void) irqn; + (void) handler; + (void) order_priority; +} + +#define PICO_SHARED_IRQ_HANDLER_HIGHEST_ORDER_PRIORITY 0xff diff --git a/ext/rp/pico.cpp.in b/ext/rp/pico.cpp.in index 8b83b36c5b..181aca88f9 100644 --- a/ext/rp/pico.cpp.in +++ b/ext/rp/pico.cpp.in @@ -26,6 +26,8 @@ extern "C" void panic(const char *fmt, ...) va_start(va, fmt); modm::log::info.vprintf(fmt, va); va_end(va); +%% else + (void) fmt; %% endif modm_assert(0, "pico", "Pico-SDK panic!"); } diff --git a/ext/rp/pico.h b/ext/rp/pico.h index 6fe0d68830..f9b2ee8c55 100644 --- a/ext/rp/pico.h +++ b/ext/rp/pico.h @@ -32,6 +32,8 @@ extern "C" { #define hard_assert assert #endif +typedef unsigned int uint; + void panic(const char* /*fmt*/, ...); From e3da70d15d9fc6614cb17ca4ab9475adfe69ec86 Mon Sep 17 00:00:00 2001 From: Niklas Hauser Date: Tue, 27 Dec 2022 18:33:47 +0100 Subject: [PATCH 6/8] [ext] Update printf to v6.1.0 --- ext/eyalroz/printf | 2 +- ext/eyalroz/printf_config.h.in | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ext/eyalroz/printf b/ext/eyalroz/printf index 74f4f658c8..72716295bc 160000 --- a/ext/eyalroz/printf +++ b/ext/eyalroz/printf @@ -1 +1 @@ -Subproject commit 74f4f658c826af5a945eb6c0570ba594b6b8ae21 +Subproject commit 72716295bcaa14f96ad9725b40dcc9dff0930eac diff --git a/ext/eyalroz/printf_config.h.in b/ext/eyalroz/printf_config.h.in index f0f0d8744d..758cb54603 100644 --- a/ext/eyalroz/printf_config.h.in +++ b/ext/eyalroz/printf_config.h.in @@ -27,4 +27,12 @@ #define PRINTF_ALIAS_STANDARD_FUNCTION_NAMES {{ 0 if is_hosted else 1 }} #endif +#ifndef PRINTF_ALIAS_STANDARD_FUNCTION_NAMES_HARD +#define PRINTF_ALIAS_STANDARD_FUNCTION_NAMES_HARD 0 +#endif + +#ifndef PRINTF_ALIAS_STANDARD_FUNCTION_NAMES_SOFT +#define PRINTF_ALIAS_STANDARD_FUNCTION_NAMES_SOFT 0 +#endif + From a2e2251fa17886e42001136c02ad3515f619a67b Mon Sep 17 00:00:00 2001 From: Niklas Hauser Date: Tue, 27 Dec 2022 22:13:22 +0100 Subject: [PATCH 7/8] [ext] Update submodules --- ext/etlcpp/etl | 2 +- ext/lvgl/lvgl | 2 +- ext/modm-devices | 2 +- ext/nanopb/nanopb | 2 +- ext/rp/pico-sdk | 2 +- ext/st/stm32 | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ext/etlcpp/etl b/ext/etlcpp/etl index c15efb1700..309fac8898 160000 --- a/ext/etlcpp/etl +++ b/ext/etlcpp/etl @@ -1 +1 @@ -Subproject commit c15efb17001a265ea358093401a87c68e1d5b502 +Subproject commit 309fac8898a3d1464cd61f01f4a919c826a706be diff --git a/ext/lvgl/lvgl b/ext/lvgl/lvgl index 7e0440d950..739ac838af 160000 --- a/ext/lvgl/lvgl +++ b/ext/lvgl/lvgl @@ -1 +1 @@ -Subproject commit 7e0440d9502040f652c6d088b510f35876fccf1c +Subproject commit 739ac838afd21183a15e54cfc379b4d50eb0863f diff --git a/ext/modm-devices b/ext/modm-devices index 2714f2321f..e9b441bdf1 160000 --- a/ext/modm-devices +++ b/ext/modm-devices @@ -1 +1 @@ -Subproject commit 2714f2321f89bece09f0b339909ebe37e133858d +Subproject commit e9b441bdf1e31e907e5f5869df4c0d4bd5752b0b diff --git a/ext/nanopb/nanopb b/ext/nanopb/nanopb index d5f15c1924..a3a3a2fda0 160000 --- a/ext/nanopb/nanopb +++ b/ext/nanopb/nanopb @@ -1 +1 @@ -Subproject commit d5f15c1924ed5fe0c19c9ea7be46bcde62bc4617 +Subproject commit a3a3a2fda0a8f5d80642adfceb0c4bbf9db02d8e diff --git a/ext/rp/pico-sdk b/ext/rp/pico-sdk index f652c8b9c7..8b91de3412 160000 --- a/ext/rp/pico-sdk +++ b/ext/rp/pico-sdk @@ -1 +1 @@ -Subproject commit f652c8b9c7a33b9761293c16b415285d42c6cba1 +Subproject commit 8b91de34125c7c99931cc290ed963edf9053f0e0 diff --git a/ext/st/stm32 b/ext/st/stm32 index 362dba64ef..33f8b0eee2 160000 --- a/ext/st/stm32 +++ b/ext/st/stm32 @@ -1 +1 @@ -Subproject commit 362dba64ef52d1e1d75b224f2bf6537065b28869 +Subproject commit 33f8b0eee2ceea11bd7dcd40b664fcf1e1472733 From c0dc9c1a6d2eb1f4a6b258b3a116c2ca86f0f2f0 Mon Sep 17 00:00:00 2001 From: Niklas Hauser Date: Sun, 1 Jan 2023 21:04:27 +0100 Subject: [PATCH 8/8] [release] Update changelog for 2022q4 release --- .mailmap | 5 ++- CHANGELOG.md | 79 ++++++++++++++++++++++++++++++++++++++++ docs/release/2022q4.md | 72 ++++++++++++++++++++++++++++++++++++ tools/scripts/authors.py | 1 + 4 files changed, 155 insertions(+), 2 deletions(-) create mode 100644 docs/release/2022q4.md diff --git a/.mailmap b/.mailmap index 2efab7eaab..1608d7d4b9 100644 --- a/.mailmap +++ b/.mailmap @@ -32,8 +32,8 @@ Henrik Hose Jacob Schultz Andersen Jakob Riepler Jeff McBride -Julia Gutheil Jonas Kazem Andersen +Julia Gutheil Jörg Hoffmann Kaelin Laundry Kevin Läufer @@ -64,14 +64,15 @@ Pavel Pletenev Philipp Graf Raphael Lehmann Raphael Lehmann -Sarah Vilete Rasmus Kleist +Sarah Vilete Sascha Schade Sascha Schade Sascha Schade Sascha Schade Sebastian Birke Sebastian Tibor Bakonyvari <21312267+twast92@users.noreply.github.com> +Sergey Pluzhnikov Sergiy Yevtushenko Steven Macías Tarik TIRE diff --git a/CHANGELOG.md b/CHANGELOG.md index 9907fa20cd..c9b08ca6f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,6 +52,80 @@ pay attention to. Medium impact changes are also worth looking at. +## 2023-01-01: 2022q4 release + +This release covers everything from 2022-10-01 and has been tested with avr-gcc +v10.2.0 from Upstream and arm-none-eabi-gcc 10.3-2022.07 from Arm. + +Breaking changes: + +- None. + +Features: + +- Basic ADC support for SAMx7x devices. + +Integrated Projects: + +- printf upgraded to v6.1.0. +- CMSIS-DSP upgraded to v1.14.2. +- TinyUSB upgraded to v0.14.0. +- FreeRTOS upgraded to 202212. +- FatFS upgraded to v0.15. +- LVGL upgraded to v8.3.4. +- NanoPB upgraded to v0.4.7. +- ETL upgraded to v20.35.6. +- STM32L5 headers upgraded to v1.12.0. +- STM32H7 headers upgraded to v1.10.3. + +Fixes: + +- STM32G4 ADC channel mapping. +- Initialize frame buffer memory in MonochromeGraphicDisplay. +- Only configure BDTR register for timers with complementary PWM. +- Fix SAMx7x b-variant USART defines. + +New development boards: + +- None. + +New device drivers: + +- None. + +Known bugs: + +- C++20 is not fully implemented by GCC10 yet, however modm does not use all + features yet anyways. See [#326][]. +- STM32F7: D-Cache not enabled by default. See [#485][]. +- `lbuild build` and `lbuild clean` do not remove all previously generated files + when the configuration changes. See [#285][]. +- Generating modm on Windows creates paths with `\` that are not compatible with + Unix. See [#310][]. +- `arm-none-eabi-gdb` TUI and GDBGUI interfaces are not supported on Windows. + See [#591][]. + +Many thanks to all our contributors. +A special shoutout to first timers 🎉: + +- Christopher Durand ([@chris-durand][]) +- Niklas Hauser ([@salkinium][]) +- Raphael Lehmann ([@rleh][]) +- Sergey Pluzhnikov ([@ser-plu][]) 🎉 + +PR [#937][] -> [2022q4][]. + +
+Detailed changelog + +#### 2022-12-04: Add basic SAMx7x ADC driver + +PR [#935][] -> [7330500][]. +Tested in hardware by [@chris-durand][]. + +
+ + ## 2022-10-01: 2022q3 release This release covers everything from 2022-07-01 and has been tested with avr-gcc @@ -2186,6 +2260,7 @@ Please note that contributions from xpcc were continuously ported to modm. [2022q1]: https://github.com/modm-io/modm/releases/tag/2022q1 [2022q2]: https://github.com/modm-io/modm/releases/tag/2022q2 [2022q3]: https://github.com/modm-io/modm/releases/tag/2022q3 +[2022q4]: https://github.com/modm-io/modm/releases/tag/2022q4 [@19joho66]: https://github.com/19joho66 [@ASMfreaK]: https://github.com/ASMfreaK @@ -2231,6 +2306,7 @@ Please note that contributions from xpcc were continuously ported to modm. [@salkinium]: https://github.com/salkinium [@sarahvilete]: https://github.com/sarahvilete [@se-bi]: https://github.com/se-bi +[@ser-plu]: https://github.com/ser-plu [@strongly-typed]: https://github.com/strongly-typed [@tarush53]: https://github.com/tarush53 [@twasilczyk]: https://github.com/twasilczyk @@ -2482,6 +2558,8 @@ Please note that contributions from xpcc were continuously ported to modm. [#900]: https://github.com/modm-io/modm/pull/900 [#902]: https://github.com/modm-io/modm/pull/902 [#917]: https://github.com/modm-io/modm/pull/917 +[#935]: https://github.com/modm-io/modm/pull/935 +[#937]: https://github.com/modm-io/modm/pull/937 [#96]: https://github.com/modm-io/modm/pull/96 [00471ca]: https://github.com/modm-io/modm/commit/00471ca @@ -2558,6 +2636,7 @@ Please note that contributions from xpcc were continuously ported to modm. [6e7c12f]: https://github.com/modm-io/modm/commit/6e7c12f [6e9f000]: https://github.com/modm-io/modm/commit/6e9f000 [72d5ae9]: https://github.com/modm-io/modm/commit/72d5ae9 +[7330500]: https://github.com/modm-io/modm/commit/7330500 [77ae899]: https://github.com/modm-io/modm/commit/77ae899 [78d18f6]: https://github.com/modm-io/modm/commit/78d18f6 [7b5827f]: https://github.com/modm-io/modm/commit/7b5827f diff --git a/docs/release/2022q4.md b/docs/release/2022q4.md new file mode 100644 index 0000000000..90a423af89 --- /dev/null +++ b/docs/release/2022q4.md @@ -0,0 +1,72 @@ +## 2023-01-01: 2022q4 release + +This release covers everything from 2022-10-01 and has been tested with avr-gcc +v10.2.0 from Upstream and arm-none-eabi-gcc 10.3-2022.07 from Arm. + +Breaking changes: + +- None. + +Features: + +- Basic ADC support for SAMx7x devices. + +Integrated Projects: + +- printf upgraded to v6.1.0. +- CMSIS-DSP upgraded to v1.14.2. +- TinyUSB upgraded to v0.14.0. +- FreeRTOS upgraded to 202212. +- FatFS upgraded to v0.15. +- LVGL upgraded to v8.3.4. +- NanoPB upgraded to v0.4.7. +- ETL upgraded to v20.35.6. +- STM32L5 headers upgraded to v1.12.0. +- STM32H7 headers upgraded to v1.10.3. + +Fixes: + +- STM32G4 ADC channel mapping. +- Initialize frame buffer memory in MonochromeGraphicDisplay. +- Only configure BDTR register for timers with complementary PWM. +- Fix SAMx7x b-variant USART defines. + +New development boards: + +- None. + +New device drivers: + +- None. + +Known bugs: + +- C++20 is not fully implemented by GCC10 yet, however modm does not use all + features yet anyways. See #326. +- STM32F7: D-Cache not enabled by default. See #485. +- `lbuild build` and `lbuild clean` do not remove all previously generated files + when the configuration changes. See #285. +- Generating modm on Windows creates paths with `\` that are not compatible with + Unix. See #310. +- `arm-none-eabi-gdb` TUI and GDBGUI interfaces are not supported on Windows. + See #591. + +Many thanks to all our contributors. +A special shoutout to first timers 🎉: + +- Christopher Durand (@chris-durand) +- Niklas Hauser (@salkinium) +- Raphael Lehmann (@rleh) +- Sergey Pluzhnikov (@ser-plu) 🎉 + +PR #937 -> 2022q4. + +
+Detailed changelog + +#### 2022-12-04: Add basic SAMx7x ADC driver + +PR #935 -> 7330500. +Tested in hardware by @chris-durand. + +
diff --git a/tools/scripts/authors.py b/tools/scripts/authors.py index 87198d079c..2935d0d449 100755 --- a/tools/scripts/authors.py +++ b/tools/scripts/authors.py @@ -72,6 +72,7 @@ "Sascha Schade": "strongly-typed", "Sebastian Birke": "se-bi", "Sebastian Tibor Bakonyvari": "twast92", + "Sergey Pluzhnikov": "ser-plu", "Sergiy Yevtushenko": "siy", "Steven Macías": "StevenMacias", "Tarik TIRE": "7Kronos",