summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/nrf/mpconfigdevice_nrf51822.h97
-rw-r--r--ports/nrf/mpconfigdevice_nrf52832.h65
-rw-r--r--ports/nrf/mpconfigdevice_nrf52840.h75
-rw-r--r--ports/nrf/mpconfigdevice_nrf9160.h75
-rw-r--r--ports/nrf/mpconfigport.h147
-rw-r--r--ports/nrf/nrfx_config.h2
6 files changed, 138 insertions, 323 deletions
diff --git a/ports/nrf/mpconfigdevice_nrf51822.h b/ports/nrf/mpconfigdevice_nrf51822.h
deleted file mode 100644
index 67a81d250..000000000
--- a/ports/nrf/mpconfigdevice_nrf51822.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2020 Glenn Ruben Bakke
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-// Board overridable build configuration.
-
-#ifndef MICROPY_MBFS
-#if defined(BLUETOOTH_SD)
-#define MICROPY_MBFS (1)
-#else
-#define MICROPY_MBFS (0)
-#endif
-#endif
-
-#ifndef MICROPY_VFS
-#if defined(BLUETOOTH_SD)
-#define MICROPY_VFS (0)
-#else
-#define MICROPY_VFS (1)
-#endif
-#endif
-
-// Board overridable feature configuration.
-
-#ifndef MICROPY_ENABLE_SOURCE_LINE
-#if defined(BLUETOOTH_SD)
-#define MICROPY_ENABLE_SOURCE_LINE (0)
-#else
-#define MICROPY_ENABLE_SOURCE_LINE (1)
-#endif
-#endif
-
-#ifndef MICROPY_PY_ARRAY_SLICE_ASSIGN
-#if defined(BLUETOOTH_SD)
-#define MICROPY_PY_ARRAY_SLICE_ASSIGN (0)
-#else
-#define MICROPY_PY_ARRAY_SLICE_ASSIGN (1)
-#endif
-#endif
-
-#ifndef MICROPY_PY_SYS_STDFILES
-#if defined(BLUETOOTH_SD)
-#define MICROPY_PY_SYS_STDFILES (0)
-#else
-#define MICROPY_PY_SYS_STDFILES (1)
-#endif
-#endif
-
-#ifndef MICROPY_PY_UBINASCII
-#if defined(BLUETOOTH_SD)
-#define MICROPY_PY_UBINASCII (0)
-#else
-#define MICROPY_PY_UBINASCII (1)
-#endif
-#endif
-
-// Board overridable port specific feature configuration.
-
-#ifndef MICROPY_PY_NRF
-#if defined(BLUETOOTH_SD)
-#define MICROPY_PY_NRF (0)
-#else
-#define MICROPY_PY_NRF (1)
-#endif
-#endif
-
-// Board overridable hardware configuration.
-
-#ifndef MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE
-#if defined(BLUETOOTH_SD)
-#define MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE (0)
-#else
-#define MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE (1)
-#endif
-#endif
diff --git a/ports/nrf/mpconfigdevice_nrf52832.h b/ports/nrf/mpconfigdevice_nrf52832.h
deleted file mode 100644
index fa9258f2a..000000000
--- a/ports/nrf/mpconfigdevice_nrf52832.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2020 Glenn Ruben Bakke
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-// Board overridable build configuration.
-
-#ifndef MICROPY_MBFS
-#define MICROPY_MBFS (0)
-#endif
-
-#ifndef MICROPY_VFS
-#define MICROPY_VFS (1)
-#endif
-
-// Board overridable feature configuration.
-
-#ifndef MICROPY_ENABLE_SOURCE_LINE
-#define MICROPY_ENABLE_SOURCE_LINE (1)
-#endif
-
-#ifndef MICROPY_PY_ARRAY_SLICE_ASSIGN
-#define MICROPY_PY_ARRAY_SLICE_ASSIGN (1)
-#endif
-
-#ifndef MICROPY_PY_SYS_STDFILES
-#define MICROPY_PY_SYS_STDFILES (1)
-#endif
-
-#ifndef MICROPY_PY_UBINASCII
-#define MICROPY_PY_UBINASCII (1)
-#endif
-
-// Board overridable port specific feature configuration.
-
-#ifndef MICROPY_PY_NRF
-#define MICROPY_PY_NRF (1)
-#endif
-
-// Board overridable hardware configuration.
-
-#ifndef MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE
-#define MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE (1)
-#endif
diff --git a/ports/nrf/mpconfigdevice_nrf52840.h b/ports/nrf/mpconfigdevice_nrf52840.h
deleted file mode 100644
index 581c52ea8..000000000
--- a/ports/nrf/mpconfigdevice_nrf52840.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2020 Glenn Ruben Bakke
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-// Board overridable build configuration.
-
-#ifndef MICROPY_MBFS
-#define MICROPY_MBFS (0)
-#endif
-
-#ifndef MICROPY_VFS
-#define MICROPY_VFS (1)
-#endif
-
-// Board overridable emitter configuration.
-
-#ifndef MICROPY_EMIT_THUMB
-#define MICROPY_EMIT_THUMB (1)
-#endif
-
-#ifndef MICROPY_EMIT_INLINE_THUMB
-#define MICROPY_EMIT_INLINE_THUMB (1)
-#endif
-
-// Board overridable feature configuration.
-
-#ifndef MICROPY_ENABLE_SOURCE_LINE
-#define MICROPY_ENABLE_SOURCE_LINE (1)
-#endif
-
-#ifndef MICROPY_PY_ARRAY_SLICE_ASSIGN
-#define MICROPY_PY_ARRAY_SLICE_ASSIGN (1)
-#endif
-
-#ifndef MICROPY_PY_SYS_STDFILES
-#define MICROPY_PY_SYS_STDFILES (1)
-#endif
-
-#ifndef MICROPY_PY_UBINASCII
-#define MICROPY_PY_UBINASCII (1)
-#endif
-
-// Board overridable port specific feature configuration.
-
-#ifndef MICROPY_PY_NRF
-#define MICROPY_PY_NRF (1)
-#endif
-
-// Board overridable hardware configuration.
-
-#ifndef MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE
-#define MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE (1)
-#endif
diff --git a/ports/nrf/mpconfigdevice_nrf9160.h b/ports/nrf/mpconfigdevice_nrf9160.h
deleted file mode 100644
index 581c52ea8..000000000
--- a/ports/nrf/mpconfigdevice_nrf9160.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2020 Glenn Ruben Bakke
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-// Board overridable build configuration.
-
-#ifndef MICROPY_MBFS
-#define MICROPY_MBFS (0)
-#endif
-
-#ifndef MICROPY_VFS
-#define MICROPY_VFS (1)
-#endif
-
-// Board overridable emitter configuration.
-
-#ifndef MICROPY_EMIT_THUMB
-#define MICROPY_EMIT_THUMB (1)
-#endif
-
-#ifndef MICROPY_EMIT_INLINE_THUMB
-#define MICROPY_EMIT_INLINE_THUMB (1)
-#endif
-
-// Board overridable feature configuration.
-
-#ifndef MICROPY_ENABLE_SOURCE_LINE
-#define MICROPY_ENABLE_SOURCE_LINE (1)
-#endif
-
-#ifndef MICROPY_PY_ARRAY_SLICE_ASSIGN
-#define MICROPY_PY_ARRAY_SLICE_ASSIGN (1)
-#endif
-
-#ifndef MICROPY_PY_SYS_STDFILES
-#define MICROPY_PY_SYS_STDFILES (1)
-#endif
-
-#ifndef MICROPY_PY_UBINASCII
-#define MICROPY_PY_UBINASCII (1)
-#endif
-
-// Board overridable port specific feature configuration.
-
-#ifndef MICROPY_PY_NRF
-#define MICROPY_PY_NRF (1)
-#endif
-
-// Board overridable hardware configuration.
-
-#ifndef MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE
-#define MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE (1)
-#endif
diff --git a/ports/nrf/mpconfigport.h b/ports/nrf/mpconfigport.h
index 874748c2e..00ec956d1 100644
--- a/ports/nrf/mpconfigport.h
+++ b/ports/nrf/mpconfigport.h
@@ -26,22 +26,79 @@
#include <mpconfigboard.h>
+#ifndef MICROPY_CONFIG_ROM_LEVEL
+
+// Set default feature levels for each processor
+
#if defined(NRF51822)
- #include "mpconfigdevice_nrf51822.h"
+#if defined(BLUETOOTH_SD)
+// If SoftDevice is used there is less flash/ram available for application
+#define MICROPY_CONFIG_ROM_LEVEL (MICROPY_CONFIG_ROM_LEVEL_MINIMUM)
+#else
+#define MICROPY_CONFIG_ROM_LEVEL (MICROPY_CONFIG_ROM_LEVEL_CORE_FEATURES)
+#endif
+
#elif defined(NRF52832)
- #include "mpconfigdevice_nrf52832.h"
+ #define MICROPY_CONFIG_ROM_LEVEL (MICROPY_CONFIG_ROM_LEVEL_BASIC_FEATURES)
+
#elif defined(NRF52840)
- #include "mpconfigdevice_nrf52840.h"
+#define MICROPY_CONFIG_ROM_LEVEL (MICROPY_CONFIG_ROM_LEVEL_EXTRA_FEATURES)
+
#elif defined(NRF9160)
- #include "mpconfigdevice_nrf9160.h"
+#define MICROPY_CONFIG_ROM_LEVEL (MICROPY_CONFIG_ROM_LEVEL_EXTRA_FEATURES)
+
#else
#pragma error "Device not defined"
#endif
+#endif // MICROPY_CONFIG_ROM_LEVEL
+
+// pre-defined shortcuts to use below in #if queries or define values
+#define CORE_FEAT (MICROPY_CONFIG_ROM_LEVEL >= MICROPY_CONFIG_ROM_LEVEL_CORE_FEATURES)
+#define EXTRA_FEAT (MICROPY_CONFIG_ROM_LEVEL >= MICROPY_CONFIG_ROM_LEVEL_EXTRA_FEATURES)
+
// options to control how MicroPython is built
+
#ifndef MICROPY_VFS
-#define MICROPY_VFS (0)
+#define MICROPY_VFS (CORE_FEAT)
#endif
+
+#ifndef MICROPY_MBFS
+#define MICROPY_MBFS (!MICROPY_VFS)
+#endif
+
+#ifndef MICROPY_ENABLE_SOURCE_LINE
+#define MICROPY_ENABLE_SOURCE_LINE (CORE_FEAT)
+#endif
+
+#ifndef MICROPY_PY_ARRAY_SLICE_ASSIGN
+#define MICROPY_PY_ARRAY_SLICE_ASSIGN (CORE_FEAT)
+#endif
+
+#ifndef MICROPY_PY_SYS_STDFILES
+#define MICROPY_PY_SYS_STDFILES (CORE_FEAT)
+#endif
+
+#ifndef MICROPY_PY_UBINASCII
+#define MICROPY_PY_UBINASCII (CORE_FEAT)
+#endif
+
+#ifndef MICROPY_PY_NRF
+#define MICROPY_PY_NRF (CORE_FEAT)
+#endif
+
+#ifndef MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE
+#define MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE (CORE_FEAT)
+#endif
+
+#ifndef MICROPY_EMIT_THUMB
+#define MICROPY_EMIT_THUMB (EXTRA_FEAT)
+#endif
+
+#ifndef MICROPY_EMIT_INLINE_THUMB
+#define MICROPY_EMIT_INLINE_THUMB (EXTRA_FEAT)
+#endif
+
#define MICROPY_ALLOC_PATH_MAX (512)
#define MICROPY_PERSISTENT_CODE_LOAD (1)
#define MICROPY_COMP_MODULE_CONST (0)
@@ -177,16 +234,51 @@
#define MICROPY_PY_TIME_TICKS (1)
#endif
-#ifndef MICROPY_PY_NRF
-#define MICROPY_PY_NRF (0)
-#endif
-
#define MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF (1)
#define MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE (0)
-// if sdk is in use, import configuration
+// if sdk is in use, import configuration and enable some core features
#if BLUETOOTH_SD
#include "bluetooth_conf.h"
+#define MICROPY_BUILTIN_METHOD_CHECK_SELF_ARG (1)
+#define MICROPY_COMP_CONST (1)
+#define MICROPY_COMP_CONST_FOLDING (1)
+#define MICROPY_COMP_CONST_LITERAL (1)
+#define MICROPY_COMP_DOUBLE_TUPLE_ASSIGN (1)
+#define MICROPY_CPYTHON_COMPAT (1)
+#define MICROPY_ENABLE_COMPILER (1)
+#define MICROPY_ENABLE_EXTERNAL_IMPORT (1)
+#define MICROPY_ERROR_REPORTING (2)
+#define MICROPY_FULL_CHECKS (1)
+#define MICROPY_GC_ALLOC_THRESHOLD (1)
+#define MICROPY_MODULE_GETATTR (1)
+#define MICROPY_MULTIPLE_INHERITANCE (1)
+#define MICROPY_PY_ARRAY (1)
+#define MICROPY_PY_ASSIGN_EXPR (1)
+#define MICROPY_PY_ASYNC_AWAIT (1)
+#define MICROPY_PY_ATTRTUPLE (1)
+#define MICROPY_PY_BUILTINS_BYTEARRAY (1)
+#define MICROPY_PY_BUILTINS_DICT_FROMKEYS (1)
+#define MICROPY_PY_BUILTINS_ENUMERATE (1)
+#define MICROPY_PY_BUILTINS_EVAL_EXEC (1)
+#define MICROPY_PY_BUILTINS_FILTER (1)
+#define MICROPY_PY_BUILTINS_MIN_MAX (1)
+#define MICROPY_PY_BUILTINS_PROPERTY (1)
+#define MICROPY_PY_BUILTINS_RANGE_ATTRS (1)
+#define MICROPY_PY_BUILTINS_REVERSED (1)
+#define MICROPY_PY_BUILTINS_SET (1)
+#define MICROPY_PY_BUILTINS_SLICE (1)
+#define MICROPY_PY_BUILTINS_STR_COUNT (1)
+#define MICROPY_PY_BUILTINS_STR_OP_MODULO (1)
+#define MICROPY_PY_COLLECTIONS (1)
+#define MICROPY_PY_GC (1)
+#define MICROPY_PY_GENERATOR_PEND_THROW (1)
+#define MICROPY_PY_MATH (1)
+#define MICROPY_PY_STRUCT (1)
+#define MICROPY_PY_SYS (1)
+#define MICROPY_PY_SYS_PATH_ARGV_DEFAULTS (1)
+#define MICROPY_PY___FILE__ (1)
+#define MICROPY_QSTR_BYTES_IN_HASH (2)
#endif
#ifndef MICROPY_PY_UBLUEPY
@@ -287,3 +379,38 @@ extern const struct _mp_obj_module_t music_module;
#ifndef MP_NEED_LOG2
#define MP_NEED_LOG2 (1)
#endif
+
+// Disable extra features enabled by EXTRA on NRF52840 & NRF9160
+// to initially preserve existing feature set
+#if (EXTRA_FEAT)
+#define MICROPY_COMP_RETURN_IF_EXPR (0)
+#define MICROPY_ENABLE_SCHEDULER (0)
+#define MICROPY_MODULE_ATTR_DELEGATION (0)
+#define MICROPY_OPT_LOAD_ATTR_FAST_PATH (0)
+#define MICROPY_OPT_MAP_LOOKUP_CACHE (0)
+#define MICROPY_OPT_MATH_FACTORIAL (0)
+#define MICROPY_PY_BUILTINS_INPUT (0)
+#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (0)
+#define MICROPY_PY_BUILTINS_POW3 (0)
+#define MICROPY_PY_BUILTINS_ROUND_INT (0)
+#define MICROPY_PY_BUILTINS_SLICE_INDICES (0)
+#define MICROPY_PY_COLLECTIONS_DEQUE (0)
+#define MICROPY_PY_DELATTR_SETATTR (0)
+#define MICROPY_PY_DESCRIPTORS (0)
+#define MICROPY_PY_FSTRINGS (0)
+#define MICROPY_PY_IO_IOBASE (0)
+#define MICROPY_PY_MATH_CONSTANTS (0)
+#define MICROPY_PY_MATH_FACTORIAL (0)
+#define MICROPY_PY_MATH_ISCLOSE (0)
+#define MICROPY_PY_REVERSE_SPECIAL_METHODS (0)
+#define MICROPY_PY_SYS_ATTR_DELEGATION (0)
+#define MICROPY_PY_SYS_PS1_PS2 (0)
+#define MICROPY_PY_UASYNCIO (0)
+#define MICROPY_PY_UBINASCII_CRC32 (0)
+#define MICROPY_PY_UERRNO (0)
+#define MICROPY_PY_UHASHLIB (0)
+#define MICROPY_PY_UOS (0)
+#define MICROPY_PY_UOS_STATVFS (0)
+#define MICROPY_PY_URE_SUB (0)
+#define MICROPY_PY_USELECT (0)
+#endif
diff --git a/ports/nrf/nrfx_config.h b/ports/nrf/nrfx_config.h
index beb6b34ab..2b0555dda 100644
--- a/ports/nrf/nrfx_config.h
+++ b/ports/nrf/nrfx_config.h
@@ -28,7 +28,7 @@
#ifndef NRFX_CONFIG_H
#define NRFX_CONFIG_H
-#include "mpconfigport.h"
+#include "py/mpconfig.h"
#include "nrf.h"
// Port specific defines