MB-Sytem代码调试

本文介绍在Ubuntu环境中调试mbsystem代码的方法,以EM2040采集的all格式记录文件为例,详细讲解了如何使用gdb进行断点设置、单步调试及变量值查看,帮助读者掌握mbsystem的配置文件解析过程。

这一篇主要讲解如何在Ubuntu环境下调试mbsystem的代码。此次以EM2040采集的all格式记录文件为例,查看并验证其如何解析读取配置文件。

首先通过阅读源码发现,读取配置文件代码位于mbr_em710raw_rd_start函数,同时mbinfo工具会最终会通过mbr_em710raw.c文件调用mbr_em710raw_rd_start函数。可以使用这个命令进行测试。

(1)启动gdb

(2)设置参数命令

(3)分析加断点

可通过查看源码,通过函数方式添加断点mbr_em710raw_rd_start

添加断点成功(b为break缩写)

(4)启动执行代码

r为run缩写,运行至断点处

执行至断点处,上层为断点所在函数

(5)单步调试

Step和next进行单步调试

查看当前代码

 

(6)重新加断点,执行至新断点处

b是break的简写

(7)打印输出需要查看的设备信息

也可以使用p store->type  其中p是print的简写。

也可使用display store->type输出显示信息

注:

其他说明

(1)输出显示指针存储的波束点水深信息。

(2)mb是否可以用来调试?

可以调试,带有调试信息的可执行文件即可调试

(3)如果有多个.o文件a启动b,如何调试b中代码。

直接启动a,添加b中代码的函数断点,会将b符号加载进去

(4)mb目录下对应的.o文件是什么文件?

可以看出是含有调试信息的目标文件。不能用来调试(使用gdb加载时会加载成功,但是执行会失败,不是可执行文件)

(5)用gdb调试时想打印变量值,结果出现了optimized out,打印不出变量内容

打开configure文件和libtool文件,搜索-O2,将所有-O2替换为-O0,然后重新生成makefile即可。

参考资料:

[1]mbcookbook.pdf  https://www.mbari.org/wp-content/uploads/2016/03/mbcookbook.pdf

[2] https://github.com/dwcaress/MB-System

[3]https://www.mbari.org/products/research-software/mb-system/how-to-download-and-install-mb-system/#toggle-id-2

[4] https://www.mbari.org/products/research-software/mb-system/

[5] https://blog.youkuaiyun.com/baidu_38172402/article/details/81152192

[6]https://www.mbari.org/products/research-software/mb-system/mb-system-announcements-archive/

<think>嗯,用户想要了解便携式电源系统中电池管理系统(BMS)的基础知识。从用户的问题来看,ta可能是个刚接触这个领域的技术人员或学生,需要系统的入门知识。用户特意用英文全称提问,说明ta可能接触过相关技术文档,但需要中文的通俗解释。 结合之前的引用内容,虽然引用[1]和[4]提到电源管理和充电器设计,但用户明确指向BMS系统,需要更针对性的内容。考虑到便携式电源的特性,应该重点强调安全性和能效管理这两个痛点。 用户可能最关心的是: - BMS到底管什么(核心功能) - 为什么不用BMS会出问题(必要性) - 基本组成模块(硬件框架) - 关键技术指标(选型依据) 在组织回答时,应该采用"总-分"结构:先定义BMS是什么,再拆解功能模块,最后补充设计要点。特别注意要区分消费级和工业级BMS的差异,因为用户没限定具体应用场景。安全警告部分要突出,引用[4]里提到的绝对最大额定值概念正好可以关联到BMS的保护功能。 需要避免直接复制引用内容,而是把其中关于电源状态管理、热应力的概念转化为BMS语境下的解释。比如引用[2]的电源状态枚举其实对应BMS的休眠模式设计。 最后生成的问题要覆盖延伸学习路径:从基础原理(拓扑结构)到实践问题(故障诊断),再到前沿发展(新技术),这样用户可以根据兴趣选择深入方向。特别注意加入安全标准问题,因为工业设计必须考虑认证。</think>以下是便携式电源系统电池管理系统(BMS)的基础知识介绍: ### 一、BMS定义与核心作用 电池管理系统(Battery Management System)是监控、控制和管理电池组的电子系统,核心目标包括: 1. **安全保护** - 实时监测电压、电流、温度:防止过充(Overcharge)、过放(Over-discharge)、过温(Over-temperature) - 短路保护:自动切断电路避免热失控[^4] 2. **状态估算** - 计算荷电状态(State of Charge, SOC):精确显示剩余电量 - 评估健康状态(State of Health, SOH):预测电池寿命衰减 3. **均衡控制** - 通过被动/主动均衡消除电芯间差异(如 $$V_{cell1} \neq V_{cell2}$$),延长整体寿命 4. **能效优化** - 调节充放电曲线,适配不同负载需求 --- ### 二、关键子系统与功能 | **子系统** | **功能描述** | |------------------|-----------------------------------------------------------------------------| | **传感采集单元** | 采集电池组电压(±1mV精度)、电流(±0.5%精度)、温度(NTC/PTC传感器) | | **保护控制单元** | 触发MOSFET关断(如检测到 $$I > I_{\text{max}}$$ 或 $$T > 85^\circ \text{C}$$) | | **均衡模块** | 被动均衡:电阻耗散多余能量(成本低)<br>主动均衡:电容/电感转移能量(效率>85%) | | **通信接口** | CAN/RS485/I²C 传输数据至主机(如上报SOC值)[^1] | --- ### 三、典型硬件拓扑 ```mermaid graph LR A[电池组] --> B[电压采集IC] A --> C[电流传感器] A --> D[温度传感器] B --> E[主控MCU] C --> E D --> E E --> F[MOSFET驱动] E --> G[均衡电路] E --> H[通信接口] ``` --- ### 四、设计挑战与解决方案 1. **SOC估算精度** - 难点:受温度/老化影响 - 方案:融合开路电压法+库仑积分+卡尔曼滤波算法 2. **安全冗余设计** - 双MCU架构:主控芯片失效时备份芯片接管[^4] 3. **热管理** - 温度梯度控制:确保电芯温差 $$|\Delta T| < 3^\circ \text{C}$$(如笔记本BMS) --- ### 五、应用场景 - **消费电子**:手机/笔记本(1-4节电芯) - **电动工具**:高倍率放电(20C以上) - **储能设备**:光伏储能系统(支持梯次利用)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值