From 0fba00eb95071d51807f08de2eb0f67556d5a7f6 Mon Sep 17 00:00:00 2001 From: Andrew Leech Date: Sun, 3 Apr 2022 09:36:10 +1000 Subject: [PATCH 1/3] ports/nrf: Set MICROPY_CONFIG_ROM_LEVEL defines for each core. This commit is a no-op change to simplify existing config. --- ports/nrf/mpconfigdevice_nrf51822.h | 97 ------------------ ports/nrf/mpconfigdevice_nrf52832.h | 65 ------------ ports/nrf/mpconfigdevice_nrf52840.h | 75 -------------- ports/nrf/mpconfigdevice_nrf9160.h | 75 -------------- ports/nrf/mpconfigport.h | 147 ++++++++++++++++++++++++++-- ports/nrf/nrfx_config.h | 2 +- 6 files changed, 138 insertions(+), 323 deletions(-) delete mode 100644 ports/nrf/mpconfigdevice_nrf51822.h delete mode 100644 ports/nrf/mpconfigdevice_nrf52832.h delete mode 100644 ports/nrf/mpconfigdevice_nrf52840.h delete mode 100644 ports/nrf/mpconfigdevice_nrf9160.h diff --git a/ports/nrf/mpconfigdevice_nrf51822.h b/ports/nrf/mpconfigdevice_nrf51822.h deleted file mode 100644 index 67a81d250989..000000000000 --- 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 fa9258f2ac03..000000000000 --- 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 581c52ea8115..000000000000 --- 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 581c52ea8115..000000000000 --- 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 874748c2e494..00ec956d1369 100644 --- a/ports/nrf/mpconfigport.h +++ b/ports/nrf/mpconfigport.h @@ -26,22 +26,79 @@ #include +#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 beb6b34ab368..2b0555dda077 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 From 799340414e5280b1c7abbee9f62753e9cf5a9055 Mon Sep 17 00:00:00 2001 From: Andrew Leech Date: Sun, 3 Apr 2022 09:36:53 +1000 Subject: [PATCH 2/3] ports/nrf: Enable extra features as defined by ROM levels. --- ports/nrf/mpconfigport.h | 67 ++-------------------------------------- 1 file changed, 3 insertions(+), 64 deletions(-) diff --git a/ports/nrf/mpconfigport.h b/ports/nrf/mpconfigport.h index 00ec956d1369..e357f01caff0 100644 --- a/ports/nrf/mpconfigport.h +++ b/ports/nrf/mpconfigport.h @@ -63,6 +63,7 @@ #define MICROPY_VFS (CORE_FEAT) #endif +// micro:bit filesystem #ifndef MICROPY_MBFS #define MICROPY_MBFS (!MICROPY_VFS) #endif @@ -101,15 +102,12 @@ #define MICROPY_ALLOC_PATH_MAX (512) #define MICROPY_PERSISTENT_CODE_LOAD (1) -#define MICROPY_COMP_MODULE_CONST (0) -#define MICROPY_COMP_TRIPLE_TUPLE_ASSIGN (0) #define MICROPY_READER_VFS (MICROPY_VFS) #define MICROPY_ENABLE_GC (1) #define MICROPY_ENABLE_FINALISER (1) #define MICROPY_STACK_CHECK (1) #define MICROPY_HELPER_REPL (1) #define MICROPY_REPL_INFO (1) -#define MICROPY_REPL_EMACS_KEYS (0) #define MICROPY_REPL_AUTO_INDENT (1) #define MICROPY_KBD_EXCEPTION (1) #define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_MPZ) @@ -122,9 +120,6 @@ #define MICROPY_ALLOC_GC_STACK_SIZE (32) #endif -#define MICROPY_OPT_COMPUTED_GOTO (0) -#define MICROPY_OPT_MPZ_BITWISE (0) - // fatfs configuration used in ffconf.h #define MICROPY_FATFS_ENABLE_LFN (1) #define MICROPY_FATFS_LFN_CODE_PAGE 437 /* 1=SFN/ANSI 437=LFN/U.S.(OEM) */ @@ -142,10 +137,8 @@ #define mp_type_fileio fatfs_type_fileio #define mp_type_textio fatfs_type_textio -// Enable micro:bit filesystem by default. -#ifndef MICROPY_MBFS -#define MICROPY_MBFS (1) -#endif +// Use port specific uos module rather than extmod variant. +#define MICROPY_PY_UOS (0) #define MICROPY_STREAMS_NON_BLOCK (1) #define MICROPY_MODULE_WEAK_LINKS (1) @@ -153,42 +146,24 @@ #define MICROPY_USE_INTERNAL_ERRNO (1) #define MICROPY_PY_FUNCTION_ATTRS (1) #define MICROPY_PY_BUILTINS_STR_UNICODE (1) -#define MICROPY_PY_BUILTINS_STR_CENTER (0) -#define MICROPY_PY_BUILTINS_STR_PARTITION (0) -#define MICROPY_PY_BUILTINS_STR_SPLITLINES (0) #define MICROPY_PY_BUILTINS_MEMORYVIEW (1) #define MICROPY_PY_BUILTINS_FROZENSET (1) -#define MICROPY_PY_BUILTINS_EXECFILE (0) #define MICROPY_PY_BUILTINS_COMPILE (1) #define MICROPY_PY_BUILTINS_HELP (1) #define MICROPY_PY_BUILTINS_HELP_TEXT nrf5_help_text #define MICROPY_PY_BUILTINS_HELP_MODULES (1) #define MICROPY_MODULE_BUILTIN_INIT (1) -#define MICROPY_PY_ALL_SPECIAL_METHODS (0) #define MICROPY_PY_MICROPYTHON_MEM_INFO (1) -#define MICROPY_PY_BUILTINS_SLICE_ATTRS (0) -#define MICROPY_PY_SYS_EXIT (1) #define MICROPY_PY_SYS_MAXSIZE (1) -#define MICROPY_PY_SYS_STDIO_BUFFER (0) -#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (0) -#define MICROPY_PY_MATH_SPECIAL_FUNCTIONS (0) -#define MICROPY_PY_CMATH (0) -#define MICROPY_PY_IO (0) #define MICROPY_PY_IO_FILEIO (MICROPY_VFS_FAT || MICROPY_VFS_LFS1 || MICROPY_VFS_LFS2) #define MICROPY_PY_URANDOM (1) #define MICROPY_PY_URANDOM_EXTRA_FUNCS (1) -#define MICROPY_PY_UCTYPES (0) -#define MICROPY_PY_UZLIB (0) -#define MICROPY_PY_UJSON (0) -#define MICROPY_PY_URE (0) -#define MICROPY_PY_UHEAPQ (0) #define MICROPY_PY_UTIME_MP_HAL (1) #define MICROPY_PY_MACHINE (1) #define MICROPY_PY_MACHINE_PULSE (0) #define MICROPY_PY_MACHINE_SOFTI2C (MICROPY_PY_MACHINE_I2C) #define MICROPY_PY_MACHINE_SPI (0) #define MICROPY_PY_MACHINE_SPI_MIN_DELAY (0) -#define MICROPY_PY_FRAMEBUF (0) #ifndef MICROPY_HW_LED_COUNT #define MICROPY_HW_LED_COUNT (0) @@ -324,7 +299,6 @@ extern const struct _mp_obj_module_t music_module; #define MICROPY_PORT_CONSTANTS \ { MP_ROM_QSTR(MP_QSTR_board), MP_ROM_PTR(&board_module) }, \ { MP_ROM_QSTR(MP_QSTR_machine), MP_ROM_PTR(&mp_module_machine) }, \ - BLE_MODULE \ #define MP_STATE_PORT MP_STATE_VM @@ -379,38 +353,3 @@ 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 From c568c809f8d6963ba1b1e199de68913a77c2e26d Mon Sep 17 00:00:00 2001 From: Andrew Leech Date: Tue, 1 Mar 2022 15:17:16 +1100 Subject: [PATCH 3/3] nrf/vfs: Fix MICROPY_VFS IO build support. --- ports/nrf/mpconfigport.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/ports/nrf/mpconfigport.h b/ports/nrf/mpconfigport.h index e357f01caff0..d5e767fc62f9 100644 --- a/ports/nrf/mpconfigport.h +++ b/ports/nrf/mpconfigport.h @@ -133,9 +133,23 @@ #define MICROPY_FATFS_MAX_SS (4096) #endif -// TODO these should be generic, not bound to fatfs +#if MICROPY_VFS +// TODO these should be generic, not bound to a particular FS implementation +#if MICROPY_VFS_FAT +#define mp_type_fileio mp_type_vfs_fat_fileio +#define mp_type_textio mp_type_vfs_fat_textio +#elif MICROPY_VFS_LFS1 +#define mp_type_fileio mp_type_vfs_lfs1_fileio +#define mp_type_textio mp_type_vfs_lfs1_textio +#elif MICROPY_VFS_LFS2 +#define mp_type_fileio mp_type_vfs_lfs2_fileio +#define mp_type_textio mp_type_vfs_lfs2_textio +#endif + +#else // !MICROPY_VFS_FAT #define mp_type_fileio fatfs_type_fileio #define mp_type_textio fatfs_type_textio +#endif // Use port specific uos module rather than extmod variant. #define MICROPY_PY_UOS (0)