Merge branch 'docs/update_cn_trans_for_4_files' into 'master'

docs: Update CN trans for 4 files

Closes DOC-8020

See merge request espressif/esp-idf!31436
This commit is contained in:
Zhang Shu Xian 2024-07-03 14:55:03 +08:00
commit 85bba8996b
10 changed files with 66 additions and 47 deletions

View File

@ -1291,6 +1291,10 @@ config SOC_LP_SPI_MAXIMUM_BUFFER_SIZE
int
default 64
config SOC_SPIRAM_XIP_SUPPORTED
bool
default y
config SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE
bool
default y

View File

@ -508,6 +508,8 @@
/*-------------------------- LP SPI CAPS ----------------------------------------*/
#define SOC_LP_SPI_PERIPH_NUM 1
#define SOC_LP_SPI_MAXIMUM_BUFFER_SIZE 64
/*-------------------------- SPIRAM CAPS ----------------------------------------*/
#define SOC_SPIRAM_XIP_SUPPORTED 1
/*-------------------------- SPI MEM CAPS ---------------------------------------*/
#define SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE (1)

View File

@ -26,7 +26,7 @@ Hardware
.. only:: esp32 or esp32s2 or esp32s3
Some PSRAM chips are 1.8 V devices and some are 3.3 V. The working voltage of the PSRAM chip must match the working voltage of the flash component. Consult the datasheet for your PSRAM chip and {IDF_TARGET_NAME} device to find out the working voltages. For a 1.8 V PSRAM chip, make sure to either set the MTDI pin to a high signal level on bootup, or program {IDF_TARGET_NAME} eFuses to always use the VDD_SIO level of 1.8 V. Not doing this can damage the PSRAM and/or flash chip.
Some PSRAM chips are 1.8 V devices and some are 3.3 V. The working voltage of the PSRAM chip must match the working voltage of the flash component. Consult the datasheet for your PSRAM chip and {IDF_TARGET_NAME} device to find out the working voltages. For a 1.8 V PSRAM chip, make sure to either set the MTDI pin to a high signal level on boot-up, or program {IDF_TARGET_NAME} eFuses to always use the VDD_SIO level of 1.8 V. Not doing this can damage the PSRAM and/or flash chip.
.. only:: esp32p4
@ -55,8 +55,7 @@ ESP-IDF fully supports the use of external RAM in applications. Once the externa
* :ref:`external_ram_config_malloc` (default)
* :ref:`external_ram_config_bss`
:esp32: * :ref:`external_ram_config_noinit`
:SOC_SPIRAM_XIP_SUPPORTED: * :ref:`external_ram_config_instructions`
:SOC_SPIRAM_XIP_SUPPORTED: * :ref:`external_ram_config_rodata`
:SOC_SPIRAM_XIP_SUPPORTED: * :ref:`external_ram_config_xip`
.. _external_ram_config_memory_map:
@ -139,8 +138,6 @@ Remaining external RAM can also be added to the capability heap allocator using
.. only:: esp32s2 or esp32s3
.. _external_ram_config_instructions:
Move Instructions in Flash to PSRAM
-----------------------------------
@ -152,8 +149,6 @@ Remaining external RAM can also be added to the capability heap allocator using
- The corresponding virtual memory range of those instructions will also be re-mapped to PSRAM.
.. _external_ram_config_rodata:
Move Read-Only Data in Flash to PSRAM
---------------------------------------
@ -165,6 +160,7 @@ Remaining external RAM can also be added to the capability heap allocator using
- The corresponding virtual memory range of those rodata will also be re-mapped to PSRAM.
.. _external_ram_config_xip:
Execute In Place (XiP) from PSRAM
------------------------------------
@ -179,12 +175,14 @@ Remaining external RAM can also be added to the capability heap allocator using
.. only:: esp32p4
.. _external_ram_config_xip:
Execute In Place (XiP) from PSRAM
------------------------------------
The :ref:`CONFIG_SPIRAM_XIP_FROM_PSRAM` option enables the executable in place (XiP) from PSRAM feature. With this option sections that are normally placed in flash ,``.text`` (for instructions) and ``.rodata`` (for read only data), will be loaded in PSRAM.
The :ref:`CONFIG_SPIRAM_XIP_FROM_PSRAM` option enables the executable in place (XiP) from PSRAM feature. With this option sections that are normally placed in flash, ``.text`` (for instructions) and ``.rodata`` (for read only data), will be loaded in PSRAM.
With this option enabled, the cache will not be disabled during an SPI1 flash operation, so code that requires executing during an SPI1 Flash operation does not have to be placed in internal RAM. Because P4 Flash and PSRAM are using two separate SPI buses, moving Flash content to PSRAM will actually increase the load of the PSRAM MSPI bus, so the access speed is relatively slower. The exact impact on performance will be very dependent on your apps usage of PSRAM, and we suggest doing performance profiling to determine if enabling this option will significantly impact your app's performance.
With this option enabled, the cache will not be disabled during an SPI1 flash operation, so code that requires executing during an SPI1 flash operation does not have to be placed in internal RAM. Because P4 flash and PSRAM are using two separate SPI buses, moving flash content to PSRAM will actually increase the load of the PSRAM MSPI bus, so the access speed is relatively slower. The exact impact on performance will be very dependent on your apps usage of PSRAM, and we suggest doing performance profiling to determine if enabling this option will significantly impact your app's performance.
Restrictions

View File

@ -19,7 +19,7 @@ The SPI0/1 bus is shared between the instruction & data cache (for firmware exec
.. only:: SOC_SPIRAM_XIP_SUPPORTED
On {IDF_TARGET_NAME}, the config options :ref:`CONFIG_SPIRAM_FETCH_INSTRUCTIONS` (disabled by default) and :ref:`CONFIG_SPIRAM_RODATA` (disabled by default) allow the cache to read/write PSRAM concurrently with SPI1 operations. See :ref:`xip_from_psram` for more details.
On {IDF_TARGET_NAME}, the config options :ref:`CONFIG_SPIRAM_XIP_FROM_PSRAM` (disabled by default) allows the cache to read/write PSRAM concurrently with SPI1 operations. See :ref:`xip_from_psram` for more details.
If these options are disabled, the caches must be disabled while reading/writing/erasing operations. There are some constraints using driver on the SPI1 bus, see :ref:`impact_disabled_cache`. These constraints will cause more IRAM/DRAM usages.
@ -40,7 +40,7 @@ Under this condition, all CPUs should always execute code and access data from i
.. note::
When :ref:`CONFIG_SPIRAM_FETCH_INSTRUCTIONS` and :ref:`CONFIG_SPIRAM_RODATA` are both enabled, these APIs will not disable the caches.
When :ref:`CONFIG_SPIRAM_XIP_FROM_PSRAM` is enabled, these APIs will not disable the caches.
.. only:: SOC_HP_CPU_HAS_MULTIPLE_CORES

View File

@ -3,10 +3,8 @@
XIP from PSRAM Feature
----------------------
If :ref:`CONFIG_SPIRAM_FETCH_INSTRUCTIONS` is enabled, the flash ``.text`` sections (used for instructions) will be placed in PSRAM.
If :ref:`CONFIG_SPIRAM_XIP_FROM_PSRAM` is enabled, the flash ``.text`` sections (used for instructions) and the flash ``.rodata`` sections (used for read only data) will be placed in PSRAM.
If :ref:`CONFIG_SPIRAM_RODATA` is enabled, the flash ``.rodata`` sections (used for read only data) will be placed in PSRAM.
The corresponding virtual memory range will be re-mapped to PSRAM.
The corresponding virtual memory range will be mapped to PSRAM.
If both of the above options are enabled, the Cache won't be disabled during an SPI1 Flash operation. You don't need to make sure ISRs, ISR callbacks and involved data are placed in internal RAM.

View File

@ -55,8 +55,7 @@ ESP-IDF 完全支持将片外 RAM 集成到你的应用程序中。在启动并
* :ref:`external_ram_config_malloc` (default)
* :ref:`external_ram_config_bss`
:esp32: * :ref:`external_ram_config_noinit`
:SOC_SPIRAM_XIP_SUPPORTED: * :ref:`external_ram_config_instructions`
:SOC_SPIRAM_XIP_SUPPORTED: * :ref:`external_ram_config_rodata`
:SOC_SPIRAM_XIP_SUPPORTED: * :ref:`external_ram_config_xip`
.. _external_ram_config_memory_map:
@ -82,7 +81,7 @@ ESP-IDF 启动过程中,片外 RAM 被映射到数据虚拟地址空间,该
:ref:`CONFIG_SPIRAM_USE` 中选择 ``Make RAM allocatable using heap_caps_malloc(..., MALLOC_CAP_SPIRAM)`` 选项。
启用上述选项后,片外 RAM 被映射到数据虚拟地址空间,并将这个区域添加到携带 ``MALLOC_CAP_SPIRAM`` 标志的 :doc:`堆内存分配器 </api-reference/system/mem_alloc>`
启用上述选项后,片外 RAM 被映射到数据虚拟地址空间,并将这个区域添加到携带 ``MALLOC_CAP_SPIRAM`` 标志的 :doc:`堆内存分配器 </api-reference/system/mem_alloc>`
程序如果想从片外存储器分配存储空间,则需要调用 ``heap_caps_malloc(size, MALLOC_CAP_SPIRAM)``,之后可以调用 ``free()`` 函数释放这部分存储空间。
@ -114,7 +113,7 @@ ESP-IDF 启动过程中,片外 RAM 被映射到数据虚拟地址空间,该
通过勾选 :ref:`CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY` 启用该选项。
启用该选项后PSRAM 被映射到的数据虚拟地址空间将用于存储来自 lwip、net80211、libpp, wpa_supplicant 和 bluedroid ESP-IDF 库中零初始化的数据BSS 段)。
启用该选项后PSRAM 被映射到的数据虚拟地址空间将用于存储来自 lwip、net80211、libppwpa_supplicant 和 bluedroid ESP-IDF 库中零初始化的数据BSS 段)。
通过将宏 ``EXT_RAM_BSS_ATTR`` 应用于任何静态声明(未初始化为非零值),可以将附加数据从内部 BSS 段移到片外 RAM。
@ -137,35 +136,54 @@ ESP-IDF 启动过程中,片外 RAM 被映射到数据虚拟地址空间,该
.. only:: SOC_SPIRAM_XIP_SUPPORTED
.. _external_ram_config_instructions:
.. only:: esp32s2 or esp32s3
将 flash 中的指令移至 PSRAM
-----------------------------------
将 flash 中的指令移至 PSRAM
-----------------------------------
启用 :ref:`CONFIG_SPIRAM_FETCH_INSTRUCTIONS` 选项后flash 中 ``.text`` 部分的数据(用于指令)将被放入 PSRAM。
启用 :ref:`CONFIG_SPIRAM_FETCH_INSTRUCTIONS` 选项后flash 中 ``.text`` 部分的数据(用于指令)将被放入 PSRAM。
启用 :ref:`CONFIG_SPIRAM_FETCH_INSTRUCTIONS` 选项后:
启用 :ref:`CONFIG_SPIRAM_FETCH_INSTRUCTIONS` 选项后:
- flash ``.text`` 部分中的指令将在系统启动时移至 PSRAM。
- flash ``.text`` 部分中的指令将在系统启动时移至 PSRAM。
- 上述指令对应的虚拟内存范围也将重新映射至 PSRAM。
- 上述指令对应的虚拟内存范围也将重新映射至 PSRAM。
如果同时启用 :ref:`CONFIG_SPIRAM_RODATA`SPI1 flash 操作期间不会禁用 cache。ISR、ISR 回调和相关数据无需放在内部 RAM 中,因此可以优化内部 RAM 的使用。
将 flash 中的只读数据移至 PSRAM
---------------------------------------
.. _external_ram_config_rodata:
启用 :ref:`CONFIG_SPIRAM_RODATA` 选项后flash 中 ``.rodata`` 部分的数据(用于只读数据)将被放入 PSRAM。
将 flash 中的只读数据移至 PSRAM
---------------------------------------
启用 :ref:`CONFIG_SPIRAM_RODATA` 选项后:
启用 :ref:`CONFIG_SPIRAM_RODATA` 选项后flash 中 ``.rodata`` 部分的数据(用于只读数据)将被放入 PSRAM。
- flash ``.rodata`` 部分中的指令将在系统启动时移至 PSRAM。
启用 :ref:`CONFIG_SPIRAM_RODATA` 选项后:
- 上述只读数据对应的虚拟内存范围也将重新映射至 PSRAM。
- flash ``.rodata`` 部分中的指令将在系统启动时移至 PSRAM。
.. _external_ram_config_xip:
- 上述只读数据对应的虚拟内存范围也将重新映射至 PSRAM。
在 PSRAM 中直接执行代码
------------------------------------
启用 :ref:`CONFIG_SPIRAM_XIP_FROM_PSRAM` 选项后,可同时指定 :ref:`CONFIG_SPIRAM_FETCH_INSTRUCTIONS`:ref:`CONFIG_SPIRAM_RODATA` 选项。
在 PSRAM 中直接执行代码的好处包括:
- PSRAM 访问速度快于 flash因此性能更好。
- 在进行 SPI1 flash 操作期间cache 仍然保持启用状态,这样可以优化代码执行性能。由于无需把中断服务程序 (ISR)、ISR 回调和在此期间可能被访问的数据放置在片上 RAM 中,片上 RAM 可用于其他用途,从而提高了使用效率。这个特性适用于需要处理大量数据的高吞吐量外设应用,能显著提高 SPI1 flash 操作期间的性能。
.. only:: esp32p4
.. _external_ram_config_xip:
在 PSRAM 中直接执行代码
------------------------------------
启用 :ref:`CONFIG_SPIRAM_XIP_FROM_PSRAM` 选项后能在 PSRAM 中直接执行代码。通常放置在 flash 中的段,如 ``.text`` 部分的数据(用于指令)和 ``.rodata`` 部分的数据(用于只读数据),将被加载到 PSRAM 中。
启用此选项后SPI1 flash 操作期间 cache 保持启用状态,因此需要执行的代码在此期间不必放置在内部 RAM 中。由于 ESP32-P4 flash 和 PSRAM 使用两个独立的 SPI 总线,将 flash 内容移动到 PSRAM 实际上增加了 PSRAM MSPI 总线的负载,因此访问速度相对较慢。应用程序在运行过程中对 PSRAM 的使用会直接影响整体性能。因此,建议先进行性能分析以确定启用此选项是否会显著影响应用程序性能。
如果同时启用 :ref:`CONFIG_SPIRAM_FETCH_INSTRUCTIONS`SPI1 flash 操作期间不会禁用 cache。ISR、ISR 回调和相关数据无需放在内部 RAM 中,因此可以优化内部 RAM 的使用。
片外 RAM 使用限制
===================
@ -192,7 +210,7 @@ ESP-IDF 启动过程中,片外 RAM 被映射到数据虚拟地址空间,该
初始化失败
=====================
====================
默认情况下,片外 RAM 初始化失败将终止 ESP-IDF 启动。如果想禁用此功能,可启用 :ref:`CONFIG_SPIRAM_IGNORE_NOTFOUND` 配置选项。
@ -206,7 +224,7 @@ ESP-IDF 启动过程中,片外 RAM 被映射到数据虚拟地址空间,该
加密
==========
可以为存储在外部 RAM 中的数据启用自动加密功能。启用该功能后,通过缓存读写的任何数据将被外部存储器加密硬件自动加密/解密。
可以为存储在外部 RAM 中的数据启用自动加密功能。启用该功能后,通过缓存读写的任何数据将被外部存储器加密硬件自动加密解密。
只要启用了 flash 加密功能,就会启用这个功能。关于如何启用 flash 加密以及其工作原理,请参考 :doc:`/security/flash-encryption`

View File

@ -459,6 +459,10 @@ NAPT 和端口转发
:ref:`lwip-dns-limitation` 所述ESP-IDF 中的 lwIP 扩展功能仍然受到全局 DNS 限制的影响。为了在应用程序代码中解决这一限制,可以使用 ``FALLBACK_DNS_SERVER_ADDRESS()`` 宏定义所有接口能够访问的全局 DNS 备用服务器,或者单独维护每个接口的 DNS 服务器,并在默认接口更改时重新配置。
通过网络数据库 API 返回的 IP 地址数量受限:``getaddrinfo()````gethostbyname()`` 受到宏 ``DNS_MAX_HOST_IP`` 的限制,宏的默认值为 1。
在调用 ``getaddrinfo()`` 函数时,不会返回规范名称。因此,第一个返回的 ``addrinfo`` 结构中的 ``ai_canonname`` 字段仅包含 ``nodename`` 参数或相同内容的字符串。
在 UDP 套接字上重复调用 ``send()````sendto()`` 最终可能会导致错误。此时 ``errno`` 报错为 ``ENOMEM``,错误原因是底层网络接口驱动程序中的 buffer 大小有限。当所有驱动程序的传输 buffer 已满时UDP 传输事务失败。如果应用程序需要发送大量 UDP 数据报,且不希望发送方丢弃数据报,建议检查错误代码,采用短延迟的重传机制。
.. only:: esp32

View File

@ -19,7 +19,7 @@ SPI1 flash 并发约束
.. only:: SOC_SPIRAM_XIP_SUPPORTED
在 {IDF_TARGET_NAME} 上,启用配置选项 :ref:`CONFIG_SPIRAM_FETCH_INSTRUCTIONS` (默认禁用)和 :ref:`CONFIG_SPIRAM_RODATA` (默认禁用)后将允许 flash/PSRAM 的 cache 访问和 SPI1 的操作并发执行。请参阅 :ref:`xip_from_psram`,查看详细信息。
在 {IDF_TARGET_NAME} 上,启用配置选项 :ref:`CONFIG_SPIRAM_XIP_FROM_PSRAM` (默认禁用)后将允许 flash/PSRAM 的 cache 访问和 SPI1 的操作并发执行。请参阅 :ref:`xip_from_psram`,查看详细信息。
禁用该选项时,在读取/写入/擦除 flash 期间,必须禁用 cache。使用驱动访问 SPI1 的相关约束参见 :ref:`impact_disabled_cache`。这些约束会带来更多的 IRAM/DRAM 消耗。
@ -40,7 +40,7 @@ SPI1 flash 并发约束
.. note::
同时启用 :ref:`CONFIG_SPIRAM_FETCH_INSTRUCTIONS`:ref:`CONFIG_SPIRAM_RODATA` 选项后,不会禁用 cache。
启用 :ref:`CONFIG_SPIRAM_XIP_FROM_PSRAM` 选项后,不会禁用 cache。
.. only:: SOC_HP_CPU_HAS_MULTIPLE_CORES

View File

@ -3,10 +3,8 @@
PSRAM 中执行代码
----------------------
启用 :ref:`CONFIG_SPIRAM_FETCH_INSTRUCTIONS` 选项后flash ``.text`` 部分的数据(用于指令)将被放入 PSRAM。
启用 :ref:`CONFIG_SPIRAM_XIP_FROM_PSRAM` 选项后flash ``.text`` 部分的数据(用于指令)和 flash ``.rodata`` 部分的数据(用于只读数据)将被放入 PSRAM。
启用 :ref:`CONFIG_SPIRAM_RODATA` 选项后flash ``.rodata`` 部分的数据(用于只读数据)将被放入 PSRAM。
相应的虚拟内存地址将被重新映射到 PSRAM。
相应的虚拟内存地址将被映射到 PSRAM。
如果同时启用以上两个选项,则在 SPI1 flash 操作期间 cache 不会被禁用,无需确保 ISR、ISR 回调及相关数据放置在内部 RAM 中。

View File

@ -1,4 +1 @@
.. code-block:: none
To be updated for C5
.. include:: ../../../en/api-reference/system/inc/show-efuse-table_ESP32-C5.rst