当前位置: 首页 > 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.dtcms.com/a/274167.html

相关文章:

  • 【TCP/IP】17. 移动 IP
  • Linux权限的概念
  • 硬件加速(FPGA)
  • 函数指针指针函数 智能指针
  • 通过ETL工具,高效完成达梦数据库数据同步至数仓Oracle的具体实现
  • MDSE模型驱动的软件工程和敏捷开发相结合的案例
  • Django 视图(View)
  • 指令重排序带来的多线程问题与volatile解决方案
  • Linux设备树(dts/dtsi/dtb、设备树概念,设备树解析,驱动匹配)
  • P1204 [USACO1.2] 挤牛奶Milking Cows
  • 如何设置直播间的观看门槛,让直播间安全有效地运行?
  • 云原生周刊:镜像兼容性
  • 假日流量红利:如何用ASO策略抢占季节性下载高峰?
  • 不同质押周期对代币价格稳定性的具体影响及数据支撑
  • MinIO文件存储服务工具详细使用指南
  • 和服腰封改造:3种解构主义造型的东方美学新解
  • 2025年亚太中文赛赛题浅析-助攻快速选题
  • 【氮化镓】100 V GaN晶体管在关态应力下的双退化
  • Spring Boot中请求参数读取方式
  • HTTP 请求方法详解:GET、POST、PUT、DELETE 等
  • Python中类静态方法:@classmethod/@staticmethod详解和实战示例
  • LeetCode 278. 第一个错误的版本
  • 基于生产者消费者模型的线程池【Linux操作系统】
  • mysql中的自增ID
  • 物联网-ESP8266
  • API、MCP Client、MCP Server、LLM之间的业务逻辑关系
  • 医疗预约系统中的录音与图片上传功能实现:Vue3+Uniapp 实战
  • 在线重装 Proxmox VE
  • Swift中SwiftyJSON使用详情
  • 墙裂推荐!McpStore库三行代码为Agent添加MCP能力