乐鑫技术交流
直播中

陈秀英

7年用户 1231经验值
私信 关注
[问答]

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

如题,在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,差距很大,该如何优化?                                                                                                                                             

回帖(1)

jsqueh

2024-6-19 16:44:16
从您提供的信息来看,您正在尝试优化应用程序启动到app_main函数的时间。以下是一些建议来帮助您优化这个过程:

1. **减少启动过程中的初始化操作**:检查app_main函数以及之前的代码,看看是否有不必要的初始化操作。如果有,尝试将它们移到app_main函数内部,或者在需要时再进行初始化。

2. **优化SPI Flash的读写速度**:您已经将SPI Flash设置为40MHz,这是一个相对较高的速度。但是,您还可以尝试优化SPI Flash的读写操作,例如减少读写次数,使用DMA(直接内存访问)等。

3. **减少日志输出**:在启动过程中,过多的日志输出可能会影响性能。您可以在启动过程中减少日志输出,或者将日志级别设置为更低的级别,如LOGE(错误)。

4. **使用更快的启动模式**:如果可能的话,尝试使用更快的启动模式。例如,如果您的设备支持从RAM启动,而不是从Flash启动,这可能会减少启动时间。

5. **优化固件验证功能**:您提到在深度睡眠唤醒时调用了固件验证功能。如果这个功能不是必需的,您可以尝试禁用它,或者优化它的实现,以减少启动时间。

6. **使用性能分析工具**:使用性能分析工具(如ESP-IDF的esp_timer)来测量启动过程中各个阶段的时间消耗,找出性能瓶颈,并针对性地进行优化。

7. **代码优化**:检查您的代码,看看是否有可以优化的地方,例如减少循环次数、使用更高效的算法等。

8. **硬件优化**:如果可能的话,尝试使用更快的硬件,例如更快的处理器、更快的存储器等。

综上所述,优化启动时间需要从多个方面进行考虑。希望这些建议能帮助您提高应用程序的启动速度。
举报

更多回帖

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