From b7dc88f6abc58feb0fe59e0a46ffef3dbc743248 Mon Sep 17 00:00:00 2001 From: zqyhimself Date: Tue, 21 Apr 2026 14:30:58 +0800 Subject: [PATCH] fix(esp32-p4): split each P4 build into rev<3 + -p4x twin variants MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【中文】 针对 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 --- .../esp-p4-function-ev-board/config.json | 13 ++ main/boards/m5stack-tab5/config.json | 18 ++- .../waveshare/esp32-p4-nano/config.json | 14 +- .../esp32-p4-wifi6-touch-lcd-3.5/config.json | 13 ++ .../esp32-p4-wifi6-touch-lcd/config.json | 131 +++++++++++++++++- .../wireless-tag-wtp4c5mp07s/config.json | 15 +- 6 files changed, 200 insertions(+), 4 deletions(-) diff --git a/main/boards/esp-p4-function-ev-board/config.json b/main/boards/esp-p4-function-ev-board/config.json index d191f94..3790acc 100644 --- a/main/boards/esp-p4-function-ev-board/config.json +++ b/main/boards/esp-p4-function-ev-board/config.json @@ -3,6 +3,19 @@ "builds": [ { "name": "esp-p4-function-ev-board", + "sdkconfig_append": [ + "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", + "CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y", + "CONFIG_BSP_LCD_TYPE_1024_600=y", + "CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y", + "CONFIG_ESP32P4_REV_MIN_100=y" + ] + }, + { + "name": "esp-p4-function-ev-board-p4x", "sdkconfig_append": [ "CONFIG_SLAVE_IDF_TARGET_ESP32C6=y", "CONFIG_ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD=y", diff --git a/main/boards/m5stack-tab5/config.json b/main/boards/m5stack-tab5/config.json index c229ea0..2f915f8 100644 --- a/main/boards/m5stack-tab5/config.json +++ b/main/boards/m5stack-tab5/config.json @@ -3,6 +3,22 @@ "builds": [ { "name": "m5stack-tab5", + "sdkconfig_append": [ + "CONFIG_BOARD_TYPE_M5STACK_CORE_TAB5=y", + "CONFIG_CAMERA_SC202CS=y", + "CONFIG_XIAOZHI_ENABLE_ROTATE_CAMERA_IMAGE=y", + "CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_CMD_SLOT_1=13", + "CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_CLK_SLOT_1=12", + "CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_D0_SLOT_1=11", + "CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_D1_4BIT_BUS_SLOT_1=10", + "CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_D2_4BIT_BUS_SLOT_1=9", + "CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_D3_4BIT_BUS_SLOT_1=8", + "CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y", + "CONFIG_ESP32P4_REV_MIN_100=y" + ] + }, + { + "name": "m5stack-tab5-p4x", "sdkconfig_append": [ "CONFIG_BOARD_TYPE_M5STACK_CORE_TAB5=y", "CONFIG_CAMERA_SC202CS=y", @@ -16,4 +32,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/main/boards/waveshare/esp32-p4-nano/config.json b/main/boards/waveshare/esp32-p4-nano/config.json index ab5c331..2027658 100644 --- a/main/boards/waveshare/esp32-p4-nano/config.json +++ b/main/boards/waveshare/esp32-p4-nano/config.json @@ -4,6 +4,18 @@ "builds": [ { "name": "esp32-p4-nano-10.1-a", + "sdkconfig_append": [ + "CONFIG_USE_WECHAT_MESSAGE_STYLE=y", + "CONFIG_CAMERA_OV5647=y", + "CONFIG_CAMERA_OV5647_AUTO_DETECT_MIPI_INTERFACE_SENSOR=y", + "CONFIG_CAMERA_OV5647_MIPI_RAW8_800X800_50FPS=y", + "CONFIG_XIAOZHI_ENABLE_CAMERA_ENDIANNESS_SWAP=y", + "CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y", + "CONFIG_ESP32P4_REV_MIN_100=y" + ] + }, + { + "name": "esp32-p4-nano-10.1-a-p4x", "sdkconfig_append": [ "CONFIG_USE_WECHAT_MESSAGE_STYLE=y", "CONFIG_CAMERA_OV5647=y", @@ -13,4 +25,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/main/boards/waveshare/esp32-p4-wifi6-touch-lcd-3.5/config.json b/main/boards/waveshare/esp32-p4-wifi6-touch-lcd-3.5/config.json index 50f6408..c544f59 100644 --- a/main/boards/waveshare/esp32-p4-wifi6-touch-lcd-3.5/config.json +++ b/main/boards/waveshare/esp32-p4-wifi6-touch-lcd-3.5/config.json @@ -4,6 +4,19 @@ "builds": [ { "name": "esp32-p4-wifi6-touch-lcd-3.5", + "sdkconfig_append": [ + "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", + "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", + "CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_3_5=y", + "CONFIG_CAMERA_OV5647=y", + "CONFIG_CAMERA_OV5647_AUTO_DETECT_MIPI_INTERFACE_SENSOR=y", + "CONFIG_XIAOZHI_ENABLE_CAMERA_ENDIANNESS_SWAP=y", + "CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y", + "CONFIG_ESP32P4_REV_MIN_100=y" + ] + }, + { + "name": "esp32-p4-wifi6-touch-lcd-3.5-p4x", "sdkconfig_append": [ "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", diff --git a/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/config.json b/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/config.json index 483ad2d..a434efe 100644 --- a/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/config.json +++ b/main/boards/waveshare/esp32-p4-wifi6-touch-lcd/config.json @@ -4,6 +4,22 @@ "builds": [ { "name": "esp32-p4-wifi6-touch-lcd-4b", + "sdkconfig_append": [ + "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", + "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", + "CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4B=y", + "CONFIG_USE_WECHAT_MESSAGE_STYLE=n", + "CONFIG_USE_DEVICE_AEC=y", + "CONFIG_CAMERA_OV5647=y", + "CONFIG_CAMERA_OV5647_AUTO_DETECT_MIPI_INTERFACE_SENSOR=y", + "CONFIG_CAMERA_OV5647_MIPI_RAW8_800X800_50FPS=y", + "CONFIG_XIAOZHI_ENABLE_CAMERA_ENDIANNESS_SWAP=y", + "CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y", + "CONFIG_ESP32P4_REV_MIN_100=y" + ] + }, + { + "name": "esp32-p4-wifi6-touch-lcd-4b-p4x", "sdkconfig_append": [ "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", @@ -18,6 +34,22 @@ }, { "name": "esp32-p4-wifi6-touch-lcd-4.3", + "sdkconfig_append": [ + "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", + "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", + "CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4_3=y", + "CONFIG_USE_WECHAT_MESSAGE_STYLE=n", + "CONFIG_USE_DEVICE_AEC=y", + "CONFIG_CAMERA_OV5647=y", + "CONFIG_CAMERA_OV5647_AUTO_DETECT_MIPI_INTERFACE_SENSOR=y", + "CONFIG_CAMERA_OV5647_MIPI_RAW8_800X800_50FPS=y", + "CONFIG_XIAOZHI_ENABLE_CAMERA_ENDIANNESS_SWAP=y", + "CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y", + "CONFIG_ESP32P4_REV_MIN_100=y" + ] + }, + { + "name": "esp32-p4-wifi6-touch-lcd-4.3-p4x", "sdkconfig_append": [ "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", @@ -49,8 +81,41 @@ "CONFIG_ESP32P4_REV_MIN_100=y" ] }, + { + "name": "esp32-p4-wifi6-touch-lcd-7b-p4x", + "sdkconfig_append": [ + "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", + "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", + "CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_7B=y", + "CONFIG_USE_WECHAT_MESSAGE_STYLE=n", + "CONFIG_USE_DEVICE_AEC=y", + "CONFIG_CAMERA_OV5647=y", + "CONFIG_CAMERA_OV5647_AUTO_DETECT_MIPI_INTERFACE_SENSOR=y", + "CONFIG_CAMERA_OV5647_MIPI_RAW8_800X800_50FPS=y", + "CONFIG_XIAOZHI_ENABLE_CAMERA_ENDIANNESS_SWAP=y", + "CONFIG_ESPTOOLPY_FLASHSIZE_32MB=y", + "CONFIG_PARTITION_TABLE_CUSTOM_FILENAME=\"partitions/v2/32m.csv\"", + "CONFIG_ESPTOOLPY_FLASH_MODE_AUTO_DETECT=n" + ] + }, { "name": "esp32-p4-wifi6-touch-lcd-3.4c", + "sdkconfig_append": [ + "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", + "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", + "CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_3_4C=y", + "CONFIG_USE_WECHAT_MESSAGE_STYLE=n", + "CONFIG_USE_DEVICE_AEC=y", + "CONFIG_CAMERA_OV5647=y", + "CONFIG_CAMERA_OV5647_AUTO_DETECT_MIPI_INTERFACE_SENSOR=y", + "CONFIG_CAMERA_OV5647_MIPI_RAW8_800X800_50FPS=y", + "CONFIG_XIAOZHI_ENABLE_CAMERA_ENDIANNESS_SWAP=y", + "CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y", + "CONFIG_ESP32P4_REV_MIN_100=y" + ] + }, + { + "name": "esp32-p4-wifi6-touch-lcd-3.4c-p4x", "sdkconfig_append": [ "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", @@ -65,6 +130,22 @@ }, { "name": "esp32-p4-wifi6-touch-lcd-4c", + "sdkconfig_append": [ + "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", + "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", + "CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4C=y", + "CONFIG_USE_WECHAT_MESSAGE_STYLE=n", + "CONFIG_USE_DEVICE_AEC=y", + "CONFIG_CAMERA_OV5647=y", + "CONFIG_CAMERA_OV5647_AUTO_DETECT_MIPI_INTERFACE_SENSOR=y", + "CONFIG_CAMERA_OV5647_MIPI_RAW8_800X800_50FPS=y", + "CONFIG_XIAOZHI_ENABLE_CAMERA_ENDIANNESS_SWAP=y", + "CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y", + "CONFIG_ESP32P4_REV_MIN_100=y" + ] + }, + { + "name": "esp32-p4-wifi6-touch-lcd-4c-p4x", "sdkconfig_append": [ "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", @@ -79,6 +160,22 @@ }, { "name": "esp32-p4-wifi6-touch-lcd-7", + "sdkconfig_append": [ + "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", + "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", + "CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_7=y", + "CONFIG_USE_WECHAT_MESSAGE_STYLE=n", + "CONFIG_USE_DEVICE_AEC=y", + "CONFIG_CAMERA_OV5647=y", + "CONFIG_CAMERA_OV5647_AUTO_DETECT_MIPI_INTERFACE_SENSOR=y", + "CONFIG_CAMERA_OV5647_MIPI_RAW8_800X800_50FPS=y", + "CONFIG_XIAOZHI_ENABLE_CAMERA_ENDIANNESS_SWAP=y", + "CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y", + "CONFIG_ESP32P4_REV_MIN_100=y" + ] + }, + { + "name": "esp32-p4-wifi6-touch-lcd-7-p4x", "sdkconfig_append": [ "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", @@ -93,6 +190,22 @@ }, { "name": "esp32-p4-wifi6-touch-lcd-8", + "sdkconfig_append": [ + "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", + "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", + "CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_8=y", + "CONFIG_USE_WECHAT_MESSAGE_STYLE=n", + "CONFIG_USE_DEVICE_AEC=y", + "CONFIG_CAMERA_OV5647=y", + "CONFIG_CAMERA_OV5647_AUTO_DETECT_MIPI_INTERFACE_SENSOR=y", + "CONFIG_CAMERA_OV5647_MIPI_RAW8_800X800_50FPS=y", + "CONFIG_XIAOZHI_ENABLE_CAMERA_ENDIANNESS_SWAP=y", + "CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y", + "CONFIG_ESP32P4_REV_MIN_100=y" + ] + }, + { + "name": "esp32-p4-wifi6-touch-lcd-8-p4x", "sdkconfig_append": [ "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", @@ -107,6 +220,22 @@ }, { "name": "esp32-p4-wifi6-touch-lcd-10.1", + "sdkconfig_append": [ + "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", + "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", + "CONFIG_BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_10_1=y", + "CONFIG_USE_WECHAT_MESSAGE_STYLE=n", + "CONFIG_USE_DEVICE_AEC=y", + "CONFIG_CAMERA_OV5647=y", + "CONFIG_CAMERA_OV5647_AUTO_DETECT_MIPI_INTERFACE_SENSOR=y", + "CONFIG_CAMERA_OV5647_MIPI_RAW8_800X800_50FPS=y", + "CONFIG_XIAOZHI_ENABLE_CAMERA_ENDIANNESS_SWAP=y", + "CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y", + "CONFIG_ESP32P4_REV_MIN_100=y" + ] + }, + { + "name": "esp32-p4-wifi6-touch-lcd-10.1-p4x", "sdkconfig_append": [ "CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0", "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", @@ -120,4 +249,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/main/boards/wireless-tag-wtp4c5mp07s/config.json b/main/boards/wireless-tag-wtp4c5mp07s/config.json index 272ecfd..6cbe9d6 100644 --- a/main/boards/wireless-tag-wtp4c5mp07s/config.json +++ b/main/boards/wireless-tag-wtp4c5mp07s/config.json @@ -3,6 +3,19 @@ "builds": [ { "name": "wireless-tag-wtp4c5mp07s", + "sdkconfig_append": [ + "CONFIG_USE_WECHAT_MESSAGE_STYLE=n", + "CONFIG_SLAVE_IDF_TARGET_ESP32C5=y", + "CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=n", + "CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=10", + "CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=24", + "CONFIG_WIFI_RMT_STATIC_TX_BUFFER_NUM=10", + "CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y", + "CONFIG_ESP32P4_REV_MIN_100=y" + ] + }, + { + "name": "wireless-tag-wtp4c5mp07s-p4x", "sdkconfig_append": [ "CONFIG_USE_WECHAT_MESSAGE_STYLE=n", "CONFIG_SLAVE_IDF_TARGET_ESP32C5=y", @@ -13,4 +26,4 @@ ] } ] -} \ No newline at end of file +}