diff --git a/.gitlab/ci/docs.yml b/.gitlab/ci/docs.yml index 33ab182019..b2d7b889a0 100644 --- a/.gitlab/ci/docs.yml +++ b/.gitlab/ci/docs.yml @@ -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: diff --git a/components/esp_hw_support/include/esp_cpu.h b/components/esp_hw_support/include/esp_cpu.h index f64c37191f..5a6d51b2fa 100644 --- a/components/esp_hw_support/include/esp_cpu.h +++ b/components/esp_hw_support/include/esp_cpu.h @@ -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) { diff --git a/components/esp_hw_support/port/esp32p4/Kconfig.mac b/components/esp_hw_support/port/esp32p4/Kconfig.mac index e69de29bb2..4e955bc0a4 100644 --- a/components/esp_hw_support/port/esp32p4/Kconfig.mac +++ b/components/esp_hw_support/port/esp32p4/Kconfig.mac @@ -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 diff --git a/components/soc/esp32p4/include/soc/soc_caps.h b/components/soc/esp32p4/include/soc/soc_caps.h index 9728a297af..4ea4695ce2 100644 --- a/components/soc/esp32p4/include/soc/soc_caps.h +++ b/components/soc/esp32p4/include/soc/soc_caps.h @@ -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 ---------------------------------------*/ diff --git a/docs/conf_common.py b/docs/conf_common.py index 9045718684..6e5203edb4 100644 --- a/docs/conf_common.py +++ b/docs/conf_common.py @@ -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) diff --git a/docs/docs_not_updated/esp32p4.txt b/docs/docs_not_updated/esp32p4.txt new file mode 100644 index 0000000000..33a6f616f6 --- /dev/null +++ b/docs/docs_not_updated/esp32p4.txt @@ -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 diff --git a/docs/doxygen/Doxyfile_esp32p4 b/docs/doxygen/Doxyfile_esp32p4 new file mode 100644 index 0000000000..910f295a01 --- /dev/null +++ b/docs/doxygen/Doxyfile_esp32p4 @@ -0,0 +1 @@ +INPUT += \ diff --git a/docs/en/api-guides/fatal-errors.rst b/docs/en/api-guides/fatal-errors.rst index c7351f60ab..9ba4bf278a 100644 --- a/docs/en/api-guides/fatal-errors.rst +++ b/docs/en/api-guides/fatal-errors.rst @@ -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 ^^^^^^^^^^^^ diff --git a/docs/en/api-guides/index.rst b/docs/en/api-guides/index.rst index e716ec91a1..1a4c72fa3b 100644 --- a/docs/en/api-guides/index.rst +++ b/docs/en/api-guides/index.rst @@ -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 diff --git a/docs/en/api-guides/jtag-debugging/esp32p4.inc b/docs/en/api-guides/jtag-debugging/esp32p4.inc new file mode 100644 index 0000000000..6edda46bbe --- /dev/null +++ b/docs/en/api-guides/jtag-debugging/esp32p4.inc @@ -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" + +--- + +.. 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. + +--- diff --git a/docs/en/api-guides/partition-tables.rst b/docs/en/api-guides/partition-tables.rst index 1fc14b04a9..cd98b56106 100644 --- a/docs/en/api-guides/partition-tables.rst +++ b/docs/en/api-guides/partition-tables.rst @@ -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. diff --git a/docs/en/api-reference/system/inc/espefuse_summary_ESP32-P4.rst b/docs/en/api-reference/system/inc/espefuse_summary_ESP32-P4.rst new file mode 100644 index 0000000000..c3057390a5 --- /dev/null +++ b/docs/en/api-reference/system/inc/espefuse_summary_ESP32-P4.rst @@ -0,0 +1,3 @@ +.. code-block:: none + + TO BE UPDATED IDF-7759 \ No newline at end of file diff --git a/docs/en/api-reference/system/inc/power_management_esp32p4.rst b/docs/en/api-reference/system/inc/power_management_esp32p4.rst new file mode 100644 index 0000000000..9d68cd76f4 --- /dev/null +++ b/docs/en/api-reference/system/inc/power_management_esp32p4.rst @@ -0,0 +1 @@ +TO BE UPDATED IDF-7672 \ No newline at end of file diff --git a/docs/en/api-reference/system/inc/revisions_ESP32-P4.rst b/docs/en/api-reference/system/inc/revisions_ESP32-P4.rst new file mode 100644 index 0000000000..38a71b6e28 --- /dev/null +++ b/docs/en/api-reference/system/inc/revisions_ESP32-P4.rst @@ -0,0 +1,6 @@ + ++--------+------------------------+ +| ECO | Revision (Major.Minor) | ++--------+------------------------+ +| ECO0 | TO BE UPDATED IDF-7759 | ++--------+------------------------+ diff --git a/docs/en/api-reference/system/inc/show-efuse-table_ESP32-P4.rst b/docs/en/api-reference/system/inc/show-efuse-table_ESP32-P4.rst new file mode 100644 index 0000000000..b894e97be5 --- /dev/null +++ b/docs/en/api-reference/system/inc/show-efuse-table_ESP32-P4.rst @@ -0,0 +1,4 @@ + +.. code-block:: none + + TO BE UPDATED IDF-7759 \ No newline at end of file diff --git a/docs/en/api-reference/system/index.rst b/docs/en/api-reference/system/index.rst index 24e2bf0ad2..99d3457e2d 100644 --- a/docs/en/api-reference/system/index.rst +++ b/docs/en/api-reference/system/index.rst @@ -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 diff --git a/docs/en/api-reference/system/ipc.rst b/docs/en/api-reference/system/ipc.rst index 2c6d4daee0..6fea3b2816 100644 --- a/docs/en/api-reference/system/ipc.rst +++ b/docs/en/api-reference/system/ipc.rst @@ -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 ` 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 ` 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 ^^^^^^^^^ diff --git a/docs/en/security/esp32p4_log.inc b/docs/en/security/esp32p4_log.inc new file mode 100644 index 0000000000..f5d80db587 --- /dev/null +++ b/docs/en/security/esp32p4_log.inc @@ -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 + +------ diff --git a/docs/zh_CN/api-guides/fatal-errors.rst b/docs/zh_CN/api-guides/fatal-errors.rst index 30ed77a5ee..2bd19dd4dc 100644 --- a/docs/zh_CN/api-guides/fatal-errors.rst +++ b/docs/zh_CN/api-guides/fatal-errors.rst @@ -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 + + 芯片会在该打印信息结束后复位。 + + 请注意,如果电源电压快速下降,则只能在控制台上看到部分打印信息。 -请注意,如果电源电压快速下降,则只能在控制台上看到部分打印信息。 堆不完整 ^^^^^^^^^^^ diff --git a/docs/zh_CN/api-guides/index.rst b/docs/zh_CN/api-guides/index.rst index d963866b71..0bded7d0aa 100644 --- a/docs/zh_CN/api-guides/index.rst +++ b/docs/zh_CN/api-guides/index.rst @@ -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 diff --git a/docs/zh_CN/api-guides/jtag-debugging/esp32p4.inc b/docs/zh_CN/api-guides/jtag-debugging/esp32p4.inc new file mode 100644 index 0000000000..6edda46bbe --- /dev/null +++ b/docs/zh_CN/api-guides/jtag-debugging/esp32p4.inc @@ -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" + +--- + +.. 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. + +--- diff --git a/docs/zh_CN/api-guides/partition-tables.rst b/docs/zh_CN/api-guides/partition-tables.rst index b828789189..6524fa846f 100644 --- a/docs/zh_CN/api-guides/partition-tables.rst +++ b/docs/zh_CN/api-guides/partition-tables.rst @@ -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” 两种分区类型的子类型含义。 diff --git a/docs/zh_CN/api-reference/system/inc/espefuse_summary_ESP32-P4.rst b/docs/zh_CN/api-reference/system/inc/espefuse_summary_ESP32-P4.rst new file mode 100644 index 0000000000..c3057390a5 --- /dev/null +++ b/docs/zh_CN/api-reference/system/inc/espefuse_summary_ESP32-P4.rst @@ -0,0 +1,3 @@ +.. code-block:: none + + TO BE UPDATED IDF-7759 \ No newline at end of file diff --git a/docs/zh_CN/api-reference/system/inc/power_management_esp32p4.rst b/docs/zh_CN/api-reference/system/inc/power_management_esp32p4.rst new file mode 100644 index 0000000000..9d68cd76f4 --- /dev/null +++ b/docs/zh_CN/api-reference/system/inc/power_management_esp32p4.rst @@ -0,0 +1 @@ +TO BE UPDATED IDF-7672 \ No newline at end of file diff --git a/docs/zh_CN/api-reference/system/inc/revisions_ESP32-P4.rst b/docs/zh_CN/api-reference/system/inc/revisions_ESP32-P4.rst new file mode 100644 index 0000000000..38a71b6e28 --- /dev/null +++ b/docs/zh_CN/api-reference/system/inc/revisions_ESP32-P4.rst @@ -0,0 +1,6 @@ + ++--------+------------------------+ +| ECO | Revision (Major.Minor) | ++--------+------------------------+ +| ECO0 | TO BE UPDATED IDF-7759 | ++--------+------------------------+ diff --git a/docs/zh_CN/api-reference/system/inc/show-efuse-table_ESP32-P4.rst b/docs/zh_CN/api-reference/system/inc/show-efuse-table_ESP32-P4.rst new file mode 100644 index 0000000000..b894e97be5 --- /dev/null +++ b/docs/zh_CN/api-reference/system/inc/show-efuse-table_ESP32-P4.rst @@ -0,0 +1,4 @@ + +.. code-block:: none + + TO BE UPDATED IDF-7759 \ No newline at end of file diff --git a/docs/zh_CN/api-reference/system/index.rst b/docs/zh_CN/api-reference/system/index.rst index 9b81f579a4..6d0216bf22 100644 --- a/docs/zh_CN/api-reference/system/index.rst +++ b/docs/zh_CN/api-reference/system/index.rst @@ -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 diff --git a/docs/zh_CN/security/esp32p4_log.inc b/docs/zh_CN/security/esp32p4_log.inc new file mode 100644 index 0000000000..f5d80db587 --- /dev/null +++ b/docs/zh_CN/security/esp32p4_log.inc @@ -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 + +------