diff --git a/docs/zh_CN/api-reference/system/random.rst b/docs/zh_CN/api-reference/system/random.rst index b8980f81ac..1865ff184c 100644 --- a/docs/zh_CN/api-reference/system/random.rst +++ b/docs/zh_CN/api-reference/system/random.rst @@ -5,15 +5,16 @@ {IDF_TARGET_RF_NAME: default="Wi-Fi 或蓝牙", esp32s2="Wi-Fi", esp32h2="蓝牙或 802.15.4 Thread/Zigbee", esp32c6="Wi-Fi 或蓝牙或 802.15.4 Thread/Zigbee"} {IDF_TARGET_RF_IS: default="已启用", esp32s2="已启用"} -{IDF_TARGET_BOOTLOADER_RANDOM_INCOMPATIBLE: default="", esp32="I2S、"} {IDF_TARGET_NAME} 中包含一个硬件随机数发生器 (RNG),可以调用 API :cpp:func:`esp_random` 和 :cpp:func:`esp_fill_random` 从中获取随机数值。 满足下列任意一个或多个条件时,硬件 RNG 会产生真随机数: -- RF 子系统已启用,即 {IDF_TARGET_RF_NAME} {IDF_TARGET_RF_IS}。 -- 调用 :cpp:func:`bootloader_random_enable` 启用了内部熵源,并且熵源尚未被 :cpp:func:`bootloader_random_disable` 禁用。 -- 在 ESP-IDF :ref:`second-stage-bootloader` 运行时。这是因为默认的 ESP-IDF 引导加载程序启动时会调用 :cpp:func:`bootloader_random_enable`,并在执行应用程序前调用 :cpp:func:`bootloader_random_disable`。 +.. list:: + + :SOC_WIFI_SUPPORTED or SOC_IEEE802154_SUPPORTED or SOC_BT_SUPPORTED: - RF 子系统已启用,即 {IDF_TARGET_RF_NAME} {IDF_TARGET_RF_IS}。 + - 调用 :cpp:func:`bootloader_random_enable` 启用了内部熵源 (SAR ADC),且熵源尚未被 :cpp:func:`bootloader_random_disable` 禁用。 + - 在 :ref:`second-stage-bootloader` 运行时。这是因为默认的 ESP-IDF 引导加载程序启动时会调用 :cpp:func:`bootloader_random_enable`,并在执行应用程序前调用 :cpp:func:`bootloader_random_disable`。 当上述任一条件为真时,物理噪声样本会连续混合到内部硬件 RNG 状态中来提供熵。如需了解详情,请参阅 **{IDF_TARGET_NAME} 技术参考手册** > **随机数发生器 (RNG)** [`PDF <{IDF_TARGET_TRM_CN_URL}#rng>`__] 章节。 @@ -22,9 +23,26 @@ 启动 ------- -在启动过程中,ESP-IDF 引导加载程序暂时会启用一个非 RF 熵源(内部参考电压噪声),为首次生成的启动密钥提供熵。当应用程序开始执行后,一直到 {IDF_TARGET_RF_NAME} 初始化完成前,通常只有伪随机数可用。 +在启动过程中,ESP-IDF 引导加载程序暂时会启用一个非 RF 内部熵源(SAR ADC 使用内部参考电压噪声),为首次生成的启动密钥提供熵。 -如需在应用程序启动期间临时重启熵源,或为不使用 {IDF_TARGET_RF_NAME} 的应用程序临时重启熵源,请调用函数 :cpp:func:`bootloader_random_enable` 重启内部熵源。在使用 ADC、{IDF_TARGET_BOOTLOADER_RANDOM_INCOMPATIBLE} 或使用 {IDF_TARGET_RF_NAME} 前,必须调用函数 :cpp:func:`bootloader_random_disable` 以禁用熵源。 +.. only:: not SOC_WIFI_SUPPORTED and not SOC_IEEE802154_SUPPORTED and not SOC_BT_SUPPORTED + + 但是,当应用程序开始执行后,一直到内部熵源再次被启用前,通常只有伪随机数可用。 + +.. only:: SOC_WIFI_SUPPORTED or SOC_IEEE802154_SUPPORTED or SOC_BT_SUPPORTED + + 但是,当应用程序开始执行后,一直到 {IDF_TARGET_RF_NAME} 初始化完成前或内部熵源再次被启用前,通常只有伪随机数可用。 + + +如需在应用程序启动期间临时重启熵源,或为不使用 {IDF_TARGET_RF_NAME} 的应用程序临时重启熵源,请调用函数 :cpp:func:`bootloader_random_enable` 重启内部熵源。在使用下列任一功能前,必须调用函数 :cpp:func:`bootloader_random_disable` 以禁用熵源。 + +.. list:: + + - ADC + + :esp32: - I2S + + :SOC_WIFI_SUPPORTED or SOC_IEEE802154_SUPPORTED or SOC_BT_SUPPORTED: - {IDF_TARGET_RF_NAME} .. note::