summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-06-15stm32/octospi: Add preliminary support for OCTOSPI peripheral.Damien George
It currently operates in 1-line (SPI) mode only. Signed-off-by: Damien George <damien@micropython.org>
2023-06-15stm32/boards: Add ld, af.csv and hal_conf_base.h files for H5 MCUs.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2023-06-15stm32: Add initial support for H5 MCUs.Damien George
This commit adds initial support for STM32H5xx MCUs. The following features have been confirmed to be working on an STM32H573: - UART over REPL and USB CDC - USB CDC and MSC - internal flash filesystem - machine.Pin - machine.SPI transfers with DMA - machine.ADC - machine.RTC - pyb.LED - pyb.Switch - pyb.rng - mboot Signed-off-by: Damien George <damien@micropython.org>
2023-06-15lib/stm32lib: Update library for H5 v1.0.0.Damien George
Changes in this new library version are: - Add H5 HAL at v1.0.0. Signed-off-by: Damien George <damien@micropython.org>
2023-06-15stm32/machine_adc: Handle ADC resolution less than 8 bits on all MCUs.Damien George
All MCUs can have 6-bit resolution; see adc_cr_to_bits_table. Signed-off-by: Damien George <damien@micropython.org>
2023-06-15stm32/usbd_conf: Treat G0 USB periph as MICROPY_HW_USB_IS_MULTI_OTG=0.Damien George
The G0 USB peripheral behaves more like MICROPY_HW_USB_IS_MULTI_OTG=0 than that config =1. This fixes the configuration of the PMA FIFO buffers. Signed-off-by: Damien George <damien@micropython.org>
2023-06-15stm32/main: Start UART REPL as early as possible.Damien George
For debugging purposes, to see output from other peripherals. Also reset the pyb_stdio_uart state at the end of soft reset, in case it points to a heap-allocated object. Signed-off-by: Damien George <damien@micropython.org>
2023-06-15stm32/make-stmconst.py: Support structs with names ending in _t.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2023-06-15stm32/Makefile: Pass relevant CPU flags to assembler.Damien George
Needed for compiling gchelper_thumb2 on cortex-m33. Signed-off-by: Damien George <damien@micropython.org>
2023-06-15py/mkrules.mk: Allow $(AFLAGS) to set flags to $(AS).Damien George
Signed-off-by: Damien George <damien@micropython.org>
2023-06-14tools/ci.sh: Build PICO_W board as part of rp2 CI.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2023-06-14rp2/boards/PICO_W: Enable Bluetooth Low Energy support.Peter Harper
Signed-off-by: Damien George <damien@micropython.org>
2023-06-14extmod/btstack: Fix marking of static addresses in set_random_address.Peter Harper
Marking address as static was not applied to all code paths. Signed-off-by: Damien George <damien@micropython.org>
2023-06-14rp2/mpbthciport: Cancel existing alarms.Peter Harper
Cancel any existing poll alarm before add a new one. Signed-off-by: Damien George <damien@micropython.org>
2023-06-14rp2: Add Bluetooth support via cyw43.Peter Harper
Using BTstack with CYW43 for Pico W. Signed-off-by: Damien George <damien@micropython.org>
2023-06-14extmod/btstack: Add cmake support for BTstack.Peter Harper
Signed-off-by: Damien George <damien@micropython.org>
2023-06-14lib/pico-sdk: Update to version 1.5.1.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2023-06-14lib/btstack: Update to v1.5.6.2.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2023-06-14lib/cyw43-driver: Update driver to latest version v1.0.1.Damien George
Includes a fix for combined BT+WiFi when using SPI transport. Signed-off-by: Damien George <damien@micropython.org>
2023-06-14py/lexer: Allow conversion specifiers in f-strings (e.g. !r).Jared Hancock
PEP-498 allows for conversion specifiers like !r and !s to convert the expression declared in braces to be passed through repr() and str() respectively. This updates the logic that detects the end of the expression to also stop when it sees "![rs]" that is either at the end of the f-string or before the ":" indicating the start of the format specifier. The "![rs]" is now retained in the format string, whereas previously it stayed on the end of the expression leading to a syntax error. Previously: `f"{x!y:z}"` --> `"{:z}".format(x!y)` Now: `f"{x!y:z}"` --> `"{!y:z}".format(x)` Note that "!a" is not supported by `str.format` as MicroPython has no `ascii()`, but now this will raise the correct error. Updated cpydiff and added tests. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-14py/makemoduledefs.py: Automatically declare delegation attr functions.Damien George
So that the delegation functions don't need to be put somewhere global, like in mpconfigport.h. That would otherwise make it hard for extension modules to use delegation. Signed-off-by: Damien George <damien@micropython.org>
2023-06-14py/makemoduledefs.py: Fix declaring multiple module delegations.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2023-06-14py/nlraarch64: Fix dangerous use of input register.David Lechner
Starting with 2757acf6, the `top` variable in `nlr_jump()` in `nlraarch64.c` was assigned to register `x19` by the compiler. However, the assembly code writes over that register with ldp x19, x20, [%0, #32] since `%0` is now `x19`. This causes the next line ldp lr, x9, [%0, #16] to load the wrong values. To fix the issue, we move the value of the `top` variable from an unknown register to a known register at the beginning of the asm code then only use known/hard-coded registers after that. Fixes issue #11754. Signed-off-by: David Lechner <david@pybricks.com>
2023-06-14py/parsenum: Fix typo in #endif comment.David Lechner
This fixes a `#endif` comment to exactly match the `#if`. Signed-off-by: David Lechner <david@pybricks.com>
2023-06-14esp32/esp32_ulp: Fix ULP (FSM) support for S2 and S3.Wilko Nienhaus
This change enables the ULP (FSM) for all ESP32 variants rather than requiring it to be enabled for each board specifically. It also ensures the correct header file is included for each variant. Lastly, it updates the IDF version we're builing against to v4.4.2, as that version contains important fixes to make the ULP actually work on S2/S3 chips. See: https://github.com/espressif/esp-idf/commit/a0e3d48 Signed-off-by: Wilko Nienhaus <wilko.nienhaus@gmail.com>
2023-06-13rp2/CMake: Normalize MICROPY_PORT_DIR.Brian 'redbeard' Harrington
In 5fe2a3f1 the ESP32 port underwent a change to how `MICROPY_PORT_DIR` is defined. This commit normalizes the `rp2` port to use the same underlying variable mechanism (`CMAKE_CURRENT_LIST_DIR`). Signed-off-by: Brian 'redbeard' Harrington <redbeard@dead-city.org>
2023-06-13esp32/CMake: Change PROJECT_DIR to CMAKE_CURRENT_LIST_DIR.Brian 'redbeard' Harrington
This migrates the CMake variable `MICROPY_PORT_DIR` from the ESP-IDF defined project to the component. Previously used instances of the variable within the project definition have been migrated to `CMAKE_CURRENT_LIST_DIR`. Within the component (the `main` subdirectory in the ESP32 port) we define `MICROPY_PORT_DIR` using `CMAKE_CURRENT_LIST_DIR` and subsequently use the `MICROPY_PORT_DIR` value in all locations where `PROJECT` had previously been used. Context: In commit 9b90882146, initial support was added for building with the newly introduced CMake support provided by the ESP-IDF. Specifically, the commit message states: > This commit adds support for building the esp32 port with CMake, and in particular, it builds MicroPython as a component within the ESP-IDF. Using CMake and the ESP-IDF build infrastructure makes it much easier to maintain the port, especially with the various new ESP32 MCUs and their required toolchains. `PROJECT_DIR` is a variable populated by the ESP-IDF specifically and is not stable when used with "[Pure CMake components][1]" as documented in the ESP-IDF. It is intended to be used in the scope of the parent of the current file (the "project") as opposed to the current file ("the component"). Crossing into the parent scope like this works solely when the "project" is MicroPython, but not when used as a component by other ESP-IDF projects. Analyzing this file, the intention is to reference the "Project" which in the example is the parent directory. Within the [CMake variables][2] documentation, there is one specifically defined for referencing the directory for the CMake listfile currently being processed: [`CMAKE_CURRENT_LIST_DIR`][3]. After making the change from `PROJECT_DIR` to `CMAKE_CURRENT_LIST_DIR`, the reach into the parent scope defined by the ESP-IDF and the resulting CMake interface violation is removed. Similar to the component definition, the project `CMakeLists.txt` uses the variable `CMAKE_SOURCE_DIR` which CMake defines as "The path to the top level of the source tree." This commit changes the variable to `CMAKE_CURRENT_LIST_DIR` for the reasons cited above. [1]: https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/api-guides/build-system.html#writing-pure-cmake-components [2]: https://cmake.org/cmake/help/latest/manual/cmake-variables.7.html [3]: https://cmake.org/cmake/help/latest/variable/CMAKE_CURRENT_LIST_DIR.html Signed-off-by: Brian 'redbeard' Harrington <redbeard@dead-city.org>
2023-06-10esp32/modespnow: Change name of buffer size config option to "rxbuf".Glenn Moloney
Rename "buffer" option to "rxbuf" which accords with docs and esp8266. Signed-off-by: Glenn Moloney <glenn.moloney@gmail.com>
2023-06-09tools/mpremote: Fix exec_ -> exec in commands.py.Jim Mussared
This was missed in the pyboard refactor and is preventing `cp -r` from working. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08py/mkrules.mk: Automatically configure frozen options when manifest set.Damien George
Following how mkrules.cmake works. This makes it easy for a port to enable frozen code, by defining FROZEN_MANIFEST in its Makefile. Signed-off-by: Damien George <damien@micropython.org>
2023-06-08stm32/boards: Use default spibdev config where appropriate.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2023-06-08stm32/mpconfigboard_common: Provide default spidev config.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2023-06-08tools/ci.sh: Add mimxrt and samd ports to code size build.Damien George
The automatic code size build and GitHub comment is a really useful feature. This commit adds a few more builds to it (mimxrt and samd). Signed-off-by: Damien George <damien@micropython.org>
2023-06-08extmod/modtimeq: Remove timeq module.Jim Mussared
This is a MicroPython-specific module that existed to support the old version of uasyncio. It's undocumented and not enabled on all ports and takes up code size unnecessarily. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08docs/library/index: Update docs after umodule rename.Jim Mussared
- Update guide for extending built-in modules. - Remove any last trace of umodule in other docs. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08all: Replace all uses of umodule in Python code.Jim Mussared
Applies to drivers/examples/extmod/port-modules/tools. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08tests/run-natmodtests.py: Don't allow imports from the cwd.Jim Mussared
Make tests run in an isolated environment (i.e. `import io` would otherwise get the `tests/io` directory). This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08tests/run-perfbench.py: Don't allow imports from the cwd.Jim Mussared
Make tests run in an isolated environment (i.e. `import io` would otherwise get the `tests/io` directory). This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08tests/run-multitests.py: Don't allow imports from the cwd.Jim Mussared
Make tests run in an isolated environment (i.e. `import io` would otherwise get the `tests/io` directory). This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08tests: Replace umodule with module everywhere.Jim Mussared
This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08py/modsys: Allow sys.path to be assigned to.Jim Mussared
Previously sys.path could be modified by append/pop or slice assignment. This allows `sys.path = [...]`, which can be simpler in many cases, but also improves CPython compatibility. It also allows sys.path to be set to a tuple which means that you can clear sys.path (e.g. temporarily) with no allocations. This also makes sys.path (and sys.argv for consistency) able to be disabled via mpconfig. The unix port (and upytesthelper) require them, so they explicitly verify that they're enabled. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08py/mpconfig: Enable module delegation if sys needs it.Jim Mussared
Otherwise you can get into the confusing state where e.g. sys.ps1 is enabled in config (via `MICROPY_PY_SYS_PS1_PS2`) but still doesn't actually get enabled. Also verify that the required delegation options are enabled in modsys.c. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08py/objmodule: Workaround for MSVC with no module delegation.Jim Mussared
When compiling mpy-cross, there is no `sys` module, and so there will be no entries in the `mp_builtin_module_delegation_table`. MSVC doesn't like this, so instead pretend as if the feature isn't enabled at all. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08py/objmodule: Add a table of built-in modules with delegation.Jim Mussared
This replaces the previous QSTR_null entry in the globals dict which could leak out to Python (e.g. via iteration of mod.__dict__) and could lead to crashes. It results in smaller code size at the expense of turning a lookup into a loop, but the list it is looping over likely only contains one or two elements. To allow a module to register its custom attr function it can use the new `MP_REGISTER_MODULE_DELEGATION` macro. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08examples/natmod: Rename umodule to module.Jim Mussared
This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08all: Use MP_REGISTER_EXTENSIBLE_MODULE for overrideable built-ins.Jim Mussared
Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08py/makemoduledefs.py: Add a way to register extensible built-in modules.Jim Mussared
Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08all: Rename *umodule*.c to remove the "u" prefix.Jim Mussared
Updates any includes, and references from Makefiles/CMake. This essentially reverts what was done long ago in commit 136b5cbd7669e8318f8455fc2706da97a5b7994c This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08all: Rename *umodule*.h to remove the "u" prefix.Jim Mussared
This work was funded through GitHub Sponsors. Also updates #includes. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08all: Rename UMODULE to MODULE in preprocessor/Makefile vars.Jim Mussared
This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>