summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-10-09tests/README: Update instructions for key/cert pair usage on device.Andrew Leech
Signed-off-by: Andrew Leech <andrew@alelec.net>
2024-10-07py/objtype: Allow passing keyword arguments to native base __init__.stijn
Allowing passing keyword arguments to a native base's __init__, i.e. `make_new` in the C code. Previously only positional arguments were allowed. The main trade-off in this commit is that every call to the native base's `make_new` is now going to be preceded by a call to `mp_map_init_fixed_table` even though most of what that does is unused and instead it merely serves as a way to pass the number of keyword arguments. Fixes issue #15465. Signed-off-by: stijn <stijn@ignitron.net>
2024-10-07shared/tinyusb: Wake main task if needed at end of USB ISR.Andrew Leech
Signed-off-by: Andrew Leech <andrew@alelec.net>
2024-10-07esp32/boards: Update ARDUINO_NANO_ESP32 USB configuration.Andrew Leech
The custom line state handling is no longer needed as MicroPython runs it directly now. Signed-off-by: Andrew Leech <andrew@alelec.net>
2024-10-07esp32/Makefile: Allow auto-port selection if not passed on cmdline.Andrew Leech
Signed-off-by: Andrew Leech <andrew@alelec.net>
2024-10-07esp32: Add automatic bootloader handling for S2 and S3.Andrew Leech
Enables support for the ESP standard DTR/RTS based reboot to bootloader. Switches from OTG to Serial/Jtag mode to workaround issue discussed in: https://github.com/espressif/arduino-esp32/issues/6762 Signed-off-by: Andrew Leech <andrew@alelec.net>
2024-10-07shared/tinyusb: Remove MICROPY_HW_USB_EXTERNAL_TINYUSB.Andrew Leech
No longer needed as shared tinyusb is now used by the esp32 port. Signed-off-by: Andrew Leech <andrew@alelec.net>
2024-10-07esp32: Use shared/tinyusb integration for S2 and S3 USB.Andrew Leech
Uses newer TinyUSB synopsys/dwc2 driver for esp32s2 and esp32s3 rather than the IDF tinyusb component. This allows re-use of other tinyusb integration code and features shared between ports. Signed-off-by: Andrew Leech <andrew@alelec.net>
2024-10-03rp2/cyw43_configport: Define CYW43_PRINTF to mp_printf to get messages.Damien George
The cyw43-driver uses `printf` by default for `CYW43_PRINTF`, but on the rp2 port `printf` only goes to a UART output and not to USB CDC. By defining `CYW43_PRINTF` to `mp_printf`, all the messages from the cyw43-driver are seen on USB CDC. For example this allows `network.WLAN().config(trace=1)` to show async WALN events. Signed-off-by: Damien George <damien@micropython.org>
2024-10-03py/nlrrv64: Add RISC-V RV64I NLR implementation.Alessandro Gatti
Add custom NLR support for 64 bits RISC-V RV64I targets. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2024-10-03shared/runtime/gchelper_rv64i: Fix opcode sw/sd typo.Alessandro Gatti
The version of the assembly code for the GC helper that was committed ended up being a version that had an opcode typo in. The code was tested and working, but an undo operation too many when cleaning up the file before committing checked in the wrong version. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2024-10-03unix/alloc: Remove unused MICROPY_FORCE_PLAT_ALLOC_EXEC option.Damien George
The `MICROPY_FORCE_PLAT_ALLOC_EXEC` config option was made obsolete by commit 97966254577167f4c50200af1af89109a275da1c, so remove it. Signed-off-by: Damien George <damien@micropython.org>
2024-10-03github/workflows: Free up disk space on zephyr workflow.Damien George
The zephyr builds take up quite a lot of space. Signed-off-by: Damien George <damien@micropython.org>
2024-10-01zephyr: Allow using devicetree node labels to construct machine objects.Maureen Helm
Zephyr v3.7.0 added a new feature to allow getting devices by their devicetree node labels. Use this feature in the MicroPython Zephyr port to simplify constructing machine module objects, including Pin, SPI, I2C, and UART. It's still possible to use the more verbose device names (e.g., gpio@400ff040, i2c@40066000, spi@4002c000), but now we can also use their devicetree node labels (e.g., gpiob, i2c0, spi0). Node labels aren't standardized across all SoC families because they generally try to follow their respective SoC hardware user manual naming convention, however many boards define common labels for devices routed to Arduino headers (e.g., arduino_i2c, arduino_serial, and arduino_spi). That means I2C("arduino_i2c") will work on quite a few boards (>100 in the main Zephyr tree). Signed-off-by: Maureen Helm <maureen.helm@analog.com>
2024-10-01zephyr: Refactor device lookup into a common helper function.Maureen Helm
Refactors Zephyr device lookup operations into a common helper function to reduce boilerplate code that was repeated in multiple modules. Suggested-by: Damien George <damien@micropython.org> Signed-off-by: Maureen Helm <maureen.helm@analog.com>
2024-10-02zephyr: Upgrade to Zephyr v3.7.0.Maureen Helm
Updates the Zephyr port build instructions and CI to use the latest Zephyr release tag. Tested on frdm_k64f. Signed-off-by: Maureen Helm <maureen.helm@analog.com>
2024-10-02tools/ci.sh: Upgrade Zephyr docker image 0.26.13 and SDK 0.16.8.Maureen Helm
Upgrades CI to use the latest versions of the Zephyr docker image and Zephyr SDK. Signed-off-by: Maureen Helm <maureen.helm@analog.com>
2024-10-02zephyr: Change SPI chip select from a pointer to a struct member.Maureen Helm
Zephyr v3.4.0 changed the SPI chip select from a pointer to a struct member to allow using the existing SPI dt-spec macros in C++. Signed-off-by: Maureen Helm <maureen.helm@analog.com>
2024-10-02zephyr: Change main function to return an int.Maureen Helm
Zephyr v3.4.0 changed the declaration of the main function to return an int to allow building Zephyr without the -ffreestanding compiler flag. Signed-off-by: Maureen Helm <maureen.helm@analog.com>
2024-10-02zephyr: Replace deprecated FLASH_AREA macros with FIXED_PARTITION.Maureen Helm
Zephyr v3.2.0 deprecated FLASH_AREA macros in favor of FIXED_PARTITION macros, using node labels instead of node label properties to reference flash storage partitions. Signed-off-by: Maureen Helm <maureen.helm@intel.com>
2024-10-02docs/zephyr: Update docs to reflect device name changes.Maureen Helm
Zephyr v3.2.0 deprecated the devicetree label property as a base property, which had been used as the device name string for device_get_binding(). The device name string is now the devicetree node name appended with its unit-address. Update Zephyr port documentation to reflect this change. Signed-off-by: Maureen Helm <maureen.helm@intel.com>
2024-10-02zephyr: Replace zephyr.h with kernel.h.Maureen Helm
Zephyr v3.2.0 deprecated include/zephyr/zephyr.h in favor of include/zephyr/kernel.h since it only included that header. Signed-off-by: Maureen Helm <maureen.helm@intel.com>
2024-10-02zephyr: Update include paths to use the zephyr namespace.Maureen Helm
Zephyr v3.1.0 moved all public headers to include/zephyr. Updates a few Zephyr include paths that were missed in 4fd54a475661953946e9e3c3f962b20619c82240. Signed-off-by: Maureen Helm <maureen.helm@intel.com>
2024-09-27py/parse: Remove old esp32 compiler workaround.Alessandro Gatti
The ESP32 port contains a workaround to avoid having a certain function in `py/parse.c` being generated incorrectly. The compiler in question is not part of any currently supported version of ESP-IDF anymore, and the problem inside the compiler (well, assembler in this case) has been corrected a few years ago. This commit removes all traces of that workaround from the source tree. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2024-09-26rp2/machine_uart: Fix dropped UART REPL bytes on soft reset.Angus Gratton
Necessary to fix "mpremote run" over hardware UART. Bisect shows bug was introduced by d420b4e4, but looks like made more complex by 01c046d2. Specifically: resetting and re-initialising the REPL UART during soft reset clears the FIFO before it's done printing the "MPY: soft reboot" line. Fixed by adding a UART TX flush in the deinit path. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-09-26py/mpz: Skip separators when running out of digits to print.Alessandro Gatti
This commit fixes the addition of a stray separator before the number when printing an MPZ-backed integer and the first group is three digits long. This fixes #8984. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2024-09-26shared/tinyusb: Use new persistent-tx-fifo configure interface.Damien George
The old configuration option has been removed from TinyUSB. Signed-off-by: Damien George <damien@micropython.org>
2024-09-26lib/tinyusb: Update to version 0.17.0.Damien George
Includes support for RP2350, and improvements for ESP32. Signed-off-by: Damien George <damien@micropython.org>
2024-09-26ports: Fix lwIP config setting to disable DHCP ARP check.Damien George
lwIP was recently updated in a89ac9e24a566e45bd3ffa7ef9e61e1d994616ea to STABLE-2_2_0_RELEASE, and this introduced a change in the configuration variable `DHCP_DOES_ARP_CHECK`, renaming it to `LWIP_DHCP_DOES_ACD_CHECK`. This commit fixes the ports lwIP settings to use the new configuration option. Without this option, connecting to a WiFi access-point takes about 12.5 seconds. With this option (ie disabling DHCP ARP checks) connecting takes about 4 seconds. Tested on an RPI_PICO_W and PYBD_SF2. Signed-off-by: Damien George <damien@micropython.org>
2024-09-26unix/alloc: Don't trace executable memory for GC pointers.Damien George
This tracing was originally needed for three reasons: 1. To trace object/raw-code pointers embedded in native code, eg from @micropython.native functions. 2. To trace pointers to BSS/rodata from relocated viper code. 3. For libffi tracing. The tracing in point 1 was made unnecessary long ago in commit 7d4b6cc868ebf0e1cc5dfe5276b22e1b857c411b (see also commit bbccb0f630dc9b2769a891c2c28fbbe810284225 which removed scanning of native code on the esp8266 port). Since the previous commit, point 2 is no longer needed. For point 3, this was made unnecessary in the recent commit 97966254577167f4c50200af1af89109a275da1c. Signed-off-by: Damien George <damien@micropython.org>
2024-09-26py/persistentcode: Explicitly track native BSS/rodata when needed.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2024-09-26extmod/vfs_blockdev: Implement common helper for read and write.Angus Gratton
- Code size saving as all of these functions are very similar. - Resolves the "TODO" of the plain read and write functions not propagating errors. An error in the underlying block device now causes VFatFs to return EIO, for example. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-09-26extmod/vfs_blockdev: Check block device function positive results.Angus Gratton
A positive result here can result in eventual memory corruption as littlefs expects the result of a cache read/write function to be 0 or a negative integer for an error. Closes #13046 This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-09-26renesas-ra/usb: Use interrupt rather than polling for USB task.Andrew Leech
Most ports using TinyUSB now schedule the USB tasks from the USB interrupt. This commit updates the renesas-ra port to use this new pattern. Signed-off-by: Andrew Leech <andrew@alelec.net>
2024-09-26renesas-ra/extint: Fix issue with Pin.irq not triggering.Takeo Takahashi
Fixes issue #15272. Signed-off-by: Takeo Takahashi <takeo.takahashi.xv@renesas.com>
2024-09-26renesas-ra/boards: Add configuration.xml for auto-generated files.Takeo Takahashi
* configuration.xml: Generated by RA Smart Configurator for FSP 4.4. Signed-off-by: Takeo Takahashi <takeo.takahashi.xv@renesas.com>
2024-09-26renesas-ra/README: Add basic details about board autogen files.Andrew Leech
The renesas-ra port board definitions contain auto-generated files which are not easy to understand for someone unfamiliar with the port. This commit adds some notes to the README to assist other developers who want to work on these. The configuration.xml file for the `ARDUINO_PORTENTA_C33` was provided by @iabdalkader. Signed-off-by: Andrew Leech <andrew@alelec.net>
2024-09-24stm32/boards/ARDUINO_GIGA: Update board config files.iabdalkader
To remove duplicate HAL macros. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-09-24stm32/boards/ARDUINO_NICLA_VISION: Update board config files.iabdalkader
Changes are: - Add pre/post stop mode entry macros. - Make SE05X pin accessible. - Remove duplicate HAL macros. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-09-24stm32/boards/ARDUINO_PORTENTA_H7: Update board config files.iabdalkader
Changes are: - Add pre/post stop mode entry macros. - Make SE05X pin accessible. - Remove duplicate HAL macros. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-09-24stm32/boards/ARDUINO_OPTA: Add support for the Arduino Opta board.iabdalkader
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-09-24stm32/powerctrl: Add pre/post stop mode entry macros.iabdalkader
These allow a board to perform actions before/after stop mode. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-09-24stm32/uart: Add UART RX/CTS pin pull config options.iabdalkader
The UART driver enables a pull-up on RX/CTS pins by default. This can cause UART to fail to receive in certain situations, eg with RS485 transceivers. This commit adds compile-time configuration options to set the pull mode on the RX and CTS pins of each UART. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-09-23tools/ci.sh: Report code size for `VIRT_RV32` as well.Alessandro Gatti
This commit adds the `VIRT_RV32` board to the list of targets for calculating code size changes as part of the CI pipeline. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2024-09-23tools/metrics.py: Add VIRT_RV32 to the code size metrics.Alessandro Gatti
This commit adds the Qemu-based RISC-V 32 bits `VIRT_RV32` board to the list of ports/boards to be built for measuring code size changes. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2024-09-23github/workflows: Update Ubuntu images for code size CI tasks.Alessandro Gatti
This updates the Ubuntu OS image the code size CI tasks run on, from 20.04-LTS to 22.04-LTS. This is needed because 20.04 didn't have packages that are needed to build RISC-V 32 code. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2024-09-23gitignore: Add ffi_lib.so to the gitignore list.Alessandro Gatti
When testing the Unix port with FFI tests enabled, the FFI helper library that's built as part of the testing process is not removed after the tests session end. This commit adds the built library to the gitignore list, so it doesn't mark the sourcetree as dirty if a test run for the Unix port was started in the past. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2024-09-23unix/modffi: Restrict uint32_t values to 32 bits.Alessandro Gatti
This commit clears the upper 32 bits of returned `uint32_t` values, which are handled as `unsigned int`s by the MicroPython runtime and thus could be extended to 64 bits on some platforms. RV64 holds 32-bit values as signed integers when held in registers, but the code handling the FFI unsigned int case did not take this into account. That introduced test failures when a 32-bit value had its most significant bit set, as when performing the value extension from 32 to 64 bits, the upper half of the value would be filled with ones. On 32 bit platforms this change should be converted to a no-op, and on other 64 bit platforms that aren't RISC-V it shouldn't hurt as the value being manipulated is expected to only hold valid bits in its lower half. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2024-09-23tools/ci.sh: Let RV64 use a source-built version of libffi.Alessandro Gatti
This commit lets the RV64 port use the version of libffi that is bundled as a submodule in the MicroPython source tree, as the packaged libffi library coming from Ubuntu's RISC-V repository trashes foreign function call results on exit. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2024-09-23unix/modffi: Clean up FFI closures memory management.Alessandro Gatti
This commit removes custom FFI closures alloc/free functions, in favour of using the tracked allocation facility to allocate memory for FFI callback objects. This stems from linking issues in the Arm port when updating LibFFI to the latest stable version, as the overridden alloc/free functions didn't replace LibFFI's (unlike in other ports). The original code did no effective cleanup for allocated callback objects, so there is no real impact when switching allocation strategy. The tracked allocation feature used to be enabled only if the Bluetooth stack integration was enabled. This commit also enables tracked allocation support if FFI support is enabled. Co-authored-by: Damien George <damien@micropython.org> Signed-off-by: Alessandro Gatti <a.gatti@frob.it>