NXP MCU 技术william hill官网
直播中

douyin8

12年用户 1130经验值
私信 关注
[问答]

如何缩短从Deep-Sleep唤醒后的开机时间?

我有一个带有模块 ESP32-S3-WROOM-1(N16R8) 的定制板。

我的应用程序是电池供电的,同时会在短时间内频繁唤醒。

所以我需要 ESP 在 Deep-Sleep 中停留大部分时间,并将 Run-time 缩短到最低限度。

目前启动需要96ms,我希望能达到<10ms。

我已经做了以下工作,这有帮助:

1) app_main() 调用

    esp_log_level_set("*", ESP_LOG_ERROR); // 将所有组件设置为错误级别



    // 以便下次唤醒,不需要启动调试消息

    esp_deep_sleep_disable_rom_logging(); // 抑制引导消息



2) 在 Menuconfig 中设置:

    Bootloader config --->

      Bootloader 优化级别:优化性能 (-O2)

      Bootloader 日志详细程度:无输出

      [x] 退出深度睡眠时跳过图像验证



    组件配置 --->

      ESP32S3-Specific --->

         支持外部,SPI 连接RAM

              SPI RAM 配置 --->

                [] 在 SPI RAM 初始化时运行内存测试(即禁用)



3)下面是我尝试过但没有效果的列表:

- 将 CPU 频率从 160 MHz 更改为 240 MHz(它使可能相差 1 毫秒)

- 配置引导 ROM 行为 --->

      永久更改引导 ROM 输出:永久禁用日志记录,

      不可能,它导致它不断自我重置:

         Guru Meditation Error: Core 0 panic'ed (LoadProhibited)。异常未处理。

- 配置串行闪存配置 --->

                  'idf.py monitor' 波特率(115200 bps) ---> 921600 bps

                  + 在 platformio.ini 中也发生了变化:

                      monitor_speed = 921600

- 配置串行闪存配置 --->

                 闪存大小: 16 MB

                 [] 刷新引导加载程序时检测闪存大小(即禁用)

-配置 SPI RAM 配置 --->

                 [] 在启动期间初始化 SPI RAM(即禁用)



4)我不能做什么:

Flash 必须配置为 DIO,因为在使用 ESP-IDF 4.4.2 时设置 Quad-IO 会导致崩溃。

以前的 4.4.1 配置为 Quad,但我需要 4.4.2,因为它修复了切换到 Deep-Sleep 时的一些重置。

因此,不可能以这种方式加速 Flash。



5) 无论我做什么,它仍然会在从深度睡眠唤醒时打印以下日志消息,它可能会浪费一些时间:

I (32) spi_flash: detected chip: gd

I (33) spi_flash: flash io: dio

I ( 83) sleep: 配置隔离所有处于睡眠状态

I的GPIO引脚 (84) sleep: 启用GPIO睡眠配置I的自动切换

(86) cpu_start: 在PRO CPU上启动调度程序。

还有什么可以缩短启动时间的吗?

有什么可以完全停用所有引导日志消息的吗?

更多回帖

发帖
×
20
完善资料,
赚取积分