当前位置: 首页 > news >正文

ESP32_启动日志分析

ESP32_启动日志分析

    • 一、看出flash的配置模式
      • 1、原始日志
      • 2、分析日志
      • 3、根据你用的模组进行修改
      • 4、在工程中修改
    • 二、看出分区表信息
      • 1、原始日志(分区表信息)
      • 2、分析日志
      • 3、在工程中修改
    • 三、PSRAM 信息
      • 1、原始日志(PSRAM 初始化信息)
      • 2、分析日志
      • 3、原始日志(PSRAM 内存分配)
      • 4、分析日志
    • 四、RTC时钟
      • 1、原始日志
      • 2、分析日志
    • 五、其他
      • 1、原始日志
      • 2、分析日志

前言:
其实从启动日志里面是可以直接发现一些问题的,尤其是关于flash和ram的一些信息,以及配置的一些模式是否正常,都可以从中看得出来。

一、看出flash的配置模式

1、原始日志

I (35) qio_mode: Enabling default flash chip QIO
I (40) boot.esp32s3: Boot SPI Speed : 80MHz
I (45) boot.esp32s3: SPI Mode       : QOUT
I (50) boot.esp32s3: SPI Flash Size : 16MB

2、分析日志

Flash 模式:QOUT(Quad Output) 含义:使用四线SPI(Quad I/O)模式进行数据输出,但地址和命令仍通过单线传输。
性能:比QIO(Quad I/O)稍慢(约15%),但比DIO(Dual I/O)和DOUT(Dual Output)快。
适用场景:适用于需要较高速度但不需要全四线模式的场景(如某些Flash芯片仅支持QOUT)。
验证:确认你的Flash芯片(如Boya品牌)是否支持QOUT模式。若不支持,需在menuconfig中改为QIO或DIO。 Flash
速度:80MHz 说明:Flash时钟频率直接影响读写速度。ESP32-S3支持最高80MHz的SPI频率。
优化建议:若Flash芯片支持更高的频率(如160MHz),可尝试调整menuconfig中的SPI Flash Clock
Frequency以提升性能。

3、根据你用的模组进行修改

在这里插入图片描述

4、在工程中修改

在这里插入图片描述

二、看出分区表信息

1、原始日志(分区表信息)

I (60) boot: Partition Table:
I (63) boot: ## Label            Usage          Type ST Offset   Length
I (71) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (78) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (86) boot:  2 factory          factory app      00 00 00010000 00200000
I (93) boot:  3 storage          Unknown data     01 81 00210000 00800000
I (101) boot: End of partition table
I (105) esp_image: segment 0: paddr=00010020 vaddr=3c070020 size=126ae8h (1207016) map
I (315) esp_image: segment 1: paddr=00136b10 vaddr=3fc97300 size=03110h ( 12560) load
I (318) esp_image: segment 2: paddr=00139c28 vaddr=40374000 size=063f0h ( 25584) load
I (326) esp_image: segment 3: paddr=00140020 vaddr=42000020 size=6d95ch (448860) map
I (405) esp_image: segment 4: paddr=001ad984 vaddr=4037a3f0 size=0ce44h ( 52804) load
I (416) esp_image: segment 5: paddr=001ba7d0 vaddr=600fe000 size=00068h (   104) load
I (416) esp_image: segment 6: paddr=001ba840 vaddr=600fe068 size=00008h (     8) load
I (430) boot: Loaded app from partition at offset 0x10000

2、分析日志

1、打印分区表内容
2、app程序启动地址,这点在OTA升级中很关键,我这个程序启动地址是0x10000

3、在工程中修改

在这里插入图片描述

三、PSRAM 信息

1、原始日志(PSRAM 初始化信息)

octal_psram: vendor id    : 0x0d (AP)
octal_psram: dev id       : 0x02 (generation 3)
octal_psram: density      : 0x03 (64 Mbit)
octal_psram: good-die     : 0x01 (Pass)
esp_psram: Found 8MB PSRAM device
esp_psram: Speed: 80MHz

2、分析日志

PSRAM 模式:Octal(八线SPI)
说明:使用八线SPI模式(数据线+命令线+地址线),速度比Quad模式快。
硬件要求:确保PSRAM芯片(如AP品牌)支持Octal模式,并且开发板的GPIO引脚正确连接。
验证:ESP32-S3 N16R8等模组通常集成Octal PSRAM,若使用外部PSRAM,需确认硬件兼容性。
PSRAM 大小:8MB
用途:扩展堆内存,用于动态分配大对象(如图像缓冲区、AI模型权重)。
性能:PSRAM访问速度低于内部SRAM,但远高于Flash。避免高频访问PSRAM中的数据。

3、原始日志(PSRAM 内存分配)

heap_init: Initializing. RAM available for dynamic allocation:
At 3FCA8830 len 00040EE0 (259 KiB): DRAM
At 600FE070 len 00001F78 (7 KiB): RTCRAM
esp_psram: Adding pool of 5773K of PSRAM memory to heap allocator

4、分析日志

内部DRAM:约259KB,用于栈、堆和关键数据。
RTCRAM:7KB,用于深度睡眠模式下的低功耗内存。
PSRAM:5773KB(约5.6MB),通过heap_caps_malloc(MALLOC_CAP_SPIRAM)分配。
关键点:
PSRAM 已成功启用,可用于扩展堆内存。
若应用需要更多内存,可进一步优化PSRAM分配策略(如减少内部DRAM的使用)。

四、RTC时钟

1、原始日志

W (1250) clk: 32 kHz XTAL not found, switching to internal 150 kHz oscillator

2、分析日志

32kHz 外部晶振缺失,使用内部150kHz振荡器可能导致定时精度下降,若硬件未焊接32kHz晶振,需在开发板上添加;若已有,检查焊接和电路设计

五、其他

1、原始日志

esp_psram: Reserving pool of 32K of internal memory for DMA/internal allocations

2、分析日志

内存预留,为DMA和内部操作预留32KB内部内存

http://www.lryc.cn/news/585776.html

相关文章:

  • 力扣 hot100 Day41
  • RLHF:人类反馈强化学习 | 对齐AI与人类价值观的核心引擎
  • Linux711 Mysql
  • openpilot:为您的汽车插上智能驾驶的翅膀
  • 创意总监的动态视觉秘诀:用AE动态遮罩AI,轻松实现“人景分离”
  • 【每日刷题】加一
  • Java 中的锁分类
  • 【牛客刷题】吃糖果----糖果甜度问题(贪心策略详解)
  • 小车循迹功能的实现(第六天)
  • UML 与 SysML 图表对比全解析:软件工程 vs 系统工程建模语言
  • 持有对象-泛型和类型安全的容器
  • 线程通信V
  • 【Linux】系统引导修复
  • InnoDB 存储引擎的 架构
  • 渗透测试之木马后门实验
  • 世界现存燃油汽车品牌起源国别梳理
  • k8s新增jupyter服务
  • 中国国际会议会展中心模块化解决方案的技术经济分析报告
  • 【机器学习应用】基于集成学习的电力负荷预测系统实战案例
  • Linux设备树(dts/dtsi/dtb、设备树概念,设备树解析,驱动匹配)
  • kubernetes单机部署踩坑笔记
  • 【linux网络】深入理解 TCP/UDP:从基础端口号到可靠传输机制全解析
  • 【理念●体系】Windows AI 开发环境搭建实录:六层架构的逐步实现与路径治理指南
  • ATAM与效用树:架构评估的核心方法论
  • 鸿蒙 Secure Boot 全流程解析:从 BootROM 到内核签名验证的实战指南
  • 使用 lstrip() 和 rstrip() 方法
  • OpenAI 将推 AI Agent 浏览器:挑战 Chrome,重塑上网方式
  • C语言文件读写操作详解:fgetc与feof函数的应用
  • 上位机知识篇---Git符号链接
  • vue3 el-input 通过数组 获取显示