summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-08-23nrf/boards: Rename all nRF boards to use uppercase.Jim Mussared
This is to match all the other ports. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-08-23stm32/modstm: Add MICROPY_PY_STM_CONST flag, clear it for STM32WL5.Angus Gratton
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>
2023-08-23stm32/subghz: Add STM32WL55 subghz radio interface to stm module.Angus Gratton
This is the minimum C interface to allow a modem driver to be built in Python. Interface is simple, with the intention that the micropython-lib driver is the main (only) consumer of it. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-23stm32/dma: Fix DMA completion on WL55 boards.Angus Gratton
No IRQHandlers were compiled in for this board. Includes small consolidation of the same DMAMUX_ENABLE line for STM32G4, STM32WB, STM32WL. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-23stm32/powerctrlboot: Support STM32WL system clock from HSE+PLL.Angus Gratton
Switches default on the NUCLEO_WL55 board to use the HSE oscillator powered from PB0_VDDTCXO pin. Build-time configuration can select from MSI internal oscillator (previous default), HSE via crystal, or HSE bypass with TCXO powered from PB0_VDDTCXO pin (new default) Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-23stm32/spi: Add STM32WL5 SUBGHZ SPI peripheral.Angus Gratton
This is a "normal" SPI peripheral with no external pins, to avoid having to grow spi_obj[] for just this one board map it as SPI ID 3 (board has SPI IDs 1,2 already). Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-16mimxrt: Fix UART RTS/CTS assignments for the OLIMEX and Adafruit boards.robert-hh
At the Adafruit Metro M7 the pin GPIO_AD_13 is used for JTAG. Therefore it is not configured for RTS at UART 2 and 3. Signed-off-by: robert-hh <robert@hammelrath.com>
2023-08-16top: Enable ruff linter check for F821 undefined-name.Angus Gratton
Very helpful for catching typos or missing imports when writing code! Description can be found at https://beta.ruff.rs/docs/rules/undefined-name/ Parent commits contain various small fixes and inline ignores for this check. The only blanket exception is manifest files, which are numerous and evaluated with some global names pre-defined - these can be globally ignored. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-16tools/mpy-tool.py: Ignore linter failure in Python 2 compatibility code.Angus Gratton
Found by Ruff checking F821. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-16tools/mpy_ld.py: Pre-declare some local variables to appease linter.Angus Gratton
Spurious fix as the logic is structured such that these variables will be set before dereferenced, but this keeps Ruff happy (no more F821 undefined-name). Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-16renesas-ra/boards: Remove unreachable code in make-pins.py.Angus Gratton
Looks like copy-paste from the stm32 make-pins.py, references a function that is not present in the renesas-ra version. Found by Ruff checking F821. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-16examples/hwapi: Add missing import for 96Boards Carbon example.Angus Gratton
Found by Ruff checking F821. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-16all: Add missing imports for micropython.const.Angus Gratton
Found by Ruff checking F821. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-16cc3200/tools: Fix exception raised on process failure.Angus Gratton
subprocess.CalledProcessError() constructor arguments aren't documented, but these are them. Even if they change, it's an improvement over a non-existent exception name! Found by Ruff checking F821. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-16mpy-cross: Fix source file name in file-not-found error.Angus Gratton
Found by Ruff with F821. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-16examples: Mark asm, pio, etc. as noqa: F821 (undefined-name).Angus Gratton
These files all use decorators (@asm_thumb, @asm_pio) that add names to the function scope, that the linter cannot see. It's useful to clear them in the file not in pyproject.toml as example code will be copied and adapted elsewhere, and those developers may also use Ruff (we hope!) Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-15mimxrt/hal: Make flash clock frequency configurable.Kwabena W. Agyeman
Signed-off-by: "Kwabena W. Agyeman" <kwagyeman@live.com>
2023-08-15mimxrt/boards: Add support for GPIO control of SNVS pins.Kwabena W. Agyeman
Signed-off-by: "Kwabena W. Agyeman" <kwagyeman@live.com>
2023-08-15mimxrt/machine_uart: Add support for UART hardware flow control.Kwabena W. Agyeman
Signed-off-by: "Kwabena W. Agyeman" <kwagyeman@live.com>
2023-08-15mimxrt/machine_uart: Add uart.deinit method and machine_uart_deinit_all.robert-hh
The call to machine_uart_deinit_all() is needed to avoid a crash after soft reset, if a UART had been used and data arrives before it is instantiated again. Signed-off-by: robert-hh <robert@hammelrath.com>
2023-08-15mimxrt/hal/pwm_backport: Fix 0 and 65536 edge cases of PWM's duty_u16.robert-hh
It should be that: - duty_u16=0: output low, no pulse - duty_u16=65536: output high, no pulse That previously did not apply to all of the three PWM mechanisms of this port. This commit fixes it. Signed-off-by: robert-hh <robert@hammelrath.com>
2023-08-15mimxrt/machine_pin: Fix bug when Pin.irq is called without a handler.robert-hh
When called without a handler, the IRQ data was not cleared. That caused a crash at the second soft reset in a row. Signed-off-by: robert-hh <robert@hammelrath.com>
2023-08-15tools/autobuild: Automatically build all variants for each board.Jim Mussared
Removes the special-case for stm32. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-08-15esp32/partitions.csv: Rename to partitions-4MiB.csv.Jim Mussared
To be consistent with the other partitions files (which have the "- {2,8,16,32}MiB" suffix). Also renames partitions-ota.csv. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-08-15esp32/boards/GENERIC_S3: Merge with GENERIC_S3_{SPIRAM,SPIRAM_OCT}.Jim Mussared
These are now variants of the GENERIC_S3 board. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-08-15esp32/boards/GENERIC_S2: Merge with ESP32_S2_WROVER.Jim Mussared
Unsure of the history of the ESP32_S2_WROVER board (and why it wasn't named GENERIC_S2_...) but now it's a variant of the generic S2 board. Also removes the non-existent CONFIG_USB_AND_UART from all S2 boards. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-08-15esp32/boards/GENERIC_C3: Merge with GENERIC_C3_USB.Jim Mussared
As the IDF no longer supports earlier revisions of the C3 by default, we now just explicitly support rev 3+ and enable USB (which wasn't supported in earlier revisions). This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-08-15esp32/boards/GENERIC: Merge with GENERIC_{SPIRAM,OTA,D2WD,UNICORE}.Jim Mussared
These are now variants of the GENERIC board. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-08-15all: Remove query-variants make target.Jim Mussared
This is difficult to implement on cmake-based ports, and having the list of variants in mpconfigboard.{cmake,mk} duplicates information that's already in board.json. This removes the existing query-variants make target from stm32 & rp2 and the definition of BOARD_VARIANTS from the various board files. Also renames the cmake variable to MICROPY_BOARD_VARIANT to match other variables such as MICROPY_BOARD. The make variable stays as BOARD_VARIANT. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-08-15esp32/Makefile: Implement `make submodules` to match other ports.Jim Mussared
Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-08-15esp32/gccollect: Make level arg volatile to force recursive function.Damien George
Otherwise the compiler may inline the gc_collect_inner() function and/or remove the recursion, which is necessary to spill all the windowed registers to the C stack. Signed-off-by: Damien George <damien@micropython.org>
2023-08-15esp32: Enable automatic Python heap growth.Angus Gratton
Via MICROPY_GC_SPLIT_HEAP_AUTO feature flag added in previous commit. Tested on ESP32 GENERIC_SPIRAM and GENERIC_S3 configurations, with some worst-case allocation patterns and the standard test suite. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-15esp32: Allow malloc() to allocate from SPIRAM.Angus Gratton
Also shrinks the "prefer internal" threshold to 8KB, any allocation larger than this will try PSRAM first. Change the mbedTLS config to use regular malloc() as well, instead of internal only. The default is set to internal-only due to to potential physical security issue of readout via PSRAM on the original ESP32. However, as MicroPython runs from plaintext flash and all other context is in the MP heap of PSRAM then it's hard to see how worsens physical security for MP. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-15py/gc: Add new MICROPY_GC_SPLIT_HEAP_AUTO "auto grow heap" mode.Angus Gratton
When set, the split heap is automatically extended with new areas on demand, and shrunk if a heap area becomes empty during a GC pass or soft reset. To save code size the size allocation for a new heap block (including metadata) is estimated at 103% of the failed allocation, rather than working from the more complex algorithm in gc_try_add_heap(). This appears to work well except in the extreme limit case when almost all RAM is exhausted (~last few hundred bytes). However in this case some allocation is likely to fail soon anyhow. Currently there is no API to manually add a block of a given size to the heap, although that could easily be added if necessary. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-15py/gc: Apply some code formatting cleanup.Angus Gratton
This commit: - Breaks up some long lines for readability. - Fixes a potential macro argument expansion issue. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-15tests/extmod/select_poll_eintr.py: Improve robustness of test.Damien George
Increase allowed range of dt_ms, and print it in case of failure. Signed-off-by: Damien George <damien@micropython.org>
2023-08-14extmod/modselect: Properly track number of poll objects that are fd's.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2023-08-10ports: Simplify board feature tags in board.json.Jim Mussared
This commit: - Finds a common set of board feature tags and maps existing features to that reduced set. - Removes some less-useful board feature tags. - Ensures all MCUs are specified correctly. - Ensures all boards have a vendor (and fixes some vendor names). This is to make the downloads page show a less intimidating set of filters. Work done in conjunction with Matt Trentini <matt.trentini@gmail.com>. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-08-10tools/mpremote: Make soft-reset count as an action.Jim Mussared
Otherwise `mpremote soft-reset` will implicitly run the repl command. Fixes issue #10871. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-08-10tools/codeformat.py: Use pyproject.toml for black config.Jos Verlinde
Signed-off-by: Jos Verlinde <jos_verlinde@hotmail.com>
2023-08-10tools/codeformat.py: Skip formatting ESP-IDF managed components.Daniël van de Giessen
Signed-off-by: Daniël van de Giessen <daniel@dvdgiessen.nl>
2023-08-09tools/mpy-tool.py: Use isinstance() for type checking.Angus Gratton
Ruff version 283 expanded E721 to fail when making direct comparison against a built-in type. Change the code to use isinstance() as suggested, these usages appear to have equivalent functionality. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-09extmod/modssl_mbedtls: Fix ioctl of a socket in closed/error state.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2023-08-09extmod/modssl_mbedtls: Reject ioctls that are not supported.Damien George
An SSL stream can only handle CLOSE and POLL ioctls. Other ones do not make sense, or at least it doesn't make sense to pass the ioctl request directly down to the underlying stream. In particular MP_STREAM_GET_FILENO should not be passed to the underlying stream because the SSL stream is not directly related to a file descriptor, and the SSL stream must handle the polling itself. Signed-off-by: Damien George <damien@micropython.org>
2023-08-07tests/extmod: Skip select/socket tests if they can't create UDP socket.Damien George
Some targets (eg PYBV10) have the socket module but are unable to create UDP sockets without a registered NIC. So skip UDP tests on these targets. Signed-off-by: Damien George <damien@micropython.org>
2023-08-07tests/extmod: Add coverage tests for select module.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2023-08-07extmod/modselect: Remove undocumented support for flags arg to poll.Damien George
The signature of this method was poller.poll(timeout=-1, flags=0, /) but the flags argument was not documented and is not CPython compatible. So it's removed in this commit. (The optional flags remains for the ipoll() method, which is documented.) Signed-off-by: Damien George <damien@micropython.org>
2023-08-07extmod/modselect: Add optimisation to use system poll when possible.Damien George
A previous commit removed the unix-specific select module implementation and made unix use the common one. This commit adds an optimisation so that the system poll function is used when polling objects that have a file descriptor. With this optimisation enabled, if code registers both file-descriptor-based objects, and non- file-descriptor-based objects with select.poll() then the following occurs: - the system poll is called for all file-descriptor-based objects with a timeout of 1ms - then the bare-metal polling implementation is used for remaining objects, which calls into their ioctl method (which can be in C or Python) In the case where all objects have file descriptors, the system poll is called with the full timeout requested by the caller. That makes it as efficient as possible in the case everything has a file descriptor. Benefits of this approach: - all ports use the same select module implementation - the unix port now supports polling of all objects and matches bare metal implementations - it's still efficient for existing cases where only files and sockets are polled (on unix) - the bare metal implementation does not change - polling of SSL objects will now work on unix by calling in to the ioctl method on SSL objects (this is required for asyncio ssl support) Note that extmod/vfs_posix_file.c has poll disable when the optimisation is enabled, because the code is not reachable when the optimisation is used. Signed-off-by: Damien George <damien@micropython.org>
2023-08-07extmod/modselect: Factor low-level polling code into common function.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2023-08-07extmod/modselect: Abstract out a poll_set_t struct and functions.Damien George
To make it easier to extend and modify this polling implementation. Signed-off-by: Damien George <damien@micropython.org>