Page 1 of 1

上电后到app _main的时间较长,如何优化

Posted: Wed Dec 29, 2021 2:21 am
by DJZ1992
如题,在app_main内打印,通过串口查看时间,测试结果如下:

SPI FLASH设为40MHZ,boot和app都为LOGI级
首次启动,12.651启动 -》13.998进入app_mian,用时1347ms
深度睡眠唤醒,17.462-》18.910,用时1448ms

SPI FLASH设为40MHZ,boot和app都为LOGI级,设置深度睡眠唤醒时调过固件验证功能
首次启动,49.437 -》50.803,用时1366ms
深睡唤醒,02.111-》03.197,用时1086ms

SPI FLASH设为40MHZ,boot和app都为LOGE级,设置深度睡眠唤醒时调过固件验证功能
首次启动,42.300 -》43.470,用时1170ms
深睡唤醒,54.570-》55.482,用时912ms

SPI FLASH设为80MHZ,boot和app都为LOGE级,设置深度睡眠唤醒时调过固件验证功能
首次启动,11.068 -》12.200,用时1132ms
深睡唤醒,23.296-》24.209,用时913ms

深度睡眠调过固件检测可以减少260ms左右的时间
LOGE比LOGI可以减少180ms左右的进入app_main 的时间
SPI FLASH的变化, 影响貌似不明显

这么来看,最快还是得靠近1s,跟CSDN上官方说的几十ms,差距很大,该如何优化?
微信截图_20211229102105.png
微信截图_20211229102105.png (108.58 KiB) Viewed 11512 times

Re: 上电后到app _main的时间较长,如何优化

Posted: Wed Dec 29, 2021 12:10 pm
by ESP_ICY
降低 Bootloader log verbosity 的等级到 no out put,降低 Component config → Log output 到 no output

Re: 上电后到app _main的时间较长,如何优化

Posted: Thu Dec 30, 2021 2:31 am
by DJZ1992
你好,降低LOG到不输出后,在app_main里初始化串口输出一个信息
从下图来看,app_main实际上运行的时间还是在启动后1s多
微信截图_20211230102933.png
微信截图_20211230102933.png (6.82 KiB) Viewed 11438 times
是否是我的测试方法有错。到达app_main的时间该如何测试?
entry 0x40080620这一句是不是意味着已经跳转到APP?

Re: 上电后到app _main的时间较长,如何优化

Posted: Thu Dec 30, 2021 2:32 am
by DJZ1992
ESP_ICY wrote:
Wed Dec 29, 2021 12:10 pm
降低 Bootloader log verbosity 的等级到 no out put,降低 Component config → Log output 到 no output
你好,降低LOG到不输出后,在app_main里初始化串口输出一个信息
从下图来看,app_main实际上运行的时间还是在启动后1s多
微信截图_20211230102933.png
微信截图_20211230102933.png (6.82 KiB) Viewed 11438 times
是不是测试方法有错?
entry 0x40080620是代表已经跳转到APP吗?

Re: 上电后到app _main的时间较长,如何优化

Posted: Thu Dec 30, 2021 3:07 am
by DJZ1992
ESP_ICY wrote:
Wed Dec 29, 2021 12:10 pm
降低 Bootloader log verbosity 的等级到 no out put,降低 Component config → Log output 到 no output
I (291) psram: This chip is ESP32-D0WD
。。。
I (1193) spiram: SPI SRAM memory test OK


1s主要的还是外部的ram费时。
另外291毫秒之前的时间已经挺长的了,跟几十个ms比大很多。不知道该如何优化

Re: 上电后到app _main的时间较长,如何优化

Posted: Thu Dec 30, 2021 3:42 am
by ESP_YJM
1. 打开 CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON,方法 idf.py menuconfig->Bootloader config->Skip image validate ...
2. GPIO15 接 GND 屏蔽上电 ROM 打印。
3. 关闭二级引导打印, idf.py menuconfig->Bootloader config->bootloader log 改为 No output
4. 关闭主程序日志:idf.py menuconfig->Component config->log output->Default log 改为 No output

Re: 上电后到app _main的时间较长,如何优化

Posted: Thu Dec 30, 2021 5:30 am
by DJZ1992
ESP_YJM wrote:
Thu Dec 30, 2021 3:42 am
1. 打开 CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON,方法 idf.py menuconfig->Bootloader config->Skip image validate ...
2. GPIO15 接 GND 屏蔽上电 ROM 打印。
3. 关闭二级引导打印, idf.py menuconfig->Bootloader config->bootloader log 改为 No output
4. 关闭主程序日志:idf.py menuconfig->Component config->log output->Default log 改为 No output
感谢!
实测发现关闭各级打印确实可以大幅度缩短启动时间。
另外PSRAM的初始化占用的时间很长。但是不在boot内初始化,在应用程序内需要的时候才初始化,该如何操作?有没有文档说明

Re: 上电后到app _main的时间较长,如何优化

Posted: Thu Dec 30, 2021 5:35 am
by DJZ1992
DJZ1992 wrote:
Thu Dec 30, 2021 5:30 am
ESP_YJM wrote:
Thu Dec 30, 2021 3:42 am
1. 打开 CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON,方法 idf.py menuconfig->Bootloader config->Skip image validate ...
2. GPIO15 接 GND 屏蔽上电 ROM 打印。
3. 关闭二级引导打印, idf.py menuconfig->Bootloader config->bootloader log 改为 No output
4. 关闭主程序日志:idf.py menuconfig->Component config->log output->Default log 改为 No output
感谢!
实测发现关闭各级打印确实可以大幅度缩短启动时间。
另外PSRAM的初始化占用的时间很长。
但是不在boot内初始化,在应用程序内需要的时候才初始化,该如何操作?有没有文档说明
不勾选● CONFIG_SPIRAM_BOOT_INIT?

Re: 上电后到app _main的时间较长,如何优化

Posted: Thu Dec 30, 2021 6:26 am
by ESP_YJM
你可以试一下 disable CONFIG_SPIRAM_MEMTEST