Files
xiaozhi-esp32/main/boards/esp-p4-function-ev-board
zqyhimself b7dc88f6ab fix(esp32-p4): split each P4 build into rev<3 + -p4x twin variants
【中文】
针对 PR #1943 的评审建议(Y1hsiaochunnn + laride):当前市面的 ESP32-P4
几乎都是 rev v1.x / v2.x 硅片,IDF 默认 REV_MIN_301 会让 bootloader 被
bootloader.rev3.ld 链到高位 HP_SRAM,导致在存量硬件上第一条指令就 panic。
未来 ESP32-P4X(rev >= 3.x)又需要保留默认配置,因此不能在所有 P4 board
上一刀切地写死 CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y。

方案:对所有 P4 config.json 的每个现有变体,添加 REV_LESS_V3 + REV_MIN_100,
并复制一份加 `-p4x` 后缀的孪生变体(不加上述两行,保持 IDF 默认 REV_MIN_301
以支持未来 P4X 芯片)。

受影响的 6 份 config.json,共 14 个原变体,复制后新增 14 个 `-p4x` 变体:
- main/boards/waveshare/esp32-p4-wifi6-touch-lcd/config.json(8 -> 16 变体,
  其中 7b 变体保留 32MB flash + custom 分区配置)
- main/boards/waveshare/esp32-p4-wifi6-touch-lcd-3.5/config.json
- main/boards/waveshare/esp32-p4-nano/config.json
- main/boards/esp-p4-function-ev-board/config.json
- main/boards/wireless-tag-wtp4c5mp07s/config.json
- main/boards/m5stack-tab5/config.json

---

[English]
Per review on PR #1943 (Y1hsiaochunnn + laride): almost all ESP32-P4 silicon
on the market today is rev v1.x / v2.x. IDF's default REV_MIN_301 links the
bootloader via bootloader.rev3.ld into the upper HP_SRAM window, which those
chips cannot execute; the CPU panics on the first opcode. Future ESP32-P4X
(rev >= 3.x) still needs the IDF default, so we cannot hard-code
CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y across all P4 boards.

Strategy: for each existing variant in every P4 config.json, add REV_LESS_V3
+ REV_MIN_100 to target current silicon, and add a `-p4x` twin variant
without those two configs (keeping IDF default REV_MIN_301) for future P4X
chips.

Affects 6 config.json files, 14 original variants duplicated into 14 `-p4x`
twins:
- main/boards/waveshare/esp32-p4-wifi6-touch-lcd/config.json (8 -> 16
  variants; the 7b variant keeps its 32 MB flash + custom partition configs)
- main/boards/waveshare/esp32-p4-wifi6-touch-lcd-3.5/config.json
- main/boards/waveshare/esp32-p4-nano/config.json
- main/boards/esp-p4-function-ev-board/config.json
- main/boards/wireless-tag-wtp4c5mp07s/config.json
- main/boards/m5stack-tab5/config.json
2026-04-21 14:30:58 +08:00
..

ESP-P4-Function-EV-Board

Board support for ESP-P4-Function-EV-Board. WiFi uses ESPHosted via the onboard ESP32C6. LCD is supported via the official MIPIDSI LCD adapter.

Features

  • WiFi: esp_wifi_remote + esp_hosted (SDIO) with ESP32C6 coprocessor
  • Display: 7" MIPIDSI LCD (1024×600) via adapter; can also run headless
  • Audio: ES8311 codec with speaker and microphone support
  • Touch: GT911 capacitive touch controller
  • SD Card: MicroSD card support (MMC mode)
  • Camera: MIPI-CSI camera interface with fallback DVP configuration (OV5647, SC2336 sensors supported)
  • USB: USB host/device support
  • SPIFFS: Built-in flash filesystem support
  • Fonts: Custom font support with Unicode characters (Vietnamese, Chinese, etc.)

Configure

In menuconfig: Xiaozhi Assistant -> Board Type -> ESP-P4-Function-EV-Board

Ensure these are set (auto-set when building via config.json):

  • CONFIG_SLAVE_IDF_TARGET_ESP32C6=y
  • CONFIG_ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD=y
  • CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE=y
  • CONFIG_ESP_HOSTED_SDIO_4_BIT_BUS=y

LCD Connection (from Espressif user guide)

  • Connect the LCD adapter board J3 to the boards MIPI DSI connector (reverse ribbon).
  • Wire RST_LCD (adapter J6) to GPIO27 (board J1).
  • Wire PWM (adapter J6) to GPIO26 (board J1).
  • Optionally power the LCD adapter via its USB or provide 5V and GND from the board.

These pins are pre-configured in config.h as PIN_NUM_LCD_RST=GPIO27 and DISPLAY_BACKLIGHT_PIN=GPIO26. Resolution is set to 1024×600.

Build (example)

idf.py set-target esp32p4
idf.py menuconfig
idf.py build

Tip: In menuconfig, choose Xiaozhi Assistant -> Board Type -> ESP-P4-Function-EV-Board. If building a release via scripts, the config.json in this folder appends the required Hosted options.