summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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>
2023-06-08all: Rename mod_umodule*, ^umodule* to remove the "u" prefix.Jim Mussared
This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08all: Rename mp_umodule*, mp_module_umodule* to remove the "u" prefix.Jim Mussared
This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08py/builtinimport: Remove weak links.Jim Mussared
In order to keep "import umodule" working, the existing mechanism is replaced with a simple fallback to drop the "u". This makes importing of built-ins no longer touch the filesystem, which makes a typical built-in import take ~0.15ms rather than 3-5ms. (Weak links were added in c14a81662c1df812c0c6b4299f97966302f16477) This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-08all: Rename MP_QSTR_umodule to MP_QSTR_module everywhere.Jim Mussared
This renames the builtin-modules, such that help('modules') and printing the module object will show "module" rather than "umodule". This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-06-06top: Add "mis" to list of ignore words for codespell.Yaroslav Halchenko
Observed with codespell 2.2.5.dev57+gdc7e98d9: $ codespell ./ports/rp2/machine_uart.c:163: mis ==> miss, mist ./ports/rp2/machine_uart.c:168: mis ==> miss, mist 2
2023-06-06samd/boards: Extend the code size limit for boards with external flash.robert-hh
Code size limits are charged to: - SAMD21: 184K -> 248K - SAMD51x19: 368K -> 496K - SAMD51x20: 368K -> 1008K Signed-off-by: robert-hh <robert@hammelrath.com>
2023-06-06samd: Adapt existing samd.Flash and integrate with (Q)SPI flash in boot.robert-hh
Checks are added to ensure, that only one of the flash drivers is selected. Signed-off-by: robert-hh <robert@hammelrath.com>
2023-06-06samd/samd_qspiflash: Add QSPI flash driver and configure it accordingly.robert-hh
The QSPI driver provides the interface for using an on-board QSPI flash for the filesystem. It provides the same methods as the driver for the internal flash and uses the same name. Therefore, only one of the drivers for internal flash, SPI flash and QSPI flash must be enabled at a time. Signed-off-by: robert-hh <robert@hammelrath.com>
2023-06-06samd/samd_spiflash: Add SPI flash driver and configure it accordingly.robert-hh
The SPI flash driver includes the block device for being used as a filesystem. It provides the same methods as the driver for the internal flash. Signed-off-by: robert-hh <robert@hammelrath.com>