summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-02-07lib/micropython-lib: Update submodule to latest.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2024-02-07github/workflows: Initialise micropython-lib submodule for windows CI.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2024-02-07github/workflows: Bump setup-msbuild, setup-python, checkout versions.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2024-02-06github/workflows: Move Windows CI from AppVeyor to GitHub Actions.David Lechner
By moving to GitHub actions, all MicroPython CI builds are now on GitHub actions. This allows faster parallel builds and saves time by not building when no relevant files changed. This reveals a few failing tests, so those are temporarily disabled until they can be fixed. Signed-off-by: David Lechner <david@pybricks.com> Signed-off-by: Damien George <damien@micropython.org>
2024-02-05windows/Makefile: Fix float exact int formatting on 32-bit mingw.David Lechner
When compiler optimizations are enabled on the mingw version of gcc, we are getting failing tests because of rounding issues, for example: print(float("1e24")) would print 9.999999999999999e+23 instead of 1e+24 It turns out special compiler options are needed to get GCC to use the SSE instruction set instead of the 387 coprocessor (which uses 80-bit precision internall). Signed-off-by: David Lechner <david@pybricks.com>
2024-02-05docs/library/ssl: Change wrap_socket args keyfile/certfile to key/cert.Damien George
So they match the code in extmod/modssl_*.c. Signed-off-by: Damien George <damien@micropython.org>
2024-02-01stm32/boards/ARDUINO_PORTENTA_H7: Add pin configuration for SPI1.Jim Lipsey
Currently, only the processor's SPI2 bus is enabled (though the related pins are labeled SPI1 in the Portenta H7 documentation). This commit enables the processor's SPI1 bus, which is accessible via the board's high-density connectors. Signed-off-by: Jim Lipsey <github@lipsey.org>
2024-01-31examples/embedding: Add -fno-common to the sample compiler flags.Angus Gratton
This makes no difference when files are linked directly into a target application, but on macOS additional steps are needed to index common symbols in static libraries. See https://stackoverflow.com/a/26581710 By not creating any common symbols, this problem is bypassed. This will also trigger linker errors if there are cases where the same symbol is defined in the host application. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-01-31esp32/boards/UM_FEATHERS3: Use read_uv() for accurate battery voltage.Joey232
Use read_uv() to get the battery voltage because it uses the on-chip calibraton values. Signed-off-by: Joey232 <Joey@jsconsulting.com>
2024-01-31renesas-ra/ra/ra_i2c: Fix 1 byte and 2 bytes read issue.Takeo Takahashi
Tested on Portenta C33 with AT24256B (addrsize=16) and SSD1306. Fixes issue #13280. Signed-off-by: Takeo Takahashi <takeo.takahashi.xv@renesas.com>
2024-01-31py/compile: Fix potential Py-stack overflow in try-finally with return.Damien George
If a return is executed within the try block of a try-finally then the return value is stored on the top of the Python stack during the execution of the finally block. In this case the Python stack is one larger than it normally would be in the finally block. Prior to this commit, the compiler was not taking this case into account and could have a Python stack overflow if the Python stack used by the finally block was more than that used elsewhere in the function. In such a scenario the last argument of the function would be clobbered by the top-most temporary value used in the deepest Python expression/statement. This commit fixes that case by making sure enough Python stack is allocated to the function. Fixes issue #13562. Signed-off-by: Damien George <damien@micropython.org>
2024-01-30tests/ports/rp2/rp2_dma.py: Tweak test to be more reliable.Damien George
The timing of the DMA transfer can vary a bit, so tweak the allowed values. Also test the return value of `rp2.DMA.irq.flags()` to make sure the IRQ is correctly signalled. Signed-off-by: Damien George <damien@micropython.org>
2024-01-30rp2: Change machine.I2S and rp2.DMA to use shared DMA IRQ handlers.Damien George
These separate drivers must share the DMA resource with each other. Fixes issue #13380. Signed-off-by: Damien George <damien@micropython.org>
2024-01-30py/builtinimport: Simplify calls to stat_path().Matthias Urlichs
stat_path is only called with stringified vstr_t objects. Thus, pulling the stringification into the function replaces three function calls with one, saving a few bytes. Signed-off-by: Matthias Urlichs <matthias@urlichs.de>
2024-01-30all: Update bindings, ports and tests for mbedtls v3.5.1.Carlosgg
Changes include: - Some mbedtls source files renamed or deprecated. - Our `mbedtls_config.h` files are renamed to `mbedtls_config_port.h`, so they don't clash with mbedtls's new default configuration file named `mbedtls_config.h`. - MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE is deprecated. - MBEDTLS_HAVE_TIME now requires an `mbedtls_ms_time` function to be defined but it's only used for TLSv1.3 (currently not enabled in MicroPython so there is a lazy implementation, i.e. seconds * 1000). - `tests/multi_net/ssl_data.py` is removed (due to deprecation of MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE), there are the existing `ssl_cert_rsa.py` and `sslcontext_server_client.py` tests which do very similar, simple SSL data transfer. - Tests now use an EC key by default (they are smaller and faster), and the RSA key has been regenerated due to the old PKCS encoding used by openssl rsa command, see https://stackoverflow.com/questions/40822328/openssl-rsa-key-pem-and-der-conversion-does-not-match (and `tests/README.md` has been updated accordingly). Signed-off-by: Carlos Gil <carlosgilglez@gmail.com>
2024-01-30lib/mbedtls_errors: Update error list for latest mbedtls.Carlosgg
Running `./do-mp.sh` now generates this `mp_mbedtls_errors.c` file. The `esp32_mbedtls_errors.c` file is already up-to-date. Signed-off-by: Carlos Gil <carlosgilglez@gmail.com>
2024-01-30lib/mbedtls: Update to mbedtls v3.5.1.Carlosgg
Signed-off-by: Carlos Gil <carlosgilglez@gmail.com>
2024-01-29extmod/modssl_mbedtls: Fix cipher iteration in SSLContext.get_ciphers.Damien George
Prior to this commit it would skip every second cipher returned from mbedtls. The corresponding test is also updated and now passes on esp32, rp2, stm32 and unix. Signed-off-by: Damien George <damien@micropython.org>
2024-01-29qemu-arm/mpconfigport: Use MICROPY_CONFIG_ROM_LEVEL_EXTRA_FEATURES.Damien George
This simplifes the port configuration. It enables quite a few new features, including the `math` and `cmath` modules, adding about 20k to the firmware size. Signed-off-by: Damien George <damien@micropython.org>
2024-01-29tests/extmod/framebuf_polygon.py: Replace sys.stdout.write with print.Damien George
So the test doesn't depend on the `sys` module. Signed-off-by: Damien George <damien@micropython.org>
2024-01-29esp8266/boards/ESP8266_GENERIC: Disable MICROPY_DEBUG_PRINTERS.Damien George
This is not enabled on any other MCU port, and is essentially unused on esp8266 because mp_verbose_flag is always 0. Disabling saves ~7k of flash. Signed-off-by: Damien George <damien@micropython.org>
2024-01-26ports: Add LED pin aliases for all Arduino boards.iabdalkader
The standard Arduino pinout uses LEDR/G/B and LED_BUILTIN (if available). This patch adds aliases to match the standard pinout, while retaining LED_RED/GREEN/BLUE for compatibility with existing scripts and examples. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-01-26rp2/boards/ARDUINO_NANO_RP2040_CONNECT: Increase flash storage space.iabdalkader
Fixes issue #13512. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-01-26mimxrt/modmachine: Fix deepsleep wakeup pin ifdef.Kwabena W. Agyeman
Signed-off-by: Kwabena W. Agyeman <kwagyeman@live.com>
2024-01-25py/mpconfig: Disable qstr hashing at minimum feature level.Jim Mussared
This will apply to bare-arm and minimal, as well as the minimal unix variant. Change the default to MICROPY_QSTR_BYTES_IN_HASH=1 for the CORE,BASIC levels, 2 for >=EXTRA. Removes explicit setting of MICROPY_QSTR_BYTES_IN_HASH==1 in ports that don't set the feature level (because 1 is implied by the default level, CORE). Applies to cc3200, pic16bt, powerpc. Removes explicit setting for nRF (which sets feature level). Also for samd, which sets CORE for d21 and FULL for d51. This means that d21 is unchanged with MICROPY_QSTR_BYTES_IN_HASH==1, but d51 now moves from 1 to 2 (roughly adds 1kiB). The only remaining port which explicitly set bytes-in-hash is rp2 because it's high-flash (hence CORE level) but lowish-SRAM, so it's worthwhile saving the RAM for runtime qstrs. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2024-01-25stm32: Disable qstr hashing on small boards.Jim Mussared
Sets MICROPY_QSTR_BYTES_IN_HASH==0 on stm32x0 boards. This saves e.g. 2kiB on NUCLEO_F091. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2024-01-25py/qstr: Add support for MICROPY_QSTR_BYTES_IN_HASH=0.Jim Mussared
This disables using qstr hashes altogether, which saves RAM and flash (two bytes per interned string on a typical build) as well as code size. On PYBV11 this is worth over 3k flash. qstr comparison will now be done just by length then data. This affects qstr_find_strn although this has a negligible performance impact as, for a given comparison, the length and first character will ~usually be different anyway. String hashing (e.g. builtin `hash()` and map.c) now need to compute the hash dynamically, and for the map case this does come at a performance cost. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2024-01-25docs: Add note about position-only arguments in CPython vs MicroPython.Angus Gratton
Required modifying the gen-cpydiff.py code to allow a "preamble" section to be inserted at the top of any of the generated files. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-01-25CODECONVENTIONS: Update docs for codespell and pre-commit hook.Jos Verlinde
Signed-off-by: Jos Verlinde <jos_verlinde@hotmail.com>
2024-01-25top: Add pre-commit hook for codespell.Jos Verlinde
Signed-off-by: Jos Verlinde <jos_verlinde@hotmail.com>
2024-01-25stm32/mboot/Makefile: Revert change to BOARD_DIR that removed abspath.Damien George
This reverts the change from ce2058685b9ca2278849b3117c2461f6b6fc727f. Without abspath, the build artefacts (object files) for boards with source files are placed outside the build directory, because the BOARD_DIR variable starts with "..". For the list of source files added to SRC_C, none of them can start with "..". The usual fix for that would be to make the files relative to the top of the MicroPython repo (because of the vpath rule), eg ports/stm32/boards/$(BOARD). But then the $(wildcard ...) pattern won't find files in this directory. So abspath is necessary, although it will prevent building when there is a space in the path. A better solution for spaces needs to be found. Signed-off-by: Damien George <damien@micropython.org>
2024-01-24tests/extmod: Remove asyncio .exp files that match CPython output.Damien George
These were added back in commit c4935f30490d0446e16a51dbf7a6397b771cf804 because the tests required CPython 3.8, which was quite new at the time. But CPython 3.8 was released over 4 years ago (October 2019) and the CI test runners, and developers, have this (or a more recent) CPython version. Removing the .exp files also helps keep MicroPython semantics the same as CPython. The asyncio_fair.py test it adjusted slightly to have more deterministic timing and output. Signed-off-by: Damien George <damien@micropython.org>
2024-01-24github/workflows: Run mimxrt and rp2 CI with space in repository path.Damien George
To test building with make and cmake when there is a space in the path. Signed-off-by: Damien George <damien@micropython.org>
2024-01-24ports: Fix handling of paths containing spaces in Makefiles.Iksas
Make can't handle paths with spaces, see https://savannah.gnu.org/bugs/?712 The following workarounds exist: - When using make's built-in functions: - Use relative paths wherever possible to avoid spaces in the first place. - All spaces in paths can be escaped with backslashes; quotes don't work. - Some users use the shell to temporarily rename directories, or to create symlinks without spaces. - When using make to pass commands to the system's shell, enclose paths in quotes. While make will still interpret quoted strings with spaces as multiple words, the system's shell will correctly parse the resulting command. This commit contains the following fixes: - In ports/stm32/mboot/Makefile: Use relative paths to avoid spaces when using built-in functions. - In all other files: Use quotes to enclose paths when make is used to call shell functions. All changes have been tested with a directory containing spaces. Signed-off-by: Iksas <iksas@mailbox.org>
2024-01-23rp2/machine_uart: Fix potential race condition in interrupt handling.Maarten van der Schrieck
The irq service routine cleared the RT interrupt bit on TX interrupt. This opens the possibility that an RT interrupt is missed. Signed-off-by: Maarten van der Schrieck <maarten@thingsconnected.nl>
2024-01-23tests/extmod/asyncio_wait_task.py: Add test for raise and delayed wait.Damien George
This case was fixed in 2ecbad4e91192c88f831d8690dbad31ddba72135, which stored the exception in the task object. Signed-off-by: Damien George <damien@micropython.org>
2024-01-22nrf: Fix _start() build issue with CMSIS 5.9.0.iabdalkader
The `_start` function prototype is now declared as no-return, so `main()` can't return. To fix this, `main()` is replaced with `_start`. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-01-22mimxrt/boards: Fix __VECTOR_TABLE link issue with CMSIS 5.9.0.iabdalkader
In CMSIS 5.9.0, the compiler headers define `__VECTOR_TABLE`, which will be substituted with its corresponding value (e.g., `__Vectors` for gcc). However, the linker script in this port can't include compiler headers when it's processed, so `__VECTOR_TABLE` is used as the literal variable name, which results in an undefined linker error. To fix this, the two possible values of `__VECTOR_TABLE` are both defined in the linker script. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-01-22lib/cmsis: Update to CMSIS 5.9.0.iabdalkader
This update brings support for Cortex-M55 and Cortex-M85, zero and copy tables and more. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-01-22extmod/asyncio: Support gather of tasks that finish early.Damien George
Adds support to asyncio.gather() for the case that one or more (or all) sub-tasks finish and/or raise an exception before the gather starts. Signed-off-by: Damien George <damien@micropython.org>
2024-01-22tests/extmod/machine_i2s_rate.py: Test multiple I2S instances.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2024-01-22tests/ports/rp2: Add rp2-specific tests with a test for rp2.DMA.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2024-01-22tests: Move port-specific test directories into tests/ports/ directory.Damien George
To keep them all together, mirroring the top-level directory structure. Signed-off-by: Damien George <damien@micropython.org>
2024-01-22github/workflows: Bump actions/cache from 3 to 4.dependabot[bot]
Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
2024-01-21renesas-ra/boards/ARDUINO_PORTENTA_C33: Fix the RTC clock source.iabdalkader
Switch the RTC clock source to Sub-clock (XCIN). This board has an accurate LSE crystal, and it should be used for the RTC clock source. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-01-21extmod/extmod.mk: Disable uninitialized warnings in kf_rem_pio2.c.Kwabena W. Agyeman
GCC 13.2 thinks that fq is uninitialized. Signed-off-by: Kwabena W. Agyeman <kwagyeman@live.com>
2024-01-17tools/mpremote: Reduce dependency on importlib_metadata.Jochen Sprickerhof
No longer require importlib_metadata on new Python versions as it is included in the standard distribution. Signed-off-by: Jochen Sprickerhof <git@jochen.sprickerhof.de>
2024-01-17renesas-ra/ra: Remove unnecessary min_delay() declaration.iabdalkader
This function is private to ra_adc.c. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-01-17renesas-ra/ra: Fix SysTick clock source.iabdalkader
The SysTick_Config function must use the system/CPU clock to configure the ticks. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-01-17esp32/modsocket: Use all supplied arguments to socket.getaddrinfo().Angus Gratton
- Completes a longstanding TODO in the code, to not ignore the optional family, type, proto and flags arguments to socket.getaddrinfo(). - Note that passing family=socket.AF_INET6 will now cause queries to fail (OSError -202). Previously this argument was ignored so IPV4 results were returned instead. - Optional 'type' argument is now always copied into the result. If not set, results have type SOCK_STREAM. - Fixes inconsistency where previously querying mDNS local suffix (.local) hostnames returned results with socket type 0 (invalid), but all other queries returned results with socket type SOCK_STREAM (regardless of 'type' argument). - Optional proto argument is now returned in the result tuple, if supplied. - Optional flags argument is now passed through to lwIP. lwIP has handling for AI_NUMERICHOST, AI_V4MAPPED, AI_PASSIVE (untested, constants for these are not currently exposed in the esp32 socket module). - Also fixes a possible memory leak in an obscure code path (lwip_getaddrinfo apparently sometimes returns a result structure with address "0.0.0.0" instead of failing, and this structure would have been leaked.) This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>