📸 日志系统化构建
30章 · 从零到实战
🧩 摄像头调试
⚡ 嵌入式
🎯 系统化
🔧 🐧 🧪
1
📋 概述
日志系统概述
为什么摄像头调试需要日志系统?日志的级别与分类。
2
📦 选型
日志框架选型
对比log4c、spdlog、zlog等C/C++日志库,选择适合嵌入式环境的方案。
3
📐 格式
日志格式设计
时间戳、模块名、日志级别、文件名、行号、线程ID的标准化格式。
4
🔌 后端
日志输出后端
控制台输出、文件输出、网络输出(UDP/TCP)的实现与切换。
5
🗂️ 管理
日志文件管理
日志轮转(按大小/时间)、日志压缩、日志清理策略。
6
🔄 缓冲
日志缓冲区设计
环形缓冲区、异步日志、双缓冲机制,防止日志阻塞业务线程。
7
🎛️ 动态
日志级别动态调整
运行时通过命令行或配置文件修改日志级别,无需重启。
8
🔍 过滤
日志分类与过滤
按模块(ISP、Sensor、AE、AF、AWB)分类,支持正则表达式过滤。
9
🧵 上下文
日志上下文传递
在函数调用链中传递日志上下文(如帧ID、场景ID),便于关联分析。
10
⏱️ 基准
日志性能基准测试
测量不同日志级别、不同输出后端下的吞吐量和延迟。
11
⚙️ 初始化
日志系统初始化
单例模式实现日志系统全局初始化,支持多实例场景。
12
🧩 宏封装
日志宏封装
使用宏定义简化日志调用,自动捕获__FILE__、__LINE__、__FUNCTION__。
13
🌈 颜色
日志颜色输出
在终端中根据日志级别显示不同颜色(ERROR红色、WARN黄色、INFO绿色、DEBUG蓝色)。
14
🔒 线程安全
日志系统线程安全
使用互斥锁、读写锁或无锁队列保证多线程环境下的日志安全。
15
📁 配置化
日志系统配置化
通过JSON或YAML配置文件定义日志输出规则、级别、格式。
16
🔗 调试集成
日志系统与调试工具集成
将日志输出到串口、JTAG、SWO等调试接口。
17
🌐 远程调试
日志系统与远程调试
通过网络将日志实时发送到PC端上位机,支持远程查看。
18
🤖 自动化
日志系统与自动化测试
在自动化测试脚本中解析日志,判断测试用例是否通过。
19
📊 性能分析
日志系统与性能分析
在日志中嵌入时间戳,用于分析函数执行时间、帧率等性能指标。
20
🆘 错误处理
日志系统与错误处理
当系统发生严重错误时,自动保存最后N条日志到非易失存储。
21
🧠 内存监控
日志系统与内存监控
在日志中记录内存分配/释放情况,辅助排查内存泄漏。
22
📟 状态机
日志系统与状态机
在摄像头状态机切换时记录状态变化,便于追踪异常状态跳转。
23
🔌 I2C/SPI
日志系统与I2C/SPI通信
记录摄像头寄存器读写操作,便于调试硬件通信问题。
24
🖼️ 图像数据
日志系统与图像数据
在日志中记录图像帧的统计信息(亮度、对比度、坏点数量)。
25
🤖 AI推理
日志系统与AI推理
记录AI模型的输入输出、推理时间、置信度等信息。
26
📲 OTA升级
日志系统与OTA升级
记录固件升级过程中的关键步骤和错误信息。
27
⚡ 功耗分析
日志系统与功耗分析
在日志中记录不同工作模式下的电流、电压、功耗数据。
28
🔌 热插拔
日志系统与热插拔
记录摄像头热插拔事件、枚举过程、驱动加载状态。
29
⏲️ 多摄像头
日志系统与多摄像头同步
记录多摄像头同步信号、帧时间戳,分析同步精度。
30
🚀 实战案例
日志系统实战案例
从零搭建一个完整的摄像头调试日志系统,包含所有核心功能。