Only set the rate on interfaces that are active.
It seems ESP-IDF 5.4.x or so added checks that the interface is enabled,
whereas previous versions silently did nothing.
This work was funded through GitHub Sponsors.
Signed-off-by: Angus Gratton <angus@redyak.com.au>
Noted while adding C2 support that some of these comments are a bit out of
date. Spun out to its own commit, and also mention C5 as well.
This change also adds some recommendation on which ESP32 board to pick, as
we occasionally see issues or questions that would be non-issues on a board
with more RAM (and for small production or personal projects the savings of
picking a cheaper ESP32 chip are basically neglible).
This work was funded through GitHub Sponsors.
Signed-off-by: Angus Gratton <angus@redyak.com.au>
It's now available in the version of TinyUSB used by this repository.
Also, update to the newer `tud_cdc_configure_t` struct name and newer
`tud_cdc_configure()` function name.
Signed-off-by: Damien George <damien@micropython.org>
This is 0.19.0 plus the following changes:
- remove obsolete dcd_esp32sx
- fix for HID stylus descriptor and HID example
- typos, docs and generator scripts
- MTP fix
- DWC2 enumeration when EP0 size=8
- DWC2 fix for EP0 IN
- stm32 FSDEV IRQ remapping fix
- DWC2 ZLP fix
The reason we need the extra 24 commits is due to a bug with TinyUSB's
handling of zero-length-packets in the DWC2 (Synopsis) backend, which
affects the stm32 port. That's fixed by
https://github.com/hathach/tinyusb/pull/3293
Signed-off-by: Damien George <damien@micropython.org>
This commit adds a `--json` option to `mpy-tool.py`, in order to generate
Compiler-Explorer-compatible JSON annotation information for the bytecode
disassembly. Some of this information might be theoretically possible to
parse out from the text itself, but not all of it is, e.g. disambiguating
child references with non-unique simple names.
Signed-off-by: Anson Mansfield <amansfield@mantaro.com>
Add wrapper macros that by default expand to the callback name.
Users can define this macro to add a prefix (e.g., mp_) to
callback implementations, to redirect or completely override
MicroPython's TinyUSB callbacks.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
When `MICROPY_PYEXEC_ENABLE_EXIT_CODE_HANDLING` is enabled, `SystemExit`
now sets the `PYEXEC_FORCED_EXIT` flag in addition to the exit code. This
allows the REPL to properly detect and exit when SystemExit is raised,
while still preserving the exit code in the lower bits.
Fixes `repl_lock.py` test which expects REPL to exit on `SystemExit`.
Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
Enable `MICROPY_PYEXEC_ENABLE_EXIT_CODE_HANDLING` to propagate `sys.exit()`
exit codes properly. Update `convert_pyexec_result()` to handle return
values where pyexec returns the exit code with `PYEXEC_FORCED_EXIT` flag
set for `SystemExit`. Extract the exit code from the lower 8 bits when the
flag is set, otherwise return as-is (0 for success, 1 for exception).
Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
Consolidates file and string execution to use the standard pyexec interface
for consistency with other ports.
Simplify execute_from_lexer for remaining usage: Remove unused LEX_SRC_VSTR
and LEX_SRC_FILENAME cases, keeping only LEX_SRC_STR for REPL and
LEX_SRC_STDIN for stdin execution.
Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
Add a general normalize_newlines() function that handles newline variations
(\\r\\r\\n, \\r\\n) to \\n while preserving literal \\r characters that are
part of test content.
This provides a robust solution for cross-platform test compatibility,
particularly addressing PTY double-newline issues that can occur with some
terminal implementations.
The function is applied to all test output before comparison, eliminating
platform-specific newline issues.
Includes a unit test to verify the normalization behavior.
Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
When `MICROPY_PYEXEC_COMPILE_ONLY` is enabled and the global
`mp_compile_only` is True, code is compiled but not executed.
Also add comprehensive tests for compile-only functionality covering both
successful compilation and syntax error detection.
Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
When `MICROPY_MODULE___FILE__` is enabled and parsing file input, set the
global `__file__` variable to the source filename. This matches the
behavior of the unix port and provides the current filename to the
executing script.
Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
This improves REPL usage consistency across ports, by utilizing the pyexec
code for the unix REPL.
Only enabled when MICROPY_USE_READLINE == 1 (the default).
Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
RP2350 builds were using the incomplete `rp2_af.csv` alt function table
(originally made for RP2040) which broke pins > 31 in RP2350B (48-pin
QFN-80) builds:
>>> machine.Pin(31)
Pin(GPIO31, mode=IN, pull=PULL_DOWN)
>>> machine.Pin(32)
Pin(GPIO32, mode=ALT, pull=PULL_DOWN, alt=31)
To fix this, separate alt-functions tables for RP2350 and RP2350B are added
in this commit.
UART_AUX (alt function 11) was also missing, along with XIP_CS1 and
CORESIGHT_TRACE, and they are now added as well.
Signed-off-by: Phil Howard <github@gadgetoid.com>
Signed-off-by: Damien George <damien@micropython.org>
The currently documentation for ilistdir tuples says that the size element
is included based on the platform. However, this is not the case as it is
included based on the filesystem type. This commit makes the according
adjustment.
Fixes issue #17516.
Signed-off-by: Alex Tran <alex.t.tran@gmail.com>
Currently, dict views (eg `dict.keys()`, `dict.values()`) do not implement
the `bool` or `len` unary operations. That may seem like a reasonable
omission for MicroPython to keep code size down, but it actually leads to
silently incorrect bool operations, because by default things are true.
Eg we currently have:
>>> bool(dict().keys())
True
which is wrong, it should be `False` because the dict is empty.
This commit implements `bool` and `len` unary operations on dict views by
simply delegating to the existing dict unary op function.
Fixes issue #12385.
Signed-off-by: Damien George <damien@micropython.org>
The documentation used integers to specify Teensy board pins, which match
the board's silkscreen. But in Python code Dxx have to be used, since
integers are not accepted as a Pin identifier.
This commit changes the Pinout tables accordingly, consistent with the
other MIMXRT boards.
Signed-off-by: robert-hh <robert@hammelrath.com>
Use new Zephyr FS, and be a demonstration of that configuration.
This is still on-disk compatible with existing filesystems on the internal
flash.
Signed-off-by: Vdragon <mail@massdriver.space>
This allows using Zephyr's supported VFS and interface it to MicroPython's
VFS. That makes the MicroPython-side filesystem drivers unecessary, eg you
can disable LFS2 in MicroPython but still do LFS2 because it's using
Zephyr's.
An advantage of this is that the filesystem can be shared between Zephyr C
code and MicroPython.
Signed-off-by: Vdragon <mail@massdriver.space>
This option (currently only enabled for N6) allows the TX path to hold on
to a pbuf reference while the DMA accesses the pbuf's memory directly,
instead of copying the entire pbuf data into the internal buffers.
This is necessary to achieve gigabit speeds on the N6, although actually
achieving that speed requires higher up parts of the stack to be efficient
as well.
Signed-off-by: Damien George <damien@micropython.org>
RAM shared with DMA needs caching disabled, which is slower for the MCU to
access. So move these index variables (which are not shared with DMA) to
normal RAM.
Signed-off-by: Damien George <damien@micropython.org>
This MCU has a lot of memory and gigabit ethernet, so it benefits from
improved lwIP performance.
Signed-off-by: Damien George <damien@micropython.org>
The full Alif license texit is available in
`lib/alif_ensemble-cmsis-dfp/License.txt` if it's needed.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
If MICROPY_PY_THREAD is set, PendSV_Handler acquires a mutex and calls the
dispatch functions. If pendsv_schedule_dispatch is called by a higher
priority interrupt while the mutex is acquired by PendSV_Handler it's
possible for the dispatch to not be triggered.
Add a check for dispatch calls at the end of PendSV_Handler once the mutex
has been released.
Fixes issue #18365.
Signed-off-by: Peter Harper <peter.harper@raspberrypi.com>
ESP32 requires initial high levels of the channels before starting the
count, in order to have 4 pulse for the first rotation.
Also add tests for encoder phases x2 and x4.
Signed-off-by: Ihor Nehrutsa <Ihor.Nehrutsa@gmail.com>
Changed the pin numbers used for the I2S rate testing as the pin numbers
used were incompatible with the limited GPIO pins availalbe on the
ESP32-C3, causing the tests to fail.
Signed-off-by: Jos Verlinde <jos_verlinde@hotmail.com>
Temporarily switch from the espressif TinyUSB component to
a MicroPython fork where this fix has been cherry-picked:
https://github.com/hathach/tinyusb/pull/3293
This work was funded through GitHub Sponsors.
Signed-off-by: Angus Gratton <angus@redyak.com.au>