summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-07-17examples/rp2/pio_uart_rx.py: Fix use of PIO constants.Anson Mansfield
Running the unmodified `pio_uart_rx.py` example by uploading the file and importing it doesn't succeed, and instead emits a NameError at line 26. Signed-off-by: Anson Mansfield <amansfield@mantaro.com>
2025-07-17rp2/mpnetworkport: Deregister all sys timeouts when netif is removed.Damien George
When mDNS is active on a netif it registers a lot of timeouts, namely: mdns_probe_and_announce mdns_handle_tc_question mdns_multicast_probe_timeout_reset_ipv4 mdns_multicast_timeout_25ttl_reset_ipv4 mdns_multicast_timeout_reset_ipv4 mdns_send_multicast_msg_delayed_ipv4 mdns_send_unicast_msg_delayed_ipv4 mdns_multicast_probe_timeout_reset_ipv6 mdns_multicast_timeout_25ttl_reset_ipv6 mdns_multicast_timeout_reset_ipv6 mdns_send_multicast_msg_delayed_ipv6 mdns_send_unicast_msg_delayed_ipv6 These may still be active after a netif is removed, and if they are called they will find that the mDNS state pointer in the netif is NULL and they will crash. These functions could be explicitly removed using `sys_untimeout()`, but `mdns_handle_tc_question()` is static so it's not possible to access it. Instead use the new `sys_untimeout_all_with_arg()` helper to deregister all timeout callbacks when a netif is removed. Fixes issue #17621. Signed-off-by: Damien George <damien@micropython.org>
2025-07-17extmod/network_lwip: Add sys_untimeout_all_with_arg helper function.Damien George
Really lwIP should provide this, to deregister all callbacks on the given netif. Signed-off-by: Damien George <damien@micropython.org>
2025-07-17alif/lwip_inc: Refactor lwipopts.h to use extmod's common options.Damien George
This change is a no-op for the firmware. Signed-off-by: Damien George <damien@micropython.org>
2025-07-16unix/coverage: Expand mp_printf coverage tests.Jeff Epler
Test 'l' and 'll' sized objects. When the platform's `mp_int_t` is not 64 bits, dummy values are printed instead so the test result can match across all platforms. Ensure hex test values have a letter so 'x' vs 'X' is tested. And test 'p' and 'P' pointer printing. Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-07-16py/mpprint: Rework integer vararg handling.Jeff Epler
This adds support for %llx (needed by XINT_FMT for printing cell objects) and incidentally support for capitalized output of %P. It also reduces code size due to the common handling of all integers. Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-07-16py/vm: Avoid heap-allocating slices when subscripting built-ins.Jim Mussared
This commit adds a fast-path optimisation for when a BUILD_SLICE is immediately followed by a LOAD/STORE_SUBSCR for a native type, to avoid needing to allocate the slice on the heap. In some cases (e.g. `a[1:3] = x`) this can result in no allocations at all. We can't do this for instance types because the get/set/delattr implementation may keep a reference to the slice. Adds more tests to the basic slice tests to ensure that a stack-allocated slice never makes it to Python, and also a heapalloc test that verifies (when using bytecode) that assigning to a slice is no-alloc. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com> Signed-off-by: Damien George <damien@micropython.org>
2025-07-15unix/Makefile: Drop include path of "i686-linux-gnu".Yanfeng Liu
This drops use of non-existing path `/usr/include/i686-linux-gnu` as default include paths shall suffice. Signed-off-by: Yanfeng Liu <yfliu2008@qq.com>
2025-07-15tests/extmod: Close UDP sockets at end of test.Yanfeng Liu
This adds call to release UDP port in a timely manner, so they can be reused in subsequent tests. Otherwise, one could face issue like #17623. Signed-off-by: Yanfeng Liu <yfliu2008@qq.com>
2025-07-12tests/run-tests.py: Consider tests ending in _async.py as async tests.Damien George
The test `micropython/ringio_async.py` is a test that requires async keyword support, and will fail with SyntaxError on targets that don't support async/await. Really it should be skipped on such targets, and this commit makes sure that's the case. Signed-off-by: Damien George <damien@micropython.org>
2025-07-12tests/micropython: Add missing SystemExit after printing SKIP.Damien George
The test runner expects `print("SKIP")` to be followed by `raise SystemExit`. Otherwise it waits for 10 seconds for the target to do a soft reset before timing out and continuing. Signed-off-by: Damien George <damien@micropython.org>
2025-07-12tests/extmod/asyncio_iterator_event.py: Use format instead of f-string.Damien George
Some targets don't have f-strings enabled, so try not to use them in tests. Rather, use `str.format`, which is more portable. Signed-off-by: Damien George <damien@micropython.org>
2025-07-12tools/ci.sh: Always call `apt-get update` before `apt-get install`.Jeff Epler
There have been recent build failures in build_renesas_ra_board. It appears to be the case that a security update for this package was recently issued by Ubuntu for CVE-2025-4565 and the buggy version is no longer on package servers. However, it is still referred to by the cached apt metadata in the GitHub runners. Add `apt-get update` to fix this, and audit for other sites in `ci.sh` where it might also be necessary. Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-07-09shared/timeutils: Standardize supported date range on all platforms.Yoctopuce dev
This is code makes sure that time functions work properly on a reasonable date range, on all platforms, regardless of the epoch. The suggested minimum range is 1970 to 2099. In order to reduce code footprint, code to support far away dates is only enabled specified by the port. New types are defined to identify timestamps. The implementation with the smallest code footprint is when support timerange is limited to 1970-2099 and Epoch is 1970. This makes it possible to use 32 bit unsigned integers for all timestamps. On ARM4F, adding support for dates up to year 3000 adds 460 bytes of code. Supporting dates back to 1600 adds another 44 bytes of code. Signed-off-by: Yoctopuce dev <dev@yoctopuce.com>
2025-07-09py/obj: Add functions to retrieve large integers from mp_obj_t.Yoctopuce dev
This commit provides helpers to retrieve integer values from mp_obj_t when the content does not fit in a 32 bits integer, without risking an implicit wrap due to an int overflow. Signed-off-by: Yoctopuce dev <dev@yoctopuce.com>
2025-07-08py/objcode: Implement co_lines method.Anson Mansfield
Signed-off-by: Anson Mansfield <amansfield@mantaro.com>
2025-07-08tests/basics/fun_code_colines: Test decoded co_lines values.Anson Mansfield
Signed-off-by: Anson Mansfield <amansfield@mantaro.com>
2025-07-08tests/basics/fun_code_full: Test code objects with full feature set.Anson Mansfield
Signed-off-by: Anson Mansfield <amansfield@mantaro.com>
2025-07-08py/showbc: Use line-number decoding helper.Anson Mansfield
Signed-off-by: Anson Mansfield <amansfield@mantaro.com>
2025-07-08py/bc: Factor out helper for line-number decoding.Anson Mansfield
Signed-off-by: Anson Mansfield <amansfield@mantaro.com>
2025-07-08tools/mpremote: Support OSError's on targets without errno.Damien George
Targets without the `errno` module enabled will not render `OSError`s with the name of the error. Instead they just print the numeric error code. Add support for such targets by explicitly recognising certain error codes. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08unix/coverage: Add missing MP_OBJ_FROM_PTR casts.Jeff Epler
An attempt to build the coverage module into the nanbox binary failed, but pointed out that these sites needed explicit conversion from pointer to object. Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-07-08stm32/stm32.mk: Error out if compiling for cortex-m55 on old gcc.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-07-08stm32/boards/NUCLEO_N657X0: Add new board definition files.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-07-08stm32/boards/OPENMV_N6: Add new board definition files.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-07-08stm32/spi: Fail spi_init if pins can't be configured.Damien George
Follows the UART and I2C drivers. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08stm32/mboot: Add support for STM32N6xx MCUs.Damien George
Works in the usual USB DFU mode, and can program external SPI flash. It will enable XSPI memory-mapped mode before jumping to the application firmware in the external SPI flash. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08stm32/boards: Add board support files for N6.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-07-08stm32/lwip_inc: Increase lwIP memory on N6.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-07-08stm32/main: Disable D-cache when debugging N6.iabdalkader
See ST Errata ES0620 - Rev 0.2 section 2.1.2. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-07-08stm32: Add support for STM32N6xx MCUs.Damien George
This commit adds preliminary support for ST's new STM32N6xx MCUs. Supported features of this MCU so far are: - basic clock tree initialisation, running at 800MHz - fully working USB - XSPI in memory-mapped mode - machine.Pin - machine.UART - RTC and deepsleep support - SD card - filesystem - ROMFS - WiFi and BLE via cyw43-driver (SDIO backend) Note that the N6 does not have internal flash, and has some tricky boot sequence, so using a custom bootloader (mboot) is almost a necessity. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08stm32/boards/make-pins.py: Support up to GPIO-O.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-07-08lib/stm32lib: Update library for N6 v1.1.0.Damien George
Changes in this new library version are: - Add N6 HAL at v1.1.0. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08lib/libm_dbl: Support FLT_EVAL_METHOD == 16.Damien George
That's almost the same as FLT_EVAL_METHOD == 0, but indicates the presence of _Float16_t support. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08drivers: Support special QSPI direct-read protocol.Damien George
This is useful for interfaces that stay in memory-mapped mode by default. They can implement this method with a simple `memcpy()`. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08stm32/machine_adc: Add machine.ADC implementation for STM32L1.Yuuki NAGAO
Signed-off-by: Yuuki NAGAO <wf.yn386@gmail.com>
2025-07-08stm32/dma: Extend STM32H5 DMA use to SPI3 and SPI4.Matt Trentini
Attempting to configure SPI3 and SPI4 for the STM32H5 would fail with a linker error. This patch resolves that, ensuring that appropriate DMA channels are assigned to those SPI resources. Signed-off-by: Matt Trentini <matt.trentini@gmail.com>
2025-07-08stm32/irq: Change SPI IRQ priority to be higher than DMA IRQ.Yuuki NAGAO
On STM32H5/STM32H7, SPI flash cannot use as storage device with DMA. SPI interruption may not be genearated even if DMA transfer has been done. This is due to lower priority of SPI interruption than DMA. This commit changes SPI interrupt priority more higher than DMA's priority. Signed-off-by: Yuuki NAGAO <wf.yn386@gmail.com>
2025-07-08tests/extmod/select_poll_eintr.py: Skip test if target can't bind.Damien George
Eg on PYBV10 with THREAD variant, the firmware has both the `_thread` and `socket` modules but no NIC. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08tests/ports/stm32: Tweak tests to run on a wider set of boards.Damien George
There should be no change to these tests for existing PYBV1x and PYBD_SFx boards. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08tests/extmod_hardware/machine_uart_irq_rxidle.py: Test multiple writes.Damien George
This tests that the RXIDLE callback is called correctly after a second lot of bytes are received. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08tests/extmod_hardware/machine_uart_irq_rxidle.py: Ignore inital IRQ.Damien George
On stm32, the hardware generates an RXIDLE IRQ after enabling the UART, because the RX line is technically idle. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08tests/extmod_hardware: Add UART config for STM32WB boards.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-07-08tests/extmod/machine_uart_tx.py: Support STM32WB boards.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-07-08stm32/uart: Suppress additional RX idle IRQs on F4/L1.Damien George
These MCUs only clear the RX idle IRQ if the data register is read, which won't occur if the only IRQ is the RX idle IRQ (because then reading and discarding the DR may lead to lost data). To work around this, explicitly suppress the RX idle IRQ so that it's only passed through to the Python callback once. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08stm32/machine_adc: Fix internal ADC channel reading on WB MCUs.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-07-08stm32/adc: Fix core temperature reading on WB55.Damien George
It needs a divisor of 100 because the calibration temperatures are 30 and 130 degrees, similar to the H5. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08stm32/adc: Simplify ADC calibration settings.Damien George
Combine the common settings for L1/L4/WB with existing G0/G4/H5 settings. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08stm32/adc: Apply re-read errata for WB55.Damien George
Following 17898f8607dc4fb881e860719cc1906d304e60f4. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08zephyr/machine_pin: Retry configuring gpio with just GPIO_OUTPUT.Damien George
Some targets like frdm_k64f don't support GPIO_OUTPUT|GPIO_INPUT, so just use GPIO_OUTPUT in those cases (it seems they still support reading the current output state even when configured only as GPIO_OUTPUT, unlike other targets which require both settings). Signed-off-by: Damien George <damien@micropython.org>