Skip to content

Commit

Permalink
stm32/modstm: Add MICROPY_PY_STM_CONST flag, clear it for STM32WL5.
Browse files Browse the repository at this point in the history
MICROPY_PY_STM_CONST defaults to 1 if MICROPY_PY_STM is set.  Overriding to
0 disables the named register peripheral constants being including in the
stm32 module.

This saves about 7.5KB of code size for the STM32WL55, which is significant
as this SoC doesn't have a lot of flash.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
  • Loading branch information
projectgus authored and dpgeorge committed Aug 23, 2023
1 parent 02620c2 commit 2919a9f
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 4 deletions.
3 changes: 2 additions & 1 deletion ports/stm32/boards/NUCLEO_WL55/mpconfigboard.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
#define MICROPY_PY_SOCKET (0)
#define MICROPY_PY_NETWORK (0)
#define MICROPY_PY_ONEWIRE (0)
#define MICROPY_PY_STM (1)
#define MICROPY_PY_STM (1) // for subghz radio functions
#define MICROPY_PY_STM_CONST (0) // saves size, no named registers
#define MICROPY_PY_PYB_LEGACY (0)
#define MICROPY_PY_HEAPQ (0)

Expand Down
4 changes: 2 additions & 2 deletions ports/stm32/make-stmconst.py
Original file line number Diff line number Diff line change
Expand Up @@ -319,10 +319,10 @@ def main():
print("")

with open(args.qstr_filename, "wt") as qstr_file:
print("#if MICROPY_PY_STM", file=qstr_file)
print("#if MICROPY_PY_STM_CONST", file=qstr_file)
for qstr in sorted(needed_qstrs):
print("Q({})".format(qstr), file=qstr_file)
print("#endif // MICROPY_PY_STM", file=qstr_file)
print("#endif // MICROPY_PY_STM_CONST", file=qstr_file)

with open(args.mpz_filename, "wt") as mpz_file:
for mpz in sorted(needed_mpzs):
Expand Down
2 changes: 2 additions & 0 deletions ports/stm32/modstm.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@ STATIC const mp_rom_map_elem_t stm_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_mem16), MP_ROM_PTR(&machine_mem16_obj) },
{ MP_ROM_QSTR(MP_QSTR_mem32), MP_ROM_PTR(&machine_mem32_obj) },

#if MICROPY_PY_STM_CONST
#include "genhdr/modstm_const.h"
#endif

#if defined(STM32WB)
{ MP_ROM_QSTR(MP_QSTR_rfcore_status), MP_ROM_PTR(&rfcore_status_obj) },
Expand Down
7 changes: 6 additions & 1 deletion ports/stm32/mpconfigboard_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,16 @@
/*****************************************************************************/
// Feature settings with defaults

// Whether to include the stm module, with peripheral register constants
// Whether to include the stm module
#ifndef MICROPY_PY_STM
#define MICROPY_PY_STM (1)
#endif

// Whether to include named register constants in the stm module
#ifndef MICROPY_PY_STM_CONST
#define MICROPY_PY_STM_CONST (MICROPY_PY_STM)
#endif

// Whether to include the pyb module
#ifndef MICROPY_PY_PYB
#define MICROPY_PY_PYB (1)
Expand Down

0 comments on commit 2919a9f

Please sign in to comment.