216 Commits

Author SHA1 Message Date
PGNetHun
b75129d314
Add ESP32 boards: LILYGO T-Display and LILYGO T-Watch 2020 V1/V2/V3 (#93) 2025-03-15 19:05:16 +01:00
PGNetHun
750c3ad0fe
Fix ESP32 board variant build parameter, and fix M5Core2 make (#91) 2025-03-15 17:59:53 +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
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
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
Damien George
44ed1c20ce esp32: Disable hardware stack protection on ESP32-C6.
The same as fee9d66e3a7308bd9edffb2624b52f4e04ecc4f3 but for C6.

Fixes issue #15667.

Signed-off-by: Damien George <damien@micropython.org>
2024-10-11 12:53:10 +11:00
Angus Gratton
82e69df33e esp32: Apply the LWIP active TCP socket limit.
This is a workaround for a bug in ESP-IDF where the configuration setting
for maximum active TCP sockets (PCBs) is not applied.

Fixes cases where a lot of short-lived TCP connections can cause:

- Excessive memory usage (unbounded number of sockets in TIME-WAIT).
- Much higher risk of stalled connections due to repeated port numbers. The
  maximum number of active TCP PCBs is reduced from 16 to 12 to further
  reduce this risk (trade-off against possibility of TIME-WAIT
  Assassination as described in RFC1337).

This is not a watertight fix for the second point: a peer can still reuse a
port number while a previous socket is in TIME-WAIT, and LWIP will reject
that connection (in an RFC compliant way) causing the peer to stall.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-10-10 17:55:03 +11:00
Andrew Leech
55dc482d3e esp32/sdkconfig: Disable PMP_IDRAM_SPLIT to fix native emit support.
Signed-off-by: Andrew Leech <andrew@alelec.net>
2024-10-09 23:34:27 +11:00
Matt Trentini
ce397d85af esp32/boards/UM_TINYC6: Add new UM C6 board definition.
Signed-off-by: Matt Trentini <matt.trentini@gmail.com>
2024-10-09 23:32:47 +11:00
Matt Trentini
ee92198c8a esp32/boards/M5STACK_NANOC6: Add new M5Stack C6 board definition.
Signed-off-by: Matt Trentini <matt.trentini@gmail.com>
2024-10-09 23:32:26 +11:00
Andrew Leech
1bd312d737 esp32/boards/ESP32_GENERIC_C6: Add new generic esp32c6 board.
Signed-off-by: Andrew Leech <andrew@alelec.net>
2024-10-09 23:32:10 +11:00
Andrew Leech
6d799378ba esp32: Add support for esp32c6.
This commit adds general support for ESP32-C6 SoCs.

Signed-off-by: Andrew Leech <andrew@alelec.net>
2024-10-09 23:29:38 +11:00
Andrew Leech
11bc7d0fc1 esp32/boards: Update ARDUINO_NANO_ESP32 USB configuration.
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-07 11:06:57 +11:00
Andrew Leech
5ae622ef7b esp32: Add automatic bootloader handling for S2 and S3.
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-07 11:06:57 +11:00
Seon Rozenblum
b08ddbba59 esp32/boards/UM_RGBTOUCH_MINI: Fix compile error with missing modules.
Signed-off-by: Seon Rozenblum <seon@unexpectedmaker.com>
2024-09-20 15:57:52 +10:00
shiggy
6c73573b34 esp32/boards/OLIMEX_ESP32_EVB: Add Olimex ESP32 EVB board definition.
This is for boards not covered by the Olimex ESP32 PoE implementation.  The
major setting is about the PHY interface configuration.

Tested with esp-idf v5.0.4 and Olimex ESP32 EVB boards.

Signed-off-by: shiggy <mail@shiggytech.de>
2024-09-19 15:56:27 +10:00
Seon Rozenblum
9b5f99eb59 esp32/boards: Add UM_OMGS3 and UM_RGBTOUCH_MINI board definitions.
This adds two new UM boards: OMGS3 and RGB Touch Mini.  Also fixed the
NanoS3 deploy info.

Signed-off-by: Seon Rozenblum <seon@unexpectedmaker.com>
2024-09-19 15:13:35 +10:00
Seon Rozenblum
d775db72b9 esp32/boards/UM_FEATHERS3NEO: Add FeatherS3 Neo board definition.
Signed-off-by: Seon Rozenblum <seon@unexpectedmaker.com>
2024-09-19 15:06:04 +10:00
Angus Gratton
fee9d66e3a esp32: Disable hardware stack protection on ESP32-C3.
Workaround for what appears to be an upstream issue:
https://github.com/espressif/esp-idf/issues/14456

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-09-04 15:15:26 +10:00
Angus Gratton
a6c35aeee8 esp32: Fix ARDUINO_NANO_ESP32 build configuration.
Regression introduced by 5e692d04 now at MICROPY_HW_USB_CDC is set.

The ARDUINO_NANO_ESP32 specifically builds shared/tinyusb/mp_usb_cdc.c
for the 1200bps reset behaviour. However MicroPython esp32 doesn't yet
use the rest of the shared/tinyusb functionality.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-09-04 11:06:21 +10:00
Matt Trentini
b704ff66c3 esp32/boards: Remove all IDF3 variants.
IDF 3 builds are very old now (it seems like the last successful builds are
from 2021), and the current IDF 5 is stable.  So remove IDF 3 variants.

Signed-off-by: Matt Trentini <matt.trentini@gmail.com>
2024-08-20 12:49:12 +10:00
Elvis Pfützenreuter
e9814e987b esp32/boards/LILYGO_TTGO_LORA32: Add OLED rst seq for board v1.0.
Signed-off-by: Elvis Pfützenreuter <epxx@epxx.co>
2024-08-16 16:28:46 +10:00
Matt Trentini
43f40f797f esp32/boards/M5STACK_ATOMS3_LITE: Add M5Stack AtomS3 Lite board.
Signed-off-by: Matt Trentini <matt.trentini@gmail.com>
2024-08-16 16:17:43 +10:00
Matt Trentini
092078852e esp32/boards: Remove BLE from list of features for ESP32-S2.
Fixes issue #15618.

Signed-off-by: Matt Trentini <matt.trentini@gmail.com>
2024-08-16 13:36:22 +10:00
Angus Gratton
e71a324c14 esp32: Restore ESP32-C3 brownout detector settings to IDF defaults.
Commit a66bd7a48925d318e1dd6ada756df947ffacdc12 added the
ESP32_GENERIC_C3_USB board (now merged with ESP32_GENERIC_C3) and changed
the brownout detector from the default level 7 (~2.51V) to level 4
(~2.92V).

Raising the level again seems to fix random BOD resets on some of the
cheaper ESP32-C3 dev boards (that likely skimp on power supply
capacitance).

Specifically, this change prevents random resets running multi_bluetooth
tests on ESP32-C3 "SuperMini" board.

Also removed from the LOLIN_C3_MINI board as it seems this config is a copy
of the generic one.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-08-16 13:21:04 +10:00
Angus Gratton
0a11832cdd esp32: Use the ESP-IDF default esp_console config for ESP32-C3.
The ESP-IDF default on C3 is primary UART0, secondary USB serial/jtag.
Previously MicroPython configured the primary as USB Serial/JTAG and
manually worked with the UART0 console. However UART0 console stopped
working this way in v5.2.2.

The big change is that CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is no longer set,
as primary console is UART0. However
CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG is set and IDF provides a
macro CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG_ENABLED which is set if either
primary or secondary esp_console is USB serial/jtag. So need to use that
macro instead.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-08-14 15:58:18 +10:00
Angus Gratton
10601b04ea esp32/boards: Build using newlib nano formatting functions.
Saves code size, MicroPython doesn't appear to rely on any of the missing
formatters (64-bit integers, c99-style named arguments).

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-08-14 15:57:52 +10:00
Angus Gratton
052693e449 esp32/boards: Reduce IRAM usage.
Disable unnecessary IRAM ISR functionality.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-08-14 15:57:16 +10:00
Damien George
43ebbec0c5 esp32: Rework board variant support to require mpconfigvariant file.
This commit reworks board variants on the esp32 port.  It's a simple change
that moves the board variant configuration from an "if" statement within
`mpconfigboard.cmake` into separate files for each variant, with the name
of the variant encoded in the filename: `mpconfigvariant_VARIANT.cmake`.

Optionally, the base variant can have its own options in
`mpconfigvariant.cmake` (this is an optional file, but all other variants
of the base must have a corresponding mpconfigvariant file).

There are two benefits to this:
- The build system now gives an error if the variant that you specified
  doesn't exist (because the mpconfigvariant file must exist with the
  variant name you specify).
- No more error-prone if-logic needed in the .cmake files.

The way to build a variant is unchanged, still via:

    $ make BOARD_VARIANT=VARIANT

Signed-off-by: Damien George <damien@micropython.org>
2024-06-28 11:23:55 +10:00
Damien George
84a8f7ea6d shared/tinyusb: Allow ports to use 1200bps-touch without other CDC code.
This fixes the build for some esp32 and nrf boards (for example
`ARDUINO_NANO_33_BLE_SENSE` and `ARDUINO_NANO_ESP32`) due to commit
c98789a6d8e05acb608afe4b30cf3ca563419b2d.  Changes are:

- Allow the CDC TX/RX functions in `mp_usbd_cdc.c` to be enabled
  separately to those needed for `MICROPY_HW_USB_CDC_1200BPS_TOUCH`.

- Add `MICROPY_EXCLUDE_SHARED_TINYUSB_USBD_CDC` option as a temporary
  workaround for the nrf port to use.

- Declare `mp_usbd_line_state_cb()` in a header as a public function.

- Fix warning with type cast of `.callback_line_state_changed`.

Signed-off-by: Damien George <damien@micropython.org>
2024-06-02 23:27:33 +10:00
Andrew Leech
c98789a6d8 shared/tinyusb: Add common CDC TX/RX functions.
There are a few TinyUSB CDC functions used for stdio that are currently
replicated across a number of ports.  Not surprisingly in a couple of cases
these have started to diverge slightly, with additional features added to
one of them.

This commit consolidates a couple of key shared functions used directly by
TinyUSB based ports, and makes those functions available to all.

Signed-off-by: Andrew Leech <andrew@alelec.net>
2024-05-31 19:45:42 +10:00
Jim Mussared
acbdbcd95e esp32: Workaround IDF issue placing ISR ringbuf functions in IRAM.
This workaround makes sure that all ringbuf functions that may be called
from an ISR are placed in IRAM.  See
https://github.com/espressif/esp-idf/issues/13378

Note that this means that all esp32-og builds get non-ISR ringbuf functions
placed in flash now, whereas previously it was just the spiram variant.
This might be a good thing (e.g. free up some IRAM for native/viper).

Fixes issue #14005.

This work was funded through GitHub Sponsors.

Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2024-03-22 12:14:27 +11:00
Stanislav Ponomarev
bedb649edf esp32/boards/ESP32_GENERIC_S3: Add 4MiB partitioning board variant.
Added a 4MiB flash partitioning variant for ESP32S3: adds support for 4MiB
discrete flash boards or ESP32-S3FH4R2 with embedded 4MiB flash based ones.

Tested on the waveshare ESP32-S3 Mini w/ESP32-S3FH4R2.

Signed-off-by: Stanislav Ponomarev <me@stasponomarev.com>
2024-03-09 10:37:46 +11:00
Daniël van de Giessen
27279e69b4 esp32: Add IDF-version-specific sdkconfig.
The new IDF v5.2 deprecated the task cleanup callback we use, so support
for the new option has been implemented in the previous commit.  This also
requires a change in the sdkconfig, via a new variable
${SDKCONFIG_IDF_VERSION_SPECIFIC} which is used in all mpconfigboard.cmake
files to include an extra sdkconfig file based on the IDF version in use.

Signed-off-by: Daniël van de Giessen <daniel@dvdgiessen.nl>
2024-03-08 14:05:39 +11:00
MikeTeachman
0b145fdc2d esp32/machine_i2s: Integrate new I2S IDF driver.
The legacy I2S "shim" is removed and replaced by the new I2S driver.  The
new driver fixes a bug where mono audio plays only in one channel.

Application code size is reduced by 2672 bytes with this change.  Tested on
ESP32, ESP32+spiram, ESP32-S3 using example code from
https://github.com/miketeachman/micropython-i2s-examples

Signed-off-by: Mike Teachman <mike.teachman@gmail.com>
2024-03-08 13:31:02 +11:00
Sebastian Romero
27c0992343 esp32/boards: Add missing named digital pins for Arduino Nano ESP32.
Signed-off-by: Sebastian Romero <s.romero@arduino.cc>
2024-03-08 13:10:30 +11:00
Damien George
cd66aa05cf esp32: Increase NimBLE task stack size and overflow detection headroom.
The Python BLE IRQ handler will most likely run on the NimBLE task, so its
C stack must be large enough to accommodate reasonably complicated Python
code (eg a few call depths).  So increase this stack size.

Also increase the headroom from 1024 to 2048 bytes.  This is needed because
(1) the esp32 architecture uses a fair amount of stack in general; and (2)
by the time execution gets to setting the Python stack top via
`mp_stack_set_top()` in this interlock code, about 600 bytes of stack are
already used, which reduces the amount available for Python.

Fixes issue #12349.

Signed-off-by: Damien George <damien@micropython.org>
2024-02-16 10:19:26 +11:00
Joey232
3e48d24576 esp32/boards/UM_FEATHERS3: Use read_uv() for accurate battery voltage.
Use read_uv() to get the battery voltage because it uses the on-chip
calibraton values.

Signed-off-by: Joey232 <Joey@jsconsulting.com>
2024-01-31 14:24:16 +11:00
iabdalkader
4a2e510a87 ports: Add LED pin aliases for all Arduino boards.
The standard Arduino pinout uses LEDR/G/B and LED_BUILTIN (if available).
This patch adds aliases to match the standard pinout, while retaining
LED_RED/GREEN/BLUE for compatibility with existing scripts and examples.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-01-26 14:11:42 +11:00
Daniël van de Giessen
d014c82826 extmod/nimble: Do not set GAP device name after sync.
Instead, configure the default once at compile-time. This means the GAP
name will no longer be set to default after re-initializing Bluetooth.

Signed-off-by: Daniël van de Giessen <daniel@dvdgiessen.nl>
2023-12-22 16:07:02 +11:00
Damien George
d0758d8a33 esp32/boards/ESP32_GENERIC: Disable network.LAN and VM-opt on D2WD.
To reduce firmware size, because IDF v5.0.4 has increased in size.

Signed-off-by: Damien George <damien@micropython.org>
2023-12-11 13:00:06 +11:00
IhorNehrutsa
495be71d56 esp32/machine_dac: Support one-shot mode of driver.
And simplify board configuration of DAC by using SOC_DAC_SUPPORTED.

Signed-off-by: IhorNehrutsa <Ihor.Nehrutsa@gmail.com>
2023-12-11 12:57:43 +11:00
Carlosgg
c393cd7e48 esp32/boards/sdkconfig.base: Disable unused mbedtls options.
Disable unused EC curves and default certificate bundle which is not
implemented in MicroPython.  This reduces the firmware size significantly.

This follows commit 68f166dae9ad6dfd94038d5f4394defbb44238af.

Signed-off-by: Carlos Gil Gonzalez <carlosgilglez@gmail.com>
2023-12-11 12:06:35 +11:00
Scott Zhao
1323a71823 esp32/boards/UM_TINYPICO: Fix typo in baudrate instructions.
The installation instructions for ESP32 TinyPICO board contained a typo
that used a non-standard baud rate 912600 instead of 921600.  This made the
upload command fail on some Windows computers.

Signed-off-by: Scott Zhao <zhaomh1998@outlook.com>
2023-12-06 13:46:04 +11:00
Damien George
69089a532e esp32/boards: Enable further IRAM saving opts to fit ESP32-SPIRAM fw.
The amount of free IRAM in ESP32 SPIRAM builds is very small and went over
the limit due to commit 30b0ee34d3a7cf6f967387e783268c8a939e04c8.  This
commit enables further optimisations to reduce IRAM usage.

Signed-off-by: Damien George <damien@micropython.org>
2023-12-06 12:35:45 +11:00
Carlosgg
30b0ee34d3 esp32: Enable mbedtls cert time validation.
Signed-off-by: Carlos Gil <carlosgilglez@gmail.com>
2023-12-04 10:50:42 +11:00
Damien George
a85c3c45a6 esp32/boards/ESP32_GENERIC: Reduce size of D2WD variant to fit in flash.
Signed-off-by: Damien George <damien@micropython.org>
2023-11-23 10:39:12 +11:00
Angus Gratton
917b56137f esp32/boards/sdkconfig.base: Fix increasing log level via esp.osdebug().
At some point the config changed such that no messages above Error level
were compiled into the final binary.

Fixes issue #12815.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-11-22 16:48:15 +11:00
Sebastian Romero
6f0193335a ports: Fix incorrect identifiers on Arduino boards.
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-17 15:24:15 +11:00