Dzbj_ESP32-S3/项目性能分析报告.md
Rdzleo 58fb9aab86 feat: 启用BLE蓝牙图片传输 + 移除温湿度传感器代码
1、app_main 中新增 ble_init() 调用,启动 BLE GATT Server(设备名: MY-BLE)
2、移除 temp 模块:CMakeLists.txt、main.c、pages.c 中的引用和 temp_test() 函数
3、精简 ble.c:移除 SENSOR_SERVICE(温湿度服务)、TEMP/HUMI 特征、READ_EVT 处理,仅保留图片传输服务
4、新增项目性能分析报告(N16R8 模组资源消耗详细分析)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:19:11 +08:00

177 lines
7.0 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ESP32-S3 LVGL 智能设备 - 项目性能分析报告
> 模组ESP32-S3-WROOM-1-N16R8
> 更新日期2026-02-12
> 编译环境ESP-IDF 5.4 + LVGL 8.3.11 + BLE Bluedroid
---
## 一、模组硬件规格
| 资源 | 规格 | 说明 |
|------|------|------|
| Flash | 16 MB (Quad SPI) | 存储固件 + SPIFFS 图片 |
| PSRAM | 8 MB (OPI) | 外部 RAM可供 BLE/LVGL 动态分配 |
| 内部 SRAM | 512 KB | IRAM + DIRAM + RTC运行时核心内存 |
| CPU | Xtensa LX7 双核 240MHz | 当前配置 40-160MHz (DFS) |
---
## 二、固件总体资源消耗
### 2.1 固件大小
| 项目 | 大小 | 占用率 | 说明 |
|------|------|--------|------|
| **固件总大小** | **1,359 KB** | — | program.bin |
| App 分区 | 4,096 KB | **33%** 已用67% 空闲 | 可容纳约 3 倍当前固件 |
| Bootloader | 22 KB | 68% 已用 | 32% 空闲 |
### 2.2 内存区域使用情况
| 内存区域 | 已用 | 总计 | 占用率 | 剩余 | 状态 |
|----------|------|------|--------|------|------|
| **DIRAM** | 180.6 KB | 333.8 KB | **54.11%** | 153.2 KB | 充裕 |
|  .text (代码) | 92.2 KB | — | 27.61% | — | |
|  .bss (未初始化) | 70.2 KB | — | 21.04% | — | |
|  .data (已初始化) | 18.2 KB | — | 5.45% | — | |
| **IRAM** | 16.0 KB | 16.0 KB | **99.99%** | 1 B | 已满 |
|  .text | 15.0 KB | — | 93.73% | — | |
|  .vectors | 1.0 KB | — | 6.27% | — | |
| **Flash Code** | 662.4 KB | — | — | — | 存储在 Flash |
| **Flash Data** | 580.0 KB | — | — | — | 存储在 Flash |
| **RTC FAST** | 112 B | 8.0 KB | 1.37% | 7.9 KB | 充裕 |
| **RTC SLOW** | 28 B | 8.0 KB | 0.34% | 8.0 KB | 充裕 |
### 2.3 Flash 分区表使用情况
| 分区 | 大小 | 用途 |
|------|------|------|
| bootloader | ~32 KB | 引导程序 |
| partition-table | 4 KB | 分区表 |
| nvs | 24 KB | NVS 配置存储 |
| app | 4 MB | 应用固件 (已用 33%) |
| spiffs | 2 MB | 图片资源存储 |
| **已分配** | **~6 MB** | |
| **Flash 剩余** | **~10 MB** | 可扩展 OTA、更大 SPIFFS 等 |
---
## 三、各组件资源消耗 (Top 15)
| 排名 | 组件 | 总大小 | Flash Code | Flash Data | DIRAM | 说明 |
|------|------|--------|-----------|-----------|-------|------|
| 1 | **libmain.a** | 348.5 KB | 14.3 KB | 332.9 KB | 1.3 KB | 应用代码 + UI 图片资源 |
| 2 | **liblvgl.a** | 322.9 KB | 169.1 KB | 88.5 KB | 65.2 KB | LVGL 图形库 |
| 3 | **libbt.a** | 193.7 KB | 171.7 KB | 21.3 KB | 0.7 KB | BLE 蓝牙协议栈 |
| 4 | libesp_app_format.a | 101.5 KB | 0.4 KB | 101.1 KB | 10 B | 应用格式信息 |
| 5 | **libbtdm_app.a** | 71.5 KB | 48.6 KB | 8.7 KB | 14.1 KB | BLE 控制器 |
| 6 | libc.a | 58.2 KB | 54.0 KB | 3.6 KB | 0.6 KB | C 标准库 |
| 7 | libesp_hw_support.a | 46.3 KB | 28.0 KB | 1.8 KB | 12.4 KB | 硬件支持层 |
| 8 | libphy.a | 34.1 KB | 26.0 KB | 0 | 8.2 KB | PHY 射频驱动 |
| 9 | libhal.a | 26.5 KB | 10.2 KB | 0.2 KB | 15.6 KB | HAL 硬件抽象层 |
| 10 | libspiffs.a | 22.7 KB | 22.3 KB | 0.4 KB | 12 B | SPIFFS 文件系统 |
| 11 | libfreertos.a | 19.9 KB | 0.9 KB | 1.2 KB | 16.9 KB | FreeRTOS RTOS |
| 12 | libesp_system.a | 15.5 KB | 9.2 KB | 0.7 KB | 1.3 KB | 系统核心 |
| 13 | libspi_flash.a | 14.6 KB | 1.2 KB | 0.4 KB | 12.5 KB | SPI Flash 驱动 |
| 14 | libnvs_flash.a | 14.2 KB | 13.9 KB | 0.2 KB | 28 B | NVS 存储 |
| 15 | libheap.a | 11.8 KB | 3.5 KB | 1.0 KB | 5.4 KB | 堆内存管理 |
---
## 四、BLE 蓝牙资源消耗专项
| 组件 | 大小 | 说明 |
|------|------|------|
| libbt.a | 193.7 KB | Bluedroid 协议栈 |
| libbtdm_app.a | 71.5 KB | BLE 控制器固件 |
| libcoexist.a | 4.9 KB | WiFi/BLE 共存 |
| libbtbb.a | 3.4 KB | BLE Baseband |
| libesp_phy.a | 3.1 KB | PHY (部分) |
| **BLE 合计** | **~276.6 KB** | 约占固件总大小 20% |
**BLE 内存优化配置**
- `CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y`BLE 动态分配优先使用 PSRAM减少内部 SRAM 压力
- BLE DIRAM 占用仅 ~15 KB得益于 PSRAM 分流)
---
## 五、LVGL 图形库资源消耗专项
| 项目 | 大小 | 说明 |
|------|------|------|
| LVGL 核心库 | 322.9 KB | 控件、渲染、动画等 |
| LVGL Port | 3.9 KB | ESP-IDF 适配层 |
| UI 图片资源 (Flash) | ~333 KB | 内嵌在 libmain.a 中的 PNG/图标 |
| LVGL DIRAM (.bss) | 65.1 KB | 帧缓冲、对象树等 |
| **LVGL 合计** | **~326.8 KB** | 约占固件总大小 24% |
---
## 六、功能模块清单
| 模块 | 状态 | 资源影响 |
|------|------|----------|
| LVGL UI (三界面) | 已启用 | Flash ~327 KB, DIRAM ~65 KB |
| BLE GATT Server (图片传输) | 已启用 | Flash ~277 KB, DIRAM ~15 KB |
| SPIFFS 文件系统 | 已启用 | Flash ~23 KB |
| JPEG 解码 | 已启用 | Flash ~6.3 KB |
| LCD ST77916 (QSPI) | 已启用 | Flash ~5.2 KB |
| CST816S 触摸 | 已启用 | Flash ~1.3 KB |
| PWM 背光 | 已启用 | Flash ~5.1 KB |
| 电池 ADC 监控 | 已启用 | < 1 KB |
| 按键驱动 | 已启用 | < 1 KB |
| 低功耗管理 (DFS + Light Sleep) | 已启用 | Flash ~2.8 KB |
| WiFi | 未启用 | 仅链接 58 B (stub) |
| ~~温湿度传感器~~ | **已移除** | |
---
## 七、资源余量评估
### 7.1 关键资源余量
| 资源 | 当前占用 | 总量 | 剩余 | 余量评估 |
|------|----------|------|------|----------|
| **内部 SRAM (DIRAM)** | 180.6 KB (54.1%) | 333.8 KB | **153.2 KB** | 充裕可支撑更多功能 |
| **IRAM** | 16.0 KB (99.99%) | 16.0 KB | **1 B** | 已满但正常ESP-IDF 自动管理溢出到 Flash |
| **App Flash** | 1,359 KB (33%) | 4,096 KB | **2,737 KB** | 非常充裕 |
| **总 Flash** | ~6 MB (分区) | 16 MB | **~10 MB** | 极其充裕 |
| **PSRAM** | 运行时动态分配 | 8 MB | ~7.5+ MB | 极其充裕 |
### 7.2 IRAM 满载说明
IRAM 99.99% 是正常现象
- ESP-IDF 的链接脚本会自动将溢出的 IRAM 代码放到 Flash 中执行
- 只有标记为 `IRAM_ATTR` 的关键中断处理函数才必须在 IRAM
- 不影响正常运行无需优化
### 7.3 运行时内存估算(满负荷)
| 项目 | 预估消耗 | 来源 |
|------|----------|------|
| FreeRTOS 任务栈 (5-6个任务) | ~30 KB | DIRAM |
| LVGL 帧缓冲 (双缓冲) | ~43 KB | PSRAM |
| LVGL 对象树/样式 | ~20 KB | DIRAM |
| BLE 连接管理 | ~10 KB | PSRAM (优先) |
| JPEG 解码临时缓冲 | ~15 KB | (临时) |
| SPIFFS 缓存 | ~4 KB | |
| **合计** | **~122 KB** | |
| **DIRAM 堆剩余** | **~153 KB** | 满足需求 |
---
## 八、总结
**N16R8 模组资源完全满足当前项目需求**
1. **Flash (16MB)**固件仅用 1.36 MBSPIFFS 2 MB大量空间可扩展 OTA 或增加图片存储
2. **内部 SRAM (512KB)**DIRAM 54%剩余 153 KB 足够运行时动态分配
3. **PSRAM (8MB)**BLE 动态内存优先使用 PSRAM有效降低内部 SRAM 压力剩余 7+ MB
4. **BLE 影响可控**BLE 增加约 277 KB Flash + 15 KB DIRAM N16R8 影响微乎其微
**优化建议**可选
- 如需进一步减少 Flash 占用可考虑压缩 UI 内嵌图片资源当前 ~333 KB
- 如需启用 WiFi + BLE 共存DIRAM 仍有足够余量
- PSRAM 可用于存储更大的 JPEG 解码缓冲提升图片切换速度