17151 Commits

Author SHA1 Message Date
PGNetHun
4fae3e1139
Update readme files (#90)
* Update readme files and fix ESP-IDF path in scripts folder

* Update LVGL readme file
2025-03-15 16:24:17 +01:00
Gabor Peresztegi
e3d9310e4e Update LVGL binding
- drivers/generic/st77xx: Support use on platforms without machine.PWM
2025-03-15 14:48:19 +01:00
PGNetHun
048868c40e
Merge pull request #89 from lvgl/update/micropython_v1.24.1-usermod
Update to MicroPython v1.24.1 and use LVGL as MicroPython user module
2025-03-15 14:26:44 +01:00
Gabor Peresztegi
c3d3a55ca5 Update LVGL binding (main branch) 2025-03-15 14:07:12 +01:00
Gabor Peresztegi
dac523c8b4 Update build and deploy scripts 2025-03-15 13:46:23 +01:00
Gabor Peresztegi
25bbc174dc Build all ESP32 boards with LVGL module. Add build script for generic ESP32 SPIRAM variant 2025-03-05 00:36:24 +01:00
Gabor Peresztegi
649b30cef2 Fix github workflows and build issues 2025-03-04 20:27:23 +01:00
Gabor Peresztegi
323e0b2e76 Clean up some LVGL related files and content to align to MicroPython repo; add a few build and deploy scripts; update lv_binding 2025-03-04 19:42:37 +01:00
Gabor Peresztegi
22d4c25aa6 Update LVGL binding: use it as USER_C_MODULE; add unix-lvgl variant and M5Core2 board; remove ESP32 specific LVGL modules (soft links) 2025-03-04 00:35:47 +01:00
Gabor Peresztegi
c767aba09b Update MicroPython bindings 2025-03-04 00:29:41 +01:00
Gabor Peresztegi
06ebf74c14 Merge tag 'v1.24.1' of https://github.com/micropython/micropython into update/micropython_v1.24.1-usermod
Patch release for mpremote, rp2 IGMP, esp32 PWM, SDCard, and AP channel

This is a patch release containing the following commits:
- tools/mpremote: fix UnboundLocalError in Transport.fs_writefile()
- esp32/machine_pwm: use IDF functions to calculate resolution correctly
- pic16bit: make it build with recent XC16 versions
- py/objdeque: fix buffer overflow in deque_subscr
- extmod/modlwip: fix IGMP address type when IPv6 is enabled
- esp32/machine_pwm: restore PWM support for ESP-IDF v5.0.x and v5.1.x
- esp32: workaround native code execution crash on ESP32-S2
- tools/mpremote: make sure stdout and stderr output appear in order
- tools/mpremote: add test for forced copy
- tools/mpremote: support trailing slash on dest for non-recursive copy
- esp32/modsocket: fix getaddrinfo hints to set AI_CANONNAME
- extmod/vfs_blockdev: support bool return from Python read/write blocks
- extmod/network_cyw43: fix isconnected() result on AP interface
- extmod/network_cyw43: fix uninitialised variable in status('stations')
- extmod/network_cyw43: allow configuring active AP interface
- esp32: fix setting WLAN channel in AP mode
- esp32: use hardware version for touchpad macro defines
- esp32: fix machine.TouchPad startup on ESP32-S2 and S3
- extmod/modframebuf: fix 0 radius bug in FrameBuffer.ellipse
- nrf/drivers/ticker: reset slow ticker callback count on soft reboot
- py/objfloat: workaround non-constant NAN definition on Windows MSVC

# Conflicts:
#	.github/workflows/code_formatting.yml
#	.github/workflows/code_size.yml
#	.github/workflows/commit_formatting.yml
#	.github/workflows/docs.yml
#	.github/workflows/examples.yml
#	.github/workflows/mpremote.yml
#	.github/workflows/mpy_format.yml
#	.github/workflows/ports.yml
#	.github/workflows/ports_cc3200.yml
#	.github/workflows/ports_esp32.yml
#	.github/workflows/ports_esp8266.yml
#	.github/workflows/ports_mimxrt.yml
#	.github/workflows/ports_nrf.yml
#	.github/workflows/ports_powerpc.yml
#	.github/workflows/ports_renesas-ra.yml
#	.github/workflows/ports_rp2.yml
#	.github/workflows/ports_samd.yml
#	.github/workflows/ports_stm32.yml
#	.github/workflows/ports_unix.yml
#	.github/workflows/ports_webassembly.yml
#	.github/workflows/ports_windows.yml
#	.github/workflows/ports_zephyr.yml
#	README.md
#	extmod/extmod.mk
#	ports/esp32/.gitignore
#	ports/esp32/CMakeLists.txt
#	ports/esp32/boards/ESP32_GENERIC/mpconfigboard.cmake
#	ports/esp32/boards/sdkconfig.base
#	ports/esp32/main.c
#	ports/esp32/main/CMakeLists.txt
#	ports/stm32/Makefile
#	ports/stm32/boards/STM32F7DISC/mpconfigboard.mk
#	ports/stm32/boards/manifest.py
#	ports/stm32/boards/stm32f7xx_hal_conf_base.h
#	ports/unix/Makefile
#	ports/unix/variants/manifest.py
#	ports/unix/variants/mpconfigvariant_common.h
#	ports/windows/mpconfigport.h
#	py/makeqstrdata.py
#	py/qstr.c
#	py/qstr.h
#	tools/ci.sh
#	tools/makemanifest.py
#	tools/mpy-tool.py
2025-03-01 17:41:20 +01:00
Gabor Kiss-Vamosi
bf11074200
Merge pull request #88 from addijhaq/patch-1
Updated README.md - update Unix (Mac OS) port instructions
2025-01-03 21:12:36 +01:00
addijhaq
fdb6a59178
Updated README.md - update Unix (Mac OS) port instructions
added to step 8 `mpy-cross/Makefile` to remove `-Werror` 
updated step 12 to find the micropython script in the `build-standard` directory
2024-12-27 10:28:47 -05:00
Damien George
ecfdd5d6f9 all: Bump version to 1.24.1.
Signed-off-by: Damien George <damien@micropython.org>
2024-11-29 23:53:11 +11:00
Angus Gratton
564ef28ad2 py/objfloat: Workaround non-constant NAN definition on Windows MSVC.
Recent MSVC versions have changed the definition of NAN to a non-constant
expression!  This is a bug, C standard says it should be a constant.

Good explanation and workaround at: https://stackoverflow.com/a/79199887

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-11-28 23:56:21 +11:00
robert-hh
7118942a8c nrf/drivers/ticker: Reset slow ticker callback count on soft reboot.
The micro:bit board (and probably other boards using the music or display
module) locked up on soft reboot.  Reason was a buffer overflow caused by
an index counter, which was not reset on soft_reboot.

That's fixed in this commit.  Tested with a micro:bit board, performing a
series of soft reboots.

Signed-off-by: robert-hh <robert@hammelrath.com>
2024-11-28 23:08:33 +11:00
Corran Webster
948863c0b8 extmod/modframebuf: Fix 0 radius bug in FrameBuffer.ellipse.
This fixes a bug in FrameBuffer.ellipse where it goes into an infinite loop
if both radii are 0.

This fixes the bug with a simple pre-check to see if both radii are 0, and
in that case sets a single pixel at the center. This is consistent with the
behaviour of the method when called with just one of the radii set to 0,
where it will draw a horizontal or vertical line of 1 pixel width.

The pixel is set with setpixel_checked so it should handle out-of-bounds
drawing correctly.

This fix also includes three new tests: one for the default behaviour, one
for drawing out-of-bounds, and one for when the sector mask is 0.

Fixes issue #16053.

Signed-off-by: Corran Webster <cwebster@unital.dev>
2024-11-28 23:08:29 +11:00
Angus Gratton
33f50d4f20 esp32: Fix machine.TouchPad startup on ESP32-S2 and S3.
Closes #13178.

TouchPad confirmed working on both chips, and fixes the the ESP32-S3
reading constant max value. Was unable to reproduce the bug on ESP32-S2 but
this may be due to my test setup, and it still works with the fix.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-11-28 23:08:26 +11:00
Angus Gratton
eb0027b82f esp32: Use hardware version for touchpad macro defines.
ESP32 has hardware V1 and S2/S3 has V2, and future chips
may have different versions.

This should still compile to the same binary before and after.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-11-28 23:08:22 +11:00
Angus Gratton
03bc561edb esp32: Fix setting WLAN channel in AP mode.
- Previously the call to esp_wifi_set_channel() would be immediately
  overridden by calling esp_wifi_config(...) with the previous channel set.

- AP interface doesn't seem to need more than esp_wifi_config(...) to work.
  It will automatically configure 40MHz bandwidth and place the secondary
  channel using similar logic to what was being explicitly calculated here.

- However, calling esp_wifi_set_channel() on the STA interface is necessary
  if using this interface with ESP-NOW (without connecting to an AP). So
  the esp_wifi_set_channel() call is kept in for this purpose. Without
  this, tests/multi_espnow/70_channel.py fails.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-11-28 23:08:18 +11:00
Angus Gratton
49b83ed44a extmod/network_cyw43: Allow configuring active AP interface.
Configuring the AP for cyw43 writes to some buffers that are only sent to
the modem when the interface is brought up. This means you can't configure
the AP after calling active(True), the new settings seem to be accepted but
the radio doesn't change.

This is different to the WLAN behaviour on other ports. The esp8266 port
requires calling active(True) on the AP before configuring, even.

Fix this by bouncing the AP interface after a config change, if it's
active. Configuring with active(False) still works the same as before.

Adds a static variable to track interface active state, rather than relying
on the LWIP interface state. This is because the interface state is updated
by a driver callback and there's a race: if code calls active(True) and
then config(a=b) then the driver doesn't know it's active yet and the
changes aren't correctly applied.

It is possible this pattern will cause the AP to come up briefly with the
default "PICOabcd" SSID before being reconfigured, however (due to the
aforementioned race condition) it seems like this may not happen at all
before the new config is applied.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-11-20 14:44:53 +11:00
Damien George
4f4d683ea5 extmod/network_cyw43: Fix uninitialised variable in status('stations').
The `num_stas` was uninitialised and if it happened to take the value 0
then no results were returned.  It now has the correct maximum value.

Signed-off-by: Damien George <damien@micropython.org>
2024-11-20 14:27:16 +11:00
Angus Gratton
67f893852a extmod/network_cyw43: Fix isconnected() result on AP interface.
This function is documented to return True if any stations are connected to
the AP. Without this fix it returns True whenever the driver has brought
the AP interface up.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-11-20 14:27:11 +11:00
Damien George
20a6d82872 extmod/vfs_blockdev: Support bool return from Python read/write blocks.
Commit f4ab9d924790581989f2398fe30bbac5d680577f inadvertently broke some
Python block devices, for example esp32 and stm32 SDCard classes.  Those
classes return a bool from their `readblocks` and `writeblocks` methods
instead of an integer errno code.  With that change, both `False` and
`True` return values are now be interpreted as non-zero and hence the block
device call fails.

The fix in this commit is to allow a bool and explicitly convert `True` to
0 and `False` to `-MP_EIO`.

Signed-off-by: Damien George <damien@micropython.org>
2024-11-18 23:27:13 +11:00
Damien George
0c580f71ae esp32/modsocket: Fix getaddrinfo hints to set AI_CANONNAME.
Because the `ai_canonname` field is subsequently used.

ESP32_GENERIC_S3 (at least) crashes with IDF 5.2.3 without this set.

Signed-off-by: Damien George <damien@micropython.org>
2024-11-18 23:27:13 +11:00
Damien George
4e78c611b4 tools/mpremote: Support trailing slash on dest for non-recursive copy.
This fixes a regression in db59e55fe7a0b67d3af868990468e7b8056afe42: prior
to that commit `mpremote` supported trailing slashes on the destination of
a normal (non-recursive) copy.

Add back support for that, with the semantics that a trailing slash
requires the destination to be an existing directory.

Also add a test for this.

Signed-off-by: Damien George <damien@micropython.org>
2024-11-18 23:27:13 +11:00
Damien George
159b54b7da tools/mpremote: Add test for forced copy.
Signed-off-by: Damien George <damien@micropython.org>
2024-11-18 23:27:13 +11:00
Damien George
c1a85bb6de tools/mpremote: Make sure stdout and stderr output appear in order.
mpremote error messages now go to stderr, so make sure stdout is flushed
before printing them.

Also update the test runner to capture error messages.

Signed-off-by: Damien George <damien@micropython.org>
2024-11-18 23:27:13 +11:00
Angus Gratton
72799f9973 esp32: Workaround native code execution crash on ESP32-S2.
Seemingly ESP-IDF incorrectly marks RTC FAST memory region
as MALLOC_CAP_EXEC on ESP32-S2 when it isn't. This memory is
the lowest priority, so it only is returned if D/IRAM is exhausted.

Apply this workaround to treat the allocation as failed if it gives us
non-executable RAM back, rather than crashing.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-11-18 23:27:13 +11:00
Angus Gratton
164c549248 esp32/machine_pwm: Restore PWM support for ESP-IDF v5.0.x and v5.1.x.
The cleanup in 548babf8 relies on some functions not available in older
ESP-IDF. Temporarily restore them, until we drop support for ESP-IDF <5.2.

PWM functionality should end up the same regardless of ESP-IDF version, and
also no different from MicroPython V1.23.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-11-18 23:27:13 +11:00
Damien George
6f327684b7 extmod/modlwip: Fix IGMP address type when IPv6 is enabled.
This was missed in 628abf8f25a7705a2810fffe2ca6ae652c532896.  The the bug
was that, when IPv6 is enabled, the `sizeof(ip_addr_t)` is much larger than
IPv4 size, which is what's needed for IGMP addressing.

Fixes issue #16100.

Signed-off-by: Damien George <damien@micropython.org>
2024-11-18 23:27:13 +11:00
Jan Sturm
a7d3bc2308 py/objdeque: Fix buffer overflow in deque_subscr.
In `deque_subscr()`, if `index_val` equals `self->alloc`, the index
correction `index_val -= self->alloc` does not execute, leading to an
out-of-bounds access in `self->items[index_val]`.

The fix in this commit ensures that the index correction is applied
whenever `index_val >= self->alloc`, preventing access beyond the allocated
buffer size.

Signed-off-by: Jan Sturm <jansturm92@googlemail.com>
2024-11-18 23:27:13 +11:00
Alessandro Gatti
c0afff8f22 pic16bit: Make it build with recent XC16 versions.
The PIC16 port didn't catch up with the other ports, so it required a bit
of work to make it build with the latest version of XC16.

Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2024-11-18 23:27:13 +11:00
Andrew Leech
785c92df76 esp32/machine_pwm: Use IDF functions to calculate resolution correctly.
This commit fixes PWM configuration across C3, C6, S2 and S3 chips, which
was broken by 6d799378bad4474e77ddb2fa2187ecd6e290e0ba.  Without this fix
the PWM frequency is limited to a maximum of 2446Hz (on S2 at least).

Signed-off-by: Andrew Leech <andrew@alelec.net>
2024-11-18 23:27:13 +11:00
Glenn Moloney
5c7ac55232 tools/mpremote: Fix UnboundLocalError in Transport.fs_writefile().
The variable `written` was being used before it was defined in the
`fs_writefile()` method of the Transport class.  This was causing an
`UnboundLocalError` to be raised when the `progress_callback` was not
provided.

Fixes issue #16084.

Signed-off-by: Glenn Moloney <glenn.moloney@gmail.com>
2024-11-18 23:27:13 +11:00
Damien George
f212bbe837 all: Bump version to 1.24.0.
Signed-off-by: Damien George <damien@micropython.org>
2024-10-26 01:43:23 +11:00
Damien George
18c9abc329 lib/micropython-lib: Update submodule to latest.
This brings in:
- requests improvements with overriding headers
- use non-u versions of built-in modules, including asyncio
- fix to logging so StreamHandler calls parent constructor
- various fixes to usb-device packages
- fixes to lora sx126x and sx127x drivers
- improvements to unix-ffi/sqlite3
- support additional gap_connect arguments in aioble

Signed-off-by: Damien George <damien@micropython.org>
2024-10-25 01:26:58 +11:00
iabdalkader
4c54335195 stm32/boards/ARDUINO_OPTA: Add Opta expansion module.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-10-25 01:19:54 +11:00
iabdalkader
57bc98f499 stm32/boards/ARDUINO_NICLA_VISION: Add SE05x driver.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-10-25 01:19:48 +11:00
iabdalkader
28009a78cf stm32/boards/ARDUINO_PORTENTA_H7: Add SE05x driver.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-10-25 01:19:06 +11:00
iabdalkader
bab6a016b3 lib/arduino-lib: Update submodule.
Changes:
- Add ISO7816, APDU and SE05x package.
- Add support for Opta Expansion protocol.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-10-25 01:18:33 +11:00
iabdalkader
68f1c20145 extmod/modtls_mbedtls: Support alternate sign callbacks in Python.
This commit enables the implementation of alternative mbedTLS cryptography
functions, such as ECDSA sign and verify, in pure Python.  Alternative
functions are implemented in Python callbacks, that get invoked from
wrapper functions when needed.  The callback can return None to fall back
to the default mbedTLS function.

A common use case for this feature is with secure elements that have
drivers implemented in Python.  Currently, only the ECDSA alternate sign
function wrapper is implemented.

Tested signing with a private EC key stored on an NXP SE05x secure element.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-10-25 01:16:06 +11:00
iabdalkader
2644f577f1 extmod/modtls_mbedtls: Add a thread-global ptr for current SSL context.
This is necessary for mbedTLS callbacks that do not carry any user state,
so those callbacks can be customised per SSL context.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-10-25 01:12:36 +11:00
Damien George
09ea901317 tests/extmod: Add test to compare time_ns with time.
They should be close together.

Signed-off-by: Damien George <damien@micropython.org>
2024-10-24 23:24:09 +11:00
Damien George
1ec0c9b886 tests/extmod: Use time_ns instead of time in lfs mtime test.
Because VfsLfs2 uses time_ns to create timestamps for files, and for the
test to give consistent results it also needs to use this same function.

Signed-off-by: Damien George <damien@micropython.org>
2024-10-24 23:24:09 +11:00
Damien George
120ac0f8d2 rp2/modmachine: Re-sync time_ns offset when coming out of lightsleep.
Prior to this fix, `tests/extmod/vfs_lfs_mtime.py` would fail when run
after the `tests/ports/rp2/rp2_lightsleep.py` test, because
`time.time_ns()` would have a large and constant offset from `time.time()`.

Fix this by re-syncing the time-ns offset when coming out of lightsleep.

Signed-off-by: Damien George <damien@micropython.org>
2024-10-24 23:24:09 +11:00
Damien George
ca6aed7649 tests/extmod: Fix access of RTC class in machine.RTC test.
This previously passed on some targets that automatically import the
`machine` module in `boot.py`.

Signed-off-by: Damien George <damien@micropython.org>
2024-10-24 16:29:43 +11:00
Damien George
6d98280fda tests/extmod: Add a simple test for machine.RTC.
Tests at least that the datetime can be set and get correctly.

Signed-off-by: Damien George <damien@micropython.org>
2024-10-24 11:43:03 +11:00
Damien George
47741e2757 rp2/datetime_patch: Fix year and month offset for mktime wrapper.
Signed-off-by: Damien George <damien@micropython.org>
2024-10-24 11:22:59 +11:00
Damien George
43bd57f94b shared/timeutils: Document the range of year/month/day etc input values.
These differ to, eg, the standard `mktime()` function.

Signed-off-by: Damien George <damien@micropython.org>
2024-10-24 11:22:22 +11:00