doc/esp32p4: ESP32-P4 chip revisions, ESP32-P4-Nano board note.
Build Documentation / build-html (push) Has been cancelled

* NuttX supports ESP32-P4 >= v3.0 by default.
* In order to run on older chips configuration tuning is required.
* Without configutation tune boot loop happens on older chips.
* Added note on WaveShare ESP32-P4-Nano board that is almost identical
  to existing ESP32-P4-Function-EV-Board board, so configs are compatible,
  but it has v1.3 chip, thus config tune is required as documented above.
* Added cross-file reference label to esp32p4-function-ev-board.

Signed-off-by: Tomasz 'CeDeROM' CEDRO <tomek@cedro.info>
This commit is contained in:
Tomasz 'CeDeROM' CEDRO
2026-05-14 04:55:35 +02:00
committed by Matteo Golin
parent 9451848de3
commit 76b31b04a3
2 changed files with 62 additions and 4 deletions
@@ -1,3 +1,5 @@
.. _esp32p4-function-ev-board:
==========================
ESP32-P4-Function-EV-Board
==========================
@@ -31,12 +31,19 @@ descriptions.
* Datasheet: `ESP32-P4 Datasheet (v1.3) <https://documentation.espressif.com/esp32-p4-chip-revision-v1.3_datasheet_en.pdf>`_
* Technical Reference Manual: `ESP32-P4 TRM (v1.3) <https://documentation.espressif.com/esp32-p4-chip-revision-v1.3_technical_reference_manual_en.pdf>`_
.. note:: NuttX by default supports ESP32-P4 chip revisions v3.0 and above.
If your build and flash works fine but firmware does not run as
expected (i.e. stuck in a boot loop) then additional tuning is
required, see `ESP32-P4 Chip Revisions`_ section for details.
ESP32-P4 Toolchain
==================
A generic RISC-V toolchain can be used to build ESP32-P4 projects. It's recommended
to use the same toolchain version used by NuttX CI for RISC-V.
Please refer to the Docker
A generic RISC-V toolchain can be used to build ESP32-P4 projects.
You can use standard ``riscv32-esp-elf-gcc`` provided by ESP IDF Tools.
However, it is recommended to use the same toolchain version as used by
the NuttX CI for RISC-V. Please refer to our CI Docker configuration
`container <https://github.com/apache/nuttx/tree/master/tools/ci/docker/linux/Dockerfile>`_
and check for the current compiler version being used. For instance:
@@ -75,6 +82,7 @@ Add the toolchain to your ``PATH``:
You can edit your shell's rc files if you don't use bash.
Building and flashing NuttX
===========================
@@ -193,6 +201,7 @@ The following is **not** supported when building with CMake yet; use the Make-ba
* **ULP / LP core** — Low-power coprocessor support (``CONFIG_ESPRESSIF_USE_LP_CORE``) is
not wired up for CMake (ULP/LP integration is TODO).
.. _esp32p4_debug:
Debugging
@@ -306,6 +315,7 @@ possible to track the root cause of the crash. Saving this output to a file and
Backtrace for task 0:
0x4000bb20: up_idle at esp_idle.c:76
Peripheral Support
==================
@@ -373,7 +383,6 @@ Touch Sensor No
eFuse Yes Virtual eFuses supported
================= ======= ==================================
Security
--------
@@ -402,6 +411,7 @@ PMP/PMA Mo
:file:`arch/risc-v/src/common/espressif/Kconfig` for feature flags and
pin selections.
.. _esp32p4_ulp:
ULP LP Core Coprocessor
@@ -749,6 +759,42 @@ so ubsan can help to catch some errors. But note that it will increase code size
it can happen that application won't fit into RTC RAM.
To enable ubsan for ULP please add ``CONFIG_ESPRESSIF_ULP_ENABLE_UBSAN`` in menuconfig.
ESP32-P4 Chip Revisions
=======================
.. attention:: NuttX by default supports ESP32-P4 chip revisions starting
from v3.0.
Different ESP32-P4 chip revisions contain internal hardware breaking
changes. Revisions 3.0 and higher are not compatible with 0.x and 1.x.
Older chip revisions may work but require dedicated firmware builds.
Compatibility is verified by the 2nd stage bootloader against following
firmware build parameters: ``CONFIG_ESP32P4_SELECTS_REV_LESS_V3``,
``CONFIG_ESP32P4_REV_*``, ``CONFIG_ESP_REV_*``,
and ``CONFIG_ESP_EFUSE_BLOCK_REV_*``.
These parameters are set with ``make menuconfig`` in the ``System Type`` menu:
* ``Select ESP32-P4 revisions <3.0`` - enable if your chip is older than v3.0.
* ``Minimum Supported ESP32-P4 Revision`` - select minimum chip revision
on which the firmware can boot, refuse to boot otherwise (boot loop).
Note that older chip revisions may contain bugs or have missing features.
Selecting wide range of supported revisions will increase firmware size.
* ``Minimum Supported ESP32-P4 eFuse Block Revision`` - select minimum eFuse
block revision on which the firmware can boot, refuse to boot otherwise
(boot loop).
You can check your chip revision with ``esptool`` utility that is used
by ``make flash`` command, for instance::
esptool v5.2.0
Connected to ESP32-P4 on /dev/cuaU0:
Chip type: ESP32-P4 (revision v1.3)
Features: Dual Core + LP Core, 400MHz
Crystal frequency: 40MHz
MAC: XXX
Supported Boards
================
@@ -757,3 +803,13 @@ Supported Boards
:maxdepth: 1
boards/*/*
Other Boards
------------
* `WaveShare ESP32-P4-Nano <https://www.waveshare.com/wiki/ESP32-P4-NANO>`_
is similar in design to
:ref:`ESP32-P4-Function-EV-Board <esp32p4-function-ev-board>`.
Aside from a few onboard component differences you can play around using
existing configurations for start. Note that it may contain ESP32-P4 v1.3 so
additional configuration tuning is required (see `ESP32-P4 Chip Revisions`_).