Skip to content

Retire boards/: every board is upstream's, plus fragments and two small variants - #29

Merged
bdbarnett merged 3 commits into
mainfrom
step5/variants
Oct 6, 2026
Merged

bdbarnett merged 3 commits into
mainfrom
step5/variants

Conversation

@bdbarnett

Copy link
Copy Markdown
Contributor

Step 5 of the build plan. boards/esp32/ is gone, and building for any board we use is one build_mp.py line on an upstream board. The newcomer's guide has the command for each.

The four old boards' settings sorted into three homes:

  • Every S3 and every P4 get variants/esp32/sdkconfig.esp32s3 (PSRAM, Wi-Fi and lwIP tuning, flash coredump) and sdkconfig.esp32p4 (NimBLE over the C6, chunked cache writeback). The S3 also gets partitions.esp32s3.csv, upstream's table plus a coredump partition. build_mp.py now finds a partitions.csv by the same convention as the fragments, and autosize grows it.
  • Modules carry their own: usbif's host settings and its TinyUSB/MSC defines (Carry usbif's own build settings: sdkconfig fragments and compile definitions usbif#52), and cameraif's OV5647 driver (sdkconfig.esp32p4: the OV5647 driver settings, carried by the module cameraif#9).
  • Two board variants of ESP32_GENERIC_S3, each an mpconfigvariant.cmake that includes upstream's SPIRAM_OCT plus a fragment: LCD_7 (cache and tick tuning) and T_EMBED (flash auto-suspend). The plan said one variant. The T-Embed needs its own because IDF supports auto-suspend only on particular flash chips, so it can't be a chip-wide setting.

Proven on the bench, 2026-10-05, all built with --modules all:

  • P4 WIFI6 DEV-KIT (C6_WIFI, 16 MB) and P4 Touch-LCD-4B (PRE_REV3_C6_WIFI, 32 MB): every module imports, castif included. Wi-Fi through the C6 scans and BLE comes up. The panel detects its OV5647 and captures a JPEG.
  • S3 LCD-7 (LCD_7, 8 MB): every module imports except castif (P4-only), the coredump partition is there, and Wi-Fi and BLE work. lv_test_timer.py and boxlines.py run clean on the glass, after DotClockFramebuffer: keep both panel buffers in step with what was painted displayif#46.
  • WT32-SC01 Plus, a board new to us (upstream default variant, N16R2 with 2 MB quad PSRAM, 16 MB): same imports. lv_test_timer.py runs clean on the glass after wt32sc01-plus: pins from the datasheet, freq=, and a 10 MHz bus pydevices#122.
  • The final sdkconfigs show each layer landing in order. For example, the LCD-7's 16 KB TCP window overrides the S3's 32 KB.

The T-Embed was built (its sdkconfig has auto-suspend and keeps the default 100 Hz tick) but wasn't attached, so it hasn't booted.

modules.lock moves cameraif, displayif, usbif and pydevices to the commits this was proven with.

@bdbarnett
bdbarnett merged commit 212c10f into main Oct 6, 2026
@bdbarnett
bdbarnett deleted the step5/variants branch October 6, 2026 02:16
bdbarnett added a commit that referenced this pull request Oct 19, 2026
…ts a wedge (#69)

host_stop() gave teardown 200 ticks before calling the host wedged. At
CONFIG_FREERTOS_HZ=100 that is 2 s; at 1000 Hz, which the ESP32-S3-Touch-LCD-7's
firmware runs, it is 200 ms, while teardown with a device attached takes about
310 ms. Every such stop was reported as a wedge and the next host_start()
refused, whether the device had been opened or not (#29).

The stop wait is now USBIF_HOST_STOP_WAIT_MS (6 s, above teardown's own worst
case), and every other wait that counted vTaskDelay(1) calls (interface
release retries, CDC and MIDI OUT waits, MSC's per-stage timeout) is bounded in
milliseconds through usbif_ticks.h. Teardown's log lines carry the time since
it began.

Fixes #29
bdbarnett added a commit that referenced this pull request Oct 19, 2026
…#29)

An esp32 build with audioif and audiodsp checked out anywhere but side by
side (git worktrees linked into a module directory, say) left _audioif out
of the image with only a CMake status line, so audiodev quietly fell back
to machine.I2S.

Both build files now look for audiodsp first among the user C modules the
build was given (USER_C_MODULES, which on 1.29 includes the manifests'
c_module()s; on a Make port also one level inside each entry, for the
parent-directory form), then beside this directory. When it is in neither
place the build fails, naming the fix: add audiodsp to the modules, or set
AUDIOPUMP_AUDIODSP_DIR / AUDIODSP_DIR. A non-esp32 CMake port still skips
this module as before.

Fixes #28.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant