docs(esp32p4): added building docs for ESP32-P4

pull/12097/head
Marius Vikhammer 2023-07-25 12:18:16 +08:00
rodzic 080087a9a0
commit 27baef2424
28 zmienionych plików z 754 dodań i 36 usunięć

Wyświetl plik

@ -86,7 +86,7 @@ check_docs_lang_sync:
parallel:
matrix:
- DOCLANG: ["en", "zh_CN"]
DOCTGT: ["esp32", "esp32s2", "esp32s3", "esp32c3", "esp32c2", "esp32c6", "esp32h2"]
DOCTGT: ["esp32", "esp32s2", "esp32s3", "esp32c3", "esp32c2", "esp32c6", "esp32h2", "esp32p4"]
check_docs_gh_links:
image: $ESP_IDF_DOC_ENV_IMAGE
@ -129,7 +129,7 @@ build_docs_html_partial:
- DOCLANG: "en"
DOCTGT: "esp32"
- DOCLANG: "zh_CN"
DOCTGT: "esp32c6"
DOCTGT: "esp32p4"
build_docs_pdf:
extends:

Wyświetl plik

@ -239,7 +239,7 @@ FORCE_INLINE_ATTR void esp_cpu_intr_set_ivt_addr(const void *ivt_addr)
/**
* @brief Set the base address of the current CPU's Interrupt Vector Table (MTVT)
*
* @param ivt_addr Interrupt Vector Table's base address
* @param mtvt_addr Interrupt Vector Table's base address
*/
FORCE_INLINE_ATTR void esp_cpu_intr_set_mtvt_addr(const void *mtvt_addr)
{

Wyświetl plik

@ -0,0 +1,15 @@
choice ESP32P4_UNIVERSAL_MAC_ADDRESSES
bool "Number of universally administered (by IEEE) MAC address"
default ESP32P4_UNIVERSAL_MAC_ADDRESSES_TWO
help
TODO IDF-6514
config ESP32P4_UNIVERSAL_MAC_ADDRESSES_TWO
bool "Two"
select ESP_MAC_UNIVERSAL_MAC_ADDRESSES_TWO
select ESP_MAC_ADDR_UNIVERSE_ETH
endchoice
config ESP32P4_UNIVERSAL_MAC_ADDRESSES
int
default 2 if ESP32P4_UNIVERSAL_MAC_ADDRESSES_TWO

Wyświetl plik

@ -370,7 +370,6 @@
// host_id = 0 -> SPI0/SPI1, host_id = 1 -> SPI2,
#define SOC_SPI_PERIPH_SUPPORT_MULTILINE_MODE(host_id) ({(void)host_id; 1;})
#define SOC_MEMSPI_IS_INDEPENDENT 1
#define SOC_SPI_MAX_PRE_DIVIDER 16
/*-------------------------- SPI MEM CAPS ---------------------------------------*/

Wyświetl plik

@ -168,6 +168,10 @@ ESP32C2_DOCS = ['api-guides/RF_calibration.rst']
ESP32C6_DOCS = ['api-guides/RF_calibration.rst',
'api-reference/peripherals/sd_pullup_requirements.rst']
ESP32H2_DOCS = ['api-guides/RF_calibration.rst']
ESP32P4_DOCS = ['api-reference/system/ipc.rst']
# format: {tag needed to include: documents to included}, tags are parsed from sdkconfig and peripheral_caps.h headers
conditional_include_dict = {'SOC_BT_SUPPORTED':BT_DOCS,
'SOC_BLE_SUPPORTED':BLE_DOCS,
@ -212,7 +216,9 @@ conditional_include_dict = {'SOC_BT_SUPPORTED':BT_DOCS,
'esp32s3':ESP32S3_DOCS,
'esp32c2':ESP32C2_DOCS,
'esp32c3':ESP32C3_DOCS,
'esp32c6':ESP32C6_DOCS}
'esp32c6':ESP32C6_DOCS,
'esp32h2':ESP32H2_DOCS,
'esp32p4':ESP32P4_DOCS}
extensions += ['sphinx_copybutton',
'sphinxcontrib.wavedrom',
@ -242,7 +248,7 @@ html_context['github_repo'] = 'esp-idf'
project_slug = 'esp-idf'
versions_url = 'https://dl.espressif.com/dl/esp-idf/idf_versions.js'
idf_targets = ['esp32', 'esp32s2', 'esp32s3', 'esp32c3', 'esp32c2', 'esp32c6']
idf_targets = ['esp32', 'esp32s2', 'esp32s3', 'esp32c3', 'esp32c2', 'esp32c6', 'esp32p4']
languages = ['en', 'zh_CN']
google_analytics_id = os.environ.get('CI_GOOGLE_ANALYTICS_ID', None)

Wyświetl plik

@ -0,0 +1,279 @@
languages.rst
contribute/esp-idf-tests-with-pytest.rst
contribute/contributor-agreement.rst
contribute/documenting-code.rst
contribute/creating-examples.rst
contribute/style-guide.rst
contribute/copyright-guide.rst
contribute/install-pre-commit-hook.rst
contribute/index.rst
api-guides/core_dump_internals.rst
api-guides/performance/speed.rst
api-guides/performance/size.rst
api-guides/performance/ram-usage.rst
api-guides/performance/index.rst
api-guides/jtag-debugging/debugging-examples.rst
api-guides/jtag-debugging/configure-ft2232h-jtag.rst
api-guides/jtag-debugging/tips-and-quirks.rst
api-guides/jtag-debugging/using-debugger.rst
api-guides/jtag-debugging/building-openocd-macos.rst
api-guides/jtag-debugging/building-openocd-linux.rst
api-guides/jtag-debugging/esp32p4.inc
api-guides/jtag-debugging/configure-other-jtag.rst
api-guides/jtag-debugging/building-openocd-windows.rst
api-guides/jtag-debugging/index.rst
api-guides/jtag-debugging/configure-builtin-jtag.rst
api-guides/partition-tables.rst
api-guides/app_trace.rst
api-guides/thread-local-storage.rst
api-guides/error-handling.rst
api-guides/tools/idf-tools.rst
api-guides/tools/idf-clang-tidy.rst
api-guides/tools/idf-component-manager.rst
api-guides/tools/idf-py.rst
api-guides/tools/idf-windows-installer.rst
api-guides/tools/idf-monitor.rst
api-guides/tools/idf-tools-notes.inc
api-guides/tools/idf-docker-image.rst
api-guides/tools/index.rst
api-guides/startup.rst
api-guides/hlinterrupts.rst
api-guides/RF_calibration.rst
api-guides/unit-tests.rst
api-guides/deep-sleep-stub.rst
api-guides/blufi.rst
api-guides/lwip.rst
api-guides/coexist.rst
api-guides/flash_psram_config.rst
api-guides/usb-serial-jtag-console.rst
api-guides/linker-script-generation.rst
api-guides/wifi.rst
api-guides/usb-otg-console.rst
api-guides/wireshark-user-guide.rst
api-guides/bootloader.rst
api-guides/esp-wifi-mesh.rst
api-guides/cplusplus.rst
api-guides/SYSVIEW_FreeRTOS.txt
api-guides/build-system.rst
api-guides/core_dump.rst
api-guides/inc/external-ram-esp32-notes.rst
api-guides/inc/linux-host-requirements.rst
api-guides/dfu.rst
api-guides/current-consumption-measurement-modules.rst
api-guides/esp-ble-mesh/ble-mesh-index.rst
api-guides/esp-ble-mesh/ble-mesh-feature-list.rst
api-guides/esp-ble-mesh/ble-mesh-terminology.rst
api-guides/esp-ble-mesh/ble-mesh-architecture.rst
api-guides/esp-ble-mesh/ble-mesh-faq.rst
api-guides/external-ram.rst
api-guides/reproducible-builds.rst
api-guides/hardware-abstraction.rst
api-guides/wifi-security.rst
api-guides/host-apps.rst
api-guides/index.rst
api-guides/openthread.rst
api-guides/fatal-errors.rst
api-guides/memory-types.rst
api-guides/general-notes.rst
third-party-tools/platformio.rst
COPYRIGHT.rst
libraries-and-frameworks/libs-frameworks.rst
libraries-and-frameworks/index.rst
libraries-and-frameworks/cloud-frameworks.rst
conf.py
versions.rst
api-reference/api-conventions.rst
api-reference/template.rst
api-reference/provisioning/protocomm.rst
api-reference/provisioning/provisioning.rst
api-reference/provisioning/index.rst
api-reference/provisioning/wifi_provisioning.rst
api-reference/storage/vfs.rst
api-reference/storage/spiffs.rst
api-reference/storage/nvs_encryption.rst
api-reference/storage/wear-levelling.rst
api-reference/storage/fatfs.rst
api-reference/storage/nvs_partition_gen.rst
api-reference/storage/nvs_flash.rst
api-reference/storage/partition.rst
api-reference/storage/sdmmc.rst
api-reference/storage/mass_mfg.rst
api-reference/storage/fatfsgen.rst
api-reference/storage/index.rst
api-reference/storage/nvs_partition_parse.rst
api-reference/peripherals/sdspi_share.rst
api-reference/peripherals/gpio/esp32p4.inc
api-reference/peripherals/adc_continuous.rst
api-reference/peripherals/adc_oneshot.rst
api-reference/peripherals/usb_host.rst
api-reference/peripherals/twai.rst
api-reference/peripherals/usb_host/usb_host_notes_arch.rst
api-reference/peripherals/usb_host/usb_host_notes_index.rst
api-reference/peripherals/usb_host/usb_host_notes_dwc_otg.rst
api-reference/peripherals/usb_host/usb_host_notes_design.rst
api-reference/peripherals/hmac.rst
api-reference/peripherals/usb_device.rst
api-reference/peripherals/gpio.rst
api-reference/peripherals/sdspi_host.rst
api-reference/peripherals/dac.rst
api-reference/peripherals/spi_slave.rst
api-reference/peripherals/etm.rst
api-reference/peripherals/i2s.rst
api-reference/peripherals/gptimer.rst
api-reference/peripherals/pcnt.rst
api-reference/peripherals/touch_element.rst
api-reference/peripherals/lcd.rst
api-reference/peripherals/mcpwm.rst
api-reference/peripherals/ana_cmpr.rst
api-reference/peripherals/secure_element.rst
api-reference/peripherals/ledc.rst
api-reference/peripherals/temp_sensor.rst
api-reference/peripherals/spi_features.rst
api-reference/peripherals/sdio_slave.rst
api-reference/peripherals/clk_tree.rst
api-reference/peripherals/spi_flash/xip_from_psram.inc
api-reference/peripherals/spi_flash/spi_flash_concurrency.rst
api-reference/peripherals/spi_flash/spi_flash_override_driver.rst
api-reference/peripherals/spi_flash/spi_flash_optional_feature.rst
api-reference/peripherals/spi_flash/spi_flash_idf_vs_rom.rst
api-reference/peripherals/spi_flash/index.rst
api-reference/peripherals/spi_flash/auto_suspend.inc
api-reference/peripherals/sdm.rst
api-reference/peripherals/touch_pad.rst
api-reference/peripherals/adc_calibration.rst
api-reference/peripherals/spi_slave_hd.rst
api-reference/peripherals/parlio.rst
api-reference/peripherals/ds.rst
api-reference/peripherals/i2c.rst
api-reference/peripherals/dedic_gpio.rst
api-reference/peripherals/sd_pullup_requirements.rst
api-reference/peripherals/spi_master.rst
api-reference/peripherals/index.rst
api-reference/peripherals/sdmmc_host.rst
api-reference/peripherals/uart.rst
api-reference/peripherals/rmt.rst
api-reference/kconfig.rst
api-reference/network/esp_openthread.rst
api-reference/network/esp_eth.rst
api-reference/network/esp_netif_driver.rst
api-reference/network/esp_dpp.rst
api-reference/network/esp_now.rst
api-reference/network/esp-wifi-mesh.rst
api-reference/network/esp_smartconfig.rst
api-reference/network/esp_nan.rst
api-reference/network/esp_wifi.rst
api-reference/network/index.rst
api-reference/network/esp_netif.rst
api-reference/system/sleep_modes.rst
api-reference/system/ota.rst
api-reference/system/app_trace.rst
api-reference/system/ulp_macros.rst
api-reference/system/perfmon.rst
api-reference/system/ulp-lp-core.rst
api-reference/system/ulp.rst
api-reference/system/esp_function_with_shared_stack.rst
api-reference/system/efuse.rst
api-reference/system/chip_revision.rst
api-reference/system/ulp_instruction_set.rst
api-reference/system/async_memcpy.rst
api-reference/system/random.rst
api-reference/system/esp_timer.rst
api-reference/system/esp_event.rst
api-reference/system/freertos.rst
api-reference/system/system_time.rst
api-reference/system/log.rst
api-reference/system/soc_caps.rst
api-reference/system/internal-unstable.rst
api-reference/system/app_image_format.rst
api-reference/system/freertos_additions.rst
api-reference/system/himem.rst
api-reference/system/power_management.rst
api-reference/system/mem_alloc.rst
api-reference/system/wdts.rst
api-reference/system/misc_system_api.rst
api-reference/system/bootloader_image_format.rst
api-reference/system/inc/espefuse_summary_ESP32-P4.rst
api-reference/system/inc/power_management_esp32p4.rst
api-reference/system/inc/show-efuse-table_ESP32-P4.rst
api-reference/system/inc/revisions_ESP32-P4.rst
api-reference/system/heap_debug.rst
api-reference/system/mm.rst
api-reference/system/ipc.rst
api-reference/system/esp_https_ota.rst
api-reference/system/ulp-risc-v.rst
api-reference/system/esp_err.rst
api-reference/system/freertos_idf.rst
api-reference/system/console.rst
api-reference/system/intr_alloc.rst
api-reference/system/index.rst
api-reference/system/pthread.rst
api-reference/bluetooth/esp_spp.rst
api-reference/bluetooth/esp_l2cap_bt.rst
api-reference/bluetooth/esp_hidd.rst
api-reference/bluetooth/esp_avrc.rst
api-reference/bluetooth/controller_vhci.rst
api-reference/bluetooth/esp_bt_defs.rst
api-reference/bluetooth/esp_hf_ag.rst
api-reference/bluetooth/esp_bt_main.rst
api-reference/bluetooth/esp_bt_device.rst
api-reference/bluetooth/esp_hidh.rst
api-reference/bluetooth/esp_gatts.rst
api-reference/bluetooth/esp_gattc.rst
api-reference/bluetooth/esp_sdp.rst
api-reference/bluetooth/bt_common.rst
api-reference/bluetooth/nimble/index.rst
api-reference/bluetooth/esp_hf_client.rst
api-reference/bluetooth/esp_a2dp.rst
api-reference/bluetooth/esp_blufi.rst
api-reference/bluetooth/bt_le.rst
api-reference/bluetooth/esp_hf_defs.rst
api-reference/bluetooth/esp_gap_bt.rst
api-reference/bluetooth/esp_gatt_defs.rst
api-reference/bluetooth/esp-ble-mesh.rst
api-reference/bluetooth/index.rst
api-reference/bluetooth/esp_gap_ble.rst
api-reference/bluetooth/classic_bt.rst
api-reference/error-codes.rst
api-reference/index.rst
api-reference/protocols/icmp_echo.rst
api-reference/protocols/esp_serial_slave_link.rst
api-reference/protocols/mqtt.rst
api-reference/protocols/mbedtls.rst
api-reference/protocols/esp_http_server.rst
api-reference/protocols/esp_sdio_slave_protocol.rst
api-reference/protocols/esp_local_ctrl.rst
api-reference/protocols/esp_crt_bundle.rst
api-reference/protocols/esp_http_client.rst
api-reference/protocols/esp_https_server.rst
api-reference/protocols/esp_spi_slave_protocol.rst
api-reference/protocols/modbus.rst
api-reference/protocols/esp_tls.rst
api-reference/protocols/mdns.rst
api-reference/protocols/index.rst
api-reference/protocols/asio.rst
security/host-based-security-workflows.rst
security/flash-encryption.rst
security/security.rst
security/secure-boot-v2.rst
security/secure-boot-v1.rst
security/esp32p4_log.inc
security/index.rst
about.rst
resources.rst
migration-guides/release-5.x/5.2/protocols.rst
migration-guides/release-5.x/5.2/index.rst
migration-guides/release-5.x/5.2/peripherals.rst
migration-guides/index.rst
_templates/layout.html
get-started/establish-serial-connection.rst
get-started/linux-macos-setup.rst
get-started/linux-macos-start-project.rst
get-started/windows-setup.rst
get-started/start-project.rst
get-started/flashing-troubleshooting.rst
get-started/windows-start-project.rst
get-started/index.rst
get-started/windows-setup-update.rst
404.rst
index.rst
hw-reference/index.rst

Wyświetl plik

@ -0,0 +1 @@
INPUT += \

Wyświetl plik

@ -408,18 +408,21 @@ In some situations, ESP-IDF will temporarily disable access to external SPI Flas
Other Fatal Errors
------------------
Brownout
^^^^^^^^
.. only:: SOC_BOD_SUPPORTED
{IDF_TARGET_NAME} has a built-in brownout detector, which is enabled by default. The brownout detector can trigger a system reset if the supply voltage goes below a safe level. The brownout detector can be configured using :ref:`CONFIG_ESP_BROWNOUT_DET` and :ref:`CONFIG_ESP_BROWNOUT_DET_LVL_SEL` options.
Brownout
^^^^^^^^
When the brownout detector triggers, the following message is printed::
{IDF_TARGET_NAME} has a built-in brownout detector, which is enabled by default. The brownout detector can trigger a system reset if the supply voltage goes below a safe level. The brownout detector can be configured using :ref:`CONFIG_ESP_BROWNOUT_DET` and :ref:`CONFIG_ESP_BROWNOUT_DET_LVL_SEL` options.
Brownout detector was triggered
When the brownout detector triggers, the following message is printed::
The chip is reset after the message is printed.
Brownout detector was triggered
The chip is reset after the message is printed.
Note that if the supply voltage is dropping at a fast rate, only part of the message may be seen on the console.
Note that if the supply voltage is dropping at a fast rate, only part of the message may be seen on the console.
Corrupt Heap
^^^^^^^^^^^^

Wyświetl plik

@ -32,7 +32,7 @@ API Guides
partition-tables
performance/index
reproducible-builds
:not esp32h2: RF_calibration
:SOC_WIFI_SUPPORTED or SOC_BT_SUPPORTED or SOC_IEEE802154_SUPPORTED: RF_calibration
thread-local-storage
tools/index
unit-tests

Wyświetl plik

@ -0,0 +1,173 @@
.. This file gets included from other .rst files in this folder.
.. It contains target-specific snippets.
.. Comments and '---' lines act as delimiters.
..
.. This is necessary mainly because RST doesn't support substitutions
.. (defined in RST, not in Python) inside code blocks. If that is ever implemented,
.. These code blocks can be moved back to the main .rst files, with target-specific
.. file names being replaced by substitutions.
.. run-openocd
::
openocd -f board/esp32p4-builtin.cfg
.. |run-openocd-device-name| replace:: ESP32-p4 through built-in USB connection
---
.. run-openocd-output
::
user-name@computer-name:~/esp/esp-idf$ openocd -f board/esp32p4-builtin.cfg
Open On-Chip Debugger v0.11.0-esp32-20221026-85-g0718fffd (2023-01-12-07:28)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'jtag'
Info : esp_usb_jtag: VID set to 0x303a and PID to 0x1001
Info : esp_usb_jtag: capabilities descriptor set to 0x2000
Warn : Transport "jtag" was already selected
WARNING: ESP flash support is disabled!
force hard breakpoints
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : esp_usb_jtag: serial (60:55:F9:F6:03:3C)
Info : esp_usb_jtag: Device found. Base speed 24000KHz, div range 1 to 255
Info : clock speed 24000 kHz
Info : JTAG tap: esp32p4.cpu tap/device found: 0x0000dc25 (mfg: 0x612 (Espressif Systems), part: 0x000d, ver: 0x0)
Info : datacount=2 progbufsize=16
Info : Examined RISC-V core; found 2 harts
Info : hart 0: XLEN=32, misa=0x40903105
Info : starting gdb server for esp32p4 on 3333
Info : Listening on port 3333 for gdb connections
.. |run-openocd-cfg-file-err| replace:: ``Can't find board/esp32p4-builtin.cfg``
---
.. run-openocd-upload
::
openocd -f board/esp32p4-builtin.cfg -c "program_esp filename.bin 0x10000 verify exit"
---
.. run-openocd-src-linux
.. code-block:: bash
src/openocd -f board/esp32p4-builtin.cfg
---
.. run-openocd-src-win
.. code-block:: batch
src\openocd -f board/esp32p4-builtin.cfg
---
.. idf-py-openocd-default-cfg
.. |idf-py-def-cfg| replace:: ``-f board/esp32p4-builtin.cfg``
---
.. run-openocd-appimage-offset
::
openocd -f board/esp32p4-builtin.cfg -c "init; halt; esp appimage_offset 0x210000"
---
.. openocd-cfg-files
.. list-table:: OpenOCD configuration files for ESP32-p4
:widths: 25 75
:header-rows: 1
* - Name
- Description
* - ``board/esp32p4-builtin.cfg``
- Board configuration file for ESP32-p4 through built-in USB, includes target and adapter configuration.
* - ``board/esp32p4-ftdi.cfg``
- Board configuration file for ESP32-p4 for via externally connected FTDI-based probe like ESP-Prog, includes target and adapter configuration.
* - ``target/esp32p4.cfg``
- ESP32-p4 target configuration file. Can be used together with one of the ``interface/`` configuration files.
* - ``interface/esp_usb_jtag.cfg``
- JTAG adapter configuration file for ESP32-p4.
* - ``interface/ftdi/esp32_devkitj_v1.cfg``
- JTAG adapter configuration file for ESP-Prog boards.
---
.. openocd-target-specific-config-vars
---
---
.. jtag-pins
.. list-table:: ESP32-p4 pins and JTAG signals
:widths: 25 75
:header-rows: 1
* - ESP32-p4 Pin
- JTAG Signal
* - MTDO / GPIO7
- TDO
* - MTDI / GPIO5
- TDI
* - MTCK / GPIO6
- TCK
* - MTMS / GPIO4
- TMS
.. |jtag-sel-gpio| replace:: GPIO15
.. |jtag-gpio-list| replace:: GPIO4-GPIO7
---
.. run-openocd-d3
::
openocd -l openocd_log.txt -d3 -f board/esp32p4-builtin.cfg
---
.. run-openocd-d3-tee
::
openocd -d3 -f board/esp32p4-builtin.cfg 2>&1 | tee openocd.log
---
.. run-gdb-remotelog
::
riscv32-esp-elf-gdb -ex "set remotelogfile gdb_log.txt" <all other options>
---
.. devkit-defs
.. |devkit-name| replace:: ESP32-p4
.. |devkit-name-with-link| replace:: :doc:`ESP32-p4 <../../hw-reference/index>`
---
.. devkit-hw-config
* Out of the box, ESP32-p4 doesn't need any additional hardware configuration for JTAG debugging.
---

Wyświetl plik

@ -88,7 +88,7 @@ The ESP-IDF bootloader ignores any partition types other than ``app`` (0x00) and
SubType
~~~~~~~
{IDF_TARGET_ESP_PHY_REF:default = ":ref:`CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION`", esp32h2="NOT UPDATED YET"}
{IDF_TARGET_ESP_PHY_REF:default = ":ref:`CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION`", esp32p4="NOT UPDATED YET"}
The 8-bit SubType field is specific to a given partition type. ESP-IDF currently only specifies the meaning of the subtype field for ``app`` and ``data`` partition types.

Wyświetl plik

@ -0,0 +1,3 @@
.. code-block:: none
TO BE UPDATED IDF-7759

Wyświetl plik

@ -0,0 +1 @@
TO BE UPDATED IDF-7672

Wyświetl plik

@ -0,0 +1,6 @@
+--------+------------------------+
| ECO | Revision (Major.Minor) |
+--------+------------------------+
| ECO0 | TO BE UPDATED IDF-7759 |
+--------+------------------------+

Wyświetl plik

@ -0,0 +1,4 @@
.. code-block:: none
TO BE UPDATED IDF-7759

Wyświetl plik

@ -24,7 +24,7 @@ System API
heap_debug
esp_timer
internal-unstable
:not CONFIG_FREERTOS_UNICORE: ipc
:not CONFIG_FREERTOS_UNICORE or esp32p4: ipc
intr_alloc
log
misc_system_api

Wyświetl plik

@ -14,7 +14,11 @@ Due to the dual core nature of the {IDF_TARGET_NAME}, there are instances where
- On particular chips (such as the ESP32), accessing memory that is exclusive to a particular CPU (such as RTC Fast Memory).
- Reading the registers/state of another CPU.
The IPC (Inter-Processor Call) feature allows a particular CPU (the calling CPU) to trigger the execution of a callback function on another CPU (the target CPU). The IPC feature allows execution of a callback function on the target CPU in either a task context, or a High Priority Interrupt context (see :doc:`/api-guides/hlinterrupts` for more details). Depending on the context that the callback function is executed in, different restrictions apply to the implementation of the callback function.
.. only:: not esp32p4
The IPC (Inter-Processor Call) feature allows a particular CPU (the calling CPU) to trigger the execution of a callback function on another CPU (the target CPU). The IPC feature allows execution of a callback function on the target CPU in either a task context, or a High Priority Interrupt context (see :doc:`/api-guides/hlinterrupts` for more details). Depending on the context that the callback function is executed in, different restrictions apply to the implementation of the callback function.
IPC in Task Context
-------------------
@ -42,19 +46,21 @@ The IPC feature offers the API listed below to execute a callback in a task cont
- :cpp:func:`esp_ipc_call` triggers an IPC call on the target CPU. This function will block until the target CPU's IPC task **begins** execution of the callback.
- :cpp:func:`esp_ipc_call_blocking` triggers an IPC on the target CPU. This function will block until the target CPU's IPC task **completes** execution of the callback.
IPC in ISR Context
------------------
.. only:: not esp32p4
In some cases, we need to quickly obtain the state of another CPU such as in a core dump, GDB stub, various unit tests, and DPORT workaround. For such scenarios, the IPC feature supports execution of callbacks in a :doc:`High Priority Interrupt </api-guides/hlinterrupts>` context. The IPC feature implements the High Priority Interrupt context by reserving a High Priority Interrupt on each CPU for IPC usage. When a calling CPU needs to execute a callback on the target CPU, the callback will execute in the context of the High Priority Interrupt of the target CPU.
IPC in ISR Context
------------------
When using IPCs in High Priority Interrupt context, users need to consider the following:
In some cases, we need to quickly obtain the state of another CPU such as in a core dump, GDB stub, various unit tests, and DPORT workaround. For such scenarios, the IPC feature supports execution of callbacks in a :doc:`High Priority Interrupt </api-guides/hlinterrupts>` context. The IPC feature implements the High Priority Interrupt context by reserving a High Priority Interrupt on each CPU for IPC usage. When a calling CPU needs to execute a callback on the target CPU, the callback will execute in the context of the High Priority Interrupt of the target CPU.
- Since the callback is executed in a High Priority Interrupt context, the callback must be written entirely in assembly. See the API Usage below for more details regarding writing assembly callbacks.
- The priority of the reserved High Priority Interrupt is dependent on the :ref:`CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL` option
- When the callback executes:
When using IPCs in High Priority Interrupt context, users need to consider the following:
- The calling CPU will disable interrupts of level 3 and lower
- Although the priority of the reserved interrupt depends on :ref:`CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL`, during the execution IPC ISR callback, the target CPU will disable interrupts of level 5 and lower regardless of what :ref:`CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL` is set to.
- Since the callback is executed in a High Priority Interrupt context, the callback must be written entirely in assembly. See the API Usage below for more details regarding writing assembly callbacks.
- The priority of the reserved High Priority Interrupt is dependent on the :ref:`CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL` option
- When the callback executes:
- The calling CPU will disable interrupts of level 3 and lower
- Although the priority of the reserved interrupt depends on :ref:`CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL`, during the execution IPC ISR callback, the target CPU will disable interrupts of level 5 and lower regardless of what :ref:`CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL` is set to.
API Usage
^^^^^^^^^

Wyświetl plik

@ -0,0 +1,16 @@
.. first_boot_enc
.. code-block:: none
TO BE UPDATED TODO IDF-7747
------
.. already_en_enc
.. code-block:: none
TO BE UPDATED TODO IDF-7747
------

Wyświetl plik

@ -408,18 +408,21 @@ Interrupt wdt timeout on CPU0 / CPU1
其他严重错误
------------
掉电
^^^^
.. only:: SOC_BOD_SUPPORTED
{IDF_TARGET_NAME} 内部集成掉电检测电路,并且会默认启用。如果电源电压低于安全值,掉电检测器可以触发系统复位。掉电检测器可以使用 :ref:`CONFIG_ESP_BROWNOUT_DET`:ref:`CONFIG_ESP_BROWNOUT_DET_LVL_SEL` 这两个选项进行设置。
掉电
^^^^
当掉电检测器被触发时,会打印如下信息::
{IDF_TARGET_NAME} 内部集成掉电检测电路,并且会默认启用。如果电源电压低于安全值,掉电检测器可以触发系统复位。掉电检测器可以使用 :ref:`CONFIG_ESP_BROWNOUT_DET`:ref:`CONFIG_ESP_BROWNOUT_DET_LVL_SEL` 这两个选项进行设置。
Brownout detector was triggered
当掉电检测器被触发时,会打印如下信息::
芯片会在该打印信息结束后复位。
Brownout detector was triggered
芯片会在该打印信息结束后复位。
请注意,如果电源电压快速下降,则只能在控制台上看到部分打印信息。
请注意,如果电源电压快速下降,则只能在控制台上看到部分打印信息。
堆不完整
^^^^^^^^^^^

Wyświetl plik

@ -32,7 +32,7 @@ API 指南
partition-tables
performance/index
reproducible-builds
:not esp32h2: RF_calibration
:SOC_WIFI_SUPPORTED or SOC_BT_SUPPORTED or SOC_IEEE802154_SUPPORTED: RF_calibration
thread-local-storage
tools/index
unit-tests

Wyświetl plik

@ -0,0 +1,173 @@
.. This file gets included from other .rst files in this folder.
.. It contains target-specific snippets.
.. Comments and '---' lines act as delimiters.
..
.. This is necessary mainly because RST doesn't support substitutions
.. (defined in RST, not in Python) inside code blocks. If that is ever implemented,
.. These code blocks can be moved back to the main .rst files, with target-specific
.. file names being replaced by substitutions.
.. run-openocd
::
openocd -f board/esp32p4-builtin.cfg
.. |run-openocd-device-name| replace:: ESP32-p4 through built-in USB connection
---
.. run-openocd-output
::
user-name@computer-name:~/esp/esp-idf$ openocd -f board/esp32p4-builtin.cfg
Open On-Chip Debugger v0.11.0-esp32-20221026-85-g0718fffd (2023-01-12-07:28)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'jtag'
Info : esp_usb_jtag: VID set to 0x303a and PID to 0x1001
Info : esp_usb_jtag: capabilities descriptor set to 0x2000
Warn : Transport "jtag" was already selected
WARNING: ESP flash support is disabled!
force hard breakpoints
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : esp_usb_jtag: serial (60:55:F9:F6:03:3C)
Info : esp_usb_jtag: Device found. Base speed 24000KHz, div range 1 to 255
Info : clock speed 24000 kHz
Info : JTAG tap: esp32p4.cpu tap/device found: 0x0000dc25 (mfg: 0x612 (Espressif Systems), part: 0x000d, ver: 0x0)
Info : datacount=2 progbufsize=16
Info : Examined RISC-V core; found 2 harts
Info : hart 0: XLEN=32, misa=0x40903105
Info : starting gdb server for esp32p4 on 3333
Info : Listening on port 3333 for gdb connections
.. |run-openocd-cfg-file-err| replace:: ``Can't find board/esp32p4-builtin.cfg``
---
.. run-openocd-upload
::
openocd -f board/esp32p4-builtin.cfg -c "program_esp filename.bin 0x10000 verify exit"
---
.. run-openocd-src-linux
.. code-block:: bash
src/openocd -f board/esp32p4-builtin.cfg
---
.. run-openocd-src-win
.. code-block:: batch
src\openocd -f board/esp32p4-builtin.cfg
---
.. idf-py-openocd-default-cfg
.. |idf-py-def-cfg| replace:: ``-f board/esp32p4-builtin.cfg``
---
.. run-openocd-appimage-offset
::
openocd -f board/esp32p4-builtin.cfg -c "init; halt; esp appimage_offset 0x210000"
---
.. openocd-cfg-files
.. list-table:: OpenOCD configuration files for ESP32-p4
:widths: 25 75
:header-rows: 1
* - Name
- Description
* - ``board/esp32p4-builtin.cfg``
- Board configuration file for ESP32-p4 through built-in USB, includes target and adapter configuration.
* - ``board/esp32p4-ftdi.cfg``
- Board configuration file for ESP32-p4 for via externally connected FTDI-based probe like ESP-Prog, includes target and adapter configuration.
* - ``target/esp32p4.cfg``
- ESP32-p4 target configuration file. Can be used together with one of the ``interface/`` configuration files.
* - ``interface/esp_usb_jtag.cfg``
- JTAG adapter configuration file for ESP32-p4.
* - ``interface/ftdi/esp32_devkitj_v1.cfg``
- JTAG adapter configuration file for ESP-Prog boards.
---
.. openocd-target-specific-config-vars
---
---
.. jtag-pins
.. list-table:: ESP32-p4 pins and JTAG signals
:widths: 25 75
:header-rows: 1
* - ESP32-p4 Pin
- JTAG Signal
* - MTDO / GPIO7
- TDO
* - MTDI / GPIO5
- TDI
* - MTCK / GPIO6
- TCK
* - MTMS / GPIO4
- TMS
.. |jtag-sel-gpio| replace:: GPIO15
.. |jtag-gpio-list| replace:: GPIO4-GPIO7
---
.. run-openocd-d3
::
openocd -l openocd_log.txt -d3 -f board/esp32p4-builtin.cfg
---
.. run-openocd-d3-tee
::
openocd -d3 -f board/esp32p4-builtin.cfg 2>&1 | tee openocd.log
---
.. run-gdb-remotelog
::
riscv32-esp-elf-gdb -ex "set remotelogfile gdb_log.txt" <all other options>
---
.. devkit-defs
.. |devkit-name| replace:: ESP32-p4
.. |devkit-name-with-link| replace:: :doc:`ESP32-p4 <../../hw-reference/index>`
---
.. devkit-hw-config
* Out of the box, ESP32-p4 doesn't need any additional hardware configuration for JTAG debugging.
---

Wyświetl plik

@ -88,7 +88,7 @@ Type 字段可以指定为 app (0x00) 或者 data (0x01),也可以直接使用
SubType 字段
~~~~~~~~~~~~
{IDF_TARGET_ESP_PHY_REF:default = ":ref:`CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION`", esp32h2 = "NOT UPDATED YET"}
{IDF_TARGET_ESP_PHY_REF:default = ":ref:`CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION`", esp32p4 = "NOT UPDATED YET"}
SubType 字段长度为 8 bit内容与具体分区 Type 有关。目前esp-idf 仅仅规定了 “app” 和 “data” 两种分区类型的子类型含义。

Wyświetl plik

@ -0,0 +1,3 @@
.. code-block:: none
TO BE UPDATED IDF-7759

Wyświetl plik

@ -0,0 +1 @@
TO BE UPDATED IDF-7672

Wyświetl plik

@ -0,0 +1,6 @@
+--------+------------------------+
| ECO | Revision (Major.Minor) |
+--------+------------------------+
| ECO0 | TO BE UPDATED IDF-7759 |
+--------+------------------------+

Wyświetl plik

@ -0,0 +1,4 @@
.. code-block:: none
TO BE UPDATED IDF-7759

Wyświetl plik

@ -24,7 +24,7 @@ System API
heap_debug
esp_timer
internal-unstable
:not CONFIG_FREERTOS_UNICORE: ipc
:not CONFIG_FREERTOS_UNICORE or esp32p4: ipc
intr_alloc
log
misc_system_api

Wyświetl plik

@ -0,0 +1,16 @@
.. first_boot_enc
.. code-block:: none
TO BE UPDATED TODO IDF-7747
------
.. already_en_enc
.. code-block:: none
TO BE UPDATED TODO IDF-7747
------