docs: Update CN translation for libs-framework.rst and partition-table.rst

This commit is contained in:
shenmengjing
2024-10-10 18:57:38 +08:00
committed by BOT
parent 653ce935f9
commit a98ff3aea6
4 changed files with 334 additions and 287 deletions

View File

@@ -17,12 +17,14 @@ The simplest way to use the partition table is to open the project configuration
* "Single factory app, no OTA"
* "Factory app, two OTA definitions"
In both cases the factory app is flashed at offset 0x10000. If you execute `idf.py partition-table` then it will print a summary of the partition table.
In both cases the factory app is flashed at offset 0x10000. If you execute ``idf.py partition-table`` then it will print a summary of the partition table.
Built-in Partition Tables
-------------------------
Here is the summary printed for the "Single factory app, no OTA" configuration::
Here is the summary printed for the "Single factory app, no OTA" configuration:
.. code-block:: none
# ESP-IDF Partition Table
# Name, Type, SubType, Offset, Size, Flags
@@ -33,7 +35,9 @@ Here is the summary printed for the "Single factory app, no OTA" configuration::
* At a 0x10000 (64 KB) offset in the flash is the app labelled "factory". The bootloader runs this app by default.
* There are also two data regions defined in the partition table for storing NVS library partition and PHY init data.
Here is the summary printed for the "Factory app, two OTA definitions" configuration::
Here is the summary printed for the "Factory app, two OTA definitions" configuration:
.. code-block:: none
# ESP-IDF Partition Table
# Name, Type, SubType, Offset, Size, Flags
@@ -48,11 +52,13 @@ Here is the summary printed for the "Factory app, two OTA definitions" configura
* There is also a new "otadata" slot, which holds the data for OTA updates. The bootloader consults this data in order to know which app to execute. If "ota data" is empty, it will execute the factory app.
Creating Custom Tables
-------------------------
----------------------
If you choose "Custom partition table CSV" in menuconfig then you can also enter the name of a CSV file (in the project directory) to use for your partition table. The CSV file can describe any number of definitions for the table you need.
The CSV format is the same format as printed in the summaries shown above. However, not all fields are required in the CSV. For example, here is the "input" CSV for the OTA partition table::
The CSV format is the same format as printed in the summaries shown above. However, not all fields are required in the CSV. For example, here is the "input" CSV for the OTA partition table:
.. code-block:: none
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x4000
@@ -65,7 +71,7 @@ The CSV format is the same format as printed in the summaries shown above. Howev
* Whitespace between fields is ignored, and so is any line starting with # (comments).
* Each non-comment line in the CSV file is a partition definition.
* The "Offset" field for each partition is empty. The gen_esp32part.py tool fills in each blank offset, starting after the partition table and making sure each partition is aligned correctly.
* The ``Offset`` field for each partition is empty. The ``gen_esp32part.py`` tool fills in each blank offset, starting after the partition table and making sure each partition is aligned correctly.
Name Field
~~~~~~~~~~
@@ -77,15 +83,17 @@ Type Field
Partition type field can be specified as a name or a number 0-254 (or as hex 0x00-0xFE). Types 0x00-0x3F are reserved for ESP-IDF core functions.
- ``app`` (0x00),
- ``data`` (0x01),
- ``bootloader`` (0x02). By default, this partition is not included in any CSV partition table files because it is not required and does not impact the system's functionality. It is only useful for the bootloader OTA update. Even if this partition is not present in the CSV file, it is still possible to perform the OTA. Please note that if you specify this partition in the CSV file, its address and size must match Kconfigs,
- ``partition_table`` (0x03),
- ``app`` (0x00).
- ``data`` (0x01).
- ``bootloader`` (0x02). By default, this partition is not included in any CSV partition table files because it is not required and does not impact the system's functionality. It is only useful for the bootloader OTA update. Even if this partition is not present in the CSV file, it is still possible to perform the OTA. Please note that if you specify this partition in the CSV file, its address and size must match Kconfigs.
- ``partition_table`` (0x03).
- 0x40-0xFE are reserved for **custom partition types**. If your app needs to store data in a format not already supported by ESP-IDF, then use a value from this range.
See :cpp:type:`esp_partition_type_t` for the enum definitions for ``app`` and ``data`` partitions.
If writing in C++ then specifying a application-defined partition type requires casting an integer to :cpp:type:`esp_partition_type_t` in order to use it with the :ref:`partition API<api-reference-partition-table>`. For example::
If writing in C++ then specifying a application-defined partition type requires casting an integer to :cpp:type:`esp_partition_type_t` in order to use it with the :ref:`partition API<api-reference-partition-table>`. For example:
.. code-block:: none
static const esp_partition_type_t APP_PARTITION_TYPE_A = (esp_partition_type_t)0x40;
@@ -93,6 +101,7 @@ The bootloader ignores any partition types other than ``app`` (0x00) and ``data`
SubType
~~~~~~~
{IDF_TARGET_ESP_PHY_REF:default = ":ref:`CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION`", esp32p4, esp32c5, esp32c61="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.
@@ -111,7 +120,7 @@ See enum :cpp:type:`esp_partition_subtype_t` for the full list of subtypes defin
* When type is ``bootloader``, the SubType field can be specified as:
- ``primary`` (0x00). It is the so-called 2nd stage bootloader, which is placed at the {IDF_TARGET_CONFIG_BOOTLOADER_OFFSET_IN_FLASH} address in the flash. The ``gen_esp32part.py`` does not allow to have this partition in the CSV file for now.
- ``primary`` (0x00). It is the so-called second stage bootloader, which is placed at the {IDF_TARGET_CONFIG_BOOTLOADER_OFFSET_IN_FLASH} address in the flash. The ``gen_esp32part.py`` does not allow to have this partition in the CSV file for now.
- ``ota`` (0x01). It is a temporary bootloader partition used by the bootloader OTA update functionality for downloading a new image.
* When type is ``partition_table``, the SubType field can be specified as:
@@ -206,15 +215,21 @@ The partition table which is flashed to the {IDF_TARGET_NAME} is in a binary for
If you configure the partition table CSV name in the project configuration (``idf.py menuconfig``) and then build the project or run ``idf.py partition-table``, this conversion is done as part of the build process.
To convert CSV to Binary manually::
To convert CSV to Binary manually:
.. code-block:: none
python gen_esp32part.py input_partitions.csv binary_partitions.bin
To convert binary format back to CSV manually::
To convert binary format back to CSV manually:
.. code-block:: none
python gen_esp32part.py binary_partitions.bin input_partitions.csv
To display the contents of a binary partition table on stdout (this is how the summaries displayed when running ``idf.py partition-table`` are generated::
To display the contents of a binary partition table on stdout (this is how the summaries displayed when running ``idf.py partition-table`` are generated:
.. code-block:: none
python gen_esp32part.py binary_partitions.bin
@@ -343,9 +358,10 @@ The command-line interface of `parttool.py` has the following structure:
parttool.py --port "/dev/ttyUSB1" get_partition_info --partition-boot-default --info size
.. note::
If the device has already enabled ``Flash Encryption`` or ``Secure Boot``, attempting to use commands that modify the flash content, such as ``erase_partition`` or ``write_partition``, will result in an error. This error is generated by the erase command of ``esptool.py``, which is called first before writing. This error is done as a safety measure to prevent bricking your device.
::
.. code-block:: none
A fatal error occurred: Active security features detected, erasing flash is disabled as a safety measure. Use --force to override, please use with caution, otherwise it may brick your device!

View File

@@ -107,4 +107,3 @@ ESP-IDF-CXX
-----------
`ESP-IDF-CXX <https://github.com/espressif/esp-idf-cxx>`_ contains C++ wrappers for part of ESP-IDF. The focuses are on ease of use, safety, automatic resource management. They also move error checking from runtime to compile time to prevent running failure. There are C++ classes for ESP-Timer, I2C, SPI, GPIO and other peripherals or features of ESP-IDF. ESP-IDF-CXX is available as a component from `ESP Component Registry <https://components.espressif.com/components/espressif/esp-idf-cxx>`__. Please check the project's `README.md <https://github.com/espressif/esp-idf-cxx/blob/main/README.md>`_ for more information.

View File

@@ -8,21 +8,23 @@
每片 {IDF_TARGET_NAME} 的 flash 可以包含多个应用程序,以及多种不同类型的数据(例如校准数据、文件系统数据、参数存储数据等)。因此,我们在 flash 的 :ref:`默认偏移地址 <CONFIG_PARTITION_TABLE_OFFSET>` 0x8000 处烧写一张分区表。
分区表的长度为 0xC00 字节,最多可以保存 95 条分区表条目。MD5 校验和附加在分区表之后,用于在运行时验证分区表的完整性。分区表占据了整个 flash 扇区,大小为 0x1000 (4 KB)。因此,它后面的任何分区至少需要位于 (:ref:`默认偏移地址 <CONFIG_PARTITION_TABLE_OFFSET>`) + 0x1000 处。
分区表的长度为 0xC00 字节,最多可以保存 95 条分区表条目。MD5 校验和附加在分区表之后,用于在运行时验证分区表的完整性。分区表占据了整个 flash 扇区,大小为 0x1000 (4 KB)。因此,它后面的任何分区至少需要位于:ref:`默认偏移地址 <CONFIG_PARTITION_TABLE_OFFSET>` + 0x1000 处。
分区表中的每个条目都包括以下几个部分Name标签、Typeapp、data 等、SubType 以及在 flash 中的偏移量(分区的加载地址)。
在使用分区表时,最简单的方法就是打开项目配置菜单``idf.py menuconfig``,并在 :ref:`CONFIG_PARTITION_TABLE_TYPE` 下选择一个预定义的分区表:
在使用分区表时,最简单的方法就是打开项目配置菜单 (``idf.py menuconfig``),并在 :ref:`CONFIG_PARTITION_TABLE_TYPE` 下选择一个预定义的分区表:
- "Single factory app, no OTA"
- "Factory app, two OTA definitions"
* "Single factory app, no OTA"
* "Factory app, two OTA definitions"
在以上两种选项中,出厂应用程序均将被烧录至 flash 的 0x10000 偏移地址处。这时,运行 ``idf.py partition-table``,即可以打印当前使用分区表的信息摘要。
内置分区表
------------
----------
以下是 "Single factory app, no OTA" 选项的分区表信息摘要::
以下是 "Single factory app, no OTA" 选项的分区表信息摘要
.. code-block:: none
# ESP-IDF Partition Table
# Name, Type, SubType, Offset, Size, Flags
@@ -30,10 +32,12 @@
phy_init, data, phy, 0xf000, 0x1000,
factory, app, factory, 0x10000, 1M,
- flash 的 0x10000 (64 KB) 偏移地址处存放一个标记为 "factory" 的二进制应用程序引导加载程序默认加载这个应用程序。
- flash 的 0x10000 (64 KB) 偏移地址处存放一个标记为 "factory" 的二进制应用程序引导加载程序默认加载这个应用程序。
- 分区表中还定义了两个数据区域,分别用于存储 NVS 库专用分区和 PHY 初始化数据。
以下是 "Factory app, two OTA definitions" 选项的分区表信息摘要::
以下是 "Factory app, two OTA definitions" 选项的分区表信息摘要
.. code-block:: none
# ESP-IDF Partition Table
# Name, Type, SubType, Offset, Size, Flags
@@ -44,15 +48,17 @@
ota_0, app, ota_0, 0x110000, 1M,
ota_1, app, ota_1, 0x210000, 1M,
- 分区表中定义了三个应用程序分区,这三个分区的类型都被设置为 “app”但具体 app 类型不同。其中,位于 0x10000 偏移地址处的为出厂应用程序 (factory),其余两个为 OTA 应用程序ota_0ota_1
- 新增了一个名为 otadata 的数据分区,用于保存 OTA 升级时需要的数据。引导加载程序会查询该分区的数据,以判断该从哪个 OTA 应用程序分区加载程序。如果 otadata 分区为空,则会执行出厂程序。
* 分区表中定义了三个应用程序分区,这三个分区的类型都被设置为 “app”但具体 app 类型不同。其中,位于 0x10000 偏移地址处的为出厂应用程序 (factory),其余两个为 OTA 应用程序 (ota_0, ota_1)
* 新增了一个名为 "otadata" 的数据分区,用于保存 OTA 升级时需要的数据。引导加载程序会查询该分区的数据,以判断该从哪个 OTA 应用程序分区加载程序。如果 "otadata" 分区为空,则会执行出厂程序。
创建自定义分区表
----------------
如果在 ``menuconfig`` 中选择了 Custom partition table CSV,则还需要输入该分区表的 CSV 文件在项目中的路径。CSV 文件可以根据需要,描述任意数量的分区信息。
如果在 ``menuconfig`` 中选择了 "Custom partition table CSV",则还需要输入该分区表的 CSV 文件在项目中的路径。CSV 文件可以根据需要,描述任意数量的分区信息。
CSV 文件的格式与上面摘要中打印的格式相同,但是在 CSV 文件中并非所有字段都是必需的。例如下面是一个自定义的 OTA 分区表的 CSV 文件::
CSV 文件的格式与上面摘要中打印的格式相同,但是在 CSV 文件中并非所有字段都是必需的。例如下面是一个自定义的 OTA 分区表的 CSV 文件
.. code-block:: none
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x4000
@@ -63,9 +69,9 @@ CSV 文件的格式与上面摘要中打印的格式相同,但是在 CSV 文
ota_1, app, ota_1, , 1M
nvs_key, data, nvs_keys, , 0x1000
- 字段之间的空格会被忽略,任何以 ``#`` 开头的行(注释)也会被忽略。
- CSV 文件中的每个非注释行均为一个分区定义。
- 每个分区的 ``Offset`` 字段可以为空,``gen_esp32part.py`` 工具会从分区表位置的后面开始自动计算并填充该分区的偏移地址,同时确保每个分区的偏移地址正确对齐。
* 字段之间的空格会被忽略,任何以 ``#`` 开头的行(注释)也会被忽略。
* CSV 文件中的每个非注释行均为一个分区定义。
* 每个分区的 ``Offset`` 字段可以为空,``gen_esp32part.py`` 工具会从分区表位置的后面开始自动计算并填充该分区的偏移地址,同时确保每个分区的偏移地址正确对齐。
Name 字段
~~~~~~~~~
@@ -75,13 +81,19 @@ Name 字段可以是任何有意义的名称,但不能超过 16 个字节,
Type 字段
~~~~~~~~~
Type 字段可以指定为 app (0x00) 或者 data (0x01),也可以直接使用数字 0-254或者十六进制 0x00-0xFE。注意0x00-0x3F 不得使用预留给 esp-idf 的核心功能)
Type 字段可以指定为名称或数字 0254或者十六进制 0x00-0xFE。注意不得使用预留给 ESP-IDF 核心功能的 0x00-0x3F
如果你的应用程序需要以 ESP-IDF 尚未支持的格式存储数据,请在 0x40-0xFE 内添加一个自定义分区类型。
- ``app`` (0x00)
- ``data`` (0x01)。
- ``bootloader`` (0x02)。该分区为可选项且不会影响系统功能,因此默认情况下,该分区不会出现在任何 CSV 分区表文件中,仅在引导加载程序 OTA 更新时有用。即使 CSV 文件中没有该分区,仍然可以执行 OTA。请注意如果在 CSV 文件中指定了该分区,其地址和大小必须与 Kconfig 设置相匹配。
- ``partition_table`` (0x03)。
- 0x40-0xFE 预留给 **自定义分区类型**。如果你的应用程序需要以 ESP-IDF 尚未支持的格式存储数据,请在 0x40-0xFE 内添加一个自定义分区类型。
参考 :cpp:type:`esp_partition_type_t` 关于 ``app````data`` 分区的枚举定义。
关于 ``app````data`` 分区的枚举定义,请参考 :cpp:type:`esp_partition_type_t`
如果用 C++ 编写,那么指定一个应用程序定义的分区类型,需要在 :cpp:type:`esp_partition_type_t` 中使用整数,从而与 :ref:`分区 API<api-reference-partition-table>` 一起使用。例如::
如果用 C++ 编写,那么指定一个应用程序定义的分区类型,需要在 :cpp:type:`esp_partition_type_t` 中使用整数,从而与 :ref:`分区 API<api-reference-partition-table>` 一起使用。例如
.. code-block:: none
static const esp_partition_type_t APP_PARTITION_TYPE_A = (esp_partition_type_t)0x40;
@@ -89,22 +101,33 @@ Type 字段可以指定为 app (0x00) 或者 data (0x01),也可以直接使用
SubType 字段
~~~~~~~~~~~~
{IDF_TARGET_ESP_PHY_REF:default = ":ref:`CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION`", esp32p4, esp32c5, esp32c61 = "NOT UPDATED YET"}
SubType 字段长度为 8 bit内容与具体分区 Type 有关。目前esp-idf 仅仅规定了 “app” 和 “data” 两种分区类型的子类型含义。
{IDF_TARGET_ESP_PHY_REF:default = ":ref:`CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION`", esp32p4, esp32c5, esp32c61 = "尚未更新"}
SubType 字段长度为 8 bit内容与具体分区 Type 有关。目前ESP-IDF 仅仅规定了 ``app````data`` 两种分区类型的子类型含义。
参考 :cpp:type:`esp_partition_subtype_t`,以了解 ESP-IDF 定义的全部子类型列表,包括:
* 当 Type 定义为 ``app``SubType 字段可以指定为 ``factory`` (0x00)、 ``ota_0`` (0x10) … ``ota_15`` (0x1F) 或者 ``test`` (0x20)。
- ``factory`` (0x00) 是默认的 app 分区。引导加载程序默认加载该应用程序。但如果存在类型为 data/ota 的分区,则引导加载程序将加载 data/ota 分区中的数据,进而判断启动哪个 OTA 镜像文件。
- ``factory`` (0x00) 是默认的 app 分区。引导加载程序默认加载该应用程序。但如果存在类型为 data/ota 的分区,则引导加载程序将加载 data/ota 分区中的数据,进而判断启动哪个 OTA 镜像文件。
- OTA 升级永远都不会更新 factory 分区中的内容。
- 如果你希望在 OTA 项目中预留更多 flash可以删除 factory 分区,转而使用 ota_0 分区。
- ota_0 (0x10) … ota_15 (0x1F) 为 OTA 应用程序分区,引导加载程序将根据 OTA 数据分区中的数据来决定加载哪个 OTA 应用程序分区中的程序。在使用 OTA 功能时,应用程序应至少拥有 2 个 OTA 应用程序分区(``ota_0````ota_1``)。更多详细信息,请参考 :doc:`OTA 文档 </api-reference/system/ota>`
- ``ota_0`` (0x10) … ``ota_15`` (0x1F) 为 OTA 应用程序分区,引导加载程序将根据 OTA 数据分区中的数据来决定加载哪个 OTA 应用程序分区中的程序。在使用 OTA 功能时,应用程序应至少拥有 2 个 OTA 应用程序分区(``ota_0````ota_1``)。更多详细信息,请参考 :doc:`OTA 文档 </api-reference/system/ota>`
- ``test`` (0x20) 为预留的子类型,用于工厂测试流程。如果没有其他有效 app 分区test 将作为备选启动分区使用。也可以配置引导加载程序在每次启动时读取 GPIO如果 GPIO 被拉低则启动该分区。详细信息请查阅 :ref:`bootloader_boot_from_test_firmware`
* 当 Type 定义为 ``bootloader`` 时,可以将 SubType 字段指定为:
- ``primary`` (0x00),即二级引导加载程序,放置在 flash 的 {IDF_TARGET_CONFIG_BOOTLOADER_OFFSET_IN_FLASH} 地址处。目前 ``gen_esp32part.py`` 不支持在 CSV 文件中包含该分区。
- ``ota`` (0x01),是一个临时的引导加载程序分区,在 OTA 更新期间可用于下载新的引导加载程序镜像。
* 当 Type 定义为 ``partition_table`` 时,可以将 SubType 字段指定为:
- ``primary`` (0x00)。这是主分区表,放置在 flash 的 :ref:`CONFIG_PARTITION_TABLE_OFFSET` 地址处。目前 ``gen_esp32part.py`` 不支持在 CSV 文件中包含该分区。
- ``ota`` (0x01)。这是一个临时的分区表分区,在 OTA 更新期间可用于下载新的分区表镜像。
* 当 Type 定义为 ``data``SubType 字段可以指定为 ``ota`` (0x00)、``phy`` (0x01)、``nvs`` (0x02)、``nvs_keys`` (0x04) 或者其他组件特定的子类型(请参考 :cpp:type:`子类型枚举 <esp_partition_subtype_t>`).
- ``ota`` (0) 即 :ref:`OTA 数据分区 <ota_data_partition>` ,用于存储当前所选的 OTA 应用程序的信息。这个分区的大小需要设定为 0x2000。更多详细信息请参考 :doc:`OTA 文档 <../api-reference/system/ota>`
@@ -152,8 +175,8 @@ SubType 字段长度为 8 bit内容与具体分区 Type 有关。目前esp
.. _partition-offset-and-size:
偏移地址 (Offset) 和 大小 (Size) 字段
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
偏移地址 (Offset) 和大小 (Size) 字段
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list::
@@ -192,20 +215,26 @@ Flags 字段
如果你在项目配置菜单(``idf.py menuconfig``)中设置了分区表 CSV 文件的名称,然后构建项目或执行 ``idf.py partition-table``。这时,转换将在编译过程中自动完成。
手动将 CSV 文件转换为二进制文件::
手动将 CSV 文件转换为二进制文件
.. code-block:: none
python gen_esp32part.py input_partitions.csv binary_partitions.bin
手动将二进制文件转换为 CSV 文件::
手动将二进制文件转换为 CSV 文件
.. code-block:: none
python gen_esp32part.py binary_partitions.bin input_partitions.csv
在标准输出 (stdout) 上,打印二进制分区表的内容(运行 ``idf.py partition-table`` 时展示的信息摘要也是这样生成的)::
在标准输出 (stdout) 上,打印二进制分区表的内容(运行 ``idf.py partition-table`` 时展示的信息摘要也是这样生成的)
.. code-block:: none
python gen_esp32part.py binary_partitions.bin
分区大小检查
---------------------
------------
ESP-IDF 构建系统将自动检查生成的二进制文件大小与可用的分区大小是否匹配,如果二进制文件太大,则会构建失败并报错。
@@ -235,8 +264,8 @@ MD5 校验和
烧写分区表
----------
- ``idf.py partition-table-flash`` :使用 esptool.py 工具烧写分区表。
- ``idf.py flash`` :会烧写所有内容,包括分区表。
* ``idf.py partition-table-flash`` :使用 esptool.py 工具烧写分区表。
* ``idf.py flash`` :会烧写所有内容,包括分区表。
在执行 ``idf.py partition-table`` 命令时,手动烧写分区表的命令也将打印在终端上。
@@ -246,7 +275,7 @@ MD5 校验和
分区工具 (``parttool.py``)
---------------------------
--------------------------
`partition_table` 组件中有分区工具 :component_file:`parttool.py<partition_table/parttool.py>`,可以在目标设备上完成分区相关操作。该工具有如下用途:
@@ -258,7 +287,7 @@ MD5 校验和
用户若想通过编程方式完成相关操作,可从另一个 Python 脚本导入并使用分区工具,或者从 Shell 脚本调用分区工具。前者可使用工具的 Python API后者可使用命令行界面。
Python API
~~~~~~~~~~~
~~~~~~~~~~
首先请确保已导入 `parttool` 模块。
@@ -329,9 +358,10 @@ Python API
parttool.py --port "/dev/ttyUSB1" get_partition_info --partition-boot-default --info size
.. note::
如果设备启用了 ``Flash Encryption````Secure Boot``,尝试使用修改 flash 内容的命令(如 ``erase_partition````write_partition``)会导致错误。这是因为 ``esptool.py`` 的擦除命令会在写入之前先被调用。这个“错误”实际上是一个用来防止设备变砖的安全措施。
::
.. code-block:: none
A fatal error occurred: Active security features detected, erasing flash is disabled as a safety measure. Use --force to override, please use with caution, otherwise it may brick your device!

View File

@@ -1,11 +1,11 @@
其他库和开发框架
=============================
================
:link_to_translation:`en:[English]`
本文展示了一系列乐鑫官方发布的库和框架。
ESP-ADF
-------------------------------------
-------
ESP-ADF 是一个全方位的音频应用程序框架,该框架支持:
@@ -20,14 +20,14 @@ ESP-ADF 是一个全方位的音频应用程序框架,该框架支持:
该框架对应的 GitHub 仓库为 `ESP-ADF <https://github.com/espressif/esp-adf>`_
ESP-CSI
------------------------------------
-------
ESP-CSI 是一个具有实验性的框架,它利用 Wi-Fi 信道状态信息来检测人体存在。
该框架对应的 GitHub 仓库为 `ESP-CSI <https://github.com/espressif/esp-csi>`_
ESP-DSP
------------------------------------
-------
ESP-DSP 提供了针对数字信号处理应用优化的算法,该库支持:
@@ -41,7 +41,7 @@ ESP-DSP 提供了针对数字信号处理应用优化的算法,该库支持:
该库对应的 GitHub 仓库为 `ESP-DSP 库 <https://github.com/espressif/esp-dsp>`_
ESP-WIFI-MESH
------------------------------------------------------
-------------
ESP-WIFI-MESH 基于 ESP-WIFI-MESH 协议搭建,该框架支持:
@@ -54,21 +54,21 @@ ESP-WIFI-MESH 基于 ESP-WIFI-MESH 协议搭建,该框架支持:
该框架对应的 GitHub 仓库为 `ESP-MDF <https://github.com/espressif/esp-mdf>`_
ESP-WHO
------------------------------
-------
ESP-WHO 框架利用 ESP32 及摄像头实现人脸检测及识别。
该框架对应的 GitHub 仓库为 `ESP-WHO <https://github.com/espressif/esp-who>`_
ESP RainMaker
---------------------------------------------
-------------
`ESP RainMaker <https://rainmaker.espressif.com/>`_ 提供了一个快速 AIoT 开发的完整解决方案。使用 ESP RainMaker用户可以创建多种 AIoT 设备,包括固件 AIoT 以及集成了语音助手、手机应用程序和云后端的 AIoT 等。
该解决方案对应的 GitHub 仓库为 `GitHub 上的 ESP RainMaker <https://github.com/espressif/esp-rainmaker>`_
ESP-IoT-Solution
--------------------------------------------------
----------------
`ESP-IoT-Solution <https://docs.espressif.com/projects/espressif-esp-iot-solution/en/latest/>`_ 涵盖了开发 IoT 系统时常用的设备驱动程序及代码框架。在 ESP-IoT-Solution 中,设备驱动程序和代码框架以独立组件存在,可以轻松地集成到 ESP-IDF 项目中。
@@ -82,7 +82,7 @@ ESP-IoT-Solution 支持:
ESP-Protocols
-----------------------------------------
-------------
`ESP-Protocols <https://github.com/espressif/esp-protocols>`_ 库包含 ESP-IDF 的协议组件集。ESP-Protocols 中的代码以独立组件存在,可以轻松地集成到 ESP-IDF 项目中。此外,每个组件都可以在 `乐鑫组件注册表 <https://components.espressif.com/>`__ 中找到。
@@ -96,12 +96,14 @@ ESP-Protocols 组件:
* `asio <https://components.espressif.com/component/espressif/asio>`_ 是一个跨平台的 C++ 库,请参阅 `<https://think-async.com/Asio/>`_。该库基于现代 C++ 提供一致的异步模型,请参阅 `asio 文档 <https://docs.espressif.com/projects/esp-protocols/asio/docs/latest/index.html>`_
* `esp_wifi_remote <https://components.espressif.com/component/espressif/esp_wifi_remote>`_ 是一个 Wi-Fi 通信库,提供标准的 Wi-Fi API并且能够借助指定的传输接口帮助目标设备通过外部 ESP32 芯片实现 Wi-Fi 通信。详情请参阅 :doc:`../api-guides/wifi-expansion`
ESP-BSP
----------------------------------------
-------
`ESP-BSP <https://github.com/espressif/esp-bsp>`_ 库包含了各种乐鑫和第三方开发板的板级支持包 (BSP)可以帮助快速上手特定的开发板。它们通常包含管脚定义和辅助函数这些函数可用于初始化特定开发板的外设。此外BSP 还提供了一些驱动程序,可用于开发版上的外部芯片,如传感器、显示屏、音频编解码器等。
ESP-IDF-CXX
----------------------------------------------------------
-----------
`ESP-IDF-CXX <https://github.com/espressif/esp-idf-cxx>`_ 包含了 ESP-IDF 的部分 C++ 封装,重点在实现易用性、安全性、自动资源管理,以及将错误检查转移到编译过程中,以避免运行时失败。它还提供了 ESP 定时器、I2C、SPI、GPIO 等外设或 ESP-IDF 其他功能的 C++ 类。ESP-IDF-CXX 作为组件可以从 `乐鑫组件注册表 <https://components.espressif.com/components/espressif/esp-idf-cxx>`__ 中获取。详情请参阅 `README.md <https://github.com/espressif/esp-idf-cxx/blob/main/README.md>`_