Merge branch 'docs/update_CN_trans_timers' into 'master'

Update CN trans for timers.rst and ota.rst

Closes DOC-2189

See merge request espressif/esp-idf!16013
This commit is contained in:
Dai Zi Yan 2021-11-23 07:16:12 +00:00
commit 4f5b6cfaeb
6 changed files with 147 additions and 149 deletions

View File

@ -92,6 +92,7 @@ Interrupts
^^^^^^^^^^
Registration of an interrupt callback for a specific timer can be done by calling :cpp:func:`timer_isr_callback_add` and passing in the group ID, timer ID, callback handler and user data. The callback handler will be invoked in ISR context, so user shouldn't put any blocking API in the callback function.
The benefit of using interrupt callback instead of precessing interrupt from scratch is, you don't have to deal with interrupt status check and clean stuffs, they are all addressed before the callback got run in driver's default interrupt handler.
For more information on how to use interrupts, please see the application example below.

View File

@ -170,8 +170,7 @@ Restrictions:
:esp32: - The number of bits in the ``secure_version`` field is limited to 32 bits. This means that only 32 times you can do an anti-rollback. You can reduce the length of this efuse field using :ref:`CONFIG_BOOTLOADER_APP_SEC_VER_SIZE_EFUSE_FIELD` option.
:not esp32: - The number of bits in the ``secure_version`` field is limited to 16 bits. This means that only 16 times you can do an anti-rollback. You can reduce the length of this efuse field using :ref:`CONFIG_BOOTLOADER_APP_SEC_VER_SIZE_EFUSE_FIELD` option.
:esp32: - Anti-rollback works only if the encoding scheme for efuse is set to ``NONE``.
- Factory partition is not supported in anti rollback scheme and hence partition table should not have partition with SubType set to ``factory``.
- Test partition is not supported in anti rollback scheme and hence partition table should not have partition with SubType set to ``test``.
- Factory and Test partitions are not supported in anti rollback scheme and hence partition table should not have partition with SubType set to ``factory`` or ``test``.
``security_version``:

View File

@ -3,21 +3,14 @@
:link_to_translation:`en:[English]`
{IDF_TARGET_TIMER_COUNTER_BIT_WIDTH:default="54", esp32="64", esp32s2="64", esp32c3="54"}
{IDF_TARGET_TIMER_COUNTER_BIT_WIDTH:default="54", esp32="64", esp32s2="64"}
{IDF_TARGET_TIMERS_PER_GROUP:default="2", esp32c3="1"}
{IDF_TARGET_TIMERS_TOTAL:default="4", esp32c3="2"}
简介
----
.. only:: not esp32c3
{IDF_TARGET_NAME} 芯片提供两组硬件定时器,每组包含两个通用硬件定时器。
.. only:: esp32c3
{IDF_TARGET_NAME} 芯片提供两组硬件定时器,每组包含一个通用硬件定时器和一个主系统看门狗定时器。
所有通用定时器均基于 16 位预分频器和 {IDF_TARGET_TIMER_COUNTER_BIT_WIDTH} 位可自动重新加载向上/向下计数器。
{IDF_TARGET_NAME} 芯片提供两组硬件定时器。每组包含 {IDF_TARGET_TIMERS_PER_GROUP} 个通用硬件定时器。这些 {IDF_TARGET_TIMER_COUNTER_BIT_WIDTH} 位通用定时器均基于 16 位预分频器和 {IDF_TARGET_TIMER_COUNTER_BIT_WIDTH} 位可自动重新加载向上/向下计数器。
功能概述
@ -36,16 +29,16 @@
定时器初始化
^^^^^^^^^^^^
两个 {IDF_TARGET_NAME} 定时器组中,每组都有两个定时器,两组共有四个定时器供使用。{IDF_TARGET_NAME} 定时器组的类型为 :cpp:type:`timer_group_t`,每组中的个体定时器类型为 :cpp:type:`timer_idx_t`
两个 {IDF_TARGET_NAME} 定时器组中,每组都有 {IDF_TARGET_TIMERS_PER_GROUP} 个定时器,两组共有 {IDF_TARGET_TIMERS_TOTAL} 个定时器供使用。可使用 :cpp:type:`timer_group_t` 查看 {IDF_TARGET_NAME} 定时器组的类型,使用 :cpp:type:`timer_idx_t` 查看每组中的个体定时器类型
首先调用 :cpp:func:`timer_init` 函数,并将 :cpp:type:`timer_config_t` 结构体传递给此函数,用于定义定时器的工作方式,实现定时器初始化。特别注意以下定时器参数可设置为
首先调用 :cpp:func:`timer_init` 函数,并将 :cpp:type:`timer_config_t` 结构体传递给此函数,用于定义定时器的工作方式,实现定时器初始化。特别注意设置以下定时器参数:
.. list::
:not esp32: - **时钟源**: 选择时钟源,与时钟分频器一起决定了定时器的分辨率。
- **分频器**: 设置定时器中计数器计数的速度,:cpp:member:`divider` 的设置将用作输入时钟源的除数。默认的时钟源是 APB_CLK (一般是 80 MHz)。更多有关 APB_CLK 时钟频率信息,请查看 *{IDF_TARGET_NAME} 技术参考手册* > *复位和时钟* [`PDF <{IDF_TARGET_TRM_CN_URL}#resclk>`__] 章节。
- **模式**: 设置计数器是递增还是递减。可通过从 :cpp:type:`timer_count_dir_t` 中选取一个值,后使用 :cpp:member:`counter_dir` 来选择模式。
- **计数器使能**: 如果计数器已使能,在调用 :cpp:func:`timer_init` 后计数器将立即开始递增/递减。您可通过从 :cpp:type:`timer_start_t` 中选取一个值,后使用 :cpp:member:`counter_en` 改变此行为。
- **模式**: 设置计数器是递增还是递减。可通过从 :cpp:type:`timer_count_dir_t` 中选取一个值,后使用 :cpp:member:`counter_dir` 来选择模式。
- **计数器使能**: 如果计数器已使能,在调用 :cpp:func:`timer_init` 后计数器将立即开始递增/递减。您可通过从 :cpp:type:`timer_start_t` 中选取一个值,后使用 :cpp:member:`counter_en` 改变此行为。
- **报警使能**: 可使用 :cpp:member:`alarm_en` 设置。
- **自动重载**: 设置计数器是否应该在定时器警报上使用 :cpp:member:`auto_reload` 自动重载首个计数值,还是继续递增或递减。
@ -59,7 +52,7 @@
定时器使能后便开始计数。要使能定时器,可首先设置 :cpp:member:`counter_en```true``,然后调用函数 :cpp:func:`timer_init`,或者直接调用函数 :cpp:func:`timer_start`。您可通过调用函数 :cpp:func:`timer_set_counter_value` 来指定定时器的首个计数值。要检查定时器的当前值,调用函数 :cpp:func:`timer_get_counter_value` 或 :cpp:func:`timer_get_counter_time_sec`
可通过调用函数 :cpp:func:`timer_pause` 随时暂停定时器。要再次启动它,调用函数 :cpp:func:`timer_start`
可通过调用函数 :cpp:func:`timer_pause` 随时暂停定时器。要再次启动它,调用函数 :cpp:func:`timer_start`
要重新配置定时器,可调用函数 :cpp:func:`timer_init`,该函数详细介绍见 :ref:`timer-api-timer-initialization`
@ -98,7 +91,8 @@
处理中断事务
^^^^^^^^^^^^
调用 :cpp:func:`timer_isr_callback_add` 函数可以给某个定时器注册一个中断回调函数,顾名思义,该函数会在中断上下文中被执行,因此用户不能在回调函数中调用任何会阻塞 CPU 的 API。
通过调用 :cpp:func:`timer_isr_callback_add` 函数并向该函数传递组 ID、定时器 ID、回调处理程序以及用户数据可以给某个定时器注册一个中断回调函数。回调处理程序会在 ISR 上下文中调用,因此用户不能在回调函数中放置任何会阻塞 CPU 的 API。
相较于从头编写中断处理程序,使用中断回调函数的好处是,用户无需检测和处理中断的状态位,这些操作会由驱动中默认的中断处理程序替我们完成。
有关如何使用中断回调函数,请参考如下应用示例。

View File

@ -165,9 +165,12 @@ Kconfig 中的 :ref:`CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE` 可以帮助用户
限制:
- ``secure_version`` 字段最多有 32 位。也就是说,防回滚最多可以做 32 次。用户可以使用 :ref:`CONFIG_BOOTLOADER_APP_SEC_VER_SIZE_EFUSE_FIELD` 减少该 eFuse 字段的长度。
- 防回滚仅在 eFuse 编码机制设置为 ``NONE`` 时生效。
- 分区表不应有工厂分区,应仅有两个应用程序分区。
.. list::
:esp32: - ``secure_version`` 字段最多有 32 位。也就是说,防回滚最多可以做 32 次。用户可以使用 :ref:`CONFIG_BOOTLOADER_APP_SEC_VER_SIZE_EFUSE_FIELD` 减少该 eFuse 字段的长度。
:not esp32: - ``secure_version`` 字段最多有 16 位。也就是说,防回滚最多可以做 16 次。用户可以使用 :ref:`CONFIG_BOOTLOADER_APP_SEC_VER_SIZE_EFUSE_FIELD` 减少该 eFuse 字段的长度。
:esp32: - 防回滚仅在 eFuse 编码机制设置为 ``NONE`` 时生效。
- 防回滚不支持工厂和测试分区,因此分区表中不应有设置为 ``工厂````测试`` 的分区。
``security_version``:

View File

@ -11,7 +11,7 @@ This utility is designed to create instances of factory NVS partition images on
Please note that this utility only creates manufacturing binary images which then need to be flashed onto your devices using:
- `esptool.py`_
- `Flash Download tool`_ (available on Windows only).Just download it, unzip, and follow the instructions inside the *doc* folder.
- `Flash Download tool <https://www.espressif.com/en/support/download/other-tools?keys=flash+download+tools>`_ (available on Windows only).Just download it, unzip, and follow the instructions inside the *doc* folder.
- Direct flash programming using custom production tools.
@ -70,7 +70,6 @@ If the ``REPEAT`` tag is present, the value corresponding to this key in the mas
Below is a sample example of such a configuration file::
app,namespace,
firmware_key,data,hex2bin
serial_no,data,string,REPEAT
@ -133,66 +132,72 @@ Running the utility
python mfg_gen.py [-h] {generate,generate-key} ...
Optional Arguments:
+-----+------------+----------------------------------------------------------------------+
| No. | Parameter | Description |
+=====+============+======================================================================+
| 1 | -h, --help | show this help message and exit |
+-----+------------+----------------------------------------------------------------------+
**Optional Arguments**:
+-----+------------+----------------------------------------------------------------------+
| No. | Parameter | Description |
+=====+============+======================================================================+
| 1 | -h, --help | show this help message and exit |
+-----+------------+----------------------------------------------------------------------+
**Commands**:
Commands:
Run mfg_gen.py {command} -h for additional help
+-----+--------------+--------------------------------------------------------------------+
| No. | Parameter | Description |
+=====+==============+====================================================================+
| 1 | generate | Generate NVS partition |
+-----+--------------+--------------------------------------------------------------------+
| 2 | generate-key | Generate keys for encryption |
+-----+--------------+--------------------------------------------------------------------+
+-----+--------------+--------------------------------------------------------------------+
| No. | Parameter | Description |
+=====+==============+====================================================================+
| 1 | generate | Generate NVS partition |
+-----+--------------+--------------------------------------------------------------------+
| 2 | generate-key | Generate keys for encryption |
+-----+--------------+--------------------------------------------------------------------+
**To generate factory images for each device (Default):**
**Usage**::
python mfg_gen.py generate [-h] [--fileid FILEID] [--version {1,2}] [--keygen]
[--keyfile KEYFILE] [--inputkey INPUTKEY]
[--outdir OUTDIR]
conf values prefix size
**Usage**::
Positional Arguments:
+--------------+----------------------------------------------------------------------+
| Parameter | Description |
+==============+======================================================================+
| conf | Path to configuration csv file to parse |
+--------------+----------------------------------------------------------------------+
| values | Path to values csv file to parse |
+--------------+----------------------------------------------------------------------+
| prefix | Unique name for each output filename prefix |
+-----+--------------+----------------------------------------------------------------+
| size | Size of NVS partition in bytes |
| | (must be multiple of 4096) |
+--------------+----------------------------------------------------------------------+
python mfg_gen.py generate [-h] [--fileid FILEID] [--version {1,2}] [--keygen]
[--keyfile KEYFILE] [--inputkey INPUTKEY]
[--outdir OUTDIR]
conf values prefix size
Optional Arguments:
+---------------------+--------------------------------------------------------------------+
| Parameter | Description |
+=====================+====================================================================+
| -h, --help | show this help message and exit |
+---------------------+--------------------------------------------------------------------+
| --fileid FILEID | Unique file identifier(any key in values file) |
| | for each filename suffix (Default: numeric value(1,2,3...) |
+---------------------+--------------------------------------------------------------------+
| --version {1,2} | Set multipage blob version. |
| | Version 1 - Multipage blob support disabled. |
| | Version 2 - Multipage blob support enabled. |
| | Default: Version 2 |
+---------------------+--------------------------------------------------------------------+
| --keygen | Generates key for encrypting NVS partition |
+---------------------+--------------------------------------------------------------------+
| --inputkey INPUTKEY | File having key for encrypting NVS partition |
+---------------------+--------------------------------------------------------------------+
| --outdir OUTDIR | Output directory to store files created |
| | (Default: current directory) |
+---------------------+--------------------------------------------------------------------+
**Positional Arguments**:
+--------------+----------------------------------------------------------------------+
| Parameter | Description |
+==============+======================================================================+
| conf | Path to configuration csv file to parse |
+--------------+----------------------------------------------------------------------+
| values | Path to values csv file to parse |
+--------------+----------------------------------------------------------------------+
| prefix | Unique name for each output filename prefix |
+-----+--------------+----------------------------------------------------------------+
| size | Size of NVS partition in bytes |
| | (must be multiple of 4096) |
+--------------+----------------------------------------------------------------------+
**Optional Arguments**:
+---------------------+--------------------------------------------------------------------+
| Parameter | Description |
+=====================+====================================================================+
| -h, --help | show this help message and exit |
+---------------------+--------------------------------------------------------------------+
| --fileid FILEID | Unique file identifier(any key in values file) |
| | for each filename suffix (Default: numeric value(1,2,3...) |
+---------------------+--------------------------------------------------------------------+
| --version {1,2} | Set multipage blob version. |
| | Version 1 - Multipage blob support disabled. |
| | Version 2 - Multipage blob support enabled. |
| | Default: Version 2 |
+---------------------+--------------------------------------------------------------------+
| --keygen | Generates key for encrypting NVS partition |
+---------------------+--------------------------------------------------------------------+
| --inputkey INPUTKEY | File having key for encrypting NVS partition |
+---------------------+--------------------------------------------------------------------+
| --outdir OUTDIR | Output directory to store files created |
| | (Default: current directory) |
+---------------------+--------------------------------------------------------------------+
You can run the utility to generate factory images for each device using the command below. A sample CSV file is provided with the utility::
@ -208,36 +213,34 @@ You can run the utility to encrypt factory images for each device using the comm
python mfg_gen.py generate samples/sample_config.csv samples/sample_values_singlepage_blob.csv Sample 0x3000 --keygen
.. note:: Encryption key of the following format ``<outdir>/keys/keys-<prefix>-<fileid>.bin`` is created.
.. note:: This newly created file having encryption keys in ``keys/`` directory is compatible with NVS key-partition structure. Refer to :ref:`nvs_key_partition` for more details.
.. note:: Encryption key of the following format ``<outdir>/keys/keys-<prefix>-<fileid>.bin`` is created. This newly created file having encryption keys in ``keys/`` directory is compatible with NVS key-partition structure. Refer to :ref:`nvs_key_partition` for more details.
- Encrypt by providing the encryption keys as input binary file::
python mfg_gen.py generate samples/sample_config.csv samples/sample_values_singlepage_blob.csv Sample 0x3000 --inputkey keys/sample_keys.bin
**To generate only encryption keys:**
**Usage**::
python mfg_gen.py generate-key [-h] [--keyfile KEYFILE] [--outdir OUTDIR]
**Usage**::
python mfg_gen.py generate-key [-h] [--keyfile KEYFILE] [--outdir OUTDIR]
Optional Arguments:
+--------------------+----------------------------------------------------------------------+
| Parameter | Description |
+====================+======================================================================+
| -h, --help | show this help message and exit |
+--------------------+----------------------------------------------------------------------+
| --keyfile KEYFILE | Path to output encryption keys file |
+--------------------+----------------------------------------------------------------------+
| --outdir OUTDIR | Output directory to store files created. |
| | (Default: current directory) |
+--------------------+----------------------------------------------------------------------+
**Optional Arguments**:
+--------------------+----------------------------------------------------------------------+
| Parameter | Description |
+====================+======================================================================+
| -h, --help | show this help message and exit |
+--------------------+----------------------------------------------------------------------+
| --keyfile KEYFILE | Path to output encryption keys file |
+--------------------+----------------------------------------------------------------------+
| --outdir OUTDIR | Output directory to store files created. |
| | (Default: current directory) |
+--------------------+----------------------------------------------------------------------+
You can run the utility to generate only encryption keys using the command below::
python mfg_gen.py generate-key
.. note:: Encryption key of the following format ``<outdir>/keys/keys-<timestamp>.bin`` is created. Timestamp format is: ``%m-%d_%H-%M``.
.. note:: To provide custom target filename use the --keyfile argument.
.. note:: Encryption key of the following format ``<outdir>/keys/keys-<timestamp>.bin`` is created. Timestamp format is: ``%m-%d_%H-%M``. To provide custom target filename use the --keyfile argument.
Generated encryption key binary file can further be used to encrypt factory images created on the per device basis.
@ -250,4 +253,3 @@ While running the manufacturing utility, the following folders will be created i
- ``keys/`` for storing encryption keys (when generating encrypted factory images)
.. _esptool.py: https://github.com/espressif/esptool/#readme
.. _Flash Download tool: https://www.espressif.com/en/support/download/other-tools?keys=flash+download+tools

View File

@ -6,27 +6,27 @@
介绍
------------
这一程序主要用于量产时为每一设备创建工厂 NVS非易失性存储器分区映像。NVS 分区映像由 CSV逗号分隔值文件生成文件中包含了用户提供的配置项及配置值。
这一程序主要用于量产时为每一设备创建工厂 NVS非易失性存储器分区镜像。NVS 分区镜像由 CSV逗号分隔值文件生成文件中包含了用户提供的配置项及配置值。
注意,该程序仅创建用于量产的二进制映像,您需要使用以下工具将映像烧录到设备上:
注意,该程序仅创建用于量产的二进制镜像,您需要使用以下工具将镜像烧录到设备上:
- esptool.py
- Flash 下载工具(仅适用于 Windows
- 直接烧录程序
- `esptool.py`_
- `Flash 下载工具 <https://www.espressif.com/en/support/download/other-tools?keys=flash+download+tools>`_ (仅适用于 Windows。下载后解压,然后按照 doc 文件夹中的说明操作。
- 使用定制的生产工具直接烧录程序
准备工作
-------------
**该程序需要用到分区公用程序。**
**该程序依赖于 esp-idf 的 NVS 分区程序**
* 操作系统要求:
- Linux、MacOS 或 Windows标准版
- Linux、MacOS 或 Windows标准版
* 安装依赖包:
- Python https://www.python.org/downloads/。
- `Python <https://www.python.org/downloads/>`_
.. note::
.. note::
使用该程序之前,请确保:
- Python 路径已添加到 PATH 环境变量中;
@ -36,7 +36,7 @@
具体流程
-----------
.. blockdiag::
.. blockdiag::
blockdiag {
A [label = "CSV 配置文件"];
@ -50,33 +50,35 @@
CSV 配置文件
----------------------
CSV 配置文件中包含设备待烧录的配置信息,定义了待烧录的配置项。例如定义 ``firmware_key`` (``key``) 的 ``type````data````encoding````hex2bin``
CSV 配置文件中包含设备待烧录的配置信息,定义了待烧录的配置项。
配置文件中数据格式如下(`REPEAT` 标签可选)::
name1,namespace, <-- 第一行为 "namespace" 条目
name1,namespace, <-- 第一个条目应该为 "namespace" 类型
key1,type1,encoding1
key2,type2,encoding2,REPEAT
name2,namespace,
name2,namespace,
key3,type3,encoding3
key4,type4,encoding4
.. note:: 文件第一行应始终为 ``namespace`` 条目。
每行应包含三个参数:``key````type````encoding``,并以逗号分隔。如果有 ``REPEAT`` 标签,则主 CSV 文件中所有设备此键值均相同。
每行应包含三个参数:``key````type````encoding``,并以逗号分隔。
如果有 ``REPEAT`` 标签,则主 CSV 文件中所有设备此键值均相同。
*有关各个参数的详细说明,请参阅 NVS 分区生成程序的 README 文件。*
CSV 配置文件示例如下::
CSV 配置文件示例如下::
app,namespace,
firmware_key,data,hex2bin
serial_no,data,string,REPEAT <-- "serial_no" 被标记为 "REPEAT"
device_no,data,i32
app,namespace,
firmware_key,data,hex2bin
serial_no,data,string,REPEAT
device_no,data,i32
.. note::
请确保:
.. note::
请确保:
- 逗号 ',' 前后无空格;
- CSV 文件每行末尾无空格。
@ -84,14 +86,12 @@ CSV 配置文件示例如下::
主 CSV 文件
---------------------
主 CSV 文件中包含设备待烧录的详细信息,文件中每行均对应一个设备实体。主 CSV 文件中的 ``key`` 应首先在 CSV 配置文件中定义。
主 CSV 文件的数据格式如下::
主 CSV 文件中包含设备待烧录的详细信息,文件中每行均对应一个设备实体。
key1,key2,key3,.....
value1,value2,value3,.... <-- 对应一个设备实体
value4,value5,value6,.... <-- 对应一个设备实体
value7,value8,value9,.... <-- 对应一个设备实体
主 CSV 文件的数据格式如下::
key1,key2,key3,.....
value1,value2,value3,....
.. note:: 文件中键 (``key``) 名应始终置于文件首行。从配置文件中获取的键,在此文件中的排列顺序应与其在配置文件中的排列顺序相同。主 CSV 文件同时可以包含其它列(键),这些列将被视为元数据,而不会编译进最终二进制文件。
@ -104,26 +104,27 @@ CSV 配置文件示例如下::
``value`` 是与键对应的键值。
主 CSV 文件示例如下::
主 CSV 文件示例如下::
id,firmware_key,serial_no,device_no
1,1a2b3c4d5e6faabb,A1,101 <-- 对应一个设备实体(在 CSV 配置文件中标记为 `REPEAT` 的键,除第一个条目外,其他均为空)
2,1a2b3c4d5e6fccdd,,102 <-- 对应一个设备实体
3,1a2b3c4d5e6feeff,,103 <-- 对应一个设备实体
id,firmware_key,serial_no,device_no
1,1a2b3c4d5e6faabb,A1,101
2,1a2b3c4d5e6fccdd,,102
3,1a2b3c4d5e6feeff,,103
.. note:: 如果出现 `REPEAT` 标签,则会在相同目录下生成一个新的主 CSV 文件用作主输入文件,并在每行为带有 `REPEAT` 标签的键插入键值。
量产程序还会创建中间 CSV 文件NVS 分区程序将使用此 CSV 文件作为输入,然后生成二进制文件。
中间 CSV 文件的格式如下::
中间 CSV 文件的格式如下::
key,type,encoding,value
key,namespace, ,
key1,type1,encoding1,value1
key2,type2,encoding2,value2
key,type,encoding,value
key,namespace, ,
key1,type1,encoding1,value1
key2,type2,encoding2,value2
此步骤将为每一设备生成一个中间 CSV 文件。
运行量产程序
-------------------
@ -139,7 +140,6 @@ CSV 配置文件示例如下::
| 1 | -h, --help | 显示帮助信息并退出 |
+------+------------+----------------------+
**命令**
运行 mfg_gen.py {command} -h 查看更多帮助信息
@ -152,7 +152,7 @@ CSV 配置文件示例如下::
| 2 | generate-key | 生成加密密钥 |
+------+--------------+---------------+
**为每个设备生成工厂像(默认)**
**为每个设备生成工厂像(默认)**
**使用方法**::
@ -160,7 +160,6 @@ CSV 配置文件示例如下::
[--keyfile KEYFILE] [--inputkey INPUTKEY]
[--outdir OUTDIR]
conf values prefix size
**位置参数**
@ -198,22 +197,23 @@ CSV 配置文件示例如下::
| --outdir OUTDIR | 输出目录,用于存储创建的文件(默认当前目录) |
+---------------------+--------------------------------------------------------------------------------+
请运行以下命令为每个设备生成工厂映像,量产程序同时提供了一个 CSV 示例文件::
请运行以下命令为每个设备生成工厂镜像,量产程序同时提供了一个 CSV 示例文件::
python mfg_gen.py generate samples/sample_config.csv samples/sample_values_singlepage_blob.csv Sample 0x3000
主 CSV 文件应在 ``file`` 类型下设置一个相对路径,指向运行该程序的当前目录。
主 CSV 文件应在 ``file`` 类型下设置一个相对路径,相对于运行该程序的当前目录。
**为每个设备生成工厂加密像**
**为每个设备生成工厂加密像**
运行以下命令为每一设备生成工厂加密像,量产程序同时提供了一个 CSV 示例文件。
运行以下命令为每一设备生成工厂加密像,量产程序同时提供了一个 CSV 示例文件。
- 通过量产程序生成加密密钥来进行加密::
python mfg_gen.py generate samples/sample_config.csv samples/sample_values_singlepage_blob.csv Sample 0x3000 --keygen
.. note:: 创建的加密密钥格式为 ``<outdir>/keys/keys-<prefix>-<fileid>.bin``
.. note:: 加密密钥存储于新建文件的 ``keys/`` 目录下,与 NVS 密钥分区结构兼容。更多信息请参考 :ref:`nvs_key_partition`
.. note:: 创建的加密密钥格式为 ``<outdir>/keys/keys-<prefix>-<fileid>.bin``。加密密钥存储于新建文件的 ``keys/`` 目录下,与 NVS 密钥分区结构兼容。更多信息请参考 :ref:`nvs_key_partition`
- 提供加密密钥用作二进制输入文件来进行加密::
@ -226,7 +226,6 @@ CSV 配置文件示例如下::
python mfg_gen.py generate-key [-h] [--keyfile KEYFILE] [--outdir OUTDIR]
**可选参数:**
+-------------------+----------------------------------------------+
| 参数 | 描述 |
+-------------------+----------------------------------------------+
@ -236,15 +235,14 @@ CSV 配置文件示例如下::
+-------------------+----------------------------------------------+
| --outdir OUTDIR | 输出目录,用于存储创建的文件(默认当前目录) |
+-------------------+----------------------------------------------+
运行以下命令仅生成加密密钥::
python mfg_gen.py generate-key
.. note:: 创建的加密密钥格式为 ``<outdir>/keys/keys-<timestamp>.bin``。时间戳格式为:``%m-%d_%H-%M``
.. note:: 如需自定义目标文件名,请使用 --keyfile 参数。
.. note:: 创建的加密密钥格式为 ``<outdir>/keys/keys-<timestamp>.bin``。时间戳格式为:``%m-%d_%H-%M``。如需自定义目标文件名,请使用 --keyfile 参数。
生成的加密密钥二进制文件还可以用于为每个设备的工厂像加密。
生成的加密密钥二进制文件还可以用于为每个设备的工厂像加密。
``fileid`` 参数的默认值为 1、2、3...,与主 CSV 文件中的行一一对应,内含设备配置值。
@ -252,5 +250,6 @@ CSV 配置文件示例如下::
- ``bin/`` 存储生成的二进制文件
- ``csv/`` 存储生成的中间 CSV 文件
- ``keys/`` 存储加密密钥(创建工厂加密像时会用到)
- ``keys/`` 存储加密密钥(创建工厂加密像时会用到)
.. _esptool.py: https://github.com/espressif/esptool/#readme