summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-11-17renesas-ra/boards/ARDUINO_PORTENTA_C33: Fix incorrect I2C pins.Sebastian Romero
Also change the number of the interface to 0 as it's connected to IIC0. Signed-off-by: Sebastian Romero <s.romero@arduino.cc>
2023-11-17ports: Fix incorrect identifiers on Arduino boards.Sebastian Romero
This commit changes the Arduino board identifiers to correspond to their official names. This helps to identify boards at runtime. At the moment the Arduino Portenta H7 is reported as PORTENTA which is unfortunate as now there is another Portenta board (Portenta C33) supported in MicroPython. Also made the other identifiers for flash and network name consistent, removed the incorrectly used MICROPY_PY_SYS_PLATFORM identifiers, and added missing MICROPY_PY_NETWORK_HOSTNAME_DEFAULT identifiers. Boards affected: - stm32: ARDUINO_PORTENTA_H7, ARDUINO_GIGA, ARDUINO_NICLA_VISION - renesas-ra: ARDUINO_PORTENTA_C33 - esp32: ARDUINO_NANO_ESP32 - rp2: ARDUINO_NANO_RP2040_CONNECT Signed-off-by: Sebastian Romero <s.romero@arduino.cc>
2023-11-17py/obj: Fix mp_obj_is_type compilation with C++.stijn
Fixes issue #12951. Signed-off-by: stijn <stijn@ignitron.net>
2023-11-17stm32/boards/STM32H573I_DK: Enable the SD card.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2023-11-17stm32/sdcard: Add SD card support for H5 MCUs.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2023-11-17stm32/boards/NUCLEO_H563ZI: Add new NUCLEO-H563ZI board definition.Rene Straub
Configuration: - Clock is HSE, CPU runs at 250MHz. - REPL on USB and UART connected to the ST-Link interface. - Storage is configured for internal flash memory. - Three LEDs and one user button. - Ethernet is enabled. Signed-off-by: Rene Straub <rene@see5.ch>
2023-11-17stm32/boards/NUCLEO_F446RE: Add UARTs 1, 3 and 4.ThomHPL
Signed-off-by: ThomHPL <thomas.herpoel@gmail.com>
2023-11-17tests/net_hosted/asyncio_loopback.py: Add loopback test.Peter Züger
Signed-off-by: Peter Züger <zueger.peter@icloud.com>
2023-11-17stm32: Add optional lwip loopback support.Peter Züger
MICROPY_PY_LWIP_LOOPBACK must be set at the make level to enable this. Signed-off-by: Peter Züger <zueger.peter@icloud.com>
2023-11-17extmod/extmod.mk: Allow enabling lwip loopback support.Peter Züger
Enabling MICROPY_PY_LWIP_LOOPBACK via make will turn on loopback support. Signed-off-by: Peter Züger <zueger.peter@icloud.com>
2023-11-17stm32/mpu: Enable STM32WB mpu use to support qspi flash.Andrew Leech
Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
2023-11-16samd: Use unique id for USB serial number.Angus Gratton
Replaces the previous all-zeroes "TODO" serial number. Requires refactoring the low-level unique_id routine out from modmachine.c. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-11-16shared/tinyusb: Add a helper for hex string conversion.Angus Gratton
Change the rp2 and renesas-ra ports to use the helper function. Saves copy-pasta, at the small cost of one more function call in the firmware (if not using LTO). This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-11-16samd: Switch to shared TinyUSB implementation.Angus Gratton
Functionality and code size don't really change, but removes port-specific code in favour of shared code. (The MSC implemented in shared/tinyusb depends on some functions in the pico-sdk, so this change doesn't make this available for samd.) This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-11-10samd/mphalport: Run TinyUSB stack while waiting for CDC input/output.Angus Gratton
See the commit a00c9d56db for a detailed description of the problem, a regression introduced in 26d503298. Same approach here as the linked fix for rp2 (applied unconditionally here as this port only supports USB-CDC for stdin/stdout). Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-11-09rp2/mphalport: Run TinyUSB stack while waiting for CDC input/output.Damien George
The recent change in bcbdee235719d459a4cd60d51021454fba54cd0f means that TinyUSB can no longer be run from within a soft (or hard) IRQ handler, ie when the scheduler is locked. That means that Python code that calls `print(...)` from within a scheduled function may block indefinitely if the USB CDC buffers are full. This commit fixes that problem by explicitly running the TinyUSB stack when waiting within stdio tx/rx functions. Signed-off-by: Damien George <damien@micropython.org>
2023-11-09shared/tinyusb: Expose mp_usbd_task as a public function.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2023-11-09extmod/vfs_posix_file: Make standard file objects non-const.stijn
Fixes undefined behavior when calling vfs_posix_file_ioctl with MP_STREAM_CLOSE as request because that casts away the constness and assigns -1 to the object's fd member. Fixes issue #12670. Signed-off-by: stijn <stijn@ignitron.net>
2023-11-09extmod/modbluetooth: Initialise nlr_jump_callback_top for IRQ handlers.Daniël van de Giessen
Similar to 3883f29485fad21105f6f965d56bfec842b8cfbb where this change was implemented for threads: when the Bluetooth IRQ handler is called the thread state is not not zero-initialized and thus we need to manually set this to NULL. Fixes issue #12239. Signed-off-by: Daniël van de Giessen <daniel@dvdgiessen.nl>
2023-11-09stm32/boards/NUCLEO_WL55: Freeze LoRa driver.Jim Mussared
This adds the sync version of the LoRa driver (and the base WL55 driver). Adds +13.6kiB (212.6 -> 226.2). Limit for this board is 232kiB. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-11-09esp32/esp32_rmt: Add RMT.PULSE_MAX constant.Mark Blakeney
If you have a variable frequency and pulse width, and you want to optimize pulse resolution, then you must do a calculation beforehand to ensure you normalize the array to keep all list values within bound. That calculation requires RMT.source_freq(), RMT.clock_div(), and this 32767 constant. Signed-off-by: Mark Blakeney <mark.blakeney@bullet-systems.net>
2023-11-09esp32/esp32_rmt: Change RMT.source_freq() to class method.Mark Blakeney
To create an esp32.RMT() instance with an optimum (i.e. highest resolution) clock_div is currently awkward because you need to know the source clock frequency to calculate the best clock_div, but unfortunately that is only currently available as an source_freq() method on the instance after you have already created it. So RMT.source_freq() should really be a class method, not an instance method. This change is backwards compatible for existing code because you can still reference that function from an instance, or now also, from the class. Signed-off-by: Mark Blakeney <mark.blakeney@bullet-systems.net>
2023-11-09mimxrt/boards/OLIMEX_RT1010: Adjust the UART pin assignment.robert-hh
Olimex asked for that, getting a UART at the UEXT1 connector as well. Signed-off-by: robert-hh <robert@hammelrath.com>
2023-11-09CODECONVENTIONS: Update for change from black to ruff format.Andrew Leech
Also add notes on running pre-commit manually. Signed-off-by: Andrew Leech <andrew@alelec.net>
2023-11-09samd: Switch TinyUSB to run via a scheduled task.Angus Gratton
Previously the TinyUSB task was run in the ISR immediately after the interrupt handler. This approach gives very similar performance (no change in CDC throughput tests) but reduces the amount of time spent in the ISR, and allows TinyUSB callbacks to run in thread mode. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-11-09rp2: Change to use TinyUSB dcd_event_handler hook.Angus Gratton
This change: - Has a small code size reduction. - Should slightly improve overall performance. The old hook code seemed to use between 0.1% and 1.6% of the total CPU time doing no-op calls even when no USB work was required. - USB performance is mostly the same, there is a small increase in latency for some workloads that seems to because sometimes the hook usbd_task() is called at the right time to line up with the next USB host request. This only happened semi-randomly due to the timing of the hook. Improving the wakeup latency by switching rp2 to tickless WFE allows the usbd_task() to run in time for the next USB host request almost always, improving performance and more than offsetting this impact. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-11-09shared/tinyusb: Schedule TinyUSB task function from dcd_event_handler.Angus Gratton
dcd_event_handler() is called from the IRQ when a new DCD event is queued for processing by the TinyUSB thread mode task. This lets us queue the handler to run immediately when MicroPython resumes. Currently this relies on a linker --wrap hack to work, but a PR has been submitted to TinyUSB to allow the function to be called inline from dcd_event_handler() itself. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-11-09tools/mpremote: Add ioctl to specify large read buffer size.Andrew Leech
Speeds up importing files from mounted filesystem. Also fix the return code for invalid / unsupported ioctl requests. Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
2023-11-09extmod/vfs_reader: Add file ioctl to set read buffer size.Andrew Leech
Can be used to speed up importing a file from a vfs based filesystem. Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
2023-11-08extmod/machine_i2c: Do a fast poll during I2C.scan().Damien George
Fixes issue #12912. Signed-off-by: Damien George <damien@micropython.org>
2023-11-07windows: Use the MicroPython logo as application icon.stijn
Add a .ico file with common icon image size, created from vector-logo-2.png, and embed it into the resulting executable. Signed-off-by: stijn <stijn@ignitron.net>
2023-11-07extmod/machine_adc_block: Factor esp32 ADCBlock bindings to common code.Damien George
This is a code factoring to have the Python bindings in one location, and all the ports use those same bindings. At this stage only esp32 implements this class, so the code for the bindings comes from that port. The documentation is also updated to reflect the esp32's behaviour of ADCBlock.connect(). Signed-off-by: Damien George <damien@micropython.org>
2023-11-07py/qstr: Special case qstr_find_strn for empty string.Jim Mussared
This handles the case where an empty bytes/bytearray/str could pass in NULL as the str argument (with length zero). This would result in UB in strncmp. Even though our bare-metal implementation of strncmp handles this, best to avoid it for when we're using system strncmp. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-11-07shared/libc/string0: Don't deref args for n==0 case.Jim Mussared
C99 says that strncmp has UB for either string being NULL, so the current behavior is technically correct, but it's an easy fix to handle this case correctly. 7.1.4: "unless explicitly stated otherwise in the detailed description... if an argument to a function has ...null pointer.. the behavior is undefined". 7.21.1: "Unless explicitly stated otherwise in the description of a particular function in this subclause, pointer arguments on such a call shall still have valid values, as described in 7.1.4". Also make the same change for the minimal version in bare-arm/lib.c. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-11-07tools/tinytest-codegen.py: Externalise tests list.Alessandro Gatti
Remove port-specific test directories and excluded tests from tinytest-codegen, and let it read said information from an external file. This way tinytest-codegen is not limited to always generate tests for the `qemu-arm` target. This allows having port-specific test directory and excluded tests for more than one QEMU bare-metal target. The `qemu-arm` port Makefile was modified to work with the generator changes and a tests profile file was added to said port. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2023-11-06samd/pin_af: Fix a typo in a conditional compile.robert-hh
Thanks to @ricksorensen for finding it. Signed-off-by: robert-hh <robert@hammelrath.com>
2023-11-06samd/machine_uart: Add machine_uart_set_baudrate() function.robert-hh
Changing the baudrate requires a complete re-configuration of the Sercom device, which is put into a separate rather large function. This new machine_uart_set_baudrate() function will be useful for future drivers such as Bluetooth. Signed-off-by: robert-hh <robert@hammelrath.com>
2023-11-06samd/mpconfigport: Set MICROPY_USE_INTERNAL_ERRNO to 1.robert-hh
Without this, error codes can be misleading. Signed-off-by: robert-hh <robert@hammelrath.com>
2023-11-06docs/samd: Fix the pinout for SAMD21 Itsy Bitsy Express M0.robert-hh
And the "Pin", "GPIO" and "Name" key explanations. Signed-off-by: robert-hh <robert@hammelrath.com>
2023-11-05stm32/boards/make-pins.py: Only support ADC1-3.Jim Mussared
e.g. The STM32G4 includes ADC4 & ADC5 which is not currently supported by the stm32 driver. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-11-05docs/mimxrt: Change the examples which denote a Pin with a number.robert-hh
This option was removed in PR #12211. Signed-off-by: robert-hh <robert@hammelrath.com>
2023-11-05mimxrt/modmachine: Fix settings for the MIMXRT1170 board.robert-hh
These were not changed with commit c0b64a3f2 for using tools/boardgen.py. Signed-off-by: robert-hh <robert@hammelrath.com>
2023-11-04stm32/boards/stm32g474_af.csv: Fix final row ADC column.Jim Mussared
The original file was missing a trailing , on the final row. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-11-04stm32/boards/stm32f4x9_af.csv: Fix DCMI_VSYNC.Jim Mussared
This incorrectly had a `(1)` on the end. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-11-03stm32/boards/make-pins.py: Fix H7 ADC generation.Jim Mussared
Fixes are: - Only emit ADC table entries for pins that aren't cpu-hidden (i.e. ignore `X,-Y` rows). - Only use the P channels on H7. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-11-03rp2: Remove 1ms timeout to make idle waiting tickless.Angus Gratton
The main motivation for doing this was to reduce the latency when the system is woken by a USB interrupt. The best_effort_wfe_or_timeout() function calls into the pico-sdk dynamic timer framework which sets up a new dynamic timer instance each time, and then has to tear it down before continuing after a WFE. Testing Python interrupt latency, it seems to be improved by about 12us (from average of 46us to 34us running a Pin IRQ). C-based "scheduled nodes" should see even lower latency. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-11-03rp2/machine_adc: Refactor channel/pin validation code.iabdalkader
This patch ensures that integer channel numbers passed to the ADC constructor (including temperature sensor) are interpreted as raw channel numbers, and not cause any GPIO pins to be initialized. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2023-11-03rp2/machine_uart: Fix handling of serial break condition.Maarten van der Schrieck
The FIFO reports not only the bytes read, but also 4 error bits. These were not checked, leading to NUL value read in case of break and possible garbage bytes being written on parity/framing error. This patch addresses the issue that NUL bytes are incorrectly read on break, and at least provides the boilerplate code and comments for error handling, that may be implemented in the future. Signed-off-by: Maarten van der Schrieck <maarten@thingsconnected.nl>
2023-11-03stm32: Add STM32H5 support for sleep mode.Rene Straub
Update rtc, machine and powerctrl drivers to support STM32H5 sleep modes. This makes RTC alarm wakeup working from lightsleep() and deepsleep(). Changes: - Determine start reason for machine.reset_cause() in modmachine.c. - Add proper interrupt clear code in rtc.c. - Add wakeup functionality in powerctrl_enter_stop_mode(). Remember and restore voltage scaling level. Restart HSI48 if it was on before entering sleep mode. - Clear DBGMCU_CR in SystemClock_Config() as for other variants. Otherwise debug flags prevent entering sleep mode. Implementation Notes: - rtc.c: EXTI_RTSTR1 bits are not present for H5. Code sequence from G0/G4/L4/WB/WL would be invalid. RTSTR is only defined for external (GPIO) interrupts. Maybe this is also true for other STM32 variants. - powerctrl_enter_stop_mode() uses complicated, nested conditionals to select STM32 variants. To make code slightly better readable, comment have been added. A non-nested, #if/#elif sequence would make the code more readable. I leave this to the original authors. Signed-off-by: Rene Straub <rene@see5.ch>
2023-11-03stm32: Add configuration options for analog switches.iabdalkader
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>