[ESP32P4r3] Add support for ESP32-P4 rev3

This commit is contained in:
TD-er
2026-04-20 17:12:20 +02:00
parent 8554859156
commit 5d6046b5c2
6 changed files with 75 additions and 10 deletions
+39
View File
@@ -0,0 +1,39 @@
{
"build": {
"core": "esp32",
"extra_flags": [
"-DARDUINO_TASMOTA -DESP32P4R3 -DESP32_16M -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE"
],
"f_cpu": "400000000L",
"f_flash": "80000000L",
"f_psram": "200000000L",
"flash_mode": "qio",
"mcu": "esp32p4",
"chip_variant": "esp32p4",
"variant": "esp32p4",
"partitions": "boards/partitions/esp32_partition_app4096k_spiffs8124k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"openthread",
"ethernet"
],
"debug": {
"openocd_target": "esp32p4.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-P4 rev.3 16M Flash, ESPEasy 4096k Code/OTA 8M FS",
"upload": {
"flash_size": "16MB",
"maximum_ram_size": 768000,
"maximum_size": 16777216,
"require_upload_port": true,
"speed": 1500000
},
"url": "https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32p4/esp32-p4-function-ev-board/index.html",
"vendor": "Espressif"
}
+6 -2
View File
@@ -43,7 +43,11 @@ ESPEasy does support a number of variants of the processors manufactured by Espr
* **ESP32-H21**
* **ESP32-H4**
* **ESP32-P4** Support added: 2026-01-08
* **ESP32-P4rev3** ❌ (support planned)
* **ESP32-P4rev3** Support added: 2026-04-20
.. note::
ESP32-P4 rev. 1.x was renamed by Espressif to "ESP32-P4 ES" as in "Engineering Sample". The newer 'rev.3.x' silicon is now named "ESP32-P4", though some pages on the Espressif site refer to this as "ESP32-P4X".
It is unclear yet what will be the common naming schema for these. Both silicon revisions do require different build files.
.. note::
@@ -131,7 +135,7 @@ ESPEasy does support a number of variants of the processors manufactured by Espr
- 2023/11
- 2026/01
- ❌
- 2026/01
- 2026/01 (v3.x:2026/04)
* - Introduction
- 2014
- 2016
+1
View File
@@ -31,6 +31,7 @@ extra_configs =
platformio_esp32c6_envs.ini
platformio_esp32c61_envs.ini
platformio_esp32p4_envs.ini
platformio_esp32p4r3_envs.ini
;default_envs = normal_ESP32_4M
+14
View File
@@ -0,0 +1,14 @@
[esp32p4r3_common_LittleFS]
extends = esp32p4_common_LittleFS
build_flags = ${esp32p4_common_LittleFS.build_flags}
extra_scripts = ${esp32p4_common_LittleFS.extra_scripts}
board = esp32p4r3
[env:max_ESP32p4r3_16M8M]
extends = env:max_ESP32p4_16M8M
board = esp32p4r3
+1 -1
View File
@@ -25,7 +25,7 @@ def get_max_bin_size(env_name, file_suffix):
if "_8M1M" in env_name:
# ESP32 with 3520k of sketch space.
max_bin_size = 3604480
if "_ESP32_" in env_name or "_ESP32c3_" in env_name or "_ESP32c5_" in env_name or "_ESP32c6_" in env_name or "_ESP32p4_" in env_name or "_ESP32s2_" in env_name or "_ESP32s3_" in env_name:
if "_ESP32_" in env_name or "_ESP32c3_" in env_name or "_ESP32c5_" in env_name or "_ESP32c6_" in env_name or "_ESP32p4_" in env_name or "_ESP32p4r3_" in env_name or "_ESP32s2_" in env_name or "_ESP32s3_" in env_name:
if "_16M8M" in env_name or "_16M2M" in env_name or "_16M1M" in env_name:
# ESP32 with 4096k of sketch space.
max_bin_size = 4194304
+14 -7
View File
@@ -26,7 +26,9 @@ def create_display_text(description, version, families):
fam_split.append('ESP32')
if 'ESP32-S2' in families:
esp32_split.append('S2')
if 'ESP32-S3' in families:
if 'ESP32-S31' in families:
esp32_split.append('S31')
elif 'ESP32-S3' in families:
esp32_split.append('S3')
if 'ESP32-C2' in families:
esp32_split.append('C2')
@@ -34,17 +36,20 @@ def create_display_text(description, version, families):
esp32_split.append('C3')
if 'ESP32-C5' in families:
esp32_split.append('C5')
if 'ESP32-C6' in families:
esp32_split.append('C6')
if 'ESP32-C61' in families:
esp32_split.append('C61')
elif 'ESP32-C6' in families:
esp32_split.append('C6')
if 'ESP32-H2' in families:
esp32_split.append('H2')
if 'ESP32-H21' in families:
esp32_split.append('H21')
if 'ESP32-P4' in families:
if 'ESP32-P4R3' in families:
esp32_split.append('P4R3')
elif 'ESP32-P4' in families:
esp32_split.append('P4')
if len(esp32_split) > 0:
fam_split.append('ESP32-' + '/'.join(esp32_split))
@@ -76,6 +81,8 @@ def parse_filename(file, version, variant, file_suffix):
manifest_suff = '.manifest.json'
if 'ESP32s2' in variant:
chipFamily = 'ESP32-S2'
elif 'ESP32s31' in variant:
chipFamily = 'ESP32-S31'
elif 'ESP32s3' in variant:
chipFamily = 'ESP32-S3'
elif 'ESP32c2' in variant:
@@ -94,7 +101,7 @@ def parse_filename(file, version, variant, file_suffix):
chipFamily = 'ESP32-H2'
elif 'ESP32p4' in variant:
chipFamily = 'ESP32-P4'
if 'rev300' in variant:
if 'rev300' in variant or 'r3' in variant:
chipVariant = 'rev300'
else:
chipVariant = 'rev0'
@@ -261,7 +268,7 @@ def parse_filename(file, version, variant, file_suffix):
builds = dict([('chipFamily', chipFamily), ('parts', [parts])])
else:
if add_improv:
builds = dict([('chipFamily', chipFamily), ('chipVariant', chipVariant), ('improv', False), ('parts', [parts])])
builds = dict([('chipFamily', chipFamily), ('chipVariant', chipVariant), ('improv', True), ('parts', [parts])])
else:
builds = dict([('chipFamily', chipFamily), ('chipVariant', chipVariant), ('parts', [parts])])
@@ -382,7 +389,7 @@ def generate_manifest_files(bin_folder, output_prefix):
' </style>\n',
' <script\n',
' type="module"\n',
' src="https://unpkg.com/tasmota-esp-web-tools@11.1.2/dist/web/install-button.js?module"\n',
' src="https://unpkg.com/tasmota-esp-web-tools@12.0.0/dist/web/install-button.js?module"\n',
' ></script>\n',
' </head>\n',
' <body>\n',