一、简介
openUBMC Studio 是一款基于 Code - OSS 的 openUBMC 集成开发环境,面向 openUBMC 开发、调试和构建场景。
最近版本新增功能
下表按发布时间倒序汇总 openUBMC Studio 最近三个版本的新增功能,单击功能名称可跳转到对应章节。当前收录 2026 年 8 月和 9 月发布的版本;后续发布新版本时,仅保留最近三个版本。
| 版本 | 新增功能 |
|---|---|
| 2.1.1(2026 年 9 月 1 日) | AI 引导环境初始化:通过预置 Prompt 引导 AI Agent 完成 GitCode 登录、开发环境部署和规则集配置。 CSR 拓扑插件 0.3.7:提供本地、日志和远程三种整机拓扑模式,支持总线异常检测、单板卡配置、日志包离线还原和真机在位调试。 事件管理:可视化管理事件字典、描述模板和 CSR 事件绑定,并导出事件字典及机型支持清单。 日志诊断、Agent 日志体检与告警链条分析:导入 BMC 一键日志压缩包或 dump 目录,结合本地证据和 openUBMC RAG 生成问题清单、导出 PDF 报告,并分析指定告警的触发链条。 C/C++、Lua 与北向接口快速调试:根据组件 Git 变更生成调试计划,直接部署 Lua 和运行时配置,按需构建 C/C++ 与生成型北向配置,并完成服务重启、结果校验和环境恢复。 BMC 远程 GDB 调试:支持附加板端 systemd 服务,或部署并启动独立程序进行源码级调试。 出包签名配置:可视化管理 HPM 和 EEPROM 签名档案,生成本地自签名证书并吊销签名者证书。 |
| 2026 年 8 月 1 日版本 | BMC 环境管理插件:集中管理多台 BMC,支持连接与分组、命令宏、SFTP/HPM 升级、日志监控和 MCP 工具。 白牌包定制:可视化定制 Web 风格、Logo、图片和产品信息,并构建白牌包或清白牌包。 Manifest 配置与一键出包:可视化编辑 manifest.yml 出包配置,并按机型和包型构建固件包。组件与固件联合构建:从业务组件仓构建本地组件包,在隔离 Manifest 中验证选包并转入固件出包。 |
主要特性
openUBMC Studio 的主要特性包括:
- 智能代码辅助:提供代码跳转、定义预览和引用查找等功能。
- 实时错误检查:基于规则集检测代码错误和潜在问题。
- 表达式计算器:支持 CSR 表达式的编写、调试和批量测试。
- SMC 命令字配置:提供可视化的 SMC 命令字解析和配置工具。
- 模型配置:支持产品和规则集的选择与配置。
- CSR 拓扑可视化与调试:支持本地、日志和远程三种整机拓扑模式,提供总线异常检测、单板卡配置、日志包离线还原和真机在位调试。
- 事件管理:支持查看和编辑事件字典、描述模板及 CSR 事件绑定。
- 能效调速配置:支持通过 Excel 导入热设计表格并生成 CSR 调速曲线代码。
- Manifest 可视化配置:支持配置构建变体、组件依赖、默认特性和组件特性,并提供配置诊断。
- 组件与固件联合构建:支持从业务组件仓构建本地组件包,在隔离 Manifest 中验证选包并转入固件出包。
- 一键出包:支持选择机型和包型,完成出包预检、固件构建、日志查看和产物下载。
- 签名配置:支持管理 HPM 和 EEPROM 签名档案,并生成或吊销本地自签名证书。
- AI 引导环境初始化:支持通过 AI Agent 完成社区开发环境初始化。
- 日志诊断与告警链条分析:支持导入 BMC 一键日志进行可视化诊断、Agent 日志体检和告警链条分析。
- C/C++、Lua 与北向接口快速调试:支持按照 Git 变更规划直接部署或隔离构建,将最小替换集部署到 BMC 并验证结果。
- BMC 远程 GDB 调试:支持附加板端服务,或部署独立程序进行源码级调试。
- BMC 环境管理插件:集中管理多台 BMC,支持连接与分组、命令宏、SFTP/HPM 升级和日志监控。
- 白牌包定制:支持可视化定制 Web 风格、Logo、图片和产品信息,并构建白牌包或清白牌包。
- 社区集成:对接 openUBMC 社区资源和服务。
二、AI 引导环境初始化
openUBMC Studio 提供 AI 引导环境初始化能力。将预置 Prompt 发送给 AI Agent(例如 opencode、Claude Code 或 Cursor)后,AI Agent 会检测当前状态、诊断问题,并按顺序引导用户完成社区开发环境初始化。
使用前准备
- 已安装并能正常使用 AI Agent,例如 opencode、Claude Code 或 Cursor。
打开配置引导
在欢迎页面中单击“配置引导”入口。
在打开的配置引导窗口中找到“AI 引导初始化”卡片。
复制引导指令
单击“复制指令”卡片,打开 Prompt 对话框。
单击“复制到 AI Agent”,将 Prompt 复制到剪贴板。
切换到 AI Agent,粘贴并发送 Prompt。
了解 AI 引导流程
AI Agent 接收到 Prompt 后,会按以下流程引导用户完成环境初始化:
- GitCode 登录认证:AI Agent 打开 OAuth 登录窗口,并在用户授权后检测登录状态。
- 环境检测与部署:AI Agent 检测操作系统。Windows 用户可以选择 Docker(约 5 分钟)或 WSL(约 30 分钟)部署方式,Linux 用户直接进入环境配置。
- 规则集配置:AI Agent 引导用户在 openUBMC Studio 界面中选择机型和规则集,并通过
localview_get_data_source验证配置是否生效。 - 状态写回:每个步骤完成后,AI Agent 会回写向导状态;全部步骤完成后,向导状态变为“已完成”。
说明
AI Agent 在每个步骤开始前会查询当前配置进度,并自动跳过已完成的步骤。初始化中断后,可以重新发送 Prompt 继续执行。
验证初始化结果
确认配置引导窗口显示初始化已完成。
返回欢迎页面,确认状态栏中的登录状态、机型和规则集信息已更新。
常见问题
- Docker SSH 连接失败:检查容器内
sshd是否启动、10022端口是否开放,以及密钥认证是否配置正确。 - Conan 鉴权失败:检查 GitCode 登录状态是否有效,重新登录后重试。
- 规则集未生效:在 openUBMC Studio 状态栏中确认是否已选择机型和规则集,必要时重新配置。
三、登录到社区
openUBMC Studio提供了便捷的社区登录功能,通过社区登录可以获取更多资源和服务支持。
登录步骤
点击IDE右下角状态栏中的登录图标
在弹出的登录页面中输入您的openUBMC社区账号和密码
点击“登录”按钮完成登录
登录状态保持
登录成功后,IDE会自动保持和刷新登录状态:
- 自动刷新:IDE会定期刷新登录状态,确保持续有效
- 状态保持:退出IDE后,登录状态会继续保持一段时间
- 自动重连:重新打开IDE时,会自动尝试使用上一次的登录状态重新登录
Conan中心仓集成
登录社区后,IDE会自动同步登录到Conan中心仓:
- 登录状态自动保持并刷新
- 只要IDE处于登录状态,Conan就处于登录状态
- 在执行出包等操作时不会因为认证问题而超时
说明:
建议在开始开发工作前先完成社区登录,以确保能够正常访问所有资源和服务。
四、CSR 编码辅助
openUBMC Studio提供了强大的CSR编码辅助功能,包括引用跳转、规则检查、表达式计算器和SMC计算器等,帮助开发者快速定位代码、发现问题并提高开发效率。
模型配置
使用CSR编码辅助功能前,需要先完成模型配置。登录IDE后,点击Web版Studio状态栏中的"未选择机型"按钮,按以下步骤操作:
在模型配置页面中,选择对应的产品和规则集。
确认产品信息后,选择需要配置的模型文件。
配置模型文件对应的代码仓和分支信息。
完成配置后,点击"确定"保存配置。模型配置完成后,规则检查、拓扑配置等功能即可正常使用。
说明:
模型配置完成后即可使用以下CSR编码辅助功能。后续如需切换产品或规则集,可重新进行模型配置。
引用跳转功能
引用跳转功能可以帮助开发者快速定位代码定义和引用位置,支持多种跳转方式,大幅提高代码阅读和导航效率。
转到定义
在代码编辑器中,将光标定位到需要查看定义的符号上。
使用以下任一方式跳转到定义:
- 右键点击符号,选择“转到定义”
- 按住
Ctrl键,点击符号
编辑器将自动跳转到符号的定义位置。
转到引用
在代码编辑器中,将光标定位到需要查看引用的符号上。
使用以下任一方式查看引用:
- 按下
Shift + F12键 - 右键点击符号,选择“转到引用”
- 按下
在侧边栏将显示所有引用该符号的位置列表。
点击列表中的项可跳转到对应的引用位置。
鼠标悬停预览定义
在代码编辑器中,将鼠标悬停在符号上。
等待片刻,将显示符号的定义预览窗口。
基本规则错误检查功能
openUBMC Studio内置了CSR规则检查功能,模型配置完成后即可支持CSR语法与配置约束的实时检查。该功能支持错误位置高亮和规则自动更新,帮助开发者在编码阶段就发现潜在问题。
实时检查
模型配置后,在openUBMC Studio中打开任意CSR文件,检查自动生效:
页面中的类型错误和格式错误都会被实时拦截:
表达式中的语法错误也可以被实时拦截:
查看检查结果
错误和警告会以波浪线形式标注在代码中:
- 红色波浪线:表示错误(Error)
- 黄色波浪线:表示警告(Warning)
查看"问题"面板:
- 点击底部"问题"标签页
- 查看所有错误和警告列表
- 点击列表项可快速定位到对应代码位置
复杂规则校验
openUBMC Studio已建立复杂规则校验能力,可以在社区代码仓 openubmc_dsl_rulepack 中开发业务相关的检查规则,自定义规则同样支持实时检查功能。
表达式计算器功能
表达式计算器是openUBMC Studio提供的强大工具,用于编写、调试和测试CSR表达式,帮助开发者快速验证表达式的正确性。
打开表达式计算器
打开CSR文件,在表达式上方将显示“计算表达式”按钮
点击“计算表达式”按钮,表达式计算器窗口将在右侧打开
表达式计算器界面
表达式计算器界面包含以下部分:
- 表达式编辑区:显示和编辑当前选中的表达式
- 模式切换按钮:可以在“调试模式”和“用例模式”之间切换
- 变量面板:显示当前表达式中可用的变量及其值
- 结果面板:显示表达式计算结果和各级管道的计算过程
修改表达式
在表达式编辑区查看或修改表达式
修改完成后,点击“保存到文件”按钮保存修改
保存后,表达式计算器会自动重新加载表达式
源文件中的表达式修改并保存后,表达式编辑页面也会自动重新加载
调试表达式
在表达式编辑区查看表达式内容
在变量面板中输入或修改变量值
完成输入后,系统将自动计算:
- 各级管道的中间结果
- 最终表达式结果
说明:
调试功能可以帮助您逐步查看表达式的计算过程,快速定位问题。
表达式批量用例测试
在表达式计算器中, 点击“用例模式”按钮切换到批量测试模式
创建测试用例:
- 按照要求输入测试用例名称和参数值以及结果值
执行批量测试:
- 点击“加载用例”加载所有测试用例
- 点击“Execute all”执行所有测试用例
- 查看验证报告,显示每个用例的执行结果
说明:
测试用例可以导出为文件,方便团队共享和版本管理。
建议为复杂表达式编写多个测试用例,确保表达式在各种情况下都能正确工作。
SMC计算器功能
SMC计算器用于解析和配置SMC命令字,帮助开发者快速理解和生成SMC命令,简化SMC相关的开发工作。
打开SMC计算器
打开CSR文件,定位到Scanner或Accessor的offset字段
点击offset字段上方显示的"计算偏移量"按钮
SMC计算器窗口将在右侧打开
SMC命令字解析
SMC计算器提供了强大的命令字解析功能:
- 自动解析:当前偏移量会被自动解析,显示各字段的含义
- 实时计算:修改下方输入框的数据内容将自动更新和计算偏移量
- 应用到文件:点击“应用”按钮可以将计算结果写入到CSR文件
- 字段提示:鼠标悬停在字段上方可以显示具体的字段含义和说明
SMC命令字可视化辅助
openUBMC Studio提供了直观的SMC命令字可视化功能:
水印显示:SMC命令字将在CSR中以水印形式显示字段内容,方便查看
悬停详情:鼠标悬停在offset字段上将显示偏移量的详细信息,包括:
- 各字段的值
- 字段的含义
- 完整的偏移量计算结果
说明:
可视化辅助功能可以帮助您快速理解复杂的SMC命令字结构,减少配置错误。
五、拓扑与 CSR 可视化配置
CSR 拓扑插件提供整机和单板卡两个维度的总线及器件拓扑可视化。0.3.7 版本新增本地、日志和远程三种整机拓扑模式,并支持总线异常检测、日志包离线还原、真机在位调试以及单板卡可视化配置。
创建拓扑配置
单击 openUBMC Studio 左侧的拓扑十字形侧边栏图标。
单击“创建配置”。
单击“添加仓库”,选择 CSR 文件夹,即可在该机型配置中使用来自该文件夹的 CSR。可以添加多个 CSR 代码仓,单击右下角的“确定”即可创建项目。
创建完成后,拓扑起点为
root.sr。
CSR 整机拓扑
CSR 整机拓扑图提供整机维度与单 CSR 维度的总线及器件拓扑可视化:以板卡为节点展示整机的层级结构、Connector 连接关系与总线连线,支持双击板卡下钻到单板视图、从器件库拖拽器件完成配置。根据数据来源不同,拓扑图分为三种使用模式:本地模式、日志模式与远程模式。
三种模式对比与选择
| 对比项 | 本地模式 | 日志模式 | 远程模式 |
|---|---|---|---|
| 数据来源 | 模型配置的本地 CSR 代码仓 | 日志压缩包(connectors.txt + .sr) | 真机运行时(mdbctl + framework.log) |
| 依赖模型配置 | 是 | 否 | 否 |
| 在位状态 | 静态配置,可切换(在位/不在位/天池加载/动态加载) | 收集时刻快照,只读 | 运行时实际值,可切换开关模拟拔插 |
| 典型场景 | 日常开发、搭建整机拓扑、板卡适配 | 现场日志离线分析、问题回溯 | 真机调试、在位异常定位 |
根据手头资源选择:
- 有整机 CSR 代码仓,需要搭建或修改拓扑配置 → 本地模式(见下文「本地模式」)。
- 只有现场日志压缩包,需要还原收集时刻的整机拓扑 → 日志模式(完整指南见导入 BMC 日志压缩包查看 CSR 拓扑)。
- 有可达真机 BMC,需要查看实时在位或调试板卡加载 → 远程模式(完整指南见远程模式连接 BMC 环境)。
模式切换:日志模式与远程模式均为临时查看模式,重新从侧边栏加载本地拓扑(如切换机型或点击侧边栏文件节点)即恢复本地模式,导入日志产生的临时解压目录会自动清理。
界面说明
拓扑图中的主要元素如下:
- 板卡节点:每个节点代表一块板卡,显示板卡类型、SR 文件名与对应的板型示意图;根节点为
root.sr(BMC 主板)。 - 在位状态:节点左上角显示在位标签或开关,含义与可操作性随模式不同,详见各模式说明。
- 板卡选择器:本地模式下,尚未确定 SR 的节点提供候选板卡列表与数量选择器,用于配置下游板卡。
- 总线连线与连接桩:连线表示上游 Connector 传入的总线,由上游板卡的连接桩连向下游板卡;总线配置不一致时会出现红色连线或异常标志。
- 单板下钻:双击整机拓扑页面的任意板卡,或点击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面,查看该板卡 SR 的板内拓扑与详情。
- 工具栏:配置选择框与「导出配置」按钮用于整机拓扑的多配置管理,仅本地模式可用。
本地模式
本地模式是默认模式,数据来自模型配置的本地 CSR 代码仓,用于日常开发中搭建与修改整机拓扑。
查看整机拓扑
点击侧边栏拓扑插件图标,进入整机拓扑图页面,显示如下:
总线连线:板卡之间的连线为上游 Connector 传入的总线,将鼠标悬停在总线上可显示总线名称。
总线异常检测:自动检测上游 Connector 传入总线与下游板卡 Anchor 中定义总线的一致性。
总线类型不匹配
当上游 Connector 的 Buses 和下游板卡 Anchor 的 Buses 同一索引位置的总线类型不一致时,总线显示为红色,将鼠标悬停在图标上可查看具体信息。
总线类型判断逻辑:取总线名称前缀,若前缀相同,则认为类型匹配。
上游多传入总线
当上游 Connector 的 Buses 数量大于下游板卡 Anchor 的 Buses 数量时,Connector 的 Buses 数组中多出的总线会被识别为上游多传入总线。板卡左下角会显示红色异常标志,将鼠标悬停在标志上可查看具体信息。
下游板卡多出总线
当上游 Connector 的 Buses 数量小于下游板卡 Anchor 的 Buses 数量时,下游板卡 Anchor 的 Buses 数组中多出的总线会被识别为下游多定义总线。板卡左下角会显示红色异常标志,将鼠标悬停在标志上可查看具体信息。
板卡合并:SR 文件中的不同 Connector 加载同一个文件时,拓扑图会将其合并为一张板卡。
配置整机拓扑
可通过板卡上方选项在整机拓扑中选择对应板卡,各板卡可选下游板卡数量和类型由该板卡的 Connector 配置决定;尚未确定 SR 的节点通过板卡选择器从候选列表中指定 SR 文件。所有配置信息会自动在本地持久化。
双击整机拓扑页面的任意板卡,或点击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面。
通过工具栏的配置选择框可在多套整机配置之间切换,点击「导出配置」可导出当前配置。
在位状态
本地模式根据 SR 文件中上游 Connector 的 IdentifyMode 和 Presence 值显示在位状态,单击开关可切换:
| 显示 | 含义 |
|---|---|
| 天池加载 | IdentifyMode 为 3,由天池配置加载 |
| 在位 / 不在位 | IdentifyMode 为 2,Presence 为固定值 1 / 0 |
| 动态加载 | IdentifyMode 为 2,Presence 为表达式,按表达式动态计算 |
板卡在位状态
切换在位状态:单击开关可同步修改上游 Connector 中
Presence的值。
CSR 单板卡配置
双击整机拓扑页面的任意板卡,或单击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面。单板卡视图支持新增、删除总线或器件,以及修改 Mux 总线的 ChannelId。也可以按 Ctrl + Z 撤销、按 Ctrl + Y 恢复。
定位器件
单击器件,右侧 SR 文件会自动定位到该器件对象所在的位置。
修改 ChannelId
单击器件上方的 ChannelId 数字方块,可修改其值。
新增总线
单击 + 图标,选择总线类型并填写总线后缀,然后单击“确定”新增总线。
删除器件、总线
将鼠标悬停在器件或总线上,单击鼠标右键并选择“删除”。
拖拽器件
打开器件库,将器件拖拽到总线上即可将器件挂载到总线,同时自动修改对应 CSR 文件内容。也可以拖拽器件到可下连的器件卡片上进行挂载。
导入 BMC 日志压缩包查看 CSR 拓扑
openUBMC Studio 支持导入 BMC 一键收集的日志压缩包,在离线环境下还原当前整机加载的 CSR 及其拓扑关系。适用于现场问题定位与离线日志分析:拿到日志包即可查看板卡层级结构、连接关系与在位情况,无需连接真机。
使用前准备
- 已安装 openUBMC Studio 并启用 CSR 拓扑插件(随主插件提供)。
- 准备 BMC 一键收集的日志压缩包,支持
zip、tar、tgz、gz(含.tar.gz)格式。 - 本机需可执行
tar命令(日志包解压依赖系统 tar)。
说明:
导入日志模式不依赖模型配置,也无需预先创建拓扑项目,可直接使用。
导入日志压缩包
在 openUBMC Studio 左侧 CSR 拓扑侧边栏视图标题栏,点击「导入日志包」按钮。
在弹出的文件选择框中,选择 BMC 日志压缩包并点击「选择日志压缩包」确认。
工具自动解压并解析日志包中的
connectors.txt,随后在主编辑区渲染整机 CSR 拓扑图。导入成功后右下角提示「成功导入: 文件路径」。
查看导入的拓扑
板卡层级与连接关系:拓扑图展示整机各板卡的层级结构与总线连接,查看能力与本地整机拓扑页面一致,但不支持切换板卡配置(配置选择框与导出配置按钮为禁用状态)。
在位状态:每块板卡以只读标签显示在位状态(在位/不在位),状态取自日志包记录。
实现原理
数据来源
导入模式的拓扑数据全部来自日志压缩包内部,不访问真机,各数据项来源如下:
| 数据项 | 来源 | 用途 |
|---|---|---|
| 板卡层级结构 | connectors.txt 的树形拓扑部分 | 构建整机拓扑树(板卡父子关系) |
Connector 详情(Buses、Type、Presence、IdentifyMode 等) | connectors.txt 的 Connector 详情段 | 总线连线、连接器类型、在位状态 |
板卡类型与名称(Unit.Type / Unit.Name) | 日志包内的 .sr 文件 | 拓扑节点显示的板卡类型与名称 |
下游总线(ManagementTopology.Anchor.Buses) | 日志包内的 .sr 文件 | 总线一致性检测的下游锚点 |
| 板卡 SR 详情 | 日志包内的 .sr 文件 | 双击板卡下钻查看的自描述内容 |
connectors.txt 通常位于日志包的 dump_info/AppDump/hwdiscovery/ 目录下;工具同时支持在解压根目录及任意子目录中递归查找。.sr 文件从 connectors.txt 所在目录及其子目录中递归收集。
connectors.txt 格式示例
connectors.txt 由 BMC 硬件自发现流程生成,前半部分是板卡树形结构,后半部分是每个 Connector 的属性详情:
root
├─Connector_BMC
│├─Connector_PCPU_1
│└─Connector_PCPU_2
└─Connector_PSU_1
Connector_BMC:
.Buses: ["I2c_1","I2c_2"]
.Type: BMC
.Presence: 1
.IdentifyMode: 2
Connector_PSU_1:
.Buses: ["I2c_3"]
.Type: PSU
.Presence: 0
.IdentifyMode: 2树形部分:通过行首的
├─、└─、│符号表达层级,每个节点即一块板卡的 Connector,对应 SR 文件名为节点名.sr(如Connector_PCPU_1.sr)。详情部分:
Connector_XXX:开启一个 Connector 段,其下以.属性: 值逐行列出属性。其中Presence决定在位标签(1=在位,0=不在位),Buses决定上游总线连线。
处理流程
- 解压:调用系统
tar(zip 在 Linux 下用unzip)将日志包解压到固定临时目录。 - 查找 connectors.txt:按「解压根目录 →
dump_info/AppDump/hwdiscovery/→ 递归子目录」的顺序查找。 - 解析:拆分树形结构与 Connector 详情段,得到拓扑树骨架与各 Connector 属性。
- 收集 SR 文件:递归收集同目录下全部
.sr文件并解析缓存到内存。 - 构建拓扑:将 Connector 属性与 SR 文件按名称(去除末尾
_序号后缀)匹配,生成前端拓扑树并渲染。
说明:
在位状态反映的是收集日志时刻的整机状态,非实时数据。
功能验证
导入完成后,可按以下检查项验证功能是否正常:
| 验证项 | 操作步骤 | 预期结果 |
|---|---|---|
| 导入解析 | 选择 BMC 一键收集日志压缩包导入 | 右下角提示「成功导入: 文件路径」,主编辑区渲染整机拓扑 |
| 板卡层级 | 对比拓扑树与日志包 connectors.txt 的树形结构 | 板卡父子层级一致,无遗漏板卡 |
| 在位状态 | 查看板卡节点标签,与 connectors.txt 中对应 Connector 的 Presence 值比对 | 标签显示与记录一致(1=在位,0=不在位) |
| 板卡详情下钻 | 双击拓扑中的板卡节点 | 编辑器第二列打开该板卡 SR 文件内容 |
常见问题
| 现象 | 处理建议 |
|---|---|
| 提示「未找到 connectors.txt 文件」 | 请确认导入的是 BMC 一键收集日志压缩包(内含 connectors.txt) |
| 导入会占用/残留磁盘空间吗 | 日志包解压到固定临时目录(系统临时目录/bmc-log-import),每次导入前自动清理旧数据,无需手动维护 |
| 能否修改在位状态或板卡配置 | 导入模式为只读查看,不支持修改在位状态与 CSR 配置;配置选择与导出按钮为禁用状态 |
远程模式连接 BMC 环境
远程模式支持连接真机 BMC 环境,自动从运行时数据(mdbctl 调试命令 + 框架日志)构建整机 CSR 拓扑,实时展示板卡实际在位情况。无需从 BMC 手动导出数据再导入,选择环境即可出图,适用于真机调试、板卡适配验证与在位异常定位。
使用前准备
- 已安装并启用 BMC环境管理 插件(
openubmc.bmcstudio-bmc-remote),并添加至少一条 BMC 连接。连接的添加方法参见 BMC环境管理插件 章节。 - 目标 BMC 运行 openUBMC 固件,开放 Telnet 调试通道(23 端口免认证调试 shell),且板上具备
mdbctl调试命令。 - 开发机无需安装 telnet 客户端,扩展使用内置连接直连。
说明:
远程模式不依赖模型配置,选中环境后自动跳过机型配置流程,直接加载拓扑。
连接 BMC 环境
在 CSR 拓扑侧边栏视图标题栏,点击「远程调试」按钮。
在顶部弹出的环境选择框中,选择目标 BMC 环境。列表展示全部已配置连接,并实时探测在线状态(在线/离线图标 + 账号信息)。
选择后显示「正在加载 xx 环境的 CSR 拓扑」进度通知,工具自动读取真机运行时的 Connector 对象与 SR 加载记录并构建拓扑。
加载完成后,拓扑图工具栏显示当前连接的环境名称与 IP,主编辑区渲染整机实时拓扑。
查看实时拓扑
- 真实在位状态:拓扑以真机运行时数据为准(而非静态 root.sr 配置),每块板卡显示实际在位/不在位状态。
- EEPROM 板卡:CSR 烧录在 EEPROM(而非 .sr 文件)的板卡会被自动解码,与文件板卡同等展示,双击同样可查看内容。
- 板卡 SR 下钻:双击板卡即可进入单板视图查看该板卡的 SR 内容。
- 在位调试:板卡节点上的在位开关可点击切换,模拟板卡拔插,详见下文「在位调试」。
在位调试
远程模式下,点击板卡节点上的在位开关即可模拟板卡拔插,验证下级板卡的加载逻辑,无需物理操作真机。
说明:
切换在位状态不是卸载板卡:该板卡已加载的 SR 不受影响,只影响下级板卡的加载判断——下级板卡检测到上游 Connector 的 Presence 为 0 时不会加载。
普通在位属性
Presence 为固定值(1/0)的板卡,节点上显示单个在位开关。点击开关后:
- 工具通过
mdbctl setprop向真机下发修改,更新该 Connector 的 Presence 值; - 重新读取运行时在位状态并重建拓扑(不重新读取 SR 文件);
- 下级板卡的加载状态随 Presence 变化体现在拓扑上。
同步属性(多开关)
Presence 为表达式(引用其他对象属性,如多个物理在位开关共用一个 Connector)时,节点上会按同步源渲染多个开关,每个开关对应一个同步源对象的属性。点击单个开关只修改对应同步源对象的属性值,适用于逐个验证各物理开关对板卡加载的影响。
注意:
在位调试通过 setprop 真实修改真机运行时属性,直接影响下级板卡的加载判断。请确认影响范围后再操作,调试完成后建议将开关切回原状态。
实现原理
数据来源
远程模式的拓扑数据来自真机运行时,全部通过 Telnet 调试通道(23 端口)自动采集,各数据项来源如下:
| 数据项 | 来源 | 用途 |
|---|---|---|
| Connector 对象清单 | 真机运行时(mdbctl lsobj connector) | 拓扑节点唯一来源,以实际加载为准(非静态 root.sr) |
| Connector 实际在位值 | 真机运行时(mdbctl lsprop 读取 Presence) | 板卡在位/不在位状态 |
| SR 文件加载记录 | 真机 /var/log/framework.log 中框架打印的加载日志 | 确定每个 Connector 实际加载的 SR 文件路径(含根节点) |
| SR 文件内容 | 真机 /opt/bmc/sr/*.sr | 板卡类型/名称(Unit 字段)、下游总线、双击下钻内容 |
| EEPROM 板卡 CSR | 板上 EEPROM(CDR 容器格式) | CSR 烧录在 EEPROM(无 .sr 文件)板卡的解码展示 |
| 拓扑层级关系 | Connector 的 GroupPosition 属性 | 按 GroupPosition 建树(去末两位即父节点) |
通过日志查看 Connector 加载的文件
每个 Connector 实际加载的 SR 文件记录在 BMC 的框架日志 /var/log/framework.log 中,由硬件自发现流程打印,共两类记录:
记录一(init.lua,板卡加载主源)——每个 Connector 加载 SR 时打印,position 即该 Connector 的 GroupPosition:
2026-08-20 10:15:32 hwdiscovery NOTICE: init.lua(152): position: 0101011A, get csr data from /opt/bmc/sr/14100513_pcie_card.sr, ...记录二(dump.lua,根节点主源)——根板卡的加载只出现在此类记录中:
2026-08-20 10:15:30 hwdiscovery NOTICE: dump.lua(88): start to dump connector: root loading file: /opt/bmc/sr/root.sr工具解析后的对应关系示例:
| 日志记录 | 解析结果 |
|---|---|
position: 0101011A, get csr data from /opt/bmc/sr/14100513_pcie_card.sr | GroupPosition 为 0101011A 的 Connector 加载了 14100513_pcie_card.sr |
start to dump connector: root loading file: /opt/bmc/sr/root.sr | 根节点加载 root.sr(拓扑根板卡) |
start to dump connector: Connector_EXU_1 loading file: Eeprom/...(loading file 为 EEPROM 对象路径) | 该板卡 CSR 烧录在 EEPROM,工具改走 EEPROM 解码 |
也可以在 BMC 上手动执行以下命令核对(与工具解析使用同一数据源):
grep -E "get csr data from|start to dump connector" /var/log/framework.log说明:
同一 Connector 多次加载时取最新一条记录(日志按最新文件优先解析);加载失败的记录(如占位文件)会被过滤,不会体现在拓扑中。
处理流程
- 连通性自检:通过 Telnet 23 端口连接目标 BMC,探测调试 shell 可用性。
- 发现 Connector:执行
mdbctl lsobj connector获取运行时全量 Connector 对象,再批量mdbctl lsprop读取每个 Connector 的Presence实际值。 - 解析加载记录:读取
/var/log/framework.log(含历史.gz轮转文件),解析「position → SR 文件」与「运行时名 → 文件」两组映射。 - 建树:按 Connector 的
GroupPosition属性构建整机层级(去掉末两位十六进制即父节点位置)。 - 读取 SR 内容:按映射从
/opt/bmc/sr/读取.sr文件;EEPROM 板卡读取 EEPROM 二进制(CDR 容器)并本地解码出 CSR。 - 渲染:组装拓扑树、在位状态与 SR 数据,发送到拓扑图视图渲染。
说明:
在位状态以真机运行时数据为准(mdbctl 实时读取),而非 CSR 静态配置中的 Presence 表达式,可避免静态配置与实际加载不一致造成的误判。
所有数据仅在加载拓扑和切换在位开关时读取,不在本地持久化。
功能验证
连接环境并加载拓扑后,可按以下检查项验证功能是否正常:
| 验证项 | 操作步骤 | 预期结果 |
|---|---|---|
| 环境列表 | 点击「远程调试」按钮 | 列出全部已配置 BMC 连接,并标注在线/离线状态与账号信息 |
| 拓扑加载 | 选择一个在线环境 | 显示「正在加载 xx 环境的 CSR 拓扑」进度,完成后工具栏显示环境名与 IP,渲染整机拓扑 |
| 在位一致性 | 将拓扑中板卡在位状态与真机实际在位比对(可对照 BMC Web 页面或板上 mdbctl 查询结果) | 与真机实际加载一致(以运行时数据为准) |
| 加载文件一致性 | 在 BMC 上执行上文 grep 命令,比对拓扑中板卡对应的 SR 文件 | 双击下钻打开的 SR 文件与日志记录的 get csr data from 路径一致 |
| 板卡详情下钻 | 双击拓扑中的板卡节点 | 打开单板视图,可查看该板卡 SR 内容 |
| EEPROM 板卡 | 查看拓扑中无 .sr 文件的板卡 | EEPROM 板卡正常解码展示,双击同样可查看 CSR 内容 |
| 在位开关切换 | 点击某板卡节点的在位开关 | 切换后拓扑自动刷新,下级板卡加载状态随之变化 |
| 同步属性切换 | 点击同步属性板卡上的单个开关 | 仅对应同步源对象的属性变化,其余开关状态不变,拓扑刷新 |
常见问题
| 现象 | 处理建议 |
|---|---|
| 提示「未配置 BMC 环境,请先添加连接」 | 先在 BMC环境管理插件中添加连接,参见 BMC环境管理插件 章节 |
| 提示「远程拓扑加载失败」 | 检查环境是否在线、BMC 23 端口是否开放、板上 mdbctl 是否可用;详细原因可查看输出通道中 RemoteTopologyLoader 的日志 |
| 环境列表显示「探测中」 | 连接健康探测最长 3 秒,离线环境会标注离线状态,不影响选择其他环境 |
说明:
远程模式下配置选择与导出配置不可用(禁用),与导入日志模式一致。
此外,远程拓扑支持通过 MCP 工具 csr_topo_get_remote_topology 供 AI Agent 查询整机 Connector 在位清单与 SR 来源。
能效调速配置
能效调速配置功能提供能效调速对象的配置入口,支持通过Excel导入热设计表格解析调速曲线配置,支持对象自动关联及配置检查、CSR片段自动生成。
打开配置页面
点击CSR拓扑侧边栏中的温度计图标即可开启能效调速配置页面。
配置能效调速对象
通过该页面配置能效调速对象,以及配置对象间的关联关系。
点击右上角的"导入Excel"即可导入热设计表格,当前仅支持xlsx格式,若为其他格式请通过Excel另存为xlsx格式文件。完成导入后,温度点与调速曲线等配置可以自动解析。
点击右上角"生成CSR"即可根据当前配置产生CSR代码片段,可以自行填入CSR文件中。生成CSR过程支持配置语法检查,禁止出现ID冲突等问题。
六、事件管理
本章节介绍 openUBMC Studio 的事件管理功能。用户可以在 IDE 中查看和编辑 event_def.json 中的事件信息与描述模板,也可以查看、新增和保存事件与 CSR Event_ 对象的绑定关系。
说明
事件管理依赖模型配置生成的事件字典基线。如尚未配置模型,请先完成模型配置中的产品和规则集选择。
功能说明
BMC 事件字典定义了整机事件的事件标识、严重级别、事件编码和描述模板等标准信息。事件管理提供以下能力:
- 事件字典管理:查看、筛选和搜索全部事件,编辑基础字段与中英文描述模板,新建自定义事件模板,以及还原或导出差量。
- CSR 绑定管理:查看事件在 SR 文件中绑定的
Event_对象,可视化新增、编辑和删除绑定,并批量保存到 SR 文件。
根据打开入口,事件管理提供以下两种视图:
| 视图 | 入口 | CSR 绑定聚合范围 |
|---|---|---|
| 单板卡视图 | 单 SR 拓扑视图中的“事件管理” | 当前 SR 文件及其拆分文件中的 Event_ 对象 |
| 整机视图 | 总拓扑页面工具栏中的“事件管理” | 总拓扑下所有 SR 文件中的 Event_ 对象 |
两种视图共用同一套事件字典与编辑能力,仅 CSR 绑定的聚合范围不同。
使用前准备
- 模型配置:已完成产品和规则集选择,事件字典基线来自 Conan 规则包中的
event_def.json。 - 拓扑项目:已通过拓扑侧边栏创建配置并添加 CSR 仓库,当前工作区存在可用的 SR 上下文。
说明
字段修改、描述模板修改和自定义事件模板会以差量形式保存在本地缓存中。编辑停止约 1 秒后,差量会自动写入缓存;关闭事件管理面板时,差量会自动落盘。原始字典文件不会被直接修改。
打开事件管理
打开整机视图:进入总拓扑页面,单击工具栏中的“事件管理”。
打开单板卡视图:进入单 SR 拓扑视图,单击“事件管理”。此时 CSR 绑定范围限定为当前 SR 文件。
事件管理会在独立面板中打开,不影响原拓扑页面。
查看事件管理界面
事件管理界面由工具栏、事件列表、编辑横幅、分页栏和详情面板组成。
- 工具栏:提供新建事件模板、重新拉取、导出、清除全部筛选和搜索功能。
- 事件列表:展示全部事件,支持列头筛选和分页。
- 编辑横幅:存在未导出的编辑时,以黄色或绿色横幅提示导出。
- 详情面板:单击事件行后显示在界面右侧。拖动面板左边缘可以在约
280~700px范围内调整宽度,单击“×”可以关闭面板。
筛选和搜索事件
查看列表字段
| 列 | 说明 |
|---|---|
事件(EventKeyId/EventName) | 事件唯一标识与名称,内容过长时自动省略,悬停后显示全文 |
| 级别 | 严重程度:提示(蓝灰)、一般(蓝)、重要(橙)或紧急(红) |
| CSR 绑定 | 当前视图范围内绑定的 Event_ 对象数量 |
| 分类 | 根据事件标识推导的业务分类 |
| 机型支持 | 当前机型是否支持该事件 |
EventCode | 事件的十六进制唯一编码 |
| 恢复上报 | 是否上报恢复事件 |
EventType | 事件类型 |
LifeCycleId | 生命周期标识 |
设置筛选条件
- 单击“级别”“CSR 绑定”“分类”“机型支持”或“恢复上报”列头中的筛选按钮。
- 勾选需要保留的选项。每个选项会显示对应的事件数量。
- 如需清空当前列的条件,再次打开筛选菜单并单击“清空筛选”。
右上角搜索框支持按 EventKeyId、事件名称或事件编码进行模糊搜索。存在筛选或搜索条件时,工具栏会显示“清除全部筛选(N)”,单击后可以恢复完整列表。
设置分页
底部分页栏支持将每页数量设置为 20、40、80 或 100 条,也支持按页码跳转。没有事件数据时,可以通过空状态入口新建事件模板;存在数据但被过滤时,可以通过空状态入口清除筛选。
新建和编辑事件
新建事件模板
- 单击工具栏中的“新建事件模板”。
- 在右侧详情面板中编辑新模板。
新建的自定义事件会置于列表顶部并自动选中。详情面板底部提供“删除该自定义事件模板”按钮。
编辑基础字段
在事件列表中单击目标事件。
在右侧详情面板中打开“基础信息”页签。
基础字段说明如下:
| 字段 | 说明 |
|---|---|
事件名称 EventName | 事件短名称,通常与 EventKeyId 的最后一段一致 |
SeverityId | 严重级别:0 表示提示、1 表示一般、2 表示重要、3 表示紧急 |
| 机型支持 | 标记当前机型是否支持该事件,是导出 eventDefList.txt 的依据 |
恢复上报 DeassertFlag | 是否上报恢复事件,与 LifeCycleId 共同决定事件是否可恢复 |
事件编码 EventCode | 十六进制唯一编码,例如 0x0200001F |
旧版事件编码 OldEventCode | 跨版本兼容映射,没有对应关系时留空 |
上报通道 ReportChannel | 目标通道位掩码,65535 表示向全部通道上报 |
事件类型 EventType | BMC 固件定义的编号,当前字典中的常见取值为 0 或 1 |
生命周期标识 LifeCycleId | BMC 固件定义的编号,当前字典中的常见取值为 0 或 1 |
动作标识 ActionId | BMC 固件定义的编号,当前字典中的常见取值为 0 或 1 |
编辑描述模板
“描述模板”区域提供以下四类内容的中英文编辑,单击右上角的“中”或“EN”可以切换语言:
Description:描述。Cause:可能原因。Influence:影响。Suggestion:处理建议。
说明
- 描述支持
%Component、%DescArg1~%DescArg5占位符,依次引用 CSR 事件绑定中的Component和DescArg字段。输入占位符后,界面会显示提示。 - 可能原因与处理建议支持多条内容,多条内容之间使用
@#AB;分隔。
还原事件数据
还原单个事件:单击详情面板标题行中的“还原”,丢弃该事件的全部本地编辑并恢复为字典基线值。
重新拉取全部事件:单击工具栏中的“重新拉取”,在确认窗口中继续操作。完成后,事件管理会丢弃全部编辑,从 Conan 包重新读取事件字典,并将筛选、搜索和分页恢复为初始状态。
注意
“重新拉取”会丢弃当前所有本地编辑。首次打开事件管理时,系统优先读取本地缓存;仅在需要放弃全部差量或重新获取 Conan 包中的最新数据时执行此操作。
查看并导出修改
存在未同步的编辑时,列表上方会显示编辑横幅。
| 横幅 | 含义 | 导出文件 |
|---|---|---|
| 黄色 | 事件字段、描述模板或自定义模板发生变化 | event_def.json |
| 绿色 | 机型支持字段发生变化 | eventDefList.txt |
- 查看修改:打开变化清单后,可以单击事件标识定位到对应事件,也可以单独还原某个事件。
- 导出事件字典:导出的
event_def.json包含全部事件定义与描述模板,文件版本号末段自动加一,例如从1.0.0更新为1.0.1。导出后,请将文件提交到 VPD 仓库进行同步。 - 导出机型事件清单:导出的
eventDefList.txt仅包含“机型支持”为“是”的事件标识。
说明
两类横幅会根据修改内容独立显示和导出。两类内容均发生变化时,需要分别导出对应文件。
管理 CSR 绑定
CSR 绑定描述事件与 SR 文件中 Event_ 对象的对应关系。在详情面板中打开“CSR 绑定”页签,可以查看和编辑绑定。
查看 CSR 绑定
页签顶部显示当前视图类型和事件的绑定总数。绑定以卡片形式展示,每张卡片会标注所属 SR 文件,悬停后可以查看完整路径。
新增 CSR 绑定
单击详情面板底部的“CSR 绑定”。
在新增卡片中填写绑定字段。
如果当前处于整机视图,选择“目标 SR 文件”。整机根文件
root.sr不在候选范围内;单板卡视图会自动使用当前 SR 文件。单击“确定”,批量保存本次绑定修改。
查看绑定字段
| 字段 | 说明 |
|---|---|
| 事件对象名 | 必须以 Event_ 开头且不能只有前缀;同一拆分文件组内不得重名,不同组之间允许同名 |
| 目标 SR 文件 | 仅在整机视图新增绑定时显示,用于指定绑定写入的 SR 文件 |
Condition | 绑定条件;清空后删除该键,纯数字内容会自动转换为数值 |
Component | 事件关联的器件组件,候选项按照目标 SR 文件分为“推荐”和“其他”两组 |
OperatorId | 操作符编号,可以留空 |
Enabled | 是否启用绑定,可以留空以删除该键 |
验证保存结果
- “确定”仅在存在修改且表单校验通过时可用;单击“取消”会放弃本次全部修改。
- 对象名为空、未以
Event_开头或在组内重名时,对应输入框会显示错误。 - 保存成功后,绑定列表和绑定数量会自动刷新,事件列表会定位到当前事件。
- 在编辑器中直接保存 SR 文件后,绑定列表和绑定数量也会自动刷新。
常见问题
- 事件字段是否需要手动保存? 不需要。字段与描述模板编辑会在停止输入约 1 秒后写入本地缓存,并在关闭面板时落盘;CSR 绑定修改需要单击“确定”保存到 SR 文件。
- 重新拉取后编辑全部消失:此行为符合预期。“重新拉取”会丢弃全部本地差量并恢复到字典基线。
- CSR 绑定提示对象名必须以
Event_开头:事件对象名必须带有固定前缀,并且不能只有Event_前缀。 - 整机视图与单板卡视图的绑定数量不一致:两种视图的聚合范围分别为全部 SR 文件和当前 SR 文件,因此数量可能不同。
- 还原事件后列表中的绑定数量未变化:“还原”仅丢弃事件字典的本地差量,不修改 CSR 绑定。
- 导出的文件应提交到哪里?
event_def.json与eventDefList.txt均用于提交到 VPD 仓库,具体流程遵循团队的字典变更管理规范。 - 新建的模板在筛选结果中不可见:新建模板时会自动清空筛选。如模板仍不可见,请检查搜索词和列头筛选条件。
七、日志诊断与告警链条分析
一键日志解析插件(扩展 ID:openubmc.bmcstudio-log-reviewer)用于导入 BMC 一键日志包或 dump 目录,并通过可视化页面和 AI Agent 分析设备状态。用户可以浏览硬件、告警、传感器、性能及原始日志,也可以结合 openUBMC RAG 进行日志体检,或通过告警证据工具分析指定事件的触发链条。
功能说明
日志诊断提供以下使用方式:
| 使用方式 | 主要能力 | 适用场景 |
|---|---|---|
| 一键日志解析页面 | 自动解压日志包,通过概览、硬件、告警、传感器、性能、调速、线缆和日志等视图展示 dump 日志 | 人工浏览现场、筛选日志和快速确认异常范围 |
| Agent 日志体检 | 结合本地日志证据和 openUBMC RAG 生成问题清单,实时回写结果并导出 PDF 报告 | 对日志进行批量体检和问题优先级排序 |
| 定向诊断与告警链条分析 | 关联事件记录、运行日志、数据库及 CSR Event 定义,输出告警状态、触发链、恢复或复发情况和证据位置 | 聚焦指定问题、还原告警链条和形成可复核结论 |
说明
可视化页面中的“智能检测”用于 Agent 日志体检。指定问题的深入诊断和告警链条分析可以在已配置 openUBMC Studio MCP 服务的 AI Agent 对话中发起。
使用前准备
如果活动栏中没有“一键日志解析”图标,请先执行以下操作:
- 在 openUBMC Studio 中打开插件市场,搜索“一键日志解析”。
- 安装插件,并按照提示重新加载窗口。
- 确认活动栏中出现“一键日志解析”图标。
使用 Agent 日志体检前,还需要满足以下条件:
- 已登录 openUBMC 社区。
openubmc-rag扩展已启用。- 当前网络可以访问配置的 LightRAG 服务。
- AI Agent 可以访问 openUBMC Studio MCP 工具。
AI Agent 会在读取日志前检查 RAG 状态。未登录、RAG 工具未启用、网络异常或状态响应无法解析时,日志体检会停止并显示处理建议。
说明
如果所有 MCP 工具均提示网络错误,请将 localhost、127.0.0.0/8 和 ::1 加入代理直连列表或 NO_PROXY,然后完全重启 openUBMC Studio 和 AI Agent。
打开一键日志
一键日志解析支持 Windows、Linux、WSL、SSH 远程工作区和容器工作区。
支持导入以下内容:
.tar.gz、.tgz、.tar或.zip格式的 BMC 一键日志压缩包。- 已解压且包含
AppDump子目录的 dump 文件夹。
操作步骤如下:
单击活动栏中的“一键日志解析”图标。
根据日志形态,选择“打开 BMC 一键日志压缩包”或“打开 dump 目录”。
选择日志压缩包或 dump 根目录。选择目录时,应选中包含
AppDump子目录的 dump 根目录。等待解压和解析完成,确认日志页面已在编辑器区域打开。
也可以通过以下入口打开日志:
- 在资源管理器中右键单击日志压缩包或 dump 文件夹,选择对应的一键日志解析命令。
- 单击“最近打开”中的历史记录,重新打开对应日志。
“最近打开”最多保存 30 条记录。同一日志已经打开时,再次打开只会定位到原页面。删除一条最近记录时,对应的日志页面也会关闭。
查看日志包要求
日志包中必须存在名称完全匹配的 AppDump 目录,典型结构如下:
dump_info/
├── AppDump/
├── LogDump/
├── RTOSDump/
└── OSDump/插件最多向下查找 6 层目录。AppDump 是导入日志时的必需目录;缺少 LogDump、RTOSDump 或 OSDump 时,日志包仍可能打开,但对应页面会显示无数据或目录缺失。
| 项目 | 限制 |
|---|---|
| 单次选择 | 1 个日志包,可以重复导入不同日志包 |
| 支持格式 | .tar.gz、.tgz、.tar、.zip |
tar 系列解压后总内容 | 不超过 8GiB |
tar 系列归档条目 | 不超过 200000 项 |
| ZIP 解压 | 依赖系统中的 tar 或 unzip,单次命令最长执行 300 秒 |
AppDump 查找深度 | 最多递归 6 层 |
注意
插件不单独限制压缩文件本身的大小。处理大型日志包时,需要为远程暂存文件、中间 .tar 文件和解压目录预留足够空间,建议可用空间至少为解压后内容大小的两倍。
查看诊断信息
日志面板按照不同领域组织现场信息,常用视图包括:
- 现场概览:查看机型、健康状态、FRU、板卡和软件版本。
- 告警与传感器:查看告警记录、活动状态、传感器读值和门限信息。
- 运行状态:查看性能、功率、进风温度、调速策略和 PID 配置。
- 硬件关联:查看线缆检测、同步属性、CSR 和丝印信息。
- 日志与诊断:查看操作日志、应用日志、框架日志、维护日志、驱动日志、串口日志、
journalctl、一键日志原始文件和故障诊断文件。 - 智能检测:使用 AI Agent 和 openUBMC RAG 进行日志体检。
不同页面按需解析日志文件,不会在导入时将所有文件一次性加载到内存。日志视图支持筛选、大小写匹配、全字匹配、正则表达式、匹配项跳转和保存搜索,具体可用项以当前视图为准。
使用 Agent 进行日志体检
日志体检会将本地日志证据与 openUBMC RAG 检索结果关联,并按照严重程度、紧急度和置信度排列问题。故障案例库是可信度最高的知识来源,但不是唯一可用来源。
说明
流程图中的问题数量和内容仅用于说明操作过程。实际问题数量、严重程度和诊断结论以导入日志中的证据及 RAG 检索结果为准。
复制分析 Prompt
打开日志页面顶部的“智能检测”。
单击“复制 Prompt 模板”。
将 Prompt 粘贴到能够访问 openUBMC Studio MCP 工具的 AI Agent 中。
发送 Prompt,等待 AI Agent 完成 RAG 状态检查并开始分析。
Prompt 已包含以下约束,无需手动填写日志路径:
- 包含当前日志包的显示名称、分析任务标识和回调地址。
- 只允许读取当前分析任务绑定的日志包。
- 必须先检查 RAG 连接和社区登录状态。
- 必须保留 RAG 引用的真实来源,其中故障案例库来源具有最高可信度。
- 每个问题必须同时提供 RAG 匹配内容和本地日志证据。
- 分析完成后,按照用户配置的 TopN 返回结果。
查看实时问题
AI Agent 分析期间,每个已确认的问题会实时显示在“Agent 日志问题”区域。问题卡片包含以下内容:
- 严重程度:
CRITICAL、HIGH、MEDIUM或LOW。 - 紧急度:综合故障影响、恶化可能、冗余能力和修复窗口计算的 0~100 分。
- 置信度:本地多源证据与 RAG 知识的一致程度。
- 可能原因和处理建议。
- RAG 匹配内容、来源及可信度。
- 日志片段、日志包内相对路径和定位信息。
说明
截图中的故障名称和日志内容仅用于演示界面结构,不代表产品预置的诊断结论。
同一根因产生的重复现象应合并为一个问题。分析完成后,插件会依次按照严重程度、紧急度和置信度排序,并展示最紧急的 TopN 问题。
配置 TopN
TopN 默认值为 10,可以设置为 1~50:
- 单击“一键日志解析”侧边栏标题栏中的齿轮图标。
- 在设置页面中修改
bmcstudio.logReviewer.analysisTopN。 - 创建新的分析会话,使新设置生效。
TopN 只限制分析完成后页面和 PDF 报告中展示的问题数量。AI Agent 可以在分析过程中回写更多候选问题,插件会在完成时统一排序和截取。已经打开的分析会话继续使用创建会话时的 TopN 值;如需让同一日志使用新的 TopN,请先从“最近打开”中删除该日志,再重新导入并发起分析。
导出 PDF 报告
“导出为 PDF 报告”仅在分析状态变为“已完成”后可用:
- 确认页面显示“Agent 智能分析:已完成”。
- 单击“导出为 PDF 报告”。
- 选择保存路径和文件名。
- 使用 PDF 阅读器打开报告,核对摘要、问题排序、RAG 内容、日志证据和处理建议。
报告在当前 openUBMC Studio 扩展宿主运行期间可以持续导出。完全关闭或重启 openUBMC Studio 后,内存中的分析会话不会保留,需要重新发起分析。
处理会话异常
| 场景 | 预期行为 |
|---|---|
| 分析期间关闭日志页面 | AI Agent 回调可以继续写入后台会话,重新打开同一日志后恢复状态 |
| 页面关闭较长时间后重新打开 | 运行中的会话按照空闲策略管理,重新打开并操作后刷新活跃状态 |
| 从“最近打开”中删除日志 | 对应页面关闭,关联分析会话被清理 |
| 清空“最近打开” | 所有日志页面关闭,关联分析会话被清理 |
| RAG 不可用 | 分析停止并显示登录、网络或配置建议,不生成主观问题 |
| 日志中没有诊断内容 | 日志包格式有效时,分析完成并显示 0 个问题,PDF 报告可以导出 |
缺少 AppDump | 导入失败,并提示文件可能不是 openUBMC 一键日志包 |
缺少 AppDump/fault_diagnosis | 结构化诊断失败,AI Agent 将分析任务标记为失败 |
使用 AI Agent 定向诊断日志
在 AI Agent 对话中提供日志路径和分析目标,例如:
请打开并诊断 /path/to/bmc-log.tar.gz,先给出设备健康概览、关键异常和对应证据位置。openUBMC Studio 会打开同一份日志的可视化面板,同时将机型、健康状态、硬件清单、告警、传感器、性能、调速、线缆和 CSR 等结构化数据提供给 AI Agent。后续可以继续要求 AI Agent 聚焦某个领域,例如:
继续分析当前日志中的散热异常,关联传感器、调速策略、功率和相关运行日志。分析告警链条
分析单条告警时,建议提供以下任一组定位信息:
- 事件码和发生时间。事件码格式为
0x后接 8 位十六进制数字,时间格式为YYYY-MM-DD HH:mm:ss。 sel.txt中的事件记录 ID。openUBMC Studio 可以据此解析事件码和发生时间。- 需要区分多个告警实例时,再补充组件或实例名称。
示例:
基于当前打开的一键日志,分析事件码 0x12345678、时间 2026-08-28 14:23:16 的完整告警触发链。
请说明当前告警状态、已观察到和缺失的阶段、恢复与复发情况,并在每个节点标注证据文件及行号或数据库记录位置。AI Agent 会根据日志中的实际证据按需给出以下内容:
- 唯一告警锚点及其匹配方式,避免混淆相同事件码的不同告警实例。
- 告警当前状态,包括
active、inactive、conflicted或unknown,并分别列出状态依据。 - 已观察到的触发流程,例如采样、数值转换、门限或事件规则求值、事件存储和北向上报;未采集到的阶段会标记为缺失。
- 运行期事件与 dump 内
.sr文件中CSR Event/PowerEvent定义、属性和直接引用关系的关联结果。 Assert/Deassert恢复配对、复发次数下界、历史覆盖范围和可能的时钟跳变。- 每个关键事实对应的 dump 相对路径、行号、列号、JSON Pointer 或数据库定位信息。
注意
告警链条分析仅关联 dump 中可观察到的事实,不会自动将时间相邻的事件视为因果,也不会使用静态 CSR 定义证明规则在告警时刻一定执行。日志缺失或状态冲突时,结论会保留为“证据不足”或“存在冲突”,需要结合现场信息和业务知识继续判断。
了解数据范围和安全边界
- AI Agent 日志工具只能访问分析任务绑定的日志包,不会自动选择其他历史日志。
- 日志证据使用日志包内相对路径,不会向页面回写宿主绝对路径。
- 日志体检唯一允许访问的外部知识是 openUBMC RAG 状态和知识检索结果。
tar系列导入会拒绝路径逃逸、绝对路径和解压炸弹,并忽略符号链接、硬链接及设备文件。- PDF 报告只包含当前分析会话中的摘要、TopN 问题、RAG 依据和日志证据。
八、BMC 环境管理
本章介绍 openUBMC Studio 的 BMC环境管理 插件(扩展 ID:openubmc.bmcstudio-bmc-remote)的功能与使用方法。该插件用于在 IDE 内集中管理多台 BMC 环境、批量下发命令、上传文件、一键升级固件、实时监控日志、自动调试组件以及远程 GDB 调试。
BMC环境管理插件在活动栏注册一个「BMC环境管理」容器,下设两个视图:
- BMC Environments:BMC 环境连接树,按分组组织,管理连接的元数据与凭据。
- Command Macros:命令宏树,维护可批量下发的命令序列。
插件的核心能力包括:
- 连接管理:以分组方式管理多台 BMC,单条连接可任选 SSH、Telnet 或 WebView 方式接入。
- 连通性管理:手动或周期性探测 BMC 可达性,并在状态变化时播报。
- 命令宏:预定义命令序列与变量,按「全部可达 / 分组 / 手动多选」批量下发,回收结构化结果。
- SFTP 上传:从资源管理器右键将本地文件或目录上传到 BMC。
- HPM 一键升级:右键
.hpm固件包,并发升级多台 BMC,全程进度可视。 - 实时日志监控:实时
tail远端/var/log日志,支持日志轮转衔接、时间回绕校准与原始文件下载。 - 组件自动调试:根据 Git 变更自动部署 Lua、C/C++ 和北向接口调试内容,详见 C/C++、Lua 与北向接口快速调试。
- 远程 GDB 调试:附加板端服务或部署独立程序进行源码级调试,详见 BMC 远程 GDB 调试。
- MCP 工具:对外暴露 27 个 MCP 工具,供 AI Agent 调用,实现自然语言驱动的批量运维与告警证据分析。
使用前准备
环境要求
- 运行平台:推荐 Linux(Ubuntu)。连接管理以 Linux 为目标平台;HPM 升级与日志监控仅依赖 Node 内置模块,三平台行为一致。
- 系统依赖:建议预装以下工具:
openssh-client:SSH 接入与 SFTP 上传。telnet:Telnet 接入与实时日志监控。tar(支持-z):目录上传与日志下载解压。libsecret-1-0/gnome-keyring:Linux 下用于安全存储密码。
安装插件
- 在 openUBMC Studio 中打开插件市场(活动栏的「扩展」图标,或按
Ctrl+Shift+X),搜索「BMC环境管理」,点击「安装」。 - 安装完成后重启 IDE 生效。活动栏出现「BMC环境管理」图标即表示安装成功。
说明:
若已安装 openUBMC Studio 主插件,BMC环境管理作为配套扩展随其一同提供,具体获取方式请参考 openUBMC Studio 安装指南。
BMC 环境管理
新增分组
连接以「分组」为单位组织,系统默认创建一个分组。
- 在 BMC Environments 视图标题栏单击「Add Group」按钮。
- 输入分组名称并确认。
分组的右键菜单支持「Add」「Rename Group」「Delete Group」。分组非空时拒绝删除(保护数据),需先清空或迁移其下连接。
新增连接
- 单击 BMC Environments 视图标题栏「Add BMC Environment」按钮,或在某个分组上右键选择「Add」。
- 在弹出的表单中填写连接信息并保存。
连接字段说明:
| 字段 | 说明 | 备注 |
|---|---|---|
名称 name | 连接显示名称 | 必填 |
IP 地址 host | BMC 的 IPv4 地址 | 必填,仅接受 IPv4,非法地址会被拒绝 |
用户名 username | 登录用户名 | 必填 |
密码 password | 登录密码 | 必填(新增时);密码存于操作系统级安全存储,不落配置文件、不进日志 |
分组 group | 所属分组 | 不选则落入首个分组 |
标签 tags | 标签数组 | 可选,用于归类 |
描述 description | 连接描述 | 可选 |
接入 BMC
在连接上右键,选择接入方式:
- Connect via SSH:使用进程内 SSH 客户端登录(兼容老款 BMC 的弱算法与 keyboard-interactive 交互),以伪终端呈现。默认在编辑器区(接近全屏)打开,由配置项
bmc.autoMaximizeTerminal控制,关闭后回到底部面板。 - Connect via Telnet:调用系统
telnet命令接入,需本机已安装 telnet。Telnet 不会自动发送密码,需手动输入。 - Open in WebView:使用系统浏览器打开 BMC Web UI(
https://{host})。
SSH 握手超时由 bmc.connectionTimeout(默认 30 秒)控制。
编辑与删除
- Edit Configuration / Change Password:修改连接信息。编辑密码时留空表示保留原密码。
- Disconnect:发送
exit、关闭终端并注销会话。 - Delete:删除前会弹出模态确认;删除会先关闭相关终端并清理该连接的凭据。
说明:
删除连接会连带删除其凭据;删除分组前需先清空连接或迁移。
连通性管理
插件通过 TCP 探测 SSH 22 端口判断 BMC 可达性,连接树图标实时反映状态(不可达时变红),分组徽章显示「X/Y 可达」。
- 手动探测单个:右键连接 → 「Check Connection Health」,提示可达 / 不可达。
- 全量刷新:单击视图标题栏「Refresh」,先把全部连接置为检测中再统一探测。
- 周期检测:右键连接 → 「开启自动检测连通状态」/「关闭自动检测连通状态」。开启后每 10 秒 探测一轮,仅对开启该项的连接生效。
- 状态播报:右键连接 → 「开启连通性变更播报」/「关闭连通性变更播报」。上线提示「{分组}/{名称} 已上电」,掉线提示「{名称} 已下电」。
探测超时由 bmc.pingTimeout(默认 3000 毫秒)控制。可达性 = 「TCP 22 端口通 + 已配置凭据」;运行宏、上传、升级前均以此作为就绪判据。
命令宏
命令宏用于预定义「一组有序 shell 命令 + 变量 + 失败策略」,运行时按目标范围批量下发到 BMC,每台环境复用一条 SSH 连接执行完整命令集,并回收结构化的「环境 × 命令」结果矩阵。
新建宏
- 单击 Command Macros 视图标题栏「Add Command Macro」按钮。
- 在表单中填写宏内容并保存。
宏字段说明:
| 字段 | 说明 | 默认值 / 范围 |
|---|---|---|
名称 name | 宏名称 | 必填 |
描述 description | 宏描述 | 可选 |
命令 commands | 有序命令列表 | 至少 1 条;每条可单独设置 description、timeoutMs、abortOnFailure(遇错:默认 / 中断 / 继续) |
变量 variables | 自定义变量(键名不含 `--- |
一、简介
openUBMC Studio 是一款基于 Code - OSS 的 openUBMC 集成开发环境,面向 openUBMC 开发、调试和构建场景。
最近版本新增功能
下表按发布时间倒序汇总 openUBMC Studio 最近三个版本的新增功能,单击功能名称可跳转到对应章节。当前收录 2026 年 8 月和 9 月发布的版本;后续发布新版本时,仅保留最近三个版本。
| 版本 | 新增功能 |
|---|---|
| 2.1.1(2026 年 9 月 1 日) | AI 引导环境初始化:通过预置 Prompt 引导 AI Agent 完成 GitCode 登录、开发环境部署和规则集配置。 CSR 拓扑插件 0.3.7:提供本地、日志和远程三种整机拓扑模式,支持总线异常检测、单板卡配置、日志包离线还原和真机在位调试。 事件管理:可视化管理事件字典、描述模板和 CSR 事件绑定,并导出事件字典及机型支持清单。 日志诊断、Agent 日志体检与告警链条分析:导入 BMC 一键日志压缩包或 dump 目录,结合本地证据和 openUBMC RAG 生成问题清单、导出 PDF 报告,并分析指定告警的触发链条。 C/C++、Lua 与北向接口快速调试:根据组件 Git 变更生成调试计划,直接部署 Lua 和运行时配置,按需构建 C/C++ 与生成型北向配置,并完成服务重启、结果校验和环境恢复。 BMC 远程 GDB 调试:支持附加板端 systemd 服务,或部署并启动独立程序进行源码级调试。 出包签名配置:可视化管理 HPM 和 EEPROM 签名档案,生成本地自签名证书并吊销签名者证书。 |
| 2026 年 8 月 1 日版本 | BMC 环境管理插件:集中管理多台 BMC,支持连接与分组、命令宏、SFTP/HPM 升级、日志监控和 MCP 工具。 白牌包定制:可视化定制 Web 风格、Logo、图片和产品信息,并构建白牌包或清白牌包。 Manifest 配置与一键出包:可视化编辑 manifest.yml 出包配置,并按机型和包型构建固件包。组件与固件联合构建:从业务组件仓构建本地组件包,在隔离 Manifest 中验证选包并转入固件出包。 |
主要特性
openUBMC Studio 的主要特性包括:
- 智能代码辅助:提供代码跳转、定义预览和引用查找等功能。
- 实时错误检查:基于规则集检测代码错误和潜在问题。
- 表达式计算器:支持 CSR 表达式的编写、调试和批量测试。
- SMC 命令字配置:提供可视化的 SMC 命令字解析和配置工具。
- 模型配置:支持产品和规则集的选择与配置。
- CSR 拓扑可视化与调试:支持本地、日志和远程三种整机拓扑模式,提供总线异常检测、单板卡配置、日志包离线还原和真机在位调试。
- 事件管理:支持查看和编辑事件字典、描述模板及 CSR 事件绑定。
- 能效调速配置:支持通过 Excel 导入热设计表格并生成 CSR 调速曲线代码。
- Manifest 可视化配置:支持配置构建变体、组件依赖、默认特性和组件特性,并提供配置诊断。
- 组件与固件联合构建:支持从业务组件仓构建本地组件包,在隔离 Manifest 中验证选包并转入固件出包。
- 一键出包:支持选择机型和包型,完成出包预检、固件构建、日志查看和产物下载。
- 签名配置:支持管理 HPM 和 EEPROM 签名档案,并生成或吊销本地自签名证书。
- AI 引导环境初始化:支持通过 AI Agent 完成社区开发环境初始化。
- 日志诊断与告警链条分析:支持导入 BMC 一键日志进行可视化诊断、Agent 日志体检和告警链条分析。
- C/C++、Lua 与北向接口快速调试:支持按照 Git 变更规划直接部署或隔离构建,将最小替换集部署到 BMC 并验证结果。
- BMC 远程 GDB 调试:支持附加板端服务,或部署独立程序进行源码级调试。
- BMC 环境管理插件:集中管理多台 BMC,支持连接与分组、命令宏、SFTP/HPM 升级和日志监控。
- 白牌包定制:支持可视化定制 Web 风格、Logo、图片和产品信息,并构建白牌包或清白牌包。
- 社区集成:对接 openUBMC 社区资源和服务。
二、AI 引导环境初始化
openUBMC Studio 提供 AI 引导环境初始化能力。将预置 Prompt 发送给 AI Agent(例如 opencode、Claude Code 或 Cursor)后,AI Agent 会检测当前状态、诊断问题,并按顺序引导用户完成社区开发环境初始化。
使用前准备
- 已安装并能正常使用 AI Agent,例如 opencode、Claude Code 或 Cursor。
打开配置引导
在欢迎页面中单击“配置引导”入口。
在打开的配置引导窗口中找到“AI 引导初始化”卡片。
复制引导指令
单击“复制指令”卡片,打开 Prompt 对话框。
单击“复制到 AI Agent”,将 Prompt 复制到剪贴板。
切换到 AI Agent,粘贴并发送 Prompt。
了解 AI 引导流程
AI Agent 接收到 Prompt 后,会按以下流程引导用户完成环境初始化:
- GitCode 登录认证:AI Agent 打开 OAuth 登录窗口,并在用户授权后检测登录状态。
- 环境检测与部署:AI Agent 检测操作系统。Windows 用户可以选择 Docker(约 5 分钟)或 WSL(约 30 分钟)部署方式,Linux 用户直接进入环境配置。
- 规则集配置:AI Agent 引导用户在 openUBMC Studio 界面中选择机型和规则集,并通过
localview_get_data_source验证配置是否生效。 - 状态写回:每个步骤完成后,AI Agent 会回写向导状态;全部步骤完成后,向导状态变为“已完成”。
说明
AI Agent 在每个步骤开始前会查询当前配置进度,并自动跳过已完成的步骤。初始化中断后,可以重新发送 Prompt 继续执行。
验证初始化结果
确认配置引导窗口显示初始化已完成。
返回欢迎页面,确认状态栏中的登录状态、机型和规则集信息已更新。
常见问题
- Docker SSH 连接失败:检查容器内
sshd是否启动、10022端口是否开放,以及密钥认证是否配置正确。 - Conan 鉴权失败:检查 GitCode 登录状态是否有效,重新登录后重试。
- 规则集未生效:在 openUBMC Studio 状态栏中确认是否已选择机型和规则集,必要时重新配置。
三、登录到社区
openUBMC Studio提供了便捷的社区登录功能,通过社区登录可以获取更多资源和服务支持。
登录步骤
点击IDE右下角状态栏中的登录图标
在弹出的登录页面中输入您的openUBMC社区账号和密码
点击“登录”按钮完成登录
登录状态保持
登录成功后,IDE会自动保持和刷新登录状态:
- 自动刷新:IDE会定期刷新登录状态,确保持续有效
- 状态保持:退出IDE后,登录状态会继续保持一段时间
- 自动重连:重新打开IDE时,会自动尝试使用上一次的登录状态重新登录
Conan中心仓集成
登录社区后,IDE会自动同步登录到Conan中心仓:
- 登录状态自动保持并刷新
- 只要IDE处于登录状态,Conan就处于登录状态
- 在执行出包等操作时不会因为认证问题而超时
说明:
建议在开始开发工作前先完成社区登录,以确保能够正常访问所有资源和服务。
四、CSR 编码辅助
openUBMC Studio提供了强大的CSR编码辅助功能,包括引用跳转、规则检查、表达式计算器和SMC计算器等,帮助开发者快速定位代码、发现问题并提高开发效率。
模型配置
使用CSR编码辅助功能前,需要先完成模型配置。登录IDE后,点击Web版Studio状态栏中的"未选择机型"按钮,按以下步骤操作:
在模型配置页面中,选择对应的产品和规则集。
确认产品信息后,选择需要配置的模型文件。
配置模型文件对应的代码仓和分支信息。
完成配置后,点击"确定"保存配置。模型配置完成后,规则检查、拓扑配置等功能即可正常使用。
说明:
模型配置完成后即可使用以下CSR编码辅助功能。后续如需切换产品或规则集,可重新进行模型配置。
引用跳转功能
引用跳转功能可以帮助开发者快速定位代码定义和引用位置,支持多种跳转方式,大幅提高代码阅读和导航效率。
转到定义
在代码编辑器中,将光标定位到需要查看定义的符号上。
使用以下任一方式跳转到定义:
- 右键点击符号,选择“转到定义”
- 按住
Ctrl键,点击符号
编辑器将自动跳转到符号的定义位置。
转到引用
在代码编辑器中,将光标定位到需要查看引用的符号上。
使用以下任一方式查看引用:
- 按下
Shift + F12键 - 右键点击符号,选择“转到引用”
- 按下
在侧边栏将显示所有引用该符号的位置列表。
点击列表中的项可跳转到对应的引用位置。
鼠标悬停预览定义
在代码编辑器中,将鼠标悬停在符号上。
等待片刻,将显示符号的定义预览窗口。
基本规则错误检查功能
openUBMC Studio内置了CSR规则检查功能,模型配置完成后即可支持CSR语法与配置约束的实时检查。该功能支持错误位置高亮和规则自动更新,帮助开发者在编码阶段就发现潜在问题。
实时检查
模型配置后,在openUBMC Studio中打开任意CSR文件,检查自动生效:
页面中的类型错误和格式错误都会被实时拦截:
表达式中的语法错误也可以被实时拦截:
查看检查结果
错误和警告会以波浪线形式标注在代码中:
- 红色波浪线:表示错误(Error)
- 黄色波浪线:表示警告(Warning)
查看"问题"面板:
- 点击底部"问题"标签页
- 查看所有错误和警告列表
- 点击列表项可快速定位到对应代码位置
复杂规则校验
openUBMC Studio已建立复杂规则校验能力,可以在社区代码仓 openubmc_dsl_rulepack 中开发业务相关的检查规则,自定义规则同样支持实时检查功能。
表达式计算器功能
表达式计算器是openUBMC Studio提供的强大工具,用于编写、调试和测试CSR表达式,帮助开发者快速验证表达式的正确性。
打开表达式计算器
打开CSR文件,在表达式上方将显示“计算表达式”按钮
点击“计算表达式”按钮,表达式计算器窗口将在右侧打开
表达式计算器界面
表达式计算器界面包含以下部分:
- 表达式编辑区:显示和编辑当前选中的表达式
- 模式切换按钮:可以在“调试模式”和“用例模式”之间切换
- 变量面板:显示当前表达式中可用的变量及其值
- 结果面板:显示表达式计算结果和各级管道的计算过程
修改表达式
在表达式编辑区查看或修改表达式
修改完成后,点击“保存到文件”按钮保存修改
保存后,表达式计算器会自动重新加载表达式
源文件中的表达式修改并保存后,表达式编辑页面也会自动重新加载
调试表达式
在表达式编辑区查看表达式内容
在变量面板中输入或修改变量值
完成输入后,系统将自动计算:
- 各级管道的中间结果
- 最终表达式结果
说明:
调试功能可以帮助您逐步查看表达式的计算过程,快速定位问题。
表达式批量用例测试
在表达式计算器中, 点击“用例模式”按钮切换到批量测试模式
创建测试用例:
- 按照要求输入测试用例名称和参数值以及结果值
执行批量测试:
- 点击“加载用例”加载所有测试用例
- 点击“Execute all”执行所有测试用例
- 查看验证报告,显示每个用例的执行结果
说明:
测试用例可以导出为文件,方便团队共享和版本管理。
建议为复杂表达式编写多个测试用例,确保表达式在各种情况下都能正确工作。
SMC计算器功能
SMC计算器用于解析和配置SMC命令字,帮助开发者快速理解和生成SMC命令,简化SMC相关的开发工作。
打开SMC计算器
打开CSR文件,定位到Scanner或Accessor的offset字段
点击offset字段上方显示的"计算偏移量"按钮
SMC计算器窗口将在右侧打开
SMC命令字解析
SMC计算器提供了强大的命令字解析功能:
- 自动解析:当前偏移量会被自动解析,显示各字段的含义
- 实时计算:修改下方输入框的数据内容将自动更新和计算偏移量
- 应用到文件:点击“应用”按钮可以将计算结果写入到CSR文件
- 字段提示:鼠标悬停在字段上方可以显示具体的字段含义和说明
SMC命令字可视化辅助
openUBMC Studio提供了直观的SMC命令字可视化功能:
水印显示:SMC命令字将在CSR中以水印形式显示字段内容,方便查看
悬停详情:鼠标悬停在offset字段上将显示偏移量的详细信息,包括:
- 各字段的值
- 字段的含义
- 完整的偏移量计算结果
说明:
可视化辅助功能可以帮助您快速理解复杂的SMC命令字结构,减少配置错误。
五、拓扑与 CSR 可视化配置
CSR 拓扑插件提供整机和单板卡两个维度的总线及器件拓扑可视化。0.3.7 版本新增本地、日志和远程三种整机拓扑模式,并支持总线异常检测、日志包离线还原、真机在位调试以及单板卡可视化配置。
创建拓扑配置
单击 openUBMC Studio 左侧的拓扑十字形侧边栏图标。
单击“创建配置”。
单击“添加仓库”,选择 CSR 文件夹,即可在该机型配置中使用来自该文件夹的 CSR。可以添加多个 CSR 代码仓,单击右下角的“确定”即可创建项目。
创建完成后,拓扑起点为
root.sr。
CSR 整机拓扑
CSR 整机拓扑图提供整机维度与单 CSR 维度的总线及器件拓扑可视化:以板卡为节点展示整机的层级结构、Connector 连接关系与总线连线,支持双击板卡下钻到单板视图、从器件库拖拽器件完成配置。根据数据来源不同,拓扑图分为三种使用模式:本地模式、日志模式与远程模式。
三种模式对比与选择
| 对比项 | 本地模式 | 日志模式 | 远程模式 |
|---|---|---|---|
| 数据来源 | 模型配置的本地 CSR 代码仓 | 日志压缩包(connectors.txt + .sr) | 真机运行时(mdbctl + framework.log) |
| 依赖模型配置 | 是 | 否 | 否 |
| 在位状态 | 静态配置,可切换(在位/不在位/天池加载/动态加载) | 收集时刻快照,只读 | 运行时实际值,可切换开关模拟拔插 |
| 典型场景 | 日常开发、搭建整机拓扑、板卡适配 | 现场日志离线分析、问题回溯 | 真机调试、在位异常定位 |
根据手头资源选择:
- 有整机 CSR 代码仓,需要搭建或修改拓扑配置 → 本地模式(见下文「本地模式」)。
- 只有现场日志压缩包,需要还原收集时刻的整机拓扑 → 日志模式(完整指南见导入 BMC 日志压缩包查看 CSR 拓扑)。
- 有可达真机 BMC,需要查看实时在位或调试板卡加载 → 远程模式(完整指南见远程模式连接 BMC 环境)。
模式切换:日志模式与远程模式均为临时查看模式,重新从侧边栏加载本地拓扑(如切换机型或点击侧边栏文件节点)即恢复本地模式,导入日志产生的临时解压目录会自动清理。
界面说明
拓扑图中的主要元素如下:
- 板卡节点:每个节点代表一块板卡,显示板卡类型、SR 文件名与对应的板型示意图;根节点为
root.sr(BMC 主板)。 - 在位状态:节点左上角显示在位标签或开关,含义与可操作性随模式不同,详见各模式说明。
- 板卡选择器:本地模式下,尚未确定 SR 的节点提供候选板卡列表与数量选择器,用于配置下游板卡。
- 总线连线与连接桩:连线表示上游 Connector 传入的总线,由上游板卡的连接桩连向下游板卡;总线配置不一致时会出现红色连线或异常标志。
- 单板下钻:双击整机拓扑页面的任意板卡,或点击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面,查看该板卡 SR 的板内拓扑与详情。
- 工具栏:配置选择框与「导出配置」按钮用于整机拓扑的多配置管理,仅本地模式可用。
本地模式
本地模式是默认模式,数据来自模型配置的本地 CSR 代码仓,用于日常开发中搭建与修改整机拓扑。
查看整机拓扑
点击侧边栏拓扑插件图标,进入整机拓扑图页面,显示如下:
总线连线:板卡之间的连线为上游 Connector 传入的总线,将鼠标悬停在总线上可显示总线名称。
总线异常检测:自动检测上游 Connector 传入总线与下游板卡 Anchor 中定义总线的一致性。
总线类型不匹配
当上游 Connector 的 Buses 和下游板卡 Anchor 的 Buses 同一索引位置的总线类型不一致时,总线显示为红色,将鼠标悬停在图标上可查看具体信息。
总线类型判断逻辑:取总线名称前缀,若前缀相同,则认为类型匹配。
上游多传入总线
当上游 Connector 的 Buses 数量大于下游板卡 Anchor 的 Buses 数量时,Connector 的 Buses 数组中多出的总线会被识别为上游多传入总线。板卡左下角会显示红色异常标志,将鼠标悬停在标志上可查看具体信息。
下游板卡多出总线
当上游 Connector 的 Buses 数量小于下游板卡 Anchor 的 Buses 数量时,下游板卡 Anchor 的 Buses 数组中多出的总线会被识别为下游多定义总线。板卡左下角会显示红色异常标志,将鼠标悬停在标志上可查看具体信息。
板卡合并:SR 文件中的不同 Connector 加载同一个文件时,拓扑图会将其合并为一张板卡。
配置整机拓扑
可通过板卡上方选项在整机拓扑中选择对应板卡,各板卡可选下游板卡数量和类型由该板卡的 Connector 配置决定;尚未确定 SR 的节点通过板卡选择器从候选列表中指定 SR 文件。所有配置信息会自动在本地持久化。
双击整机拓扑页面的任意板卡,或点击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面。
通过工具栏的配置选择框可在多套整机配置之间切换,点击「导出配置」可导出当前配置。
在位状态
本地模式根据 SR 文件中上游 Connector 的 IdentifyMode 和 Presence 值显示在位状态,单击开关可切换:
| 显示 | 含义 |
|---|---|
| 天池加载 | IdentifyMode 为 3,由天池配置加载 |
| 在位 / 不在位 | IdentifyMode 为 2,Presence 为固定值 1 / 0 |
| 动态加载 | IdentifyMode 为 2,Presence 为表达式,按表达式动态计算 |
板卡在位状态
切换在位状态:单击开关可同步修改上游 Connector 中
Presence的值。
CSR 单板卡配置
双击整机拓扑页面的任意板卡,或单击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面。单板卡视图支持新增、删除总线或器件,以及修改 Mux 总线的 ChannelId。也可以按 Ctrl + Z 撤销、按 Ctrl + Y 恢复。
定位器件
单击器件,右侧 SR 文件会自动定位到该器件对象所在的位置。
修改 ChannelId
单击器件上方的 ChannelId 数字方块,可修改其值。
新增总线
单击 + 图标,选择总线类型并填写总线后缀,然后单击“确定”新增总线。
删除器件、总线
将鼠标悬停在器件或总线上,单击鼠标右键并选择“删除”。
拖拽器件
打开器件库,将器件拖拽到总线上即可将器件挂载到总线,同时自动修改对应 CSR 文件内容。也可以拖拽器件到可下连的器件卡片上进行挂载。
导入 BMC 日志压缩包查看 CSR 拓扑
openUBMC Studio 支持导入 BMC 一键收集的日志压缩包,在离线环境下还原当前整机加载的 CSR 及其拓扑关系。适用于现场问题定位与离线日志分析:拿到日志包即可查看板卡层级结构、连接关系与在位情况,无需连接真机。
使用前准备
- 已安装 openUBMC Studio 并启用 CSR 拓扑插件(随主插件提供)。
- 准备 BMC 一键收集的日志压缩包,支持
zip、tar、tgz、gz(含.tar.gz)格式。 - 本机需可执行
tar命令(日志包解压依赖系统 tar)。
说明:
导入日志模式不依赖模型配置,也无需预先创建拓扑项目,可直接使用。
导入日志压缩包
在 openUBMC Studio 左侧 CSR 拓扑侧边栏视图标题栏,点击「导入日志包」按钮。
在弹出的文件选择框中,选择 BMC 日志压缩包并点击「选择日志压缩包」确认。
工具自动解压并解析日志包中的
connectors.txt,随后在主编辑区渲染整机 CSR 拓扑图。导入成功后右下角提示「成功导入: 文件路径」。
查看导入的拓扑
板卡层级与连接关系:拓扑图展示整机各板卡的层级结构与总线连接,查看能力与本地整机拓扑页面一致,但不支持切换板卡配置(配置选择框与导出配置按钮为禁用状态)。
在位状态:每块板卡以只读标签显示在位状态(在位/不在位),状态取自日志包记录。
实现原理
数据来源
导入模式的拓扑数据全部来自日志压缩包内部,不访问真机,各数据项来源如下:
| 数据项 | 来源 | 用途 |
|---|---|---|
| 板卡层级结构 | connectors.txt 的树形拓扑部分 | 构建整机拓扑树(板卡父子关系) |
Connector 详情(Buses、Type、Presence、IdentifyMode 等) | connectors.txt 的 Connector 详情段 | 总线连线、连接器类型、在位状态 |
板卡类型与名称(Unit.Type / Unit.Name) | 日志包内的 .sr 文件 | 拓扑节点显示的板卡类型与名称 |
下游总线(ManagementTopology.Anchor.Buses) | 日志包内的 .sr 文件 | 总线一致性检测的下游锚点 |
| 板卡 SR 详情 | 日志包内的 .sr 文件 | 双击板卡下钻查看的自描述内容 |
connectors.txt 通常位于日志包的 dump_info/AppDump/hwdiscovery/ 目录下;工具同时支持在解压根目录及任意子目录中递归查找。.sr 文件从 connectors.txt 所在目录及其子目录中递归收集。
connectors.txt 格式示例
connectors.txt 由 BMC 硬件自发现流程生成,前半部分是板卡树形结构,后半部分是每个 Connector 的属性详情:
root
├─Connector_BMC
│├─Connector_PCPU_1
│└─Connector_PCPU_2
└─Connector_PSU_1
Connector_BMC:
.Buses: ["I2c_1","I2c_2"]
.Type: BMC
.Presence: 1
.IdentifyMode: 2
Connector_PSU_1:
.Buses: ["I2c_3"]
.Type: PSU
.Presence: 0
.IdentifyMode: 2树形部分:通过行首的
├─、└─、│符号表达层级,每个节点即一块板卡的 Connector,对应 SR 文件名为节点名.sr(如Connector_PCPU_1.sr)。详情部分:
Connector_XXX:开启一个 Connector 段,其下以.属性: 值逐行列出属性。其中Presence决定在位标签(1=在位,0=不在位),Buses决定上游总线连线。
处理流程
- 解压:调用系统
tar(zip 在 Linux 下用unzip)将日志包解压到固定临时目录。 - 查找 connectors.txt:按「解压根目录 →
dump_info/AppDump/hwdiscovery/→ 递归子目录」的顺序查找。 - 解析:拆分树形结构与 Connector 详情段,得到拓扑树骨架与各 Connector 属性。
- 收集 SR 文件:递归收集同目录下全部
.sr文件并解析缓存到内存。 - 构建拓扑:将 Connector 属性与 SR 文件按名称(去除末尾
_序号后缀)匹配,生成前端拓扑树并渲染。
说明:
在位状态反映的是收集日志时刻的整机状态,非实时数据。
功能验证
导入完成后,可按以下检查项验证功能是否正常:
| 验证项 | 操作步骤 | 预期结果 |
|---|---|---|
| 导入解析 | 选择 BMC 一键收集日志压缩包导入 | 右下角提示「成功导入: 文件路径」,主编辑区渲染整机拓扑 |
| 板卡层级 | 对比拓扑树与日志包 connectors.txt 的树形结构 | 板卡父子层级一致,无遗漏板卡 |
| 在位状态 | 查看板卡节点标签,与 connectors.txt 中对应 Connector 的 Presence 值比对 | 标签显示与记录一致(1=在位,0=不在位) |
| 板卡详情下钻 | 双击拓扑中的板卡节点 | 编辑器第二列打开该板卡 SR 文件内容 |
常见问题
| 现象 | 处理建议 |
|---|---|
| 提示「未找到 connectors.txt 文件」 | 请确认导入的是 BMC 一键收集日志压缩包(内含 connectors.txt) |
| 导入会占用/残留磁盘空间吗 | 日志包解压到固定临时目录(系统临时目录/bmc-log-import),每次导入前自动清理旧数据,无需手动维护 |
| 能否修改在位状态或板卡配置 | 导入模式为只读查看,不支持修改在位状态与 CSR 配置;配置选择与导出按钮为禁用状态 |
远程模式连接 BMC 环境
远程模式支持连接真机 BMC 环境,自动从运行时数据(mdbctl 调试命令 + 框架日志)构建整机 CSR 拓扑,实时展示板卡实际在位情况。无需从 BMC 手动导出数据再导入,选择环境即可出图,适用于真机调试、板卡适配验证与在位异常定位。
使用前准备
- 已安装并启用 BMC环境管理 插件(
openubmc.bmcstudio-bmc-remote),并添加至少一条 BMC 连接。连接的添加方法参见 BMC环境管理插件 章节。 - 目标 BMC 运行 openUBMC 固件,开放 Telnet 调试通道(23 端口免认证调试 shell),且板上具备
mdbctl调试命令。 - 开发机无需安装 telnet 客户端,扩展使用内置连接直连。
说明:
远程模式不依赖模型配置,选中环境后自动跳过机型配置流程,直接加载拓扑。
连接 BMC 环境
在 CSR 拓扑侧边栏视图标题栏,点击「远程调试」按钮。
在顶部弹出的环境选择框中,选择目标 BMC 环境。列表展示全部已配置连接,并实时探测在线状态(在线/离线图标 + 账号信息)。
选择后显示「正在加载 xx 环境的 CSR 拓扑」进度通知,工具自动读取真机运行时的 Connector 对象与 SR 加载记录并构建拓扑。
加载完成后,拓扑图工具栏显示当前连接的环境名称与 IP,主编辑区渲染整机实时拓扑。
查看实时拓扑
- 真实在位状态:拓扑以真机运行时数据为准(而非静态 root.sr 配置),每块板卡显示实际在位/不在位状态。
- EEPROM 板卡:CSR 烧录在 EEPROM(而非 .sr 文件)的板卡会被自动解码,与文件板卡同等展示,双击同样可查看内容。
- 板卡 SR 下钻:双击板卡即可进入单板视图查看该板卡的 SR 内容。
- 在位调试:板卡节点上的在位开关可点击切换,模拟板卡拔插,详见下文「在位调试」。
在位调试
远程模式下,点击板卡节点上的在位开关即可模拟板卡拔插,验证下级板卡的加载逻辑,无需物理操作真机。
说明:
切换在位状态不是卸载板卡:该板卡已加载的 SR 不受影响,只影响下级板卡的加载判断——下级板卡检测到上游 Connector 的 Presence 为 0 时不会加载。
普通在位属性
Presence 为固定值(1/0)的板卡,节点上显示单个在位开关。点击开关后:
- 工具通过
mdbctl setprop向真机下发修改,更新该 Connector 的 Presence 值; - 重新读取运行时在位状态并重建拓扑(不重新读取 SR 文件);
- 下级板卡的加载状态随 Presence 变化体现在拓扑上。
同步属性(多开关)
Presence 为表达式(引用其他对象属性,如多个物理在位开关共用一个 Connector)时,节点上会按同步源渲染多个开关,每个开关对应一个同步源对象的属性。点击单个开关只修改对应同步源对象的属性值,适用于逐个验证各物理开关对板卡加载的影响。
注意:
在位调试通过 setprop 真实修改真机运行时属性,直接影响下级板卡的加载判断。请确认影响范围后再操作,调试完成后建议将开关切回原状态。
实现原理
数据来源
远程模式的拓扑数据来自真机运行时,全部通过 Telnet 调试通道(23 端口)自动采集,各数据项来源如下:
| 数据项 | 来源 | 用途 |
|---|---|---|
| Connector 对象清单 | 真机运行时(mdbctl lsobj connector) | 拓扑节点唯一来源,以实际加载为准(非静态 root.sr) |
| Connector 实际在位值 | 真机运行时(mdbctl lsprop 读取 Presence) | 板卡在位/不在位状态 |
| SR 文件加载记录 | 真机 /var/log/framework.log 中框架打印的加载日志 | 确定每个 Connector 实际加载的 SR 文件路径(含根节点) |
| SR 文件内容 | 真机 /opt/bmc/sr/*.sr | 板卡类型/名称(Unit 字段)、下游总线、双击下钻内容 |
| EEPROM 板卡 CSR | 板上 EEPROM(CDR 容器格式) | CSR 烧录在 EEPROM(无 .sr 文件)板卡的解码展示 |
| 拓扑层级关系 | Connector 的 GroupPosition 属性 | 按 GroupPosition 建树(去末两位即父节点) |
通过日志查看 Connector 加载的文件
每个 Connector 实际加载的 SR 文件记录在 BMC 的框架日志 /var/log/framework.log 中,由硬件自发现流程打印,共两类记录:
记录一(init.lua,板卡加载主源)——每个 Connector 加载 SR 时打印,position 即该 Connector 的 GroupPosition:
2026-08-20 10:15:32 hwdiscovery NOTICE: init.lua(152): position: 0101011A, get csr data from /opt/bmc/sr/14100513_pcie_card.sr, ...记录二(dump.lua,根节点主源)——根板卡的加载只出现在此类记录中:
2026-08-20 10:15:30 hwdiscovery NOTICE: dump.lua(88): start to dump connector: root loading file: /opt/bmc/sr/root.sr工具解析后的对应关系示例:
| 日志记录 | 解析结果 |
|---|---|
position: 0101011A, get csr data from /opt/bmc/sr/14100513_pcie_card.sr | GroupPosition 为 0101011A 的 Connector 加载了 14100513_pcie_card.sr |
start to dump connector: root loading file: /opt/bmc/sr/root.sr | 根节点加载 root.sr(拓扑根板卡) |
start to dump connector: Connector_EXU_1 loading file: Eeprom/...(loading file 为 EEPROM 对象路径) | 该板卡 CSR 烧录在 EEPROM,工具改走 EEPROM 解码 |
也可以在 BMC 上手动执行以下命令核对(与工具解析使用同一数据源):
grep -E "get csr data from|start to dump connector" /var/log/framework.log说明:
同一 Connector 多次加载时取最新一条记录(日志按最新文件优先解析);加载失败的记录(如占位文件)会被过滤,不会体现在拓扑中。
处理流程
- 连通性自检:通过 Telnet 23 端口连接目标 BMC,探测调试 shell 可用性。
- 发现 Connector:执行
mdbctl lsobj connector获取运行时全量 Connector 对象,再批量mdbctl lsprop读取每个 Connector 的Presence实际值。 - 解析加载记录:读取
/var/log/framework.log(含历史.gz轮转文件),解析「position → SR 文件」与「运行时名 → 文件」两组映射。 - 建树:按 Connector 的
GroupPosition属性构建整机层级(去掉末两位十六进制即父节点位置)。 - 读取 SR 内容:按映射从
/opt/bmc/sr/读取.sr文件;EEPROM 板卡读取 EEPROM 二进制(CDR 容器)并本地解码出 CSR。 - 渲染:组装拓扑树、在位状态与 SR 数据,发送到拓扑图视图渲染。
说明:
在位状态以真机运行时数据为准(mdbctl 实时读取),而非 CSR 静态配置中的 Presence 表达式,可避免静态配置与实际加载不一致造成的误判。
所有数据仅在加载拓扑和切换在位开关时读取,不在本地持久化。
功能验证
连接环境并加载拓扑后,可按以下检查项验证功能是否正常:
| 验证项 | 操作步骤 | 预期结果 |
|---|---|---|
| 环境列表 | 点击「远程调试」按钮 | 列出全部已配置 BMC 连接,并标注在线/离线状态与账号信息 |
| 拓扑加载 | 选择一个在线环境 | 显示「正在加载 xx 环境的 CSR 拓扑」进度,完成后工具栏显示环境名与 IP,渲染整机拓扑 |
| 在位一致性 | 将拓扑中板卡在位状态与真机实际在位比对(可对照 BMC Web 页面或板上 mdbctl 查询结果) | 与真机实际加载一致(以运行时数据为准) |
| 加载文件一致性 | 在 BMC 上执行上文 grep 命令,比对拓扑中板卡对应的 SR 文件 | 双击下钻打开的 SR 文件与日志记录的 get csr data from 路径一致 |
| 板卡详情下钻 | 双击拓扑中的板卡节点 | 打开单板视图,可查看该板卡 SR 内容 |
| EEPROM 板卡 | 查看拓扑中无 .sr 文件的板卡 | EEPROM 板卡正常解码展示,双击同样可查看 CSR 内容 |
| 在位开关切换 | 点击某板卡节点的在位开关 | 切换后拓扑自动刷新,下级板卡加载状态随之变化 |
| 同步属性切换 | 点击同步属性板卡上的单个开关 | 仅对应同步源对象的属性变化,其余开关状态不变,拓扑刷新 |
常见问题
| 现象 | 处理建议 |
|---|---|
| 提示「未配置 BMC 环境,请先添加连接」 | 先在 BMC环境管理插件中添加连接,参见 BMC环境管理插件 章节 |
| 提示「远程拓扑加载失败」 | 检查环境是否在线、BMC 23 端口是否开放、板上 mdbctl 是否可用;详细原因可查看输出通道中 RemoteTopologyLoader 的日志 |
| 环境列表显示「探测中」 | 连接健康探测最长 3 秒,离线环境会标注离线状态,不影响选择其他环境 |
说明:
远程模式下配置选择与导出配置不可用(禁用),与导入日志模式一致。
此外,远程拓扑支持通过 MCP 工具 csr_topo_get_remote_topology 供 AI Agent 查询整机 Connector 在位清单与 SR 来源。
能效调速配置
能效调速配置功能提供能效调速对象的配置入口,支持通过Excel导入热设计表格解析调速曲线配置,支持对象自动关联及配置检查、CSR片段自动生成。
打开配置页面
点击CSR拓扑侧边栏中的温度计图标即可开启能效调速配置页面。
配置能效调速对象
通过该页面配置能效调速对象,以及配置对象间的关联关系。
点击右上角的"导入Excel"即可导入热设计表格,当前仅支持xlsx格式,若为其他格式请通过Excel另存为xlsx格式文件。完成导入后,温度点与调速曲线等配置可以自动解析。
点击右上角"生成CSR"即可根据当前配置产生CSR代码片段,可以自行填入CSR文件中。生成CSR过程支持配置语法检查,禁止出现ID冲突等问题。
六、事件管理
本章节介绍 openUBMC Studio 的事件管理功能。用户可以在 IDE 中查看和编辑 event_def.json 中的事件信息与描述模板,也可以查看、新增和保存事件与 CSR Event_ 对象的绑定关系。
说明
事件管理依赖模型配置生成的事件字典基线。如尚未配置模型,请先完成模型配置中的产品和规则集选择。
功能说明
BMC 事件字典定义了整机事件的事件标识、严重级别、事件编码和描述模板等标准信息。事件管理提供以下能力:
- 事件字典管理:查看、筛选和搜索全部事件,编辑基础字段与中英文描述模板,新建自定义事件模板,以及还原或导出差量。
- CSR 绑定管理:查看事件在 SR 文件中绑定的
Event_对象,可视化新增、编辑和删除绑定,并批量保存到 SR 文件。
根据打开入口,事件管理提供以下两种视图:
| 视图 | 入口 | CSR 绑定聚合范围 |
|---|---|---|
| 单板卡视图 | 单 SR 拓扑视图中的“事件管理” | 当前 SR 文件及其拆分文件中的 Event_ 对象 |
| 整机视图 | 总拓扑页面工具栏中的“事件管理” | 总拓扑下所有 SR 文件中的 Event_ 对象 |
两种视图共用同一套事件字典与编辑能力,仅 CSR 绑定的聚合范围不同。
使用前准备
- 模型配置:已完成产品和规则集选择,事件字典基线来自 Conan 规则包中的
event_def.json。 - 拓扑项目:已通过拓扑侧边栏创建配置并添加 CSR 仓库,当前工作区存在可用的 SR 上下文。
说明
字段修改、描述模板修改和自定义事件模板会以差量形式保存在本地缓存中。编辑停止约 1 秒后,差量会自动写入缓存;关闭事件管理面板时,差量会自动落盘。原始字典文件不会被直接修改。
打开事件管理
打开整机视图:进入总拓扑页面,单击工具栏中的“事件管理”。
打开单板卡视图:进入单 SR 拓扑视图,单击“事件管理”。此时 CSR 绑定范围限定为当前 SR 文件。
事件管理会在独立面板中打开,不影响原拓扑页面。
查看事件管理界面
事件管理界面由工具栏、事件列表、编辑横幅、分页栏和详情面板组成。
- 工具栏:提供新建事件模板、重新拉取、导出、清除全部筛选和搜索功能。
- 事件列表:展示全部事件,支持列头筛选和分页。
- 编辑横幅:存在未导出的编辑时,以黄色或绿色横幅提示导出。
- 详情面板:单击事件行后显示在界面右侧。拖动面板左边缘可以在约
280~700px范围内调整宽度,单击“×”可以关闭面板。
筛选和搜索事件
查看列表字段
| 列 | 说明 |
|---|---|
事件(EventKeyId/EventName) | 事件唯一标识与名称,内容过长时自动省略,悬停后显示全文 |
| 级别 | 严重程度:提示(蓝灰)、一般(蓝)、重要(橙)或紧急(红) |
| CSR 绑定 | 当前视图范围内绑定的 Event_ 对象数量 |
| 分类 | 根据事件标识推导的业务分类 |
| 机型支持 | 当前机型是否支持该事件 |
EventCode | 事件的十六进制唯一编码 |
| 恢复上报 | 是否上报恢复事件 |
EventType | 事件类型 |
LifeCycleId | 生命周期标识 |
设置筛选条件
- 单击“级别”“CSR 绑定”“分类”“机型支持”或“恢复上报”列头中的筛选按钮。
- 勾选需要保留的选项。每个选项会显示对应的事件数量。
- 如需清空当前列的条件,再次打开筛选菜单并单击“清空筛选”。
右上角搜索框支持按 EventKeyId、事件名称或事件编码进行模糊搜索。存在筛选或搜索条件时,工具栏会显示“清除全部筛选(N)”,单击后可以恢复完整列表。
设置分页
底部分页栏支持将每页数量设置为 20、40、80 或 100 条,也支持按页码跳转。没有事件数据时,可以通过空状态入口新建事件模板;存在数据但被过滤时,可以通过空状态入口清除筛选。
新建和编辑事件
新建事件模板
- 单击工具栏中的“新建事件模板”。
- 在右侧详情面板中编辑新模板。
新建的自定义事件会置于列表顶部并自动选中。详情面板底部提供“删除该自定义事件模板”按钮。
编辑基础字段
在事件列表中单击目标事件。
在右侧详情面板中打开“基础信息”页签。
基础字段说明如下:
| 字段 | 说明 |
|---|---|
事件名称 EventName | 事件短名称,通常与 EventKeyId 的最后一段一致 |
SeverityId | 严重级别:0 表示提示、1 表示一般、2 表示重要、3 表示紧急 |
| 机型支持 | 标记当前机型是否支持该事件,是导出 eventDefList.txt 的依据 |
恢复上报 DeassertFlag | 是否上报恢复事件,与 LifeCycleId 共同决定事件是否可恢复 |
事件编码 EventCode | 十六进制唯一编码,例如 0x0200001F |
旧版事件编码 OldEventCode | 跨版本兼容映射,没有对应关系时留空 |
上报通道 ReportChannel | 目标通道位掩码,65535 表示向全部通道上报 |
事件类型 EventType | BMC 固件定义的编号,当前字典中的常见取值为 0 或 1 |
生命周期标识 LifeCycleId | BMC 固件定义的编号,当前字典中的常见取值为 0 或 1 |
动作标识 ActionId | BMC 固件定义的编号,当前字典中的常见取值为 0 或 1 |
编辑描述模板
“描述模板”区域提供以下四类内容的中英文编辑,单击右上角的“中”或“EN”可以切换语言:
Description:描述。Cause:可能原因。Influence:影响。Suggestion:处理建议。
说明
- 描述支持
%Component、%DescArg1~%DescArg5占位符,依次引用 CSR 事件绑定中的Component和DescArg字段。输入占位符后,界面会显示提示。 - 可能原因与处理建议支持多条内容,多条内容之间使用
@#AB;分隔。
还原事件数据
还原单个事件:单击详情面板标题行中的“还原”,丢弃该事件的全部本地编辑并恢复为字典基线值。
重新拉取全部事件:单击工具栏中的“重新拉取”,在确认窗口中继续操作。完成后,事件管理会丢弃全部编辑,从 Conan 包重新读取事件字典,并将筛选、搜索和分页恢复为初始状态。
注意
“重新拉取”会丢弃当前所有本地编辑。首次打开事件管理时,系统优先读取本地缓存;仅在需要放弃全部差量或重新获取 Conan 包中的最新数据时执行此操作。
查看并导出修改
存在未同步的编辑时,列表上方会显示编辑横幅。
| 横幅 | 含义 | 导出文件 |
|---|---|---|
| 黄色 | 事件字段、描述模板或自定义模板发生变化 | event_def.json |
| 绿色 | 机型支持字段发生变化 | eventDefList.txt |
- 查看修改:打开变化清单后,可以单击事件标识定位到对应事件,也可以单独还原某个事件。
- 导出事件字典:导出的
event_def.json包含全部事件定义与描述模板,文件版本号末段自动加一,例如从1.0.0更新为1.0.1。导出后,请将文件提交到 VPD 仓库进行同步。 - 导出机型事件清单:导出的
eventDefList.txt仅包含“机型支持”为“是”的事件标识。
说明
两类横幅会根据修改内容独立显示和导出。两类内容均发生变化时,需要分别导出对应文件。
管理 CSR 绑定
CSR 绑定描述事件与 SR 文件中 Event_ 对象的对应关系。在详情面板中打开“CSR 绑定”页签,可以查看和编辑绑定。
查看 CSR 绑定
页签顶部显示当前视图类型和事件的绑定总数。绑定以卡片形式展示,每张卡片会标注所属 SR 文件,悬停后可以查看完整路径。
新增 CSR 绑定
单击详情面板底部的“CSR 绑定”。
在新增卡片中填写绑定字段。
如果当前处于整机视图,选择“目标 SR 文件”。整机根文件
root.sr不在候选范围内;单板卡视图会自动使用当前 SR 文件。单击“确定”,批量保存本次绑定修改。
查看绑定字段
| 字段 | 说明 |
|---|---|
| 事件对象名 | 必须以 Event_ 开头且不能只有前缀;同一拆分文件组内不得重名,不同组之间允许同名 |
| 目标 SR 文件 | 仅在整机视图新增绑定时显示,用于指定绑定写入的 SR 文件 |
Condition | 绑定条件;清空后删除该键,纯数字内容会自动转换为数值 |
Component | 事件关联的器件组件,候选项按照目标 SR 文件分为“推荐”和“其他”两组 |
OperatorId | 操作符编号,可以留空 |
Enabled | 是否启用绑定,可以留空以删除该键 |
验证保存结果
- “确定”仅在存在修改且表单校验通过时可用;单击“取消”会放弃本次全部修改。
- 对象名为空、未以
Event_开头或在组内重名时,对应输入框会显示错误。 - 保存成功后,绑定列表和绑定数量会自动刷新,事件列表会定位到当前事件。
- 在编辑器中直接保存 SR 文件后,绑定列表和绑定数量也会自动刷新。
常见问题
- 事件字段是否需要手动保存? 不需要。字段与描述模板编辑会在停止输入约 1 秒后写入本地缓存,并在关闭面板时落盘;CSR 绑定修改需要单击“确定”保存到 SR 文件。
- 重新拉取后编辑全部消失:此行为符合预期。“重新拉取”会丢弃全部本地差量并恢复到字典基线。
- CSR 绑定提示对象名必须以
Event_开头:事件对象名必须带有固定前缀,并且不能只有Event_前缀。 - 整机视图与单板卡视图的绑定数量不一致:两种视图的聚合范围分别为全部 SR 文件和当前 SR 文件,因此数量可能不同。
- 还原事件后列表中的绑定数量未变化:“还原”仅丢弃事件字典的本地差量,不修改 CSR 绑定。
- 导出的文件应提交到哪里?
event_def.json与eventDefList.txt均用于提交到 VPD 仓库,具体流程遵循团队的字典变更管理规范。 - 新建的模板在筛选结果中不可见:新建模板时会自动清空筛选。如模板仍不可见,请检查搜索词和列头筛选条件。
七、日志诊断与告警链条分析
一键日志解析插件(扩展 ID:openubmc.bmcstudio-log-reviewer)用于导入 BMC 一键日志包或 dump 目录,并通过可视化页面和 AI Agent 分析设备状态。用户可以浏览硬件、告警、传感器、性能及原始日志,也可以结合 openUBMC RAG 进行日志体检,或通过告警证据工具分析指定事件的触发链条。
功能说明
日志诊断提供以下使用方式:
| 使用方式 | 主要能力 | 适用场景 |
|---|---|---|
| 一键日志解析页面 | 自动解压日志包,通过概览、硬件、告警、传感器、性能、调速、线缆和日志等视图展示 dump 日志 | 人工浏览现场、筛选日志和快速确认异常范围 |
| Agent 日志体检 | 结合本地日志证据和 openUBMC RAG 生成问题清单,实时回写结果并导出 PDF 报告 | 对日志进行批量体检和问题优先级排序 |
| 定向诊断与告警链条分析 | 关联事件记录、运行日志、数据库及 CSR Event 定义,输出告警状态、触发链、恢复或复发情况和证据位置 | 聚焦指定问题、还原告警链条和形成可复核结论 |
说明
可视化页面中的“智能检测”用于 Agent 日志体检。指定问题的深入诊断和告警链条分析可以在已配置 openUBMC Studio MCP 服务的 AI Agent 对话中发起。
使用前准备
如果活动栏中没有“一键日志解析”图标,请先执行以下操作:
- 在 openUBMC Studio 中打开插件市场,搜索“一键日志解析”。
- 安装插件,并按照提示重新加载窗口。
- 确认活动栏中出现“一键日志解析”图标。
使用 Agent 日志体检前,还需要满足以下条件:
- 已登录 openUBMC 社区。
openubmc-rag扩展已启用。- 当前网络可以访问配置的 LightRAG 服务。
- AI Agent 可以访问 openUBMC Studio MCP 工具。
AI Agent 会在读取日志前检查 RAG 状态。未登录、RAG 工具未启用、网络异常或状态响应无法解析时,日志体检会停止并显示处理建议。
说明
如果所有 MCP 工具均提示网络错误,请将 localhost、127.0.0.0/8 和 ::1 加入代理直连列表或 NO_PROXY,然后完全重启 openUBMC Studio 和 AI Agent。
打开一键日志
一键日志解析支持 Windows、Linux、WSL、SSH 远程工作区和容器工作区。
支持导入以下内容:
.tar.gz、.tgz、.tar或.zip格式的 BMC 一键日志压缩包。- 已解压且包含
AppDump子目录的 dump 文件夹。
操作步骤如下:
单击活动栏中的“一键日志解析”图标。
根据日志形态,选择“打开 BMC 一键日志压缩包”或“打开 dump 目录”。
选择日志压缩包或 dump 根目录。选择目录时,应选中包含
AppDump子目录的 dump 根目录。等待解压和解析完成,确认日志页面已在编辑器区域打开。
也可以通过以下入口打开日志:
- 在资源管理器中右键单击日志压缩包或 dump 文件夹,选择对应的一键日志解析命令。
- 单击“最近打开”中的历史记录,重新打开对应日志。
“最近打开”最多保存 30 条记录。同一日志已经打开时,再次打开只会定位到原页面。删除一条最近记录时,对应的日志页面也会关闭。
查看日志包要求
日志包中必须存在名称完全匹配的 AppDump 目录,典型结构如下:
dump_info/
├── AppDump/
├── LogDump/
├── RTOSDump/
└── OSDump/插件最多向下查找 6 层目录。AppDump 是导入日志时的必需目录;缺少 LogDump、RTOSDump 或 OSDump 时,日志包仍可能打开,但对应页面会显示无数据或目录缺失。
| 项目 | 限制 |
|---|---|
| 单次选择 | 1 个日志包,可以重复导入不同日志包 |
| 支持格式 | .tar.gz、.tgz、.tar、.zip |
tar 系列解压后总内容 | 不超过 8GiB |
tar 系列归档条目 | 不超过 200000 项 |
| ZIP 解压 | 依赖系统中的 tar 或 unzip,单次命令最长执行 300 秒 |
AppDump 查找深度 | 最多递归 6 层 |
注意
插件不单独限制压缩文件本身的大小。处理大型日志包时,需要为远程暂存文件、中间 .tar 文件和解压目录预留足够空间,建议可用空间至少为解压后内容大小的两倍。
查看诊断信息
日志面板按照不同领域组织现场信息,常用视图包括:
- 现场概览:查看机型、健康状态、FRU、板卡和软件版本。
- 告警与传感器:查看告警记录、活动状态、传感器读值和门限信息。
- 运行状态:查看性能、功率、进风温度、调速策略和 PID 配置。
- 硬件关联:查看线缆检测、同步属性、CSR 和丝印信息。
- 日志与诊断:查看操作日志、应用日志、框架日志、维护日志、驱动日志、串口日志、
journalctl、一键日志原始文件和故障诊断文件。 - 智能检测:使用 AI Agent 和 openUBMC RAG 进行日志体检。
不同页面按需解析日志文件,不会在导入时将所有文件一次性加载到内存。日志视图支持筛选、大小写匹配、全字匹配、正则表达式、匹配项跳转和保存搜索,具体可用项以当前视图为准。
使用 Agent 进行日志体检
日志体检会将本地日志证据与 openUBMC RAG 检索结果关联,并按照严重程度、紧急度和置信度排列问题。故障案例库是可信度最高的知识来源,但不是唯一可用来源。
说明
流程图中的问题数量和内容仅用于说明操作过程。实际问题数量、严重程度和诊断结论以导入日志中的证据及 RAG 检索结果为准。
复制分析 Prompt
打开日志页面顶部的“智能检测”。
单击“复制 Prompt 模板”。
将 Prompt 粘贴到能够访问 openUBMC Studio MCP 工具的 AI Agent 中。
发送 Prompt,等待 AI Agent 完成 RAG 状态检查并开始分析。
Prompt 已包含以下约束,无需手动填写日志路径:
- 包含当前日志包的显示名称、分析任务标识和回调地址。
- 只允许读取当前分析任务绑定的日志包。
- 必须先检查 RAG 连接和社区登录状态。
- 必须保留 RAG 引用的真实来源,其中故障案例库来源具有最高可信度。
- 每个问题必须同时提供 RAG 匹配内容和本地日志证据。
- 分析完成后,按照用户配置的 TopN 返回结果。
查看实时问题
AI Agent 分析期间,每个已确认的问题会实时显示在“Agent 日志问题”区域。问题卡片包含以下内容:
- 严重程度:
CRITICAL、HIGH、MEDIUM或LOW。 - 紧急度:综合故障影响、恶化可能、冗余能力和修复窗口计算的 0~100 分。
- 置信度:本地多源证据与 RAG 知识的一致程度。
- 可能原因和处理建议。
- RAG 匹配内容、来源及可信度。
- 日志片段、日志包内相对路径和定位信息。
说明
截图中的故障名称和日志内容仅用于演示界面结构,不代表产品预置的诊断结论。
同一根因产生的重复现象应合并为一个问题。分析完成后,插件会依次按照严重程度、紧急度和置信度排序,并展示最紧急的 TopN 问题。
配置 TopN
TopN 默认值为 10,可以设置为 1~50:
- 单击“一键日志解析”侧边栏标题栏中的齿轮图标。
- 在设置页面中修改
bmcstudio.logReviewer.analysisTopN。 - 创建新的分析会话,使新设置生效。
TopN 只限制分析完成后页面和 PDF 报告中展示的问题数量。AI Agent 可以在分析过程中回写更多候选问题,插件会在完成时统一排序和截取。已经打开的分析会话继续使用创建会话时的 TopN 值;如需让同一日志使用新的 TopN,请先从“最近打开”中删除该日志,再重新导入并发起分析。
导出 PDF 报告
“导出为 PDF 报告”仅在分析状态变为“已完成”后可用:
- 确认页面显示“Agent 智能分析:已完成”。
- 单击“导出为 PDF 报告”。
- 选择保存路径和文件名。
- 使用 PDF 阅读器打开报告,核对摘要、问题排序、RAG 内容、日志证据和处理建议。
报告在当前 openUBMC Studio 扩展宿主运行期间可以持续导出。完全关闭或重启 openUBMC Studio 后,内存中的分析会话不会保留,需要重新发起分析。
处理会话异常
| 场景 | 预期行为 |
|---|---|
| 分析期间关闭日志页面 | AI Agent 回调可以继续写入后台会话,重新打开同一日志后恢复状态 |
| 页面关闭较长时间后重新打开 | 运行中的会话按照空闲策略管理,重新打开并操作后刷新活跃状态 |
| 从“最近打开”中删除日志 | 对应页面关闭,关联分析会话被清理 |
| 清空“最近打开” | 所有日志页面关闭,关联分析会话被清理 |
| RAG 不可用 | 分析停止并显示登录、网络或配置建议,不生成主观问题 |
| 日志中没有诊断内容 | 日志包格式有效时,分析完成并显示 0 个问题,PDF 报告可以导出 |
缺少 AppDump | 导入失败,并提示文件可能不是 openUBMC 一键日志包 |
缺少 AppDump/fault_diagnosis | 结构化诊断失败,AI Agent 将分析任务标记为失败 |
使用 AI Agent 定向诊断日志
在 AI Agent 对话中提供日志路径和分析目标,例如:
请打开并诊断 /path/to/bmc-log.tar.gz,先给出设备健康概览、关键异常和对应证据位置。openUBMC Studio 会打开同一份日志的可视化面板,同时将机型、健康状态、硬件清单、告警、传感器、性能、调速、线缆和 CSR 等结构化数据提供给 AI Agent。后续可以继续要求 AI Agent 聚焦某个领域,例如:
继续分析当前日志中的散热异常,关联传感器、调速策略、功率和相关运行日志。分析告警链条
分析单条告警时,建议提供以下任一组定位信息:
- 事件码和发生时间。事件码格式为
0x后接 8 位十六进制数字,时间格式为YYYY-MM-DD HH:mm:ss。 sel.txt中的事件记录 ID。openUBMC Studio 可以据此解析事件码和发生时间。- 需要区分多个告警实例时,再补充组件或实例名称。
示例:
基于当前打开的一键日志,分析事件码 0x12345678、时间 2026-08-28 14:23:16 的完整告警触发链。
请说明当前告警状态、已观察到和缺失的阶段、恢复与复发情况,并在每个节点标注证据文件及行号或数据库记录位置。AI Agent 会根据日志中的实际证据按需给出以下内容:
- 唯一告警锚点及其匹配方式,避免混淆相同事件码的不同告警实例。
- 告警当前状态,包括
active、inactive、conflicted或unknown,并分别列出状态依据。 - 已观察到的触发流程,例如采样、数值转换、门限或事件规则求值、事件存储和北向上报;未采集到的阶段会标记为缺失。
- 运行期事件与 dump 内
.sr文件中CSR Event/PowerEvent定义、属性和直接引用关系的关联结果。 Assert/Deassert恢复配对、复发次数下界、历史覆盖范围和可能的时钟跳变。- 每个关键事实对应的 dump 相对路径、行号、列号、JSON Pointer 或数据库定位信息。
注意
告警链条分析仅关联 dump 中可观察到的事实,不会自动将时间相邻的事件视为因果,也不会使用静态 CSR 定义证明规则在告警时刻一定执行。日志缺失或状态冲突时,结论会保留为“证据不足”或“存在冲突”,需要结合现场信息和业务知识继续判断。
了解数据范围和安全边界
- AI Agent 日志工具只能访问分析任务绑定的日志包,不会自动选择其他历史日志。
- 日志证据使用日志包内相对路径,不会向页面回写宿主绝对路径。
- 日志体检唯一允许访问的外部知识是 openUBMC RAG 状态和知识检索结果。
tar系列导入会拒绝路径逃逸、绝对路径和解压炸弹,并忽略符号链接、硬链接及设备文件。- PDF 报告只包含当前分析会话中的摘要、TopN 问题、RAG 依据和日志证据。
八、BMC 环境管理
本章介绍 openUBMC Studio 的 BMC环境管理 插件(扩展 ID:openubmc.bmcstudio-bmc-remote)的功能与使用方法。该插件用于在 IDE 内集中管理多台 BMC 环境、批量下发命令、上传文件、一键升级固件、实时监控日志、自动调试组件以及远程 GDB 调试。
BMC环境管理插件在活动栏注册一个「BMC环境管理」容器,下设两个视图:
- BMC Environments:BMC 环境连接树,按分组组织,管理连接的元数据与凭据。
- Command Macros:命令宏树,维护可批量下发的命令序列。
插件的核心能力包括:
- 连接管理:以分组方式管理多台 BMC,单条连接可任选 SSH、Telnet 或 WebView 方式接入。
- 连通性管理:手动或周期性探测 BMC 可达性,并在状态变化时播报。
- 命令宏:预定义命令序列与变量,按「全部可达 / 分组 / 手动多选」批量下发,回收结构化结果。
- SFTP 上传:从资源管理器右键将本地文件或目录上传到 BMC。
- HPM 一键升级:右键
.hpm固件包,并发升级多台 BMC,全程进度可视。 - 实时日志监控:实时
tail远端/var/log日志,支持日志轮转衔接、时间回绕校准与原始文件下载。 - 组件自动调试:根据 Git 变更自动部署 Lua、C/C++ 和北向接口调试内容,详见 C/C++、Lua 与北向接口快速调试。
- 远程 GDB 调试:附加板端服务或部署独立程序进行源码级调试,详见 BMC 远程 GDB 调试。
- MCP 工具:对外暴露 27 个 MCP 工具,供 AI Agent 调用,实现自然语言驱动的批量运维与告警证据分析。
使用前准备
环境要求
- 运行平台:推荐 Linux(Ubuntu)。连接管理以 Linux 为目标平台;HPM 升级与日志监控仅依赖 Node 内置模块,三平台行为一致。
- 系统依赖:建议预装以下工具:
openssh-client:SSH 接入与 SFTP 上传。telnet:Telnet 接入与实时日志监控。tar(支持-z):目录上传与日志下载解压。libsecret-1-0/gnome-keyring:Linux 下用于安全存储密码。
安装插件
- 在 openUBMC Studio 中打开插件市场(活动栏的「扩展」图标,或按
Ctrl+Shift+X),搜索「BMC环境管理」,点击「安装」。 - 安装完成后重启 IDE 生效。活动栏出现「BMC环境管理」图标即表示安装成功。
说明:
若已安装 openUBMC Studio 主插件,BMC环境管理作为配套扩展随其一同提供,具体获取方式请参考 openUBMC Studio 安装指南。
BMC 环境管理
新增分组
连接以「分组」为单位组织,系统默认创建一个分组。
- 在 BMC Environments 视图标题栏单击「Add Group」按钮。
- 输入分组名称并确认。
分组的右键菜单支持「Add」「Rename Group」「Delete Group」。分组非空时拒绝删除(保护数据),需先清空或迁移其下连接。
新增连接
- 单击 BMC Environments 视图标题栏「Add BMC Environment」按钮,或在某个分组上右键选择「Add」。
- 在弹出的表单中填写连接信息并保存。
连接字段说明:
| 字段 | 说明 | 备注 |
|---|---|---|
名称 name | 连接显示名称 | 必填 |
IP 地址 host | BMC 的 IPv4 地址 | 必填,仅接受 IPv4,非法地址会被拒绝 |
用户名 username | 登录用户名 | 必填 |
密码 password | 登录密码 | 必填(新增时);密码存于操作系统级安全存储,不落配置文件、不进日志 |
分组 group | 所属分组 | 不选则落入首个分组 |
标签 tags | 标签数组 | 可选,用于归类 |
描述 description | 连接描述 | 可选 |
接入 BMC
在连接上右键,选择接入方式:
- Connect via SSH:使用进程内 SSH 客户端登录(兼容老款 BMC 的弱算法与 keyboard-interactive 交互),以伪终端呈现。默认在编辑器区(接近全屏)打开,由配置项
bmc.autoMaximizeTerminal控制,关闭后回到底部面板。 - Connect via Telnet:调用系统
telnet命令接入,需本机已安装 telnet。Telnet 不会自动发送密码,需手动输入。 - Open in WebView:使用系统浏览器打开 BMC Web UI(
https://{host})。
SSH 握手超时由 bmc.connectionTimeout(默认 30 秒)控制。
编辑与删除
- Edit Configuration / Change Password:修改连接信息。编辑密码时留空表示保留原密码。
- Disconnect:发送
exit、关闭终端并注销会话。 - Delete:删除前会弹出模态确认;删除会先关闭相关终端并清理该连接的凭据。
说明:
删除连接会连带删除其凭据;删除分组前需先清空连接或迁移。
连通性管理
插件通过 TCP 探测 SSH 22 端口判断 BMC 可达性,连接树图标实时反映状态(不可达时变红),分组徽章显示「X/Y 可达」。
- 手动探测单个:右键连接 → 「Check Connection Health」,提示可达 / 不可达。
- 全量刷新:单击视图标题栏「Refresh」,先把全部连接置为检测中再统一探测。
- 周期检测:右键连接 → 「开启自动检测连通状态」/「关闭自动检测连通状态」。开启后每 10 秒 探测一轮,仅对开启该项的连接生效。
- 状态播报:右键连接 → 「开启连通性变更播报」/「关闭连通性变更播报」。上线提示「{分组}/{名称} 已上电」,掉线提示「{名称} 已下电」。
探测超时由 bmc.pingTimeout(默认 3000 毫秒)控制。可达性 = 「TCP 22 端口通 + 已配置凭据」;运行宏、上传、升级前均以此作为就绪判据。
命令宏
命令宏用于预定义「一组有序 shell 命令 + 变量 + 失败策略」,运行时按目标范围批量下发到 BMC,每台环境复用一条 SSH 连接执行完整命令集,并回收结构化的「环境 × 命令」结果矩阵。
新建宏
- 单击 Command Macros 视图标题栏「Add Command Macro」按钮。
- 在表单中填写宏内容并保存。
宏字段说明:
| 字段 | 说明 | 默认值 / 范围 |
|---|---|---|
名称 name | 宏名称 | 必填 |
描述 description | 宏描述 | 可选 |
命令 commands | 有序命令列表 | 至少 1 条;每条可单独设置 description、timeoutMs、abortOnFailure(遇错:默认 / 中断 / 继续) |
变量 variables | 自定义变量(键名不含 ) | 与内置变量合并;同名时内置优先 |
失败策略 onError | 宏级策略 | continue(继续)/ abort(中断该环境后续命令);默认 continue |
命令超时 timeoutMs | 单条命令超时(毫秒) | 默认 30000;单条命令可覆盖 |
并发度 concurrency | 环境间并发度 | 1–8,默认 1 |
标签 tags | 标签(表单中逗号分隔) | 可选 |
变量替换
命令模板支持变量占位:
- 语法:
$VAR或${VAR};$转义为字面 `---
一、简介
openUBMC Studio 是一款基于 Code - OSS 的 openUBMC 集成开发环境,面向 openUBMC 开发、调试和构建场景。
最近版本新增功能
下表按发布时间倒序汇总 openUBMC Studio 最近三个版本的新增功能,单击功能名称可跳转到对应章节。当前收录 2026 年 8 月和 9 月发布的版本;后续发布新版本时,仅保留最近三个版本。
| 版本 | 新增功能 |
|---|---|
| 2.1.1(2026 年 9 月 1 日) | AI 引导环境初始化:通过预置 Prompt 引导 AI Agent 完成 GitCode 登录、开发环境部署和规则集配置。 CSR 拓扑插件 0.3.7:提供本地、日志和远程三种整机拓扑模式,支持总线异常检测、单板卡配置、日志包离线还原和真机在位调试。 事件管理:可视化管理事件字典、描述模板和 CSR 事件绑定,并导出事件字典及机型支持清单。 日志诊断、Agent 日志体检与告警链条分析:导入 BMC 一键日志压缩包或 dump 目录,结合本地证据和 openUBMC RAG 生成问题清单、导出 PDF 报告,并分析指定告警的触发链条。 C/C++、Lua 与北向接口快速调试:根据组件 Git 变更生成调试计划,直接部署 Lua 和运行时配置,按需构建 C/C++ 与生成型北向配置,并完成服务重启、结果校验和环境恢复。 BMC 远程 GDB 调试:支持附加板端 systemd 服务,或部署并启动独立程序进行源码级调试。 出包签名配置:可视化管理 HPM 和 EEPROM 签名档案,生成本地自签名证书并吊销签名者证书。 |
| 2026 年 8 月 1 日版本 | BMC 环境管理插件:集中管理多台 BMC,支持连接与分组、命令宏、SFTP/HPM 升级、日志监控和 MCP 工具。 白牌包定制:可视化定制 Web 风格、Logo、图片和产品信息,并构建白牌包或清白牌包。 Manifest 配置与一键出包:可视化编辑 manifest.yml 出包配置,并按机型和包型构建固件包。组件与固件联合构建:从业务组件仓构建本地组件包,在隔离 Manifest 中验证选包并转入固件出包。 |
主要特性
openUBMC Studio 的主要特性包括:
- 智能代码辅助:提供代码跳转、定义预览和引用查找等功能。
- 实时错误检查:基于规则集检测代码错误和潜在问题。
- 表达式计算器:支持 CSR 表达式的编写、调试和批量测试。
- SMC 命令字配置:提供可视化的 SMC 命令字解析和配置工具。
- 模型配置:支持产品和规则集的选择与配置。
- CSR 拓扑可视化与调试:支持本地、日志和远程三种整机拓扑模式,提供总线异常检测、单板卡配置、日志包离线还原和真机在位调试。
- 事件管理:支持查看和编辑事件字典、描述模板及 CSR 事件绑定。
- 能效调速配置:支持通过 Excel 导入热设计表格并生成 CSR 调速曲线代码。
- Manifest 可视化配置:支持配置构建变体、组件依赖、默认特性和组件特性,并提供配置诊断。
- 组件与固件联合构建:支持从业务组件仓构建本地组件包,在隔离 Manifest 中验证选包并转入固件出包。
- 一键出包:支持选择机型和包型,完成出包预检、固件构建、日志查看和产物下载。
- 签名配置:支持管理 HPM 和 EEPROM 签名档案,并生成或吊销本地自签名证书。
- AI 引导环境初始化:支持通过 AI Agent 完成社区开发环境初始化。
- 日志诊断与告警链条分析:支持导入 BMC 一键日志进行可视化诊断、Agent 日志体检和告警链条分析。
- C/C++、Lua 与北向接口快速调试:支持按照 Git 变更规划直接部署或隔离构建,将最小替换集部署到 BMC 并验证结果。
- BMC 远程 GDB 调试:支持附加板端服务,或部署独立程序进行源码级调试。
- BMC 环境管理插件:集中管理多台 BMC,支持连接与分组、命令宏、SFTP/HPM 升级和日志监控。
- 白牌包定制:支持可视化定制 Web 风格、Logo、图片和产品信息,并构建白牌包或清白牌包。
- 社区集成:对接 openUBMC 社区资源和服务。
二、AI 引导环境初始化
openUBMC Studio 提供 AI 引导环境初始化能力。将预置 Prompt 发送给 AI Agent(例如 opencode、Claude Code 或 Cursor)后,AI Agent 会检测当前状态、诊断问题,并按顺序引导用户完成社区开发环境初始化。
使用前准备
- 已安装并能正常使用 AI Agent,例如 opencode、Claude Code 或 Cursor。
打开配置引导
在欢迎页面中单击“配置引导”入口。
在打开的配置引导窗口中找到“AI 引导初始化”卡片。
复制引导指令
单击“复制指令”卡片,打开 Prompt 对话框。
单击“复制到 AI Agent”,将 Prompt 复制到剪贴板。
切换到 AI Agent,粘贴并发送 Prompt。
了解 AI 引导流程
AI Agent 接收到 Prompt 后,会按以下流程引导用户完成环境初始化:
- GitCode 登录认证:AI Agent 打开 OAuth 登录窗口,并在用户授权后检测登录状态。
- 环境检测与部署:AI Agent 检测操作系统。Windows 用户可以选择 Docker(约 5 分钟)或 WSL(约 30 分钟)部署方式,Linux 用户直接进入环境配置。
- 规则集配置:AI Agent 引导用户在 openUBMC Studio 界面中选择机型和规则集,并通过
localview_get_data_source验证配置是否生效。 - 状态写回:每个步骤完成后,AI Agent 会回写向导状态;全部步骤完成后,向导状态变为“已完成”。
说明
AI Agent 在每个步骤开始前会查询当前配置进度,并自动跳过已完成的步骤。初始化中断后,可以重新发送 Prompt 继续执行。
验证初始化结果
确认配置引导窗口显示初始化已完成。
返回欢迎页面,确认状态栏中的登录状态、机型和规则集信息已更新。
常见问题
- Docker SSH 连接失败:检查容器内
sshd是否启动、10022端口是否开放,以及密钥认证是否配置正确。 - Conan 鉴权失败:检查 GitCode 登录状态是否有效,重新登录后重试。
- 规则集未生效:在 openUBMC Studio 状态栏中确认是否已选择机型和规则集,必要时重新配置。
三、登录到社区
openUBMC Studio提供了便捷的社区登录功能,通过社区登录可以获取更多资源和服务支持。
登录步骤
点击IDE右下角状态栏中的登录图标
在弹出的登录页面中输入您的openUBMC社区账号和密码
点击“登录”按钮完成登录
登录状态保持
登录成功后,IDE会自动保持和刷新登录状态:
- 自动刷新:IDE会定期刷新登录状态,确保持续有效
- 状态保持:退出IDE后,登录状态会继续保持一段时间
- 自动重连:重新打开IDE时,会自动尝试使用上一次的登录状态重新登录
Conan中心仓集成
登录社区后,IDE会自动同步登录到Conan中心仓:
- 登录状态自动保持并刷新
- 只要IDE处于登录状态,Conan就处于登录状态
- 在执行出包等操作时不会因为认证问题而超时
说明:
建议在开始开发工作前先完成社区登录,以确保能够正常访问所有资源和服务。
四、CSR 编码辅助
openUBMC Studio提供了强大的CSR编码辅助功能,包括引用跳转、规则检查、表达式计算器和SMC计算器等,帮助开发者快速定位代码、发现问题并提高开发效率。
模型配置
使用CSR编码辅助功能前,需要先完成模型配置。登录IDE后,点击Web版Studio状态栏中的"未选择机型"按钮,按以下步骤操作:
在模型配置页面中,选择对应的产品和规则集。
确认产品信息后,选择需要配置的模型文件。
配置模型文件对应的代码仓和分支信息。
完成配置后,点击"确定"保存配置。模型配置完成后,规则检查、拓扑配置等功能即可正常使用。
说明:
模型配置完成后即可使用以下CSR编码辅助功能。后续如需切换产品或规则集,可重新进行模型配置。
引用跳转功能
引用跳转功能可以帮助开发者快速定位代码定义和引用位置,支持多种跳转方式,大幅提高代码阅读和导航效率。
转到定义
在代码编辑器中,将光标定位到需要查看定义的符号上。
使用以下任一方式跳转到定义:
- 右键点击符号,选择“转到定义”
- 按住
Ctrl键,点击符号
编辑器将自动跳转到符号的定义位置。
转到引用
在代码编辑器中,将光标定位到需要查看引用的符号上。
使用以下任一方式查看引用:
- 按下
Shift + F12键 - 右键点击符号,选择“转到引用”
- 按下
在侧边栏将显示所有引用该符号的位置列表。
点击列表中的项可跳转到对应的引用位置。
鼠标悬停预览定义
在代码编辑器中,将鼠标悬停在符号上。
等待片刻,将显示符号的定义预览窗口。
基本规则错误检查功能
openUBMC Studio内置了CSR规则检查功能,模型配置完成后即可支持CSR语法与配置约束的实时检查。该功能支持错误位置高亮和规则自动更新,帮助开发者在编码阶段就发现潜在问题。
实时检查
模型配置后,在openUBMC Studio中打开任意CSR文件,检查自动生效:
页面中的类型错误和格式错误都会被实时拦截:
表达式中的语法错误也可以被实时拦截:
查看检查结果
错误和警告会以波浪线形式标注在代码中:
- 红色波浪线:表示错误(Error)
- 黄色波浪线:表示警告(Warning)
查看"问题"面板:
- 点击底部"问题"标签页
- 查看所有错误和警告列表
- 点击列表项可快速定位到对应代码位置
复杂规则校验
openUBMC Studio已建立复杂规则校验能力,可以在社区代码仓 openubmc_dsl_rulepack 中开发业务相关的检查规则,自定义规则同样支持实时检查功能。
表达式计算器功能
表达式计算器是openUBMC Studio提供的强大工具,用于编写、调试和测试CSR表达式,帮助开发者快速验证表达式的正确性。
打开表达式计算器
打开CSR文件,在表达式上方将显示“计算表达式”按钮
点击“计算表达式”按钮,表达式计算器窗口将在右侧打开
表达式计算器界面
表达式计算器界面包含以下部分:
- 表达式编辑区:显示和编辑当前选中的表达式
- 模式切换按钮:可以在“调试模式”和“用例模式”之间切换
- 变量面板:显示当前表达式中可用的变量及其值
- 结果面板:显示表达式计算结果和各级管道的计算过程
修改表达式
在表达式编辑区查看或修改表达式
修改完成后,点击“保存到文件”按钮保存修改
保存后,表达式计算器会自动重新加载表达式
源文件中的表达式修改并保存后,表达式编辑页面也会自动重新加载
调试表达式
在表达式编辑区查看表达式内容
在变量面板中输入或修改变量值
完成输入后,系统将自动计算:
- 各级管道的中间结果
- 最终表达式结果
说明:
调试功能可以帮助您逐步查看表达式的计算过程,快速定位问题。
表达式批量用例测试
在表达式计算器中, 点击“用例模式”按钮切换到批量测试模式
创建测试用例:
- 按照要求输入测试用例名称和参数值以及结果值
执行批量测试:
- 点击“加载用例”加载所有测试用例
- 点击“Execute all”执行所有测试用例
- 查看验证报告,显示每个用例的执行结果
说明:
测试用例可以导出为文件,方便团队共享和版本管理。
建议为复杂表达式编写多个测试用例,确保表达式在各种情况下都能正确工作。
SMC计算器功能
SMC计算器用于解析和配置SMC命令字,帮助开发者快速理解和生成SMC命令,简化SMC相关的开发工作。
打开SMC计算器
打开CSR文件,定位到Scanner或Accessor的offset字段
点击offset字段上方显示的"计算偏移量"按钮
SMC计算器窗口将在右侧打开
SMC命令字解析
SMC计算器提供了强大的命令字解析功能:
- 自动解析:当前偏移量会被自动解析,显示各字段的含义
- 实时计算:修改下方输入框的数据内容将自动更新和计算偏移量
- 应用到文件:点击“应用”按钮可以将计算结果写入到CSR文件
- 字段提示:鼠标悬停在字段上方可以显示具体的字段含义和说明
SMC命令字可视化辅助
openUBMC Studio提供了直观的SMC命令字可视化功能:
水印显示:SMC命令字将在CSR中以水印形式显示字段内容,方便查看
悬停详情:鼠标悬停在offset字段上将显示偏移量的详细信息,包括:
- 各字段的值
- 字段的含义
- 完整的偏移量计算结果
说明:
可视化辅助功能可以帮助您快速理解复杂的SMC命令字结构,减少配置错误。
五、拓扑与 CSR 可视化配置
CSR 拓扑插件提供整机和单板卡两个维度的总线及器件拓扑可视化。0.3.7 版本新增本地、日志和远程三种整机拓扑模式,并支持总线异常检测、日志包离线还原、真机在位调试以及单板卡可视化配置。
创建拓扑配置
单击 openUBMC Studio 左侧的拓扑十字形侧边栏图标。
单击“创建配置”。
单击“添加仓库”,选择 CSR 文件夹,即可在该机型配置中使用来自该文件夹的 CSR。可以添加多个 CSR 代码仓,单击右下角的“确定”即可创建项目。
创建完成后,拓扑起点为
root.sr。
CSR 整机拓扑
CSR 整机拓扑图提供整机维度与单 CSR 维度的总线及器件拓扑可视化:以板卡为节点展示整机的层级结构、Connector 连接关系与总线连线,支持双击板卡下钻到单板视图、从器件库拖拽器件完成配置。根据数据来源不同,拓扑图分为三种使用模式:本地模式、日志模式与远程模式。
三种模式对比与选择
| 对比项 | 本地模式 | 日志模式 | 远程模式 |
|---|---|---|---|
| 数据来源 | 模型配置的本地 CSR 代码仓 | 日志压缩包(connectors.txt + .sr) | 真机运行时(mdbctl + framework.log) |
| 依赖模型配置 | 是 | 否 | 否 |
| 在位状态 | 静态配置,可切换(在位/不在位/天池加载/动态加载) | 收集时刻快照,只读 | 运行时实际值,可切换开关模拟拔插 |
| 典型场景 | 日常开发、搭建整机拓扑、板卡适配 | 现场日志离线分析、问题回溯 | 真机调试、在位异常定位 |
根据手头资源选择:
- 有整机 CSR 代码仓,需要搭建或修改拓扑配置 → 本地模式(见下文「本地模式」)。
- 只有现场日志压缩包,需要还原收集时刻的整机拓扑 → 日志模式(完整指南见导入 BMC 日志压缩包查看 CSR 拓扑)。
- 有可达真机 BMC,需要查看实时在位或调试板卡加载 → 远程模式(完整指南见远程模式连接 BMC 环境)。
模式切换:日志模式与远程模式均为临时查看模式,重新从侧边栏加载本地拓扑(如切换机型或点击侧边栏文件节点)即恢复本地模式,导入日志产生的临时解压目录会自动清理。
界面说明
拓扑图中的主要元素如下:
- 板卡节点:每个节点代表一块板卡,显示板卡类型、SR 文件名与对应的板型示意图;根节点为
root.sr(BMC 主板)。 - 在位状态:节点左上角显示在位标签或开关,含义与可操作性随模式不同,详见各模式说明。
- 板卡选择器:本地模式下,尚未确定 SR 的节点提供候选板卡列表与数量选择器,用于配置下游板卡。
- 总线连线与连接桩:连线表示上游 Connector 传入的总线,由上游板卡的连接桩连向下游板卡;总线配置不一致时会出现红色连线或异常标志。
- 单板下钻:双击整机拓扑页面的任意板卡,或点击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面,查看该板卡 SR 的板内拓扑与详情。
- 工具栏:配置选择框与「导出配置」按钮用于整机拓扑的多配置管理,仅本地模式可用。
本地模式
本地模式是默认模式,数据来自模型配置的本地 CSR 代码仓,用于日常开发中搭建与修改整机拓扑。
查看整机拓扑
点击侧边栏拓扑插件图标,进入整机拓扑图页面,显示如下:
总线连线:板卡之间的连线为上游 Connector 传入的总线,将鼠标悬停在总线上可显示总线名称。
总线异常检测:自动检测上游 Connector 传入总线与下游板卡 Anchor 中定义总线的一致性。
总线类型不匹配
当上游 Connector 的 Buses 和下游板卡 Anchor 的 Buses 同一索引位置的总线类型不一致时,总线显示为红色,将鼠标悬停在图标上可查看具体信息。
总线类型判断逻辑:取总线名称前缀,若前缀相同,则认为类型匹配。
上游多传入总线
当上游 Connector 的 Buses 数量大于下游板卡 Anchor 的 Buses 数量时,Connector 的 Buses 数组中多出的总线会被识别为上游多传入总线。板卡左下角会显示红色异常标志,将鼠标悬停在标志上可查看具体信息。
下游板卡多出总线
当上游 Connector 的 Buses 数量小于下游板卡 Anchor 的 Buses 数量时,下游板卡 Anchor 的 Buses 数组中多出的总线会被识别为下游多定义总线。板卡左下角会显示红色异常标志,将鼠标悬停在标志上可查看具体信息。
板卡合并:SR 文件中的不同 Connector 加载同一个文件时,拓扑图会将其合并为一张板卡。
配置整机拓扑
可通过板卡上方选项在整机拓扑中选择对应板卡,各板卡可选下游板卡数量和类型由该板卡的 Connector 配置决定;尚未确定 SR 的节点通过板卡选择器从候选列表中指定 SR 文件。所有配置信息会自动在本地持久化。
双击整机拓扑页面的任意板卡,或点击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面。
通过工具栏的配置选择框可在多套整机配置之间切换,点击「导出配置」可导出当前配置。
在位状态
本地模式根据 SR 文件中上游 Connector 的 IdentifyMode 和 Presence 值显示在位状态,单击开关可切换:
| 显示 | 含义 |
|---|---|
| 天池加载 | IdentifyMode 为 3,由天池配置加载 |
| 在位 / 不在位 | IdentifyMode 为 2,Presence 为固定值 1 / 0 |
| 动态加载 | IdentifyMode 为 2,Presence 为表达式,按表达式动态计算 |
板卡在位状态
切换在位状态:单击开关可同步修改上游 Connector 中
Presence的值。
CSR 单板卡配置
双击整机拓扑页面的任意板卡,或单击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面。单板卡视图支持新增、删除总线或器件,以及修改 Mux 总线的 ChannelId。也可以按 Ctrl + Z 撤销、按 Ctrl + Y 恢复。
定位器件
单击器件,右侧 SR 文件会自动定位到该器件对象所在的位置。
修改 ChannelId
单击器件上方的 ChannelId 数字方块,可修改其值。
新增总线
单击 + 图标,选择总线类型并填写总线后缀,然后单击“确定”新增总线。
删除器件、总线
将鼠标悬停在器件或总线上,单击鼠标右键并选择“删除”。
拖拽器件
打开器件库,将器件拖拽到总线上即可将器件挂载到总线,同时自动修改对应 CSR 文件内容。也可以拖拽器件到可下连的器件卡片上进行挂载。
导入 BMC 日志压缩包查看 CSR 拓扑
openUBMC Studio 支持导入 BMC 一键收集的日志压缩包,在离线环境下还原当前整机加载的 CSR 及其拓扑关系。适用于现场问题定位与离线日志分析:拿到日志包即可查看板卡层级结构、连接关系与在位情况,无需连接真机。
使用前准备
- 已安装 openUBMC Studio 并启用 CSR 拓扑插件(随主插件提供)。
- 准备 BMC 一键收集的日志压缩包,支持
zip、tar、tgz、gz(含.tar.gz)格式。 - 本机需可执行
tar命令(日志包解压依赖系统 tar)。
说明:
导入日志模式不依赖模型配置,也无需预先创建拓扑项目,可直接使用。
导入日志压缩包
在 openUBMC Studio 左侧 CSR 拓扑侧边栏视图标题栏,点击「导入日志包」按钮。
在弹出的文件选择框中,选择 BMC 日志压缩包并点击「选择日志压缩包」确认。
工具自动解压并解析日志包中的
connectors.txt,随后在主编辑区渲染整机 CSR 拓扑图。导入成功后右下角提示「成功导入: 文件路径」。
查看导入的拓扑
板卡层级与连接关系:拓扑图展示整机各板卡的层级结构与总线连接,查看能力与本地整机拓扑页面一致,但不支持切换板卡配置(配置选择框与导出配置按钮为禁用状态)。
在位状态:每块板卡以只读标签显示在位状态(在位/不在位),状态取自日志包记录。
实现原理
数据来源
导入模式的拓扑数据全部来自日志压缩包内部,不访问真机,各数据项来源如下:
| 数据项 | 来源 | 用途 |
|---|---|---|
| 板卡层级结构 | connectors.txt 的树形拓扑部分 | 构建整机拓扑树(板卡父子关系) |
Connector 详情(Buses、Type、Presence、IdentifyMode 等) | connectors.txt 的 Connector 详情段 | 总线连线、连接器类型、在位状态 |
板卡类型与名称(Unit.Type / Unit.Name) | 日志包内的 .sr 文件 | 拓扑节点显示的板卡类型与名称 |
下游总线(ManagementTopology.Anchor.Buses) | 日志包内的 .sr 文件 | 总线一致性检测的下游锚点 |
| 板卡 SR 详情 | 日志包内的 .sr 文件 | 双击板卡下钻查看的自描述内容 |
connectors.txt 通常位于日志包的 dump_info/AppDump/hwdiscovery/ 目录下;工具同时支持在解压根目录及任意子目录中递归查找。.sr 文件从 connectors.txt 所在目录及其子目录中递归收集。
connectors.txt 格式示例
connectors.txt 由 BMC 硬件自发现流程生成,前半部分是板卡树形结构,后半部分是每个 Connector 的属性详情:
root
├─Connector_BMC
│├─Connector_PCPU_1
│└─Connector_PCPU_2
└─Connector_PSU_1
Connector_BMC:
.Buses: ["I2c_1","I2c_2"]
.Type: BMC
.Presence: 1
.IdentifyMode: 2
Connector_PSU_1:
.Buses: ["I2c_3"]
.Type: PSU
.Presence: 0
.IdentifyMode: 2树形部分:通过行首的
├─、└─、│符号表达层级,每个节点即一块板卡的 Connector,对应 SR 文件名为节点名.sr(如Connector_PCPU_1.sr)。详情部分:
Connector_XXX:开启一个 Connector 段,其下以.属性: 值逐行列出属性。其中Presence决定在位标签(1=在位,0=不在位),Buses决定上游总线连线。
处理流程
- 解压:调用系统
tar(zip 在 Linux 下用unzip)将日志包解压到固定临时目录。 - 查找 connectors.txt:按「解压根目录 →
dump_info/AppDump/hwdiscovery/→ 递归子目录」的顺序查找。 - 解析:拆分树形结构与 Connector 详情段,得到拓扑树骨架与各 Connector 属性。
- 收集 SR 文件:递归收集同目录下全部
.sr文件并解析缓存到内存。 - 构建拓扑:将 Connector 属性与 SR 文件按名称(去除末尾
_序号后缀)匹配,生成前端拓扑树并渲染。
说明:
在位状态反映的是收集日志时刻的整机状态,非实时数据。
功能验证
导入完成后,可按以下检查项验证功能是否正常:
| 验证项 | 操作步骤 | 预期结果 |
|---|---|---|
| 导入解析 | 选择 BMC 一键收集日志压缩包导入 | 右下角提示「成功导入: 文件路径」,主编辑区渲染整机拓扑 |
| 板卡层级 | 对比拓扑树与日志包 connectors.txt 的树形结构 | 板卡父子层级一致,无遗漏板卡 |
| 在位状态 | 查看板卡节点标签,与 connectors.txt 中对应 Connector 的 Presence 值比对 | 标签显示与记录一致(1=在位,0=不在位) |
| 板卡详情下钻 | 双击拓扑中的板卡节点 | 编辑器第二列打开该板卡 SR 文件内容 |
常见问题
| 现象 | 处理建议 |
|---|---|
| 提示「未找到 connectors.txt 文件」 | 请确认导入的是 BMC 一键收集日志压缩包(内含 connectors.txt) |
| 导入会占用/残留磁盘空间吗 | 日志包解压到固定临时目录(系统临时目录/bmc-log-import),每次导入前自动清理旧数据,无需手动维护 |
| 能否修改在位状态或板卡配置 | 导入模式为只读查看,不支持修改在位状态与 CSR 配置;配置选择与导出按钮为禁用状态 |
远程模式连接 BMC 环境
远程模式支持连接真机 BMC 环境,自动从运行时数据(mdbctl 调试命令 + 框架日志)构建整机 CSR 拓扑,实时展示板卡实际在位情况。无需从 BMC 手动导出数据再导入,选择环境即可出图,适用于真机调试、板卡适配验证与在位异常定位。
使用前准备
- 已安装并启用 BMC环境管理 插件(
openubmc.bmcstudio-bmc-remote),并添加至少一条 BMC 连接。连接的添加方法参见 BMC环境管理插件 章节。 - 目标 BMC 运行 openUBMC 固件,开放 Telnet 调试通道(23 端口免认证调试 shell),且板上具备
mdbctl调试命令。 - 开发机无需安装 telnet 客户端,扩展使用内置连接直连。
说明:
远程模式不依赖模型配置,选中环境后自动跳过机型配置流程,直接加载拓扑。
连接 BMC 环境
在 CSR 拓扑侧边栏视图标题栏,点击「远程调试」按钮。
在顶部弹出的环境选择框中,选择目标 BMC 环境。列表展示全部已配置连接,并实时探测在线状态(在线/离线图标 + 账号信息)。
选择后显示「正在加载 xx 环境的 CSR 拓扑」进度通知,工具自动读取真机运行时的 Connector 对象与 SR 加载记录并构建拓扑。
加载完成后,拓扑图工具栏显示当前连接的环境名称与 IP,主编辑区渲染整机实时拓扑。
查看实时拓扑
- 真实在位状态:拓扑以真机运行时数据为准(而非静态 root.sr 配置),每块板卡显示实际在位/不在位状态。
- EEPROM 板卡:CSR 烧录在 EEPROM(而非 .sr 文件)的板卡会被自动解码,与文件板卡同等展示,双击同样可查看内容。
- 板卡 SR 下钻:双击板卡即可进入单板视图查看该板卡的 SR 内容。
- 在位调试:板卡节点上的在位开关可点击切换,模拟板卡拔插,详见下文「在位调试」。
在位调试
远程模式下,点击板卡节点上的在位开关即可模拟板卡拔插,验证下级板卡的加载逻辑,无需物理操作真机。
说明:
切换在位状态不是卸载板卡:该板卡已加载的 SR 不受影响,只影响下级板卡的加载判断——下级板卡检测到上游 Connector 的 Presence 为 0 时不会加载。
普通在位属性
Presence 为固定值(1/0)的板卡,节点上显示单个在位开关。点击开关后:
- 工具通过
mdbctl setprop向真机下发修改,更新该 Connector 的 Presence 值; - 重新读取运行时在位状态并重建拓扑(不重新读取 SR 文件);
- 下级板卡的加载状态随 Presence 变化体现在拓扑上。
同步属性(多开关)
Presence 为表达式(引用其他对象属性,如多个物理在位开关共用一个 Connector)时,节点上会按同步源渲染多个开关,每个开关对应一个同步源对象的属性。点击单个开关只修改对应同步源对象的属性值,适用于逐个验证各物理开关对板卡加载的影响。
注意:
在位调试通过 setprop 真实修改真机运行时属性,直接影响下级板卡的加载判断。请确认影响范围后再操作,调试完成后建议将开关切回原状态。
实现原理
数据来源
远程模式的拓扑数据来自真机运行时,全部通过 Telnet 调试通道(23 端口)自动采集,各数据项来源如下:
| 数据项 | 来源 | 用途 |
|---|---|---|
| Connector 对象清单 | 真机运行时(mdbctl lsobj connector) | 拓扑节点唯一来源,以实际加载为准(非静态 root.sr) |
| Connector 实际在位值 | 真机运行时(mdbctl lsprop 读取 Presence) | 板卡在位/不在位状态 |
| SR 文件加载记录 | 真机 /var/log/framework.log 中框架打印的加载日志 | 确定每个 Connector 实际加载的 SR 文件路径(含根节点) |
| SR 文件内容 | 真机 /opt/bmc/sr/*.sr | 板卡类型/名称(Unit 字段)、下游总线、双击下钻内容 |
| EEPROM 板卡 CSR | 板上 EEPROM(CDR 容器格式) | CSR 烧录在 EEPROM(无 .sr 文件)板卡的解码展示 |
| 拓扑层级关系 | Connector 的 GroupPosition 属性 | 按 GroupPosition 建树(去末两位即父节点) |
通过日志查看 Connector 加载的文件
每个 Connector 实际加载的 SR 文件记录在 BMC 的框架日志 /var/log/framework.log 中,由硬件自发现流程打印,共两类记录:
记录一(init.lua,板卡加载主源)——每个 Connector 加载 SR 时打印,position 即该 Connector 的 GroupPosition:
2026-08-20 10:15:32 hwdiscovery NOTICE: init.lua(152): position: 0101011A, get csr data from /opt/bmc/sr/14100513_pcie_card.sr, ...记录二(dump.lua,根节点主源)——根板卡的加载只出现在此类记录中:
2026-08-20 10:15:30 hwdiscovery NOTICE: dump.lua(88): start to dump connector: root loading file: /opt/bmc/sr/root.sr工具解析后的对应关系示例:
| 日志记录 | 解析结果 |
|---|---|
position: 0101011A, get csr data from /opt/bmc/sr/14100513_pcie_card.sr | GroupPosition 为 0101011A 的 Connector 加载了 14100513_pcie_card.sr |
start to dump connector: root loading file: /opt/bmc/sr/root.sr | 根节点加载 root.sr(拓扑根板卡) |
start to dump connector: Connector_EXU_1 loading file: Eeprom/...(loading file 为 EEPROM 对象路径) | 该板卡 CSR 烧录在 EEPROM,工具改走 EEPROM 解码 |
也可以在 BMC 上手动执行以下命令核对(与工具解析使用同一数据源):
grep -E "get csr data from|start to dump connector" /var/log/framework.log说明:
同一 Connector 多次加载时取最新一条记录(日志按最新文件优先解析);加载失败的记录(如占位文件)会被过滤,不会体现在拓扑中。
处理流程
- 连通性自检:通过 Telnet 23 端口连接目标 BMC,探测调试 shell 可用性。
- 发现 Connector:执行
mdbctl lsobj connector获取运行时全量 Connector 对象,再批量mdbctl lsprop读取每个 Connector 的Presence实际值。 - 解析加载记录:读取
/var/log/framework.log(含历史.gz轮转文件),解析「position → SR 文件」与「运行时名 → 文件」两组映射。 - 建树:按 Connector 的
GroupPosition属性构建整机层级(去掉末两位十六进制即父节点位置)。 - 读取 SR 内容:按映射从
/opt/bmc/sr/读取.sr文件;EEPROM 板卡读取 EEPROM 二进制(CDR 容器)并本地解码出 CSR。 - 渲染:组装拓扑树、在位状态与 SR 数据,发送到拓扑图视图渲染。
说明:
在位状态以真机运行时数据为准(mdbctl 实时读取),而非 CSR 静态配置中的 Presence 表达式,可避免静态配置与实际加载不一致造成的误判。
所有数据仅在加载拓扑和切换在位开关时读取,不在本地持久化。
功能验证
连接环境并加载拓扑后,可按以下检查项验证功能是否正常:
| 验证项 | 操作步骤 | 预期结果 |
|---|---|---|
| 环境列表 | 点击「远程调试」按钮 | 列出全部已配置 BMC 连接,并标注在线/离线状态与账号信息 |
| 拓扑加载 | 选择一个在线环境 | 显示「正在加载 xx 环境的 CSR 拓扑」进度,完成后工具栏显示环境名与 IP,渲染整机拓扑 |
| 在位一致性 | 将拓扑中板卡在位状态与真机实际在位比对(可对照 BMC Web 页面或板上 mdbctl 查询结果) | 与真机实际加载一致(以运行时数据为准) |
| 加载文件一致性 | 在 BMC 上执行上文 grep 命令,比对拓扑中板卡对应的 SR 文件 | 双击下钻打开的 SR 文件与日志记录的 get csr data from 路径一致 |
| 板卡详情下钻 | 双击拓扑中的板卡节点 | 打开单板视图,可查看该板卡 SR 内容 |
| EEPROM 板卡 | 查看拓扑中无 .sr 文件的板卡 | EEPROM 板卡正常解码展示,双击同样可查看 CSR 内容 |
| 在位开关切换 | 点击某板卡节点的在位开关 | 切换后拓扑自动刷新,下级板卡加载状态随之变化 |
| 同步属性切换 | 点击同步属性板卡上的单个开关 | 仅对应同步源对象的属性变化,其余开关状态不变,拓扑刷新 |
常见问题
| 现象 | 处理建议 |
|---|---|
| 提示「未配置 BMC 环境,请先添加连接」 | 先在 BMC环境管理插件中添加连接,参见 BMC环境管理插件 章节 |
| 提示「远程拓扑加载失败」 | 检查环境是否在线、BMC 23 端口是否开放、板上 mdbctl 是否可用;详细原因可查看输出通道中 RemoteTopologyLoader 的日志 |
| 环境列表显示「探测中」 | 连接健康探测最长 3 秒,离线环境会标注离线状态,不影响选择其他环境 |
说明:
远程模式下配置选择与导出配置不可用(禁用),与导入日志模式一致。
此外,远程拓扑支持通过 MCP 工具 csr_topo_get_remote_topology 供 AI Agent 查询整机 Connector 在位清单与 SR 来源。
能效调速配置
能效调速配置功能提供能效调速对象的配置入口,支持通过Excel导入热设计表格解析调速曲线配置,支持对象自动关联及配置检查、CSR片段自动生成。
打开配置页面
点击CSR拓扑侧边栏中的温度计图标即可开启能效调速配置页面。
配置能效调速对象
通过该页面配置能效调速对象,以及配置对象间的关联关系。
点击右上角的"导入Excel"即可导入热设计表格,当前仅支持xlsx格式,若为其他格式请通过Excel另存为xlsx格式文件。完成导入后,温度点与调速曲线等配置可以自动解析。
点击右上角"生成CSR"即可根据当前配置产生CSR代码片段,可以自行填入CSR文件中。生成CSR过程支持配置语法检查,禁止出现ID冲突等问题。
六、事件管理
本章节介绍 openUBMC Studio 的事件管理功能。用户可以在 IDE 中查看和编辑 event_def.json 中的事件信息与描述模板,也可以查看、新增和保存事件与 CSR Event_ 对象的绑定关系。
说明
事件管理依赖模型配置生成的事件字典基线。如尚未配置模型,请先完成模型配置中的产品和规则集选择。
功能说明
BMC 事件字典定义了整机事件的事件标识、严重级别、事件编码和描述模板等标准信息。事件管理提供以下能力:
- 事件字典管理:查看、筛选和搜索全部事件,编辑基础字段与中英文描述模板,新建自定义事件模板,以及还原或导出差量。
- CSR 绑定管理:查看事件在 SR 文件中绑定的
Event_对象,可视化新增、编辑和删除绑定,并批量保存到 SR 文件。
根据打开入口,事件管理提供以下两种视图:
| 视图 | 入口 | CSR 绑定聚合范围 |
|---|---|---|
| 单板卡视图 | 单 SR 拓扑视图中的“事件管理” | 当前 SR 文件及其拆分文件中的 Event_ 对象 |
| 整机视图 | 总拓扑页面工具栏中的“事件管理” | 总拓扑下所有 SR 文件中的 Event_ 对象 |
两种视图共用同一套事件字典与编辑能力,仅 CSR 绑定的聚合范围不同。
使用前准备
- 模型配置:已完成产品和规则集选择,事件字典基线来自 Conan 规则包中的
event_def.json。 - 拓扑项目:已通过拓扑侧边栏创建配置并添加 CSR 仓库,当前工作区存在可用的 SR 上下文。
说明
字段修改、描述模板修改和自定义事件模板会以差量形式保存在本地缓存中。编辑停止约 1 秒后,差量会自动写入缓存;关闭事件管理面板时,差量会自动落盘。原始字典文件不会被直接修改。
打开事件管理
打开整机视图:进入总拓扑页面,单击工具栏中的“事件管理”。
打开单板卡视图:进入单 SR 拓扑视图,单击“事件管理”。此时 CSR 绑定范围限定为当前 SR 文件。
事件管理会在独立面板中打开,不影响原拓扑页面。
查看事件管理界面
事件管理界面由工具栏、事件列表、编辑横幅、分页栏和详情面板组成。
- 工具栏:提供新建事件模板、重新拉取、导出、清除全部筛选和搜索功能。
- 事件列表:展示全部事件,支持列头筛选和分页。
- 编辑横幅:存在未导出的编辑时,以黄色或绿色横幅提示导出。
- 详情面板:单击事件行后显示在界面右侧。拖动面板左边缘可以在约
280~700px范围内调整宽度,单击“×”可以关闭面板。
筛选和搜索事件
查看列表字段
| 列 | 说明 |
|---|---|
事件(EventKeyId/EventName) | 事件唯一标识与名称,内容过长时自动省略,悬停后显示全文 |
| 级别 | 严重程度:提示(蓝灰)、一般(蓝)、重要(橙)或紧急(红) |
| CSR 绑定 | 当前视图范围内绑定的 Event_ 对象数量 |
| 分类 | 根据事件标识推导的业务分类 |
| 机型支持 | 当前机型是否支持该事件 |
EventCode | 事件的十六进制唯一编码 |
| 恢复上报 | 是否上报恢复事件 |
EventType | 事件类型 |
LifeCycleId | 生命周期标识 |
设置筛选条件
- 单击“级别”“CSR 绑定”“分类”“机型支持”或“恢复上报”列头中的筛选按钮。
- 勾选需要保留的选项。每个选项会显示对应的事件数量。
- 如需清空当前列的条件,再次打开筛选菜单并单击“清空筛选”。
右上角搜索框支持按 EventKeyId、事件名称或事件编码进行模糊搜索。存在筛选或搜索条件时,工具栏会显示“清除全部筛选(N)”,单击后可以恢复完整列表。
设置分页
底部分页栏支持将每页数量设置为 20、40、80 或 100 条,也支持按页码跳转。没有事件数据时,可以通过空状态入口新建事件模板;存在数据但被过滤时,可以通过空状态入口清除筛选。
新建和编辑事件
新建事件模板
- 单击工具栏中的“新建事件模板”。
- 在右侧详情面板中编辑新模板。
新建的自定义事件会置于列表顶部并自动选中。详情面板底部提供“删除该自定义事件模板”按钮。
编辑基础字段
在事件列表中单击目标事件。
在右侧详情面板中打开“基础信息”页签。
基础字段说明如下:
| 字段 | 说明 |
|---|---|
事件名称 EventName | 事件短名称,通常与 EventKeyId 的最后一段一致 |
SeverityId | 严重级别:0 表示提示、1 表示一般、2 表示重要、3 表示紧急 |
| 机型支持 | 标记当前机型是否支持该事件,是导出 eventDefList.txt 的依据 |
恢复上报 DeassertFlag | 是否上报恢复事件,与 LifeCycleId 共同决定事件是否可恢复 |
事件编码 EventCode | 十六进制唯一编码,例如 0x0200001F |
旧版事件编码 OldEventCode | 跨版本兼容映射,没有对应关系时留空 |
上报通道 ReportChannel | 目标通道位掩码,65535 表示向全部通道上报 |
事件类型 EventType | BMC 固件定义的编号,当前字典中的常见取值为 0 或 1 |
生命周期标识 LifeCycleId | BMC 固件定义的编号,当前字典中的常见取值为 0 或 1 |
动作标识 ActionId | BMC 固件定义的编号,当前字典中的常见取值为 0 或 1 |
编辑描述模板
“描述模板”区域提供以下四类内容的中英文编辑,单击右上角的“中”或“EN”可以切换语言:
Description:描述。Cause:可能原因。Influence:影响。Suggestion:处理建议。
说明
- 描述支持
%Component、%DescArg1~%DescArg5占位符,依次引用 CSR 事件绑定中的Component和DescArg字段。输入占位符后,界面会显示提示。 - 可能原因与处理建议支持多条内容,多条内容之间使用
@#AB;分隔。
还原事件数据
还原单个事件:单击详情面板标题行中的“还原”,丢弃该事件的全部本地编辑并恢复为字典基线值。
重新拉取全部事件:单击工具栏中的“重新拉取”,在确认窗口中继续操作。完成后,事件管理会丢弃全部编辑,从 Conan 包重新读取事件字典,并将筛选、搜索和分页恢复为初始状态。
注意
“重新拉取”会丢弃当前所有本地编辑。首次打开事件管理时,系统优先读取本地缓存;仅在需要放弃全部差量或重新获取 Conan 包中的最新数据时执行此操作。
查看并导出修改
存在未同步的编辑时,列表上方会显示编辑横幅。
| 横幅 | 含义 | 导出文件 |
|---|---|---|
| 黄色 | 事件字段、描述模板或自定义模板发生变化 | event_def.json |
| 绿色 | 机型支持字段发生变化 | eventDefList.txt |
- 查看修改:打开变化清单后,可以单击事件标识定位到对应事件,也可以单独还原某个事件。
- 导出事件字典:导出的
event_def.json包含全部事件定义与描述模板,文件版本号末段自动加一,例如从1.0.0更新为1.0.1。导出后,请将文件提交到 VPD 仓库进行同步。 - 导出机型事件清单:导出的
eventDefList.txt仅包含“机型支持”为“是”的事件标识。
说明
两类横幅会根据修改内容独立显示和导出。两类内容均发生变化时,需要分别导出对应文件。
管理 CSR 绑定
CSR 绑定描述事件与 SR 文件中 Event_ 对象的对应关系。在详情面板中打开“CSR 绑定”页签,可以查看和编辑绑定。
查看 CSR 绑定
页签顶部显示当前视图类型和事件的绑定总数。绑定以卡片形式展示,每张卡片会标注所属 SR 文件,悬停后可以查看完整路径。
新增 CSR 绑定
单击详情面板底部的“CSR 绑定”。
在新增卡片中填写绑定字段。
如果当前处于整机视图,选择“目标 SR 文件”。整机根文件
root.sr不在候选范围内;单板卡视图会自动使用当前 SR 文件。单击“确定”,批量保存本次绑定修改。
查看绑定字段
| 字段 | 说明 |
|---|---|
| 事件对象名 | 必须以 Event_ 开头且不能只有前缀;同一拆分文件组内不得重名,不同组之间允许同名 |
| 目标 SR 文件 | 仅在整机视图新增绑定时显示,用于指定绑定写入的 SR 文件 |
Condition | 绑定条件;清空后删除该键,纯数字内容会自动转换为数值 |
Component | 事件关联的器件组件,候选项按照目标 SR 文件分为“推荐”和“其他”两组 |
OperatorId | 操作符编号,可以留空 |
Enabled | 是否启用绑定,可以留空以删除该键 |
验证保存结果
- “确定”仅在存在修改且表单校验通过时可用;单击“取消”会放弃本次全部修改。
- 对象名为空、未以
Event_开头或在组内重名时,对应输入框会显示错误。 - 保存成功后,绑定列表和绑定数量会自动刷新,事件列表会定位到当前事件。
- 在编辑器中直接保存 SR 文件后,绑定列表和绑定数量也会自动刷新。
常见问题
- 事件字段是否需要手动保存? 不需要。字段与描述模板编辑会在停止输入约 1 秒后写入本地缓存,并在关闭面板时落盘;CSR 绑定修改需要单击“确定”保存到 SR 文件。
- 重新拉取后编辑全部消失:此行为符合预期。“重新拉取”会丢弃全部本地差量并恢复到字典基线。
- CSR 绑定提示对象名必须以
Event_开头:事件对象名必须带有固定前缀,并且不能只有Event_前缀。 - 整机视图与单板卡视图的绑定数量不一致:两种视图的聚合范围分别为全部 SR 文件和当前 SR 文件,因此数量可能不同。
- 还原事件后列表中的绑定数量未变化:“还原”仅丢弃事件字典的本地差量,不修改 CSR 绑定。
- 导出的文件应提交到哪里?
event_def.json与eventDefList.txt均用于提交到 VPD 仓库,具体流程遵循团队的字典变更管理规范。 - 新建的模板在筛选结果中不可见:新建模板时会自动清空筛选。如模板仍不可见,请检查搜索词和列头筛选条件。
七、日志诊断与告警链条分析
一键日志解析插件(扩展 ID:openubmc.bmcstudio-log-reviewer)用于导入 BMC 一键日志包或 dump 目录,并通过可视化页面和 AI Agent 分析设备状态。用户可以浏览硬件、告警、传感器、性能及原始日志,也可以结合 openUBMC RAG 进行日志体检,或通过告警证据工具分析指定事件的触发链条。
功能说明
日志诊断提供以下使用方式:
| 使用方式 | 主要能力 | 适用场景 |
|---|---|---|
| 一键日志解析页面 | 自动解压日志包,通过概览、硬件、告警、传感器、性能、调速、线缆和日志等视图展示 dump 日志 | 人工浏览现场、筛选日志和快速确认异常范围 |
| Agent 日志体检 | 结合本地日志证据和 openUBMC RAG 生成问题清单,实时回写结果并导出 PDF 报告 | 对日志进行批量体检和问题优先级排序 |
| 定向诊断与告警链条分析 | 关联事件记录、运行日志、数据库及 CSR Event 定义,输出告警状态、触发链、恢复或复发情况和证据位置 | 聚焦指定问题、还原告警链条和形成可复核结论 |
说明
可视化页面中的“智能检测”用于 Agent 日志体检。指定问题的深入诊断和告警链条分析可以在已配置 openUBMC Studio MCP 服务的 AI Agent 对话中发起。
使用前准备
如果活动栏中没有“一键日志解析”图标,请先执行以下操作:
- 在 openUBMC Studio 中打开插件市场,搜索“一键日志解析”。
- 安装插件,并按照提示重新加载窗口。
- 确认活动栏中出现“一键日志解析”图标。
使用 Agent 日志体检前,还需要满足以下条件:
- 已登录 openUBMC 社区。
openubmc-rag扩展已启用。- 当前网络可以访问配置的 LightRAG 服务。
- AI Agent 可以访问 openUBMC Studio MCP 工具。
AI Agent 会在读取日志前检查 RAG 状态。未登录、RAG 工具未启用、网络异常或状态响应无法解析时,日志体检会停止并显示处理建议。
说明
如果所有 MCP 工具均提示网络错误,请将 localhost、127.0.0.0/8 和 ::1 加入代理直连列表或 NO_PROXY,然后完全重启 openUBMC Studio 和 AI Agent。
打开一键日志
一键日志解析支持 Windows、Linux、WSL、SSH 远程工作区和容器工作区。
支持导入以下内容:
.tar.gz、.tgz、.tar或.zip格式的 BMC 一键日志压缩包。- 已解压且包含
AppDump子目录的 dump 文件夹。
操作步骤如下:
单击活动栏中的“一键日志解析”图标。
根据日志形态,选择“打开 BMC 一键日志压缩包”或“打开 dump 目录”。
选择日志压缩包或 dump 根目录。选择目录时,应选中包含
AppDump子目录的 dump 根目录。等待解压和解析完成,确认日志页面已在编辑器区域打开。
也可以通过以下入口打开日志:
- 在资源管理器中右键单击日志压缩包或 dump 文件夹,选择对应的一键日志解析命令。
- 单击“最近打开”中的历史记录,重新打开对应日志。
“最近打开”最多保存 30 条记录。同一日志已经打开时,再次打开只会定位到原页面。删除一条最近记录时,对应的日志页面也会关闭。
查看日志包要求
日志包中必须存在名称完全匹配的 AppDump 目录,典型结构如下:
dump_info/
├── AppDump/
├── LogDump/
├── RTOSDump/
└── OSDump/插件最多向下查找 6 层目录。AppDump 是导入日志时的必需目录;缺少 LogDump、RTOSDump 或 OSDump 时,日志包仍可能打开,但对应页面会显示无数据或目录缺失。
| 项目 | 限制 |
|---|---|
| 单次选择 | 1 个日志包,可以重复导入不同日志包 |
| 支持格式 | .tar.gz、.tgz、.tar、.zip |
tar 系列解压后总内容 | 不超过 8GiB |
tar 系列归档条目 | 不超过 200000 项 |
| ZIP 解压 | 依赖系统中的 tar 或 unzip,单次命令最长执行 300 秒 |
AppDump 查找深度 | 最多递归 6 层 |
注意
插件不单独限制压缩文件本身的大小。处理大型日志包时,需要为远程暂存文件、中间 .tar 文件和解压目录预留足够空间,建议可用空间至少为解压后内容大小的两倍。
查看诊断信息
日志面板按照不同领域组织现场信息,常用视图包括:
- 现场概览:查看机型、健康状态、FRU、板卡和软件版本。
- 告警与传感器:查看告警记录、活动状态、传感器读值和门限信息。
- 运行状态:查看性能、功率、进风温度、调速策略和 PID 配置。
- 硬件关联:查看线缆检测、同步属性、CSR 和丝印信息。
- 日志与诊断:查看操作日志、应用日志、框架日志、维护日志、驱动日志、串口日志、
journalctl、一键日志原始文件和故障诊断文件。 - 智能检测:使用 AI Agent 和 openUBMC RAG 进行日志体检。
不同页面按需解析日志文件,不会在导入时将所有文件一次性加载到内存。日志视图支持筛选、大小写匹配、全字匹配、正则表达式、匹配项跳转和保存搜索,具体可用项以当前视图为准。
使用 Agent 进行日志体检
日志体检会将本地日志证据与 openUBMC RAG 检索结果关联,并按照严重程度、紧急度和置信度排列问题。故障案例库是可信度最高的知识来源,但不是唯一可用来源。
说明
流程图中的问题数量和内容仅用于说明操作过程。实际问题数量、严重程度和诊断结论以导入日志中的证据及 RAG 检索结果为准。
复制分析 Prompt
打开日志页面顶部的“智能检测”。
单击“复制 Prompt 模板”。
将 Prompt 粘贴到能够访问 openUBMC Studio MCP 工具的 AI Agent 中。
发送 Prompt,等待 AI Agent 完成 RAG 状态检查并开始分析。
Prompt 已包含以下约束,无需手动填写日志路径:
- 包含当前日志包的显示名称、分析任务标识和回调地址。
- 只允许读取当前分析任务绑定的日志包。
- 必须先检查 RAG 连接和社区登录状态。
- 必须保留 RAG 引用的真实来源,其中故障案例库来源具有最高可信度。
- 每个问题必须同时提供 RAG 匹配内容和本地日志证据。
- 分析完成后,按照用户配置的 TopN 返回结果。
查看实时问题
AI Agent 分析期间,每个已确认的问题会实时显示在“Agent 日志问题”区域。问题卡片包含以下内容:
- 严重程度:
CRITICAL、HIGH、MEDIUM或LOW。 - 紧急度:综合故障影响、恶化可能、冗余能力和修复窗口计算的 0~100 分。
- 置信度:本地多源证据与 RAG 知识的一致程度。
- 可能原因和处理建议。
- RAG 匹配内容、来源及可信度。
- 日志片段、日志包内相对路径和定位信息。
说明
截图中的故障名称和日志内容仅用于演示界面结构,不代表产品预置的诊断结论。
同一根因产生的重复现象应合并为一个问题。分析完成后,插件会依次按照严重程度、紧急度和置信度排序,并展示最紧急的 TopN 问题。
配置 TopN
TopN 默认值为 10,可以设置为 1~50:
- 单击“一键日志解析”侧边栏标题栏中的齿轮图标。
- 在设置页面中修改
bmcstudio.logReviewer.analysisTopN。 - 创建新的分析会话,使新设置生效。
TopN 只限制分析完成后页面和 PDF 报告中展示的问题数量。AI Agent 可以在分析过程中回写更多候选问题,插件会在完成时统一排序和截取。已经打开的分析会话继续使用创建会话时的 TopN 值;如需让同一日志使用新的 TopN,请先从“最近打开”中删除该日志,再重新导入并发起分析。
导出 PDF 报告
“导出为 PDF 报告”仅在分析状态变为“已完成”后可用:
- 确认页面显示“Agent 智能分析:已完成”。
- 单击“导出为 PDF 报告”。
- 选择保存路径和文件名。
- 使用 PDF 阅读器打开报告,核对摘要、问题排序、RAG 内容、日志证据和处理建议。
报告在当前 openUBMC Studio 扩展宿主运行期间可以持续导出。完全关闭或重启 openUBMC Studio 后,内存中的分析会话不会保留,需要重新发起分析。
处理会话异常
| 场景 | 预期行为 |
|---|---|
| 分析期间关闭日志页面 | AI Agent 回调可以继续写入后台会话,重新打开同一日志后恢复状态 |
| 页面关闭较长时间后重新打开 | 运行中的会话按照空闲策略管理,重新打开并操作后刷新活跃状态 |
| 从“最近打开”中删除日志 | 对应页面关闭,关联分析会话被清理 |
| 清空“最近打开” | 所有日志页面关闭,关联分析会话被清理 |
| RAG 不可用 | 分析停止并显示登录、网络或配置建议,不生成主观问题 |
| 日志中没有诊断内容 | 日志包格式有效时,分析完成并显示 0 个问题,PDF 报告可以导出 |
缺少 AppDump | 导入失败,并提示文件可能不是 openUBMC 一键日志包 |
缺少 AppDump/fault_diagnosis | 结构化诊断失败,AI Agent 将分析任务标记为失败 |
使用 AI Agent 定向诊断日志
在 AI Agent 对话中提供日志路径和分析目标,例如:
请打开并诊断 /path/to/bmc-log.tar.gz,先给出设备健康概览、关键异常和对应证据位置。openUBMC Studio 会打开同一份日志的可视化面板,同时将机型、健康状态、硬件清单、告警、传感器、性能、调速、线缆和 CSR 等结构化数据提供给 AI Agent。后续可以继续要求 AI Agent 聚焦某个领域,例如:
继续分析当前日志中的散热异常,关联传感器、调速策略、功率和相关运行日志。分析告警链条
分析单条告警时,建议提供以下任一组定位信息:
- 事件码和发生时间。事件码格式为
0x后接 8 位十六进制数字,时间格式为YYYY-MM-DD HH:mm:ss。 sel.txt中的事件记录 ID。openUBMC Studio 可以据此解析事件码和发生时间。- 需要区分多个告警实例时,再补充组件或实例名称。
示例:
基于当前打开的一键日志,分析事件码 0x12345678、时间 2026-08-28 14:23:16 的完整告警触发链。
请说明当前告警状态、已观察到和缺失的阶段、恢复与复发情况,并在每个节点标注证据文件及行号或数据库记录位置。AI Agent 会根据日志中的实际证据按需给出以下内容:
- 唯一告警锚点及其匹配方式,避免混淆相同事件码的不同告警实例。
- 告警当前状态,包括
active、inactive、conflicted或unknown,并分别列出状态依据。 - 已观察到的触发流程,例如采样、数值转换、门限或事件规则求值、事件存储和北向上报;未采集到的阶段会标记为缺失。
- 运行期事件与 dump 内
.sr文件中CSR Event/PowerEvent定义、属性和直接引用关系的关联结果。 Assert/Deassert恢复配对、复发次数下界、历史覆盖范围和可能的时钟跳变。- 每个关键事实对应的 dump 相对路径、行号、列号、JSON Pointer 或数据库定位信息。
注意
告警链条分析仅关联 dump 中可观察到的事实,不会自动将时间相邻的事件视为因果,也不会使用静态 CSR 定义证明规则在告警时刻一定执行。日志缺失或状态冲突时,结论会保留为“证据不足”或“存在冲突”,需要结合现场信息和业务知识继续判断。
了解数据范围和安全边界
- AI Agent 日志工具只能访问分析任务绑定的日志包,不会自动选择其他历史日志。
- 日志证据使用日志包内相对路径,不会向页面回写宿主绝对路径。
- 日志体检唯一允许访问的外部知识是 openUBMC RAG 状态和知识检索结果。
tar系列导入会拒绝路径逃逸、绝对路径和解压炸弹,并忽略符号链接、硬链接及设备文件。- PDF 报告只包含当前分析会话中的摘要、TopN 问题、RAG 依据和日志证据。
八、BMC 环境管理
本章介绍 openUBMC Studio 的 BMC环境管理 插件(扩展 ID:openubmc.bmcstudio-bmc-remote)的功能与使用方法。该插件用于在 IDE 内集中管理多台 BMC 环境、批量下发命令、上传文件、一键升级固件、实时监控日志、自动调试组件以及远程 GDB 调试。
BMC环境管理插件在活动栏注册一个「BMC环境管理」容器,下设两个视图:
- BMC Environments:BMC 环境连接树,按分组组织,管理连接的元数据与凭据。
- Command Macros:命令宏树,维护可批量下发的命令序列。
插件的核心能力包括:
- 连接管理:以分组方式管理多台 BMC,单条连接可任选 SSH、Telnet 或 WebView 方式接入。
- 连通性管理:手动或周期性探测 BMC 可达性,并在状态变化时播报。
- 命令宏:预定义命令序列与变量,按「全部可达 / 分组 / 手动多选」批量下发,回收结构化结果。
- SFTP 上传:从资源管理器右键将本地文件或目录上传到 BMC。
- HPM 一键升级:右键
.hpm固件包,并发升级多台 BMC,全程进度可视。 - 实时日志监控:实时
tail远端/var/log日志,支持日志轮转衔接、时间回绕校准与原始文件下载。 - 组件自动调试:根据 Git 变更自动部署 Lua、C/C++ 和北向接口调试内容,详见 C/C++、Lua 与北向接口快速调试。
- 远程 GDB 调试:附加板端服务或部署独立程序进行源码级调试,详见 BMC 远程 GDB 调试。
- MCP 工具:对外暴露 27 个 MCP 工具,供 AI Agent 调用,实现自然语言驱动的批量运维与告警证据分析。
使用前准备
环境要求
- 运行平台:推荐 Linux(Ubuntu)。连接管理以 Linux 为目标平台;HPM 升级与日志监控仅依赖 Node 内置模块,三平台行为一致。
- 系统依赖:建议预装以下工具:
openssh-client:SSH 接入与 SFTP 上传。telnet:Telnet 接入与实时日志监控。tar(支持-z):目录上传与日志下载解压。libsecret-1-0/gnome-keyring:Linux 下用于安全存储密码。
安装插件
- 在 openUBMC Studio 中打开插件市场(活动栏的「扩展」图标,或按
Ctrl+Shift+X),搜索「BMC环境管理」,点击「安装」。 - 安装完成后重启 IDE 生效。活动栏出现「BMC环境管理」图标即表示安装成功。
说明:
若已安装 openUBMC Studio 主插件,BMC环境管理作为配套扩展随其一同提供,具体获取方式请参考 openUBMC Studio 安装指南。
BMC 环境管理
新增分组
连接以「分组」为单位组织,系统默认创建一个分组。
- 在 BMC Environments 视图标题栏单击「Add Group」按钮。
- 输入分组名称并确认。
分组的右键菜单支持「Add」「Rename Group」「Delete Group」。分组非空时拒绝删除(保护数据),需先清空或迁移其下连接。
新增连接
- 单击 BMC Environments 视图标题栏「Add BMC Environment」按钮,或在某个分组上右键选择「Add」。
- 在弹出的表单中填写连接信息并保存。
连接字段说明:
| 字段 | 说明 | 备注 |
|---|---|---|
名称 name | 连接显示名称 | 必填 |
IP 地址 host | BMC 的 IPv4 地址 | 必填,仅接受 IPv4,非法地址会被拒绝 |
用户名 username | 登录用户名 | 必填 |
密码 password | 登录密码 | 必填(新增时);密码存于操作系统级安全存储,不落配置文件、不进日志 |
分组 group | 所属分组 | 不选则落入首个分组 |
标签 tags | 标签数组 | 可选,用于归类 |
描述 description | 连接描述 | 可选 |
接入 BMC
在连接上右键,选择接入方式:
- Connect via SSH:使用进程内 SSH 客户端登录(兼容老款 BMC 的弱算法与 keyboard-interactive 交互),以伪终端呈现。默认在编辑器区(接近全屏)打开,由配置项
bmc.autoMaximizeTerminal控制,关闭后回到底部面板。 - Connect via Telnet:调用系统
telnet命令接入,需本机已安装 telnet。Telnet 不会自动发送密码,需手动输入。 - Open in WebView:使用系统浏览器打开 BMC Web UI(
https://{host})。
SSH 握手超时由 bmc.connectionTimeout(默认 30 秒)控制。
编辑与删除
- Edit Configuration / Change Password:修改连接信息。编辑密码时留空表示保留原密码。
- Disconnect:发送
exit、关闭终端并注销会话。 - Delete:删除前会弹出模态确认;删除会先关闭相关终端并清理该连接的凭据。
说明:
删除连接会连带删除其凭据;删除分组前需先清空连接或迁移。
连通性管理
插件通过 TCP 探测 SSH 22 端口判断 BMC 可达性,连接树图标实时反映状态(不可达时变红),分组徽章显示「X/Y 可达」。
- 手动探测单个:右键连接 → 「Check Connection Health」,提示可达 / 不可达。
- 全量刷新:单击视图标题栏「Refresh」,先把全部连接置为检测中再统一探测。
- 周期检测:右键连接 → 「开启自动检测连通状态」/「关闭自动检测连通状态」。开启后每 10 秒 探测一轮,仅对开启该项的连接生效。
- 状态播报:右键连接 → 「开启连通性变更播报」/「关闭连通性变更播报」。上线提示「{分组}/{名称} 已上电」,掉线提示「{名称} 已下电」。
探测超时由 bmc.pingTimeout(默认 3000 毫秒)控制。可达性 = 「TCP 22 端口通 + 已配置凭据」;运行宏、上传、升级前均以此作为就绪判据。
命令宏
命令宏用于预定义「一组有序 shell 命令 + 变量 + 失败策略」,运行时按目标范围批量下发到 BMC,每台环境复用一条 SSH 连接执行完整命令集,并回收结构化的「环境 × 命令」结果矩阵。
新建宏
- 单击 Command Macros 视图标题栏「Add Command Macro」按钮。
- 在表单中填写宏内容并保存。
宏字段说明:
| 字段 | 说明 | 默认值 / 范围 |
|---|---|---|
名称 name | 宏名称 | 必填 |
描述 description | 宏描述 | 可选 |
命令 commands | 有序命令列表 | 至少 1 条;每条可单独设置 description、timeoutMs、abortOnFailure(遇错:默认 / 中断 / 继续) |
变量 variables | 自定义变量(键名不含 `--- |
一、简介
openUBMC Studio 是一款基于 Code - OSS 的 openUBMC 集成开发环境,面向 openUBMC 开发、调试和构建场景。
最近版本新增功能
下表按发布时间倒序汇总 openUBMC Studio 最近三个版本的新增功能,单击功能名称可跳转到对应章节。当前收录 2026 年 8 月和 9 月发布的版本;后续发布新版本时,仅保留最近三个版本。
| 版本 | 新增功能 |
|---|---|
| 2.1.1(2026 年 9 月 1 日) | AI 引导环境初始化:通过预置 Prompt 引导 AI Agent 完成 GitCode 登录、开发环境部署和规则集配置。 CSR 拓扑插件 0.3.7:提供本地、日志和远程三种整机拓扑模式,支持总线异常检测、单板卡配置、日志包离线还原和真机在位调试。 事件管理:可视化管理事件字典、描述模板和 CSR 事件绑定,并导出事件字典及机型支持清单。 日志诊断、Agent 日志体检与告警链条分析:导入 BMC 一键日志压缩包或 dump 目录,结合本地证据和 openUBMC RAG 生成问题清单、导出 PDF 报告,并分析指定告警的触发链条。 C/C++、Lua 与北向接口快速调试:根据组件 Git 变更生成调试计划,直接部署 Lua 和运行时配置,按需构建 C/C++ 与生成型北向配置,并完成服务重启、结果校验和环境恢复。 BMC 远程 GDB 调试:支持附加板端 systemd 服务,或部署并启动独立程序进行源码级调试。 出包签名配置:可视化管理 HPM 和 EEPROM 签名档案,生成本地自签名证书并吊销签名者证书。 |
| 2026 年 8 月 1 日版本 | BMC 环境管理插件:集中管理多台 BMC,支持连接与分组、命令宏、SFTP/HPM 升级、日志监控和 MCP 工具。 白牌包定制:可视化定制 Web 风格、Logo、图片和产品信息,并构建白牌包或清白牌包。 Manifest 配置与一键出包:可视化编辑 manifest.yml 出包配置,并按机型和包型构建固件包。组件与固件联合构建:从业务组件仓构建本地组件包,在隔离 Manifest 中验证选包并转入固件出包。 |
主要特性
openUBMC Studio 的主要特性包括:
- 智能代码辅助:提供代码跳转、定义预览和引用查找等功能。
- 实时错误检查:基于规则集检测代码错误和潜在问题。
- 表达式计算器:支持 CSR 表达式的编写、调试和批量测试。
- SMC 命令字配置:提供可视化的 SMC 命令字解析和配置工具。
- 模型配置:支持产品和规则集的选择与配置。
- CSR 拓扑可视化与调试:支持本地、日志和远程三种整机拓扑模式,提供总线异常检测、单板卡配置、日志包离线还原和真机在位调试。
- 事件管理:支持查看和编辑事件字典、描述模板及 CSR 事件绑定。
- 能效调速配置:支持通过 Excel 导入热设计表格并生成 CSR 调速曲线代码。
- Manifest 可视化配置:支持配置构建变体、组件依赖、默认特性和组件特性,并提供配置诊断。
- 组件与固件联合构建:支持从业务组件仓构建本地组件包,在隔离 Manifest 中验证选包并转入固件出包。
- 一键出包:支持选择机型和包型,完成出包预检、固件构建、日志查看和产物下载。
- 签名配置:支持管理 HPM 和 EEPROM 签名档案,并生成或吊销本地自签名证书。
- AI 引导环境初始化:支持通过 AI Agent 完成社区开发环境初始化。
- 日志诊断与告警链条分析:支持导入 BMC 一键日志进行可视化诊断、Agent 日志体检和告警链条分析。
- C/C++、Lua 与北向接口快速调试:支持按照 Git 变更规划直接部署或隔离构建,将最小替换集部署到 BMC 并验证结果。
- BMC 远程 GDB 调试:支持附加板端服务,或部署独立程序进行源码级调试。
- BMC 环境管理插件:集中管理多台 BMC,支持连接与分组、命令宏、SFTP/HPM 升级和日志监控。
- 白牌包定制:支持可视化定制 Web 风格、Logo、图片和产品信息,并构建白牌包或清白牌包。
- 社区集成:对接 openUBMC 社区资源和服务。
二、AI 引导环境初始化
openUBMC Studio 提供 AI 引导环境初始化能力。将预置 Prompt 发送给 AI Agent(例如 opencode、Claude Code 或 Cursor)后,AI Agent 会检测当前状态、诊断问题,并按顺序引导用户完成社区开发环境初始化。
使用前准备
- 已安装并能正常使用 AI Agent,例如 opencode、Claude Code 或 Cursor。
打开配置引导
在欢迎页面中单击“配置引导”入口。
在打开的配置引导窗口中找到“AI 引导初始化”卡片。
复制引导指令
单击“复制指令”卡片,打开 Prompt 对话框。
单击“复制到 AI Agent”,将 Prompt 复制到剪贴板。
切换到 AI Agent,粘贴并发送 Prompt。
了解 AI 引导流程
AI Agent 接收到 Prompt 后,会按以下流程引导用户完成环境初始化:
- GitCode 登录认证:AI Agent 打开 OAuth 登录窗口,并在用户授权后检测登录状态。
- 环境检测与部署:AI Agent 检测操作系统。Windows 用户可以选择 Docker(约 5 分钟)或 WSL(约 30 分钟)部署方式,Linux 用户直接进入环境配置。
- 规则集配置:AI Agent 引导用户在 openUBMC Studio 界面中选择机型和规则集,并通过
localview_get_data_source验证配置是否生效。 - 状态写回:每个步骤完成后,AI Agent 会回写向导状态;全部步骤完成后,向导状态变为“已完成”。
说明
AI Agent 在每个步骤开始前会查询当前配置进度,并自动跳过已完成的步骤。初始化中断后,可以重新发送 Prompt 继续执行。
验证初始化结果
确认配置引导窗口显示初始化已完成。
返回欢迎页面,确认状态栏中的登录状态、机型和规则集信息已更新。
常见问题
- Docker SSH 连接失败:检查容器内
sshd是否启动、10022端口是否开放,以及密钥认证是否配置正确。 - Conan 鉴权失败:检查 GitCode 登录状态是否有效,重新登录后重试。
- 规则集未生效:在 openUBMC Studio 状态栏中确认是否已选择机型和规则集,必要时重新配置。
三、登录到社区
openUBMC Studio提供了便捷的社区登录功能,通过社区登录可以获取更多资源和服务支持。
登录步骤
点击IDE右下角状态栏中的登录图标
在弹出的登录页面中输入您的openUBMC社区账号和密码
点击“登录”按钮完成登录
登录状态保持
登录成功后,IDE会自动保持和刷新登录状态:
- 自动刷新:IDE会定期刷新登录状态,确保持续有效
- 状态保持:退出IDE后,登录状态会继续保持一段时间
- 自动重连:重新打开IDE时,会自动尝试使用上一次的登录状态重新登录
Conan中心仓集成
登录社区后,IDE会自动同步登录到Conan中心仓:
- 登录状态自动保持并刷新
- 只要IDE处于登录状态,Conan就处于登录状态
- 在执行出包等操作时不会因为认证问题而超时
说明:
建议在开始开发工作前先完成社区登录,以确保能够正常访问所有资源和服务。
四、CSR 编码辅助
openUBMC Studio提供了强大的CSR编码辅助功能,包括引用跳转、规则检查、表达式计算器和SMC计算器等,帮助开发者快速定位代码、发现问题并提高开发效率。
模型配置
使用CSR编码辅助功能前,需要先完成模型配置。登录IDE后,点击Web版Studio状态栏中的"未选择机型"按钮,按以下步骤操作:
在模型配置页面中,选择对应的产品和规则集。
确认产品信息后,选择需要配置的模型文件。
配置模型文件对应的代码仓和分支信息。
完成配置后,点击"确定"保存配置。模型配置完成后,规则检查、拓扑配置等功能即可正常使用。
说明:
模型配置完成后即可使用以下CSR编码辅助功能。后续如需切换产品或规则集,可重新进行模型配置。
引用跳转功能
引用跳转功能可以帮助开发者快速定位代码定义和引用位置,支持多种跳转方式,大幅提高代码阅读和导航效率。
转到定义
在代码编辑器中,将光标定位到需要查看定义的符号上。
使用以下任一方式跳转到定义:
- 右键点击符号,选择“转到定义”
- 按住
Ctrl键,点击符号
编辑器将自动跳转到符号的定义位置。
转到引用
在代码编辑器中,将光标定位到需要查看引用的符号上。
使用以下任一方式查看引用:
- 按下
Shift + F12键 - 右键点击符号,选择“转到引用”
- 按下
在侧边栏将显示所有引用该符号的位置列表。
点击列表中的项可跳转到对应的引用位置。
鼠标悬停预览定义
在代码编辑器中,将鼠标悬停在符号上。
等待片刻,将显示符号的定义预览窗口。
基本规则错误检查功能
openUBMC Studio内置了CSR规则检查功能,模型配置完成后即可支持CSR语法与配置约束的实时检查。该功能支持错误位置高亮和规则自动更新,帮助开发者在编码阶段就发现潜在问题。
实时检查
模型配置后,在openUBMC Studio中打开任意CSR文件,检查自动生效:
页面中的类型错误和格式错误都会被实时拦截:
表达式中的语法错误也可以被实时拦截:
查看检查结果
错误和警告会以波浪线形式标注在代码中:
- 红色波浪线:表示错误(Error)
- 黄色波浪线:表示警告(Warning)
查看"问题"面板:
- 点击底部"问题"标签页
- 查看所有错误和警告列表
- 点击列表项可快速定位到对应代码位置
复杂规则校验
openUBMC Studio已建立复杂规则校验能力,可以在社区代码仓 openubmc_dsl_rulepack 中开发业务相关的检查规则,自定义规则同样支持实时检查功能。
表达式计算器功能
表达式计算器是openUBMC Studio提供的强大工具,用于编写、调试和测试CSR表达式,帮助开发者快速验证表达式的正确性。
打开表达式计算器
打开CSR文件,在表达式上方将显示“计算表达式”按钮
点击“计算表达式”按钮,表达式计算器窗口将在右侧打开
表达式计算器界面
表达式计算器界面包含以下部分:
- 表达式编辑区:显示和编辑当前选中的表达式
- 模式切换按钮:可以在“调试模式”和“用例模式”之间切换
- 变量面板:显示当前表达式中可用的变量及其值
- 结果面板:显示表达式计算结果和各级管道的计算过程
修改表达式
在表达式编辑区查看或修改表达式
修改完成后,点击“保存到文件”按钮保存修改
保存后,表达式计算器会自动重新加载表达式
源文件中的表达式修改并保存后,表达式编辑页面也会自动重新加载
调试表达式
在表达式编辑区查看表达式内容
在变量面板中输入或修改变量值
完成输入后,系统将自动计算:
- 各级管道的中间结果
- 最终表达式结果
说明:
调试功能可以帮助您逐步查看表达式的计算过程,快速定位问题。
表达式批量用例测试
在表达式计算器中, 点击“用例模式”按钮切换到批量测试模式
创建测试用例:
- 按照要求输入测试用例名称和参数值以及结果值
执行批量测试:
- 点击“加载用例”加载所有测试用例
- 点击“Execute all”执行所有测试用例
- 查看验证报告,显示每个用例的执行结果
说明:
测试用例可以导出为文件,方便团队共享和版本管理。
建议为复杂表达式编写多个测试用例,确保表达式在各种情况下都能正确工作。
SMC计算器功能
SMC计算器用于解析和配置SMC命令字,帮助开发者快速理解和生成SMC命令,简化SMC相关的开发工作。
打开SMC计算器
打开CSR文件,定位到Scanner或Accessor的offset字段
点击offset字段上方显示的"计算偏移量"按钮
SMC计算器窗口将在右侧打开
SMC命令字解析
SMC计算器提供了强大的命令字解析功能:
- 自动解析:当前偏移量会被自动解析,显示各字段的含义
- 实时计算:修改下方输入框的数据内容将自动更新和计算偏移量
- 应用到文件:点击“应用”按钮可以将计算结果写入到CSR文件
- 字段提示:鼠标悬停在字段上方可以显示具体的字段含义和说明
SMC命令字可视化辅助
openUBMC Studio提供了直观的SMC命令字可视化功能:
水印显示:SMC命令字将在CSR中以水印形式显示字段内容,方便查看
悬停详情:鼠标悬停在offset字段上将显示偏移量的详细信息,包括:
- 各字段的值
- 字段的含义
- 完整的偏移量计算结果
说明:
可视化辅助功能可以帮助您快速理解复杂的SMC命令字结构,减少配置错误。
五、拓扑与 CSR 可视化配置
CSR 拓扑插件提供整机和单板卡两个维度的总线及器件拓扑可视化。0.3.7 版本新增本地、日志和远程三种整机拓扑模式,并支持总线异常检测、日志包离线还原、真机在位调试以及单板卡可视化配置。
创建拓扑配置
单击 openUBMC Studio 左侧的拓扑十字形侧边栏图标。
单击“创建配置”。
单击“添加仓库”,选择 CSR 文件夹,即可在该机型配置中使用来自该文件夹的 CSR。可以添加多个 CSR 代码仓,单击右下角的“确定”即可创建项目。
创建完成后,拓扑起点为
root.sr。
CSR 整机拓扑
CSR 整机拓扑图提供整机维度与单 CSR 维度的总线及器件拓扑可视化:以板卡为节点展示整机的层级结构、Connector 连接关系与总线连线,支持双击板卡下钻到单板视图、从器件库拖拽器件完成配置。根据数据来源不同,拓扑图分为三种使用模式:本地模式、日志模式与远程模式。
三种模式对比与选择
| 对比项 | 本地模式 | 日志模式 | 远程模式 |
|---|---|---|---|
| 数据来源 | 模型配置的本地 CSR 代码仓 | 日志压缩包(connectors.txt + .sr) | 真机运行时(mdbctl + framework.log) |
| 依赖模型配置 | 是 | 否 | 否 |
| 在位状态 | 静态配置,可切换(在位/不在位/天池加载/动态加载) | 收集时刻快照,只读 | 运行时实际值,可切换开关模拟拔插 |
| 典型场景 | 日常开发、搭建整机拓扑、板卡适配 | 现场日志离线分析、问题回溯 | 真机调试、在位异常定位 |
根据手头资源选择:
- 有整机 CSR 代码仓,需要搭建或修改拓扑配置 → 本地模式(见下文「本地模式」)。
- 只有现场日志压缩包,需要还原收集时刻的整机拓扑 → 日志模式(完整指南见导入 BMC 日志压缩包查看 CSR 拓扑)。
- 有可达真机 BMC,需要查看实时在位或调试板卡加载 → 远程模式(完整指南见远程模式连接 BMC 环境)。
模式切换:日志模式与远程模式均为临时查看模式,重新从侧边栏加载本地拓扑(如切换机型或点击侧边栏文件节点)即恢复本地模式,导入日志产生的临时解压目录会自动清理。
界面说明
拓扑图中的主要元素如下:
- 板卡节点:每个节点代表一块板卡,显示板卡类型、SR 文件名与对应的板型示意图;根节点为
root.sr(BMC 主板)。 - 在位状态:节点左上角显示在位标签或开关,含义与可操作性随模式不同,详见各模式说明。
- 板卡选择器:本地模式下,尚未确定 SR 的节点提供候选板卡列表与数量选择器,用于配置下游板卡。
- 总线连线与连接桩:连线表示上游 Connector 传入的总线,由上游板卡的连接桩连向下游板卡;总线配置不一致时会出现红色连线或异常标志。
- 单板下钻:双击整机拓扑页面的任意板卡,或点击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面,查看该板卡 SR 的板内拓扑与详情。
- 工具栏:配置选择框与「导出配置」按钮用于整机拓扑的多配置管理,仅本地模式可用。
本地模式
本地模式是默认模式,数据来自模型配置的本地 CSR 代码仓,用于日常开发中搭建与修改整机拓扑。
查看整机拓扑
点击侧边栏拓扑插件图标,进入整机拓扑图页面,显示如下:
总线连线:板卡之间的连线为上游 Connector 传入的总线,将鼠标悬停在总线上可显示总线名称。
总线异常检测:自动检测上游 Connector 传入总线与下游板卡 Anchor 中定义总线的一致性。
总线类型不匹配
当上游 Connector 的 Buses 和下游板卡 Anchor 的 Buses 同一索引位置的总线类型不一致时,总线显示为红色,将鼠标悬停在图标上可查看具体信息。
总线类型判断逻辑:取总线名称前缀,若前缀相同,则认为类型匹配。
上游多传入总线
当上游 Connector 的 Buses 数量大于下游板卡 Anchor 的 Buses 数量时,Connector 的 Buses 数组中多出的总线会被识别为上游多传入总线。板卡左下角会显示红色异常标志,将鼠标悬停在标志上可查看具体信息。
下游板卡多出总线
当上游 Connector 的 Buses 数量小于下游板卡 Anchor 的 Buses 数量时,下游板卡 Anchor 的 Buses 数组中多出的总线会被识别为下游多定义总线。板卡左下角会显示红色异常标志,将鼠标悬停在标志上可查看具体信息。
板卡合并:SR 文件中的不同 Connector 加载同一个文件时,拓扑图会将其合并为一张板卡。
配置整机拓扑
可通过板卡上方选项在整机拓扑中选择对应板卡,各板卡可选下游板卡数量和类型由该板卡的 Connector 配置决定;尚未确定 SR 的节点通过板卡选择器从候选列表中指定 SR 文件。所有配置信息会自动在本地持久化。
双击整机拓扑页面的任意板卡,或点击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面。
通过工具栏的配置选择框可在多套整机配置之间切换,点击「导出配置」可导出当前配置。
在位状态
本地模式根据 SR 文件中上游 Connector 的 IdentifyMode 和 Presence 值显示在位状态,单击开关可切换:
| 显示 | 含义 |
|---|---|
| 天池加载 | IdentifyMode 为 3,由天池配置加载 |
| 在位 / 不在位 | IdentifyMode 为 2,Presence 为固定值 1 / 0 |
| 动态加载 | IdentifyMode 为 2,Presence 为表达式,按表达式动态计算 |
板卡在位状态
切换在位状态:单击开关可同步修改上游 Connector 中
Presence的值。
CSR 单板卡配置
双击整机拓扑页面的任意板卡,或单击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面。单板卡视图支持新增、删除总线或器件,以及修改 Mux 总线的 ChannelId。也可以按 Ctrl + Z 撤销、按 Ctrl + Y 恢复。
定位器件
单击器件,右侧 SR 文件会自动定位到该器件对象所在的位置。
修改 ChannelId
单击器件上方的 ChannelId 数字方块,可修改其值。
新增总线
单击 + 图标,选择总线类型并填写总线后缀,然后单击“确定”新增总线。
删除器件、总线
将鼠标悬停在器件或总线上,单击鼠标右键并选择“删除”。
拖拽器件
打开器件库,将器件拖拽到总线上即可将器件挂载到总线,同时自动修改对应 CSR 文件内容。也可以拖拽器件到可下连的器件卡片上进行挂载。
导入 BMC 日志压缩包查看 CSR 拓扑
openUBMC Studio 支持导入 BMC 一键收集的日志压缩包,在离线环境下还原当前整机加载的 CSR 及其拓扑关系。适用于现场问题定位与离线日志分析:拿到日志包即可查看板卡层级结构、连接关系与在位情况,无需连接真机。
使用前准备
- 已安装 openUBMC Studio 并启用 CSR 拓扑插件(随主插件提供)。
- 准备 BMC 一键收集的日志压缩包,支持
zip、tar、tgz、gz(含.tar.gz)格式。 - 本机需可执行
tar命令(日志包解压依赖系统 tar)。
说明:
导入日志模式不依赖模型配置,也无需预先创建拓扑项目,可直接使用。
导入日志压缩包
在 openUBMC Studio 左侧 CSR 拓扑侧边栏视图标题栏,点击「导入日志包」按钮。
在弹出的文件选择框中,选择 BMC 日志压缩包并点击「选择日志压缩包」确认。
工具自动解压并解析日志包中的
connectors.txt,随后在主编辑区渲染整机 CSR 拓扑图。导入成功后右下角提示「成功导入: 文件路径」。
查看导入的拓扑
板卡层级与连接关系:拓扑图展示整机各板卡的层级结构与总线连接,查看能力与本地整机拓扑页面一致,但不支持切换板卡配置(配置选择框与导出配置按钮为禁用状态)。
在位状态:每块板卡以只读标签显示在位状态(在位/不在位),状态取自日志包记录。
实现原理
数据来源
导入模式的拓扑数据全部来自日志压缩包内部,不访问真机,各数据项来源如下:
| 数据项 | 来源 | 用途 |
|---|---|---|
| 板卡层级结构 | connectors.txt 的树形拓扑部分 | 构建整机拓扑树(板卡父子关系) |
Connector 详情(Buses、Type、Presence、IdentifyMode 等) | connectors.txt 的 Connector 详情段 | 总线连线、连接器类型、在位状态 |
板卡类型与名称(Unit.Type / Unit.Name) | 日志包内的 .sr 文件 | 拓扑节点显示的板卡类型与名称 |
下游总线(ManagementTopology.Anchor.Buses) | 日志包内的 .sr 文件 | 总线一致性检测的下游锚点 |
| 板卡 SR 详情 | 日志包内的 .sr 文件 | 双击板卡下钻查看的自描述内容 |
connectors.txt 通常位于日志包的 dump_info/AppDump/hwdiscovery/ 目录下;工具同时支持在解压根目录及任意子目录中递归查找。.sr 文件从 connectors.txt 所在目录及其子目录中递归收集。
connectors.txt 格式示例
connectors.txt 由 BMC 硬件自发现流程生成,前半部分是板卡树形结构,后半部分是每个 Connector 的属性详情:
root
├─Connector_BMC
│├─Connector_PCPU_1
│└─Connector_PCPU_2
└─Connector_PSU_1
Connector_BMC:
.Buses: ["I2c_1","I2c_2"]
.Type: BMC
.Presence: 1
.IdentifyMode: 2
Connector_PSU_1:
.Buses: ["I2c_3"]
.Type: PSU
.Presence: 0
.IdentifyMode: 2树形部分:通过行首的
├─、└─、│符号表达层级,每个节点即一块板卡的 Connector,对应 SR 文件名为节点名.sr(如Connector_PCPU_1.sr)。详情部分:
Connector_XXX:开启一个 Connector 段,其下以.属性: 值逐行列出属性。其中Presence决定在位标签(1=在位,0=不在位),Buses决定上游总线连线。
处理流程
- 解压:调用系统
tar(zip 在 Linux 下用unzip)将日志包解压到固定临时目录。 - 查找 connectors.txt:按「解压根目录 →
dump_info/AppDump/hwdiscovery/→ 递归子目录」的顺序查找。 - 解析:拆分树形结构与 Connector 详情段,得到拓扑树骨架与各 Connector 属性。
- 收集 SR 文件:递归收集同目录下全部
.sr文件并解析缓存到内存。 - 构建拓扑:将 Connector 属性与 SR 文件按名称(去除末尾
_序号后缀)匹配,生成前端拓扑树并渲染。
说明:
在位状态反映的是收集日志时刻的整机状态,非实时数据。
功能验证
导入完成后,可按以下检查项验证功能是否正常:
| 验证项 | 操作步骤 | 预期结果 |
|---|---|---|
| 导入解析 | 选择 BMC 一键收集日志压缩包导入 | 右下角提示「成功导入: 文件路径」,主编辑区渲染整机拓扑 |
| 板卡层级 | 对比拓扑树与日志包 connectors.txt 的树形结构 | 板卡父子层级一致,无遗漏板卡 |
| 在位状态 | 查看板卡节点标签,与 connectors.txt 中对应 Connector 的 Presence 值比对 | 标签显示与记录一致(1=在位,0=不在位) |
| 板卡详情下钻 | 双击拓扑中的板卡节点 | 编辑器第二列打开该板卡 SR 文件内容 |
常见问题
| 现象 | 处理建议 |
|---|---|
| 提示「未找到 connectors.txt 文件」 | 请确认导入的是 BMC 一键收集日志压缩包(内含 connectors.txt) |
| 导入会占用/残留磁盘空间吗 | 日志包解压到固定临时目录(系统临时目录/bmc-log-import),每次导入前自动清理旧数据,无需手动维护 |
| 能否修改在位状态或板卡配置 | 导入模式为只读查看,不支持修改在位状态与 CSR 配置;配置选择与导出按钮为禁用状态 |
远程模式连接 BMC 环境
远程模式支持连接真机 BMC 环境,自动从运行时数据(mdbctl 调试命令 + 框架日志)构建整机 CSR 拓扑,实时展示板卡实际在位情况。无需从 BMC 手动导出数据再导入,选择环境即可出图,适用于真机调试、板卡适配验证与在位异常定位。
使用前准备
- 已安装并启用 BMC环境管理 插件(
openubmc.bmcstudio-bmc-remote),并添加至少一条 BMC 连接。连接的添加方法参见 BMC环境管理插件 章节。 - 目标 BMC 运行 openUBMC 固件,开放 Telnet 调试通道(23 端口免认证调试 shell),且板上具备
mdbctl调试命令。 - 开发机无需安装 telnet 客户端,扩展使用内置连接直连。
说明:
远程模式不依赖模型配置,选中环境后自动跳过机型配置流程,直接加载拓扑。
连接 BMC 环境
在 CSR 拓扑侧边栏视图标题栏,点击「远程调试」按钮。
在顶部弹出的环境选择框中,选择目标 BMC 环境。列表展示全部已配置连接,并实时探测在线状态(在线/离线图标 + 账号信息)。
选择后显示「正在加载 xx 环境的 CSR 拓扑」进度通知,工具自动读取真机运行时的 Connector 对象与 SR 加载记录并构建拓扑。
加载完成后,拓扑图工具栏显示当前连接的环境名称与 IP,主编辑区渲染整机实时拓扑。
查看实时拓扑
- 真实在位状态:拓扑以真机运行时数据为准(而非静态 root.sr 配置),每块板卡显示实际在位/不在位状态。
- EEPROM 板卡:CSR 烧录在 EEPROM(而非 .sr 文件)的板卡会被自动解码,与文件板卡同等展示,双击同样可查看内容。
- 板卡 SR 下钻:双击板卡即可进入单板视图查看该板卡的 SR 内容。
- 在位调试:板卡节点上的在位开关可点击切换,模拟板卡拔插,详见下文「在位调试」。
在位调试
远程模式下,点击板卡节点上的在位开关即可模拟板卡拔插,验证下级板卡的加载逻辑,无需物理操作真机。
说明:
切换在位状态不是卸载板卡:该板卡已加载的 SR 不受影响,只影响下级板卡的加载判断——下级板卡检测到上游 Connector 的 Presence 为 0 时不会加载。
普通在位属性
Presence 为固定值(1/0)的板卡,节点上显示单个在位开关。点击开关后:
- 工具通过
mdbctl setprop向真机下发修改,更新该 Connector 的 Presence 值; - 重新读取运行时在位状态并重建拓扑(不重新读取 SR 文件);
- 下级板卡的加载状态随 Presence 变化体现在拓扑上。
同步属性(多开关)
Presence 为表达式(引用其他对象属性,如多个物理在位开关共用一个 Connector)时,节点上会按同步源渲染多个开关,每个开关对应一个同步源对象的属性。点击单个开关只修改对应同步源对象的属性值,适用于逐个验证各物理开关对板卡加载的影响。
注意:
在位调试通过 setprop 真实修改真机运行时属性,直接影响下级板卡的加载判断。请确认影响范围后再操作,调试完成后建议将开关切回原状态。
实现原理
数据来源
远程模式的拓扑数据来自真机运行时,全部通过 Telnet 调试通道(23 端口)自动采集,各数据项来源如下:
| 数据项 | 来源 | 用途 |
|---|---|---|
| Connector 对象清单 | 真机运行时(mdbctl lsobj connector) | 拓扑节点唯一来源,以实际加载为准(非静态 root.sr) |
| Connector 实际在位值 | 真机运行时(mdbctl lsprop 读取 Presence) | 板卡在位/不在位状态 |
| SR 文件加载记录 | 真机 /var/log/framework.log 中框架打印的加载日志 | 确定每个 Connector 实际加载的 SR 文件路径(含根节点) |
| SR 文件内容 | 真机 /opt/bmc/sr/*.sr | 板卡类型/名称(Unit 字段)、下游总线、双击下钻内容 |
| EEPROM 板卡 CSR | 板上 EEPROM(CDR 容器格式) | CSR 烧录在 EEPROM(无 .sr 文件)板卡的解码展示 |
| 拓扑层级关系 | Connector 的 GroupPosition 属性 | 按 GroupPosition 建树(去末两位即父节点) |
通过日志查看 Connector 加载的文件
每个 Connector 实际加载的 SR 文件记录在 BMC 的框架日志 /var/log/framework.log 中,由硬件自发现流程打印,共两类记录:
记录一(init.lua,板卡加载主源)——每个 Connector 加载 SR 时打印,position 即该 Connector 的 GroupPosition:
2026-08-20 10:15:32 hwdiscovery NOTICE: init.lua(152): position: 0101011A, get csr data from /opt/bmc/sr/14100513_pcie_card.sr, ...记录二(dump.lua,根节点主源)——根板卡的加载只出现在此类记录中:
2026-08-20 10:15:30 hwdiscovery NOTICE: dump.lua(88): start to dump connector: root loading file: /opt/bmc/sr/root.sr工具解析后的对应关系示例:
| 日志记录 | 解析结果 |
|---|---|
position: 0101011A, get csr data from /opt/bmc/sr/14100513_pcie_card.sr | GroupPosition 为 0101011A 的 Connector 加载了 14100513_pcie_card.sr |
start to dump connector: root loading file: /opt/bmc/sr/root.sr | 根节点加载 root.sr(拓扑根板卡) |
start to dump connector: Connector_EXU_1 loading file: Eeprom/...(loading file 为 EEPROM 对象路径) | 该板卡 CSR 烧录在 EEPROM,工具改走 EEPROM 解码 |
也可以在 BMC 上手动执行以下命令核对(与工具解析使用同一数据源):
grep -E "get csr data from|start to dump connector" /var/log/framework.log说明:
同一 Connector 多次加载时取最新一条记录(日志按最新文件优先解析);加载失败的记录(如占位文件)会被过滤,不会体现在拓扑中。
处理流程
- 连通性自检:通过 Telnet 23 端口连接目标 BMC,探测调试 shell 可用性。
- 发现 Connector:执行
mdbctl lsobj connector获取运行时全量 Connector 对象,再批量mdbctl lsprop读取每个 Connector 的Presence实际值。 - 解析加载记录:读取
/var/log/framework.log(含历史.gz轮转文件),解析「position → SR 文件」与「运行时名 → 文件」两组映射。 - 建树:按 Connector 的
GroupPosition属性构建整机层级(去掉末两位十六进制即父节点位置)。 - 读取 SR 内容:按映射从
/opt/bmc/sr/读取.sr文件;EEPROM 板卡读取 EEPROM 二进制(CDR 容器)并本地解码出 CSR。 - 渲染:组装拓扑树、在位状态与 SR 数据,发送到拓扑图视图渲染。
说明:
在位状态以真机运行时数据为准(mdbctl 实时读取),而非 CSR 静态配置中的 Presence 表达式,可避免静态配置与实际加载不一致造成的误判。
所有数据仅在加载拓扑和切换在位开关时读取,不在本地持久化。
功能验证
连接环境并加载拓扑后,可按以下检查项验证功能是否正常:
| 验证项 | 操作步骤 | 预期结果 |
|---|---|---|
| 环境列表 | 点击「远程调试」按钮 | 列出全部已配置 BMC 连接,并标注在线/离线状态与账号信息 |
| 拓扑加载 | 选择一个在线环境 | 显示「正在加载 xx 环境的 CSR 拓扑」进度,完成后工具栏显示环境名与 IP,渲染整机拓扑 |
| 在位一致性 | 将拓扑中板卡在位状态与真机实际在位比对(可对照 BMC Web 页面或板上 mdbctl 查询结果) | 与真机实际加载一致(以运行时数据为准) |
| 加载文件一致性 | 在 BMC 上执行上文 grep 命令,比对拓扑中板卡对应的 SR 文件 | 双击下钻打开的 SR 文件与日志记录的 get csr data from 路径一致 |
| 板卡详情下钻 | 双击拓扑中的板卡节点 | 打开单板视图,可查看该板卡 SR 内容 |
| EEPROM 板卡 | 查看拓扑中无 .sr 文件的板卡 | EEPROM 板卡正常解码展示,双击同样可查看 CSR 内容 |
| 在位开关切换 | 点击某板卡节点的在位开关 | 切换后拓扑自动刷新,下级板卡加载状态随之变化 |
| 同步属性切换 | 点击同步属性板卡上的单个开关 | 仅对应同步源对象的属性变化,其余开关状态不变,拓扑刷新 |
常见问题
| 现象 | 处理建议 |
|---|---|
| 提示「未配置 BMC 环境,请先添加连接」 | 先在 BMC环境管理插件中添加连接,参见 BMC环境管理插件 章节 |
| 提示「远程拓扑加载失败」 | 检查环境是否在线、BMC 23 端口是否开放、板上 mdbctl 是否可用;详细原因可查看输出通道中 RemoteTopologyLoader 的日志 |
| 环境列表显示「探测中」 | 连接健康探测最长 3 秒,离线环境会标注离线状态,不影响选择其他环境 |
说明:
远程模式下配置选择与导出配置不可用(禁用),与导入日志模式一致。
此外,远程拓扑支持通过 MCP 工具 csr_topo_get_remote_topology 供 AI Agent 查询整机 Connector 在位清单与 SR 来源。
能效调速配置
能效调速配置功能提供能效调速对象的配置入口,支持通过Excel导入热设计表格解析调速曲线配置,支持对象自动关联及配置检查、CSR片段自动生成。
打开配置页面
点击CSR拓扑侧边栏中的温度计图标即可开启能效调速配置页面。
配置能效调速对象
通过该页面配置能效调速对象,以及配置对象间的关联关系。
点击右上角的"导入Excel"即可导入热设计表格,当前仅支持xlsx格式,若为其他格式请通过Excel另存为xlsx格式文件。完成导入后,温度点与调速曲线等配置可以自动解析。
点击右上角"生成CSR"即可根据当前配置产生CSR代码片段,可以自行填入CSR文件中。生成CSR过程支持配置语法检查,禁止出现ID冲突等问题。
六、事件管理
本章节介绍 openUBMC Studio 的事件管理功能。用户可以在 IDE 中查看和编辑 event_def.json 中的事件信息与描述模板,也可以查看、新增和保存事件与 CSR Event_ 对象的绑定关系。
说明
事件管理依赖模型配置生成的事件字典基线。如尚未配置模型,请先完成模型配置中的产品和规则集选择。
功能说明
BMC 事件字典定义了整机事件的事件标识、严重级别、事件编码和描述模板等标准信息。事件管理提供以下能力:
- 事件字典管理:查看、筛选和搜索全部事件,编辑基础字段与中英文描述模板,新建自定义事件模板,以及还原或导出差量。
- CSR 绑定管理:查看事件在 SR 文件中绑定的
Event_对象,可视化新增、编辑和删除绑定,并批量保存到 SR 文件。
根据打开入口,事件管理提供以下两种视图:
| 视图 | 入口 | CSR 绑定聚合范围 |
|---|---|---|
| 单板卡视图 | 单 SR 拓扑视图中的“事件管理” | 当前 SR 文件及其拆分文件中的 Event_ 对象 |
| 整机视图 | 总拓扑页面工具栏中的“事件管理” | 总拓扑下所有 SR 文件中的 Event_ 对象 |
两种视图共用同一套事件字典与编辑能力,仅 CSR 绑定的聚合范围不同。
使用前准备
- 模型配置:已完成产品和规则集选择,事件字典基线来自 Conan 规则包中的
event_def.json。 - 拓扑项目:已通过拓扑侧边栏创建配置并添加 CSR 仓库,当前工作区存在可用的 SR 上下文。
说明
字段修改、描述模板修改和自定义事件模板会以差量形式保存在本地缓存中。编辑停止约 1 秒后,差量会自动写入缓存;关闭事件管理面板时,差量会自动落盘。原始字典文件不会被直接修改。
打开事件管理
打开整机视图:进入总拓扑页面,单击工具栏中的“事件管理”。
打开单板卡视图:进入单 SR 拓扑视图,单击“事件管理”。此时 CSR 绑定范围限定为当前 SR 文件。
事件管理会在独立面板中打开,不影响原拓扑页面。
查看事件管理界面
事件管理界面由工具栏、事件列表、编辑横幅、分页栏和详情面板组成。
- 工具栏:提供新建事件模板、重新拉取、导出、清除全部筛选和搜索功能。
- 事件列表:展示全部事件,支持列头筛选和分页。
- 编辑横幅:存在未导出的编辑时,以黄色或绿色横幅提示导出。
- 详情面板:单击事件行后显示在界面右侧。拖动面板左边缘可以在约
280~700px范围内调整宽度,单击“×”可以关闭面板。
筛选和搜索事件
查看列表字段
| 列 | 说明 |
|---|---|
事件(EventKeyId/EventName) | 事件唯一标识与名称,内容过长时自动省略,悬停后显示全文 |
| 级别 | 严重程度:提示(蓝灰)、一般(蓝)、重要(橙)或紧急(红) |
| CSR 绑定 | 当前视图范围内绑定的 Event_ 对象数量 |
| 分类 | 根据事件标识推导的业务分类 |
| 机型支持 | 当前机型是否支持该事件 |
EventCode | 事件的十六进制唯一编码 |
| 恢复上报 | 是否上报恢复事件 |
EventType | 事件类型 |
LifeCycleId | 生命周期标识 |
设置筛选条件
- 单击“级别”“CSR 绑定”“分类”“机型支持”或“恢复上报”列头中的筛选按钮。
- 勾选需要保留的选项。每个选项会显示对应的事件数量。
- 如需清空当前列的条件,再次打开筛选菜单并单击“清空筛选”。
右上角搜索框支持按 EventKeyId、事件名称或事件编码进行模糊搜索。存在筛选或搜索条件时,工具栏会显示“清除全部筛选(N)”,单击后可以恢复完整列表。
设置分页
底部分页栏支持将每页数量设置为 20、40、80 或 100 条,也支持按页码跳转。没有事件数据时,可以通过空状态入口新建事件模板;存在数据但被过滤时,可以通过空状态入口清除筛选。
新建和编辑事件
新建事件模板
- 单击工具栏中的“新建事件模板”。
- 在右侧详情面板中编辑新模板。
新建的自定义事件会置于列表顶部并自动选中。详情面板底部提供“删除该自定义事件模板”按钮。
编辑基础字段
在事件列表中单击目标事件。
在右侧详情面板中打开“基础信息”页签。
基础字段说明如下:
| 字段 | 说明 |
|---|---|
事件名称 EventName | 事件短名称,通常与 EventKeyId 的最后一段一致 |
SeverityId | 严重级别:0 表示提示、1 表示一般、2 表示重要、3 表示紧急 |
| 机型支持 | 标记当前机型是否支持该事件,是导出 eventDefList.txt 的依据 |
恢复上报 DeassertFlag | 是否上报恢复事件,与 LifeCycleId 共同决定事件是否可恢复 |
事件编码 EventCode | 十六进制唯一编码,例如 0x0200001F |
旧版事件编码 OldEventCode | 跨版本兼容映射,没有对应关系时留空 |
上报通道 ReportChannel | 目标通道位掩码,65535 表示向全部通道上报 |
事件类型 EventType | BMC 固件定义的编号,当前字典中的常见取值为 0 或 1 |
生命周期标识 LifeCycleId | BMC 固件定义的编号,当前字典中的常见取值为 0 或 1 |
动作标识 ActionId | BMC 固件定义的编号,当前字典中的常见取值为 0 或 1 |
编辑描述模板
“描述模板”区域提供以下四类内容的中英文编辑,单击右上角的“中”或“EN”可以切换语言:
Description:描述。Cause:可能原因。Influence:影响。Suggestion:处理建议。
说明
- 描述支持
%Component、%DescArg1~%DescArg5占位符,依次引用 CSR 事件绑定中的Component和DescArg字段。输入占位符后,界面会显示提示。 - 可能原因与处理建议支持多条内容,多条内容之间使用
@#AB;分隔。
还原事件数据
还原单个事件:单击详情面板标题行中的“还原”,丢弃该事件的全部本地编辑并恢复为字典基线值。
重新拉取全部事件:单击工具栏中的“重新拉取”,在确认窗口中继续操作。完成后,事件管理会丢弃全部编辑,从 Conan 包重新读取事件字典,并将筛选、搜索和分页恢复为初始状态。
注意
“重新拉取”会丢弃当前所有本地编辑。首次打开事件管理时,系统优先读取本地缓存;仅在需要放弃全部差量或重新获取 Conan 包中的最新数据时执行此操作。
查看并导出修改
存在未同步的编辑时,列表上方会显示编辑横幅。
| 横幅 | 含义 | 导出文件 |
|---|---|---|
| 黄色 | 事件字段、描述模板或自定义模板发生变化 | event_def.json |
| 绿色 | 机型支持字段发生变化 | eventDefList.txt |
- 查看修改:打开变化清单后,可以单击事件标识定位到对应事件,也可以单独还原某个事件。
- 导出事件字典:导出的
event_def.json包含全部事件定义与描述模板,文件版本号末段自动加一,例如从1.0.0更新为1.0.1。导出后,请将文件提交到 VPD 仓库进行同步。 - 导出机型事件清单:导出的
eventDefList.txt仅包含“机型支持”为“是”的事件标识。
说明
两类横幅会根据修改内容独立显示和导出。两类内容均发生变化时,需要分别导出对应文件。
管理 CSR 绑定
CSR 绑定描述事件与 SR 文件中 Event_ 对象的对应关系。在详情面板中打开“CSR 绑定”页签,可以查看和编辑绑定。
查看 CSR 绑定
页签顶部显示当前视图类型和事件的绑定总数。绑定以卡片形式展示,每张卡片会标注所属 SR 文件,悬停后可以查看完整路径。
新增 CSR 绑定
单击详情面板底部的“CSR 绑定”。
在新增卡片中填写绑定字段。
如果当前处于整机视图,选择“目标 SR 文件”。整机根文件
root.sr不在候选范围内;单板卡视图会自动使用当前 SR 文件。单击“确定”,批量保存本次绑定修改。
查看绑定字段
| 字段 | 说明 |
|---|---|
| 事件对象名 | 必须以 Event_ 开头且不能只有前缀;同一拆分文件组内不得重名,不同组之间允许同名 |
| 目标 SR 文件 | 仅在整机视图新增绑定时显示,用于指定绑定写入的 SR 文件 |
Condition | 绑定条件;清空后删除该键,纯数字内容会自动转换为数值 |
Component | 事件关联的器件组件,候选项按照目标 SR 文件分为“推荐”和“其他”两组 |
OperatorId | 操作符编号,可以留空 |
Enabled | 是否启用绑定,可以留空以删除该键 |
验证保存结果
- “确定”仅在存在修改且表单校验通过时可用;单击“取消”会放弃本次全部修改。
- 对象名为空、未以
Event_开头或在组内重名时,对应输入框会显示错误。 - 保存成功后,绑定列表和绑定数量会自动刷新,事件列表会定位到当前事件。
- 在编辑器中直接保存 SR 文件后,绑定列表和绑定数量也会自动刷新。
常见问题
- 事件字段是否需要手动保存? 不需要。字段与描述模板编辑会在停止输入约 1 秒后写入本地缓存,并在关闭面板时落盘;CSR 绑定修改需要单击“确定”保存到 SR 文件。
- 重新拉取后编辑全部消失:此行为符合预期。“重新拉取”会丢弃全部本地差量并恢复到字典基线。
- CSR 绑定提示对象名必须以
Event_开头:事件对象名必须带有固定前缀,并且不能只有Event_前缀。 - 整机视图与单板卡视图的绑定数量不一致:两种视图的聚合范围分别为全部 SR 文件和当前 SR 文件,因此数量可能不同。
- 还原事件后列表中的绑定数量未变化:“还原”仅丢弃事件字典的本地差量,不修改 CSR 绑定。
- 导出的文件应提交到哪里?
event_def.json与eventDefList.txt均用于提交到 VPD 仓库,具体流程遵循团队的字典变更管理规范。 - 新建的模板在筛选结果中不可见:新建模板时会自动清空筛选。如模板仍不可见,请检查搜索词和列头筛选条件。
七、日志诊断与告警链条分析
一键日志解析插件(扩展 ID:openubmc.bmcstudio-log-reviewer)用于导入 BMC 一键日志包或 dump 目录,并通过可视化页面和 AI Agent 分析设备状态。用户可以浏览硬件、告警、传感器、性能及原始日志,也可以结合 openUBMC RAG 进行日志体检,或通过告警证据工具分析指定事件的触发链条。
功能说明
日志诊断提供以下使用方式:
| 使用方式 | 主要能力 | 适用场景 |
|---|---|---|
| 一键日志解析页面 | 自动解压日志包,通过概览、硬件、告警、传感器、性能、调速、线缆和日志等视图展示 dump 日志 | 人工浏览现场、筛选日志和快速确认异常范围 |
| Agent 日志体检 | 结合本地日志证据和 openUBMC RAG 生成问题清单,实时回写结果并导出 PDF 报告 | 对日志进行批量体检和问题优先级排序 |
| 定向诊断与告警链条分析 | 关联事件记录、运行日志、数据库及 CSR Event 定义,输出告警状态、触发链、恢复或复发情况和证据位置 | 聚焦指定问题、还原告警链条和形成可复核结论 |
说明
可视化页面中的“智能检测”用于 Agent 日志体检。指定问题的深入诊断和告警链条分析可以在已配置 openUBMC Studio MCP 服务的 AI Agent 对话中发起。
使用前准备
如果活动栏中没有“一键日志解析”图标,请先执行以下操作:
- 在 openUBMC Studio 中打开插件市场,搜索“一键日志解析”。
- 安装插件,并按照提示重新加载窗口。
- 确认活动栏中出现“一键日志解析”图标。
使用 Agent 日志体检前,还需要满足以下条件:
- 已登录 openUBMC 社区。
openubmc-rag扩展已启用。- 当前网络可以访问配置的 LightRAG 服务。
- AI Agent 可以访问 openUBMC Studio MCP 工具。
AI Agent 会在读取日志前检查 RAG 状态。未登录、RAG 工具未启用、网络异常或状态响应无法解析时,日志体检会停止并显示处理建议。
说明
如果所有 MCP 工具均提示网络错误,请将 localhost、127.0.0.0/8 和 ::1 加入代理直连列表或 NO_PROXY,然后完全重启 openUBMC Studio 和 AI Agent。
打开一键日志
一键日志解析支持 Windows、Linux、WSL、SSH 远程工作区和容器工作区。
支持导入以下内容:
.tar.gz、.tgz、.tar或.zip格式的 BMC 一键日志压缩包。- 已解压且包含
AppDump子目录的 dump 文件夹。
操作步骤如下:
单击活动栏中的“一键日志解析”图标。
根据日志形态,选择“打开 BMC 一键日志压缩包”或“打开 dump 目录”。
选择日志压缩包或 dump 根目录。选择目录时,应选中包含
AppDump子目录的 dump 根目录。等待解压和解析完成,确认日志页面已在编辑器区域打开。
也可以通过以下入口打开日志:
- 在资源管理器中右键单击日志压缩包或 dump 文件夹,选择对应的一键日志解析命令。
- 单击“最近打开”中的历史记录,重新打开对应日志。
“最近打开”最多保存 30 条记录。同一日志已经打开时,再次打开只会定位到原页面。删除一条最近记录时,对应的日志页面也会关闭。
查看日志包要求
日志包中必须存在名称完全匹配的 AppDump 目录,典型结构如下:
dump_info/
├── AppDump/
├── LogDump/
├── RTOSDump/
└── OSDump/插件最多向下查找 6 层目录。AppDump 是导入日志时的必需目录;缺少 LogDump、RTOSDump 或 OSDump 时,日志包仍可能打开,但对应页面会显示无数据或目录缺失。
| 项目 | 限制 |
|---|---|
| 单次选择 | 1 个日志包,可以重复导入不同日志包 |
| 支持格式 | .tar.gz、.tgz、.tar、.zip |
tar 系列解压后总内容 | 不超过 8GiB |
tar 系列归档条目 | 不超过 200000 项 |
| ZIP 解压 | 依赖系统中的 tar 或 unzip,单次命令最长执行 300 秒 |
AppDump 查找深度 | 最多递归 6 层 |
注意
插件不单独限制压缩文件本身的大小。处理大型日志包时,需要为远程暂存文件、中间 .tar 文件和解压目录预留足够空间,建议可用空间至少为解压后内容大小的两倍。
查看诊断信息
日志面板按照不同领域组织现场信息,常用视图包括:
- 现场概览:查看机型、健康状态、FRU、板卡和软件版本。
- 告警与传感器:查看告警记录、活动状态、传感器读值和门限信息。
- 运行状态:查看性能、功率、进风温度、调速策略和 PID 配置。
- 硬件关联:查看线缆检测、同步属性、CSR 和丝印信息。
- 日志与诊断:查看操作日志、应用日志、框架日志、维护日志、驱动日志、串口日志、
journalctl、一键日志原始文件和故障诊断文件。 - 智能检测:使用 AI Agent 和 openUBMC RAG 进行日志体检。
不同页面按需解析日志文件,不会在导入时将所有文件一次性加载到内存。日志视图支持筛选、大小写匹配、全字匹配、正则表达式、匹配项跳转和保存搜索,具体可用项以当前视图为准。
使用 Agent 进行日志体检
日志体检会将本地日志证据与 openUBMC RAG 检索结果关联,并按照严重程度、紧急度和置信度排列问题。故障案例库是可信度最高的知识来源,但不是唯一可用来源。
说明
流程图中的问题数量和内容仅用于说明操作过程。实际问题数量、严重程度和诊断结论以导入日志中的证据及 RAG 检索结果为准。
复制分析 Prompt
打开日志页面顶部的“智能检测”。
单击“复制 Prompt 模板”。
将 Prompt 粘贴到能够访问 openUBMC Studio MCP 工具的 AI Agent 中。
发送 Prompt,等待 AI Agent 完成 RAG 状态检查并开始分析。
Prompt 已包含以下约束,无需手动填写日志路径:
- 包含当前日志包的显示名称、分析任务标识和回调地址。
- 只允许读取当前分析任务绑定的日志包。
- 必须先检查 RAG 连接和社区登录状态。
- 必须保留 RAG 引用的真实来源,其中故障案例库来源具有最高可信度。
- 每个问题必须同时提供 RAG 匹配内容和本地日志证据。
- 分析完成后,按照用户配置的 TopN 返回结果。
查看实时问题
AI Agent 分析期间,每个已确认的问题会实时显示在“Agent 日志问题”区域。问题卡片包含以下内容:
- 严重程度:
CRITICAL、HIGH、MEDIUM或LOW。 - 紧急度:综合故障影响、恶化可能、冗余能力和修复窗口计算的 0~100 分。
- 置信度:本地多源证据与 RAG 知识的一致程度。
- 可能原因和处理建议。
- RAG 匹配内容、来源及可信度。
- 日志片段、日志包内相对路径和定位信息。
说明
截图中的故障名称和日志内容仅用于演示界面结构,不代表产品预置的诊断结论。
同一根因产生的重复现象应合并为一个问题。分析完成后,插件会依次按照严重程度、紧急度和置信度排序,并展示最紧急的 TopN 问题。
配置 TopN
TopN 默认值为 10,可以设置为 1~50:
- 单击“一键日志解析”侧边栏标题栏中的齿轮图标。
- 在设置页面中修改
bmcstudio.logReviewer.analysisTopN。 - 创建新的分析会话,使新设置生效。
TopN 只限制分析完成后页面和 PDF 报告中展示的问题数量。AI Agent 可以在分析过程中回写更多候选问题,插件会在完成时统一排序和截取。已经打开的分析会话继续使用创建会话时的 TopN 值;如需让同一日志使用新的 TopN,请先从“最近打开”中删除该日志,再重新导入并发起分析。
导出 PDF 报告
“导出为 PDF 报告”仅在分析状态变为“已完成”后可用:
- 确认页面显示“Agent 智能分析:已完成”。
- 单击“导出为 PDF 报告”。
- 选择保存路径和文件名。
- 使用 PDF 阅读器打开报告,核对摘要、问题排序、RAG 内容、日志证据和处理建议。
报告在当前 openUBMC Studio 扩展宿主运行期间可以持续导出。完全关闭或重启 openUBMC Studio 后,内存中的分析会话不会保留,需要重新发起分析。
处理会话异常
| 场景 | 预期行为 |
|---|---|
| 分析期间关闭日志页面 | AI Agent 回调可以继续写入后台会话,重新打开同一日志后恢复状态 |
| 页面关闭较长时间后重新打开 | 运行中的会话按照空闲策略管理,重新打开并操作后刷新活跃状态 |
| 从“最近打开”中删除日志 | 对应页面关闭,关联分析会话被清理 |
| 清空“最近打开” | 所有日志页面关闭,关联分析会话被清理 |
| RAG 不可用 | 分析停止并显示登录、网络或配置建议,不生成主观问题 |
| 日志中没有诊断内容 | 日志包格式有效时,分析完成并显示 0 个问题,PDF 报告可以导出 |
缺少 AppDump | 导入失败,并提示文件可能不是 openUBMC 一键日志包 |
缺少 AppDump/fault_diagnosis | 结构化诊断失败,AI Agent 将分析任务标记为失败 |
使用 AI Agent 定向诊断日志
在 AI Agent 对话中提供日志路径和分析目标,例如:
请打开并诊断 /path/to/bmc-log.tar.gz,先给出设备健康概览、关键异常和对应证据位置。openUBMC Studio 会打开同一份日志的可视化面板,同时将机型、健康状态、硬件清单、告警、传感器、性能、调速、线缆和 CSR 等结构化数据提供给 AI Agent。后续可以继续要求 AI Agent 聚焦某个领域,例如:
继续分析当前日志中的散热异常,关联传感器、调速策略、功率和相关运行日志。分析告警链条
分析单条告警时,建议提供以下任一组定位信息:
- 事件码和发生时间。事件码格式为
0x后接 8 位十六进制数字,时间格式为YYYY-MM-DD HH:mm:ss。 sel.txt中的事件记录 ID。openUBMC Studio 可以据此解析事件码和发生时间。- 需要区分多个告警实例时,再补充组件或实例名称。
示例:
基于当前打开的一键日志,分析事件码 0x12345678、时间 2026-08-28 14:23:16 的完整告警触发链。
请说明当前告警状态、已观察到和缺失的阶段、恢复与复发情况,并在每个节点标注证据文件及行号或数据库记录位置。AI Agent 会根据日志中的实际证据按需给出以下内容:
- 唯一告警锚点及其匹配方式,避免混淆相同事件码的不同告警实例。
- 告警当前状态,包括
active、inactive、conflicted或unknown,并分别列出状态依据。 - 已观察到的触发流程,例如采样、数值转换、门限或事件规则求值、事件存储和北向上报;未采集到的阶段会标记为缺失。
- 运行期事件与 dump 内
.sr文件中CSR Event/PowerEvent定义、属性和直接引用关系的关联结果。 Assert/Deassert恢复配对、复发次数下界、历史覆盖范围和可能的时钟跳变。- 每个关键事实对应的 dump 相对路径、行号、列号、JSON Pointer 或数据库定位信息。
注意
告警链条分析仅关联 dump 中可观察到的事实,不会自动将时间相邻的事件视为因果,也不会使用静态 CSR 定义证明规则在告警时刻一定执行。日志缺失或状态冲突时,结论会保留为“证据不足”或“存在冲突”,需要结合现场信息和业务知识继续判断。
了解数据范围和安全边界
- AI Agent 日志工具只能访问分析任务绑定的日志包,不会自动选择其他历史日志。
- 日志证据使用日志包内相对路径,不会向页面回写宿主绝对路径。
- 日志体检唯一允许访问的外部知识是 openUBMC RAG 状态和知识检索结果。
tar系列导入会拒绝路径逃逸、绝对路径和解压炸弹,并忽略符号链接、硬链接及设备文件。- PDF 报告只包含当前分析会话中的摘要、TopN 问题、RAG 依据和日志证据。
八、BMC 环境管理
本章介绍 openUBMC Studio 的 BMC环境管理 插件(扩展 ID:openubmc.bmcstudio-bmc-remote)的功能与使用方法。该插件用于在 IDE 内集中管理多台 BMC 环境、批量下发命令、上传文件、一键升级固件、实时监控日志、自动调试组件以及远程 GDB 调试。
BMC环境管理插件在活动栏注册一个「BMC环境管理」容器,下设两个视图:
- BMC Environments:BMC 环境连接树,按分组组织,管理连接的元数据与凭据。
- Command Macros:命令宏树,维护可批量下发的命令序列。
插件的核心能力包括:
- 连接管理:以分组方式管理多台 BMC,单条连接可任选 SSH、Telnet 或 WebView 方式接入。
- 连通性管理:手动或周期性探测 BMC 可达性,并在状态变化时播报。
- 命令宏:预定义命令序列与变量,按「全部可达 / 分组 / 手动多选」批量下发,回收结构化结果。
- SFTP 上传:从资源管理器右键将本地文件或目录上传到 BMC。
- HPM 一键升级:右键
.hpm固件包,并发升级多台 BMC,全程进度可视。 - 实时日志监控:实时
tail远端/var/log日志,支持日志轮转衔接、时间回绕校准与原始文件下载。 - 组件自动调试:根据 Git 变更自动部署 Lua、C/C++ 和北向接口调试内容,详见 C/C++、Lua 与北向接口快速调试。
- 远程 GDB 调试:附加板端服务或部署独立程序进行源码级调试,详见 BMC 远程 GDB 调试。
- MCP 工具:对外暴露 27 个 MCP 工具,供 AI Agent 调用,实现自然语言驱动的批量运维与告警证据分析。
使用前准备
环境要求
- 运行平台:推荐 Linux(Ubuntu)。连接管理以 Linux 为目标平台;HPM 升级与日志监控仅依赖 Node 内置模块,三平台行为一致。
- 系统依赖:建议预装以下工具:
openssh-client:SSH 接入与 SFTP 上传。telnet:Telnet 接入与实时日志监控。tar(支持-z):目录上传与日志下载解压。libsecret-1-0/gnome-keyring:Linux 下用于安全存储密码。
安装插件
- 在 openUBMC Studio 中打开插件市场(活动栏的「扩展」图标,或按
Ctrl+Shift+X),搜索「BMC环境管理」,点击「安装」。 - 安装完成后重启 IDE 生效。活动栏出现「BMC环境管理」图标即表示安装成功。
说明:
若已安装 openUBMC Studio 主插件,BMC环境管理作为配套扩展随其一同提供,具体获取方式请参考 openUBMC Studio 安装指南。
BMC 环境管理
新增分组
连接以「分组」为单位组织,系统默认创建一个分组。
- 在 BMC Environments 视图标题栏单击「Add Group」按钮。
- 输入分组名称并确认。
分组的右键菜单支持「Add」「Rename Group」「Delete Group」。分组非空时拒绝删除(保护数据),需先清空或迁移其下连接。
新增连接
- 单击 BMC Environments 视图标题栏「Add BMC Environment」按钮,或在某个分组上右键选择「Add」。
- 在弹出的表单中填写连接信息并保存。
连接字段说明:
| 字段 | 说明 | 备注 |
|---|---|---|
名称 name | 连接显示名称 | 必填 |
IP 地址 host | BMC 的 IPv4 地址 | 必填,仅接受 IPv4,非法地址会被拒绝 |
用户名 username | 登录用户名 | 必填 |
密码 password | 登录密码 | 必填(新增时);密码存于操作系统级安全存储,不落配置文件、不进日志 |
分组 group | 所属分组 | 不选则落入首个分组 |
标签 tags | 标签数组 | 可选,用于归类 |
描述 description | 连接描述 | 可选 |
接入 BMC
在连接上右键,选择接入方式:
- Connect via SSH:使用进程内 SSH 客户端登录(兼容老款 BMC 的弱算法与 keyboard-interactive 交互),以伪终端呈现。默认在编辑器区(接近全屏)打开,由配置项
bmc.autoMaximizeTerminal控制,关闭后回到底部面板。 - Connect via Telnet:调用系统
telnet命令接入,需本机已安装 telnet。Telnet 不会自动发送密码,需手动输入。 - Open in WebView:使用系统浏览器打开 BMC Web UI(
https://{host})。
SSH 握手超时由 bmc.connectionTimeout(默认 30 秒)控制。
编辑与删除
- Edit Configuration / Change Password:修改连接信息。编辑密码时留空表示保留原密码。
- Disconnect:发送
exit、关闭终端并注销会话。 - Delete:删除前会弹出模态确认;删除会先关闭相关终端并清理该连接的凭据。
说明:
删除连接会连带删除其凭据;删除分组前需先清空连接或迁移。
连通性管理
插件通过 TCP 探测 SSH 22 端口判断 BMC 可达性,连接树图标实时反映状态(不可达时变红),分组徽章显示「X/Y 可达」。
- 手动探测单个:右键连接 → 「Check Connection Health」,提示可达 / 不可达。
- 全量刷新:单击视图标题栏「Refresh」,先把全部连接置为检测中再统一探测。
- 周期检测:右键连接 → 「开启自动检测连通状态」/「关闭自动检测连通状态」。开启后每 10 秒 探测一轮,仅对开启该项的连接生效。
- 状态播报:右键连接 → 「开启连通性变更播报」/「关闭连通性变更播报」。上线提示「{分组}/{名称} 已上电」,掉线提示「{名称} 已下电」。
探测超时由 bmc.pingTimeout(默认 3000 毫秒)控制。可达性 = 「TCP 22 端口通 + 已配置凭据」;运行宏、上传、升级前均以此作为就绪判据。
命令宏
命令宏用于预定义「一组有序 shell 命令 + 变量 + 失败策略」,运行时按目标范围批量下发到 BMC,每台环境复用一条 SSH 连接执行完整命令集,并回收结构化的「环境 × 命令」结果矩阵。
新建宏
- 单击 Command Macros 视图标题栏「Add Command Macro」按钮。
- 在表单中填写宏内容并保存。
宏字段说明:
| 字段 | 说明 | 默认值 / 范围 |
|---|---|---|
名称 name | 宏名称 | 必填 |
描述 description | 宏描述 | 可选 |
命令 commands | 有序命令列表 | 至少 1 条;每条可单独设置 description、timeoutMs、abortOnFailure(遇错:默认 / 中断 / 继续) |
变量 variables | 自定义变量(键名不含 ) | 与内置变量合并;同名时内置优先 |
失败策略 onError | 宏级策略 | continue(继续)/ abort(中断该环境后续命令);默认 continue |
命令超时 timeoutMs | 单条命令超时(毫秒) | 默认 30000;单条命令可覆盖 |
并发度 concurrency | 环境间并发度 | 1–8,默认 1 |
标签 tags | 标签(表单中逗号分隔) | 可选 |
变量替换
命令模板支持变量占位:
语法:
$VAR或${VAR};$转义为字面 。内置变量(按每台环境各自替换,优先级高于自定义):
变量 含义 $HOSTBMC IP 地址 $USER登录用户名 $NAME连接名称 $CONN_ID连接 ID $GROUP分组名称
说明:
未定义的变量保留原样(不会被置空),以避免因拼写错误导致类似 rm -rf /tmp/$UNDEF/* 的危险展开。
运行宏
- Run Macro...:右键宏 → 选择目标范围(「所有可达且有凭据的环境」/「按分组」/「手动多选」)→ 模态确认后执行。
- Run on Group... / Run on All Reachable:右键宏快速按分组或全部可达执行;后者也可用视图标题栏的火箭图标。
运行前会弹出确认:「命令可能对 BMC 造成不可逆影响,是否继续?」。
每台环境内的命令严格串行(后一条常依赖前一条结果);环境间并发受 concurrency 限制(上限 8)。不可达或无凭据的环境自动跳过并标注,不阻断其他环境。每台环境的结果状态包括:
| 状态 | 含义 |
|---|---|
ok | 全部命令成功 |
partial | 部分命令失败 |
aborted | 该环境被中断(如命令超时) |
unreachable | 不可达 |
error | 无凭据或连接失败 |
注入终端
除批量执行外,宏还支持把命令注入到已打开的终端:
- Run Macro in Terminal...:右键某连接 → 选择宏 → 命令注入该连接已打开的 SSH/Telnet 终端,复用连接与终端上下文,输出保留在终端中。
- 双击宏:注入当前活动终端(任意终端;若该终端属于某 BMC 连接,则解析其内置变量)。
注入模式无法读回退出码,因此失败判断交由远端 shell:全部「继续」时按换行拼接逐条执行;存在「中断」时用 && 串联,并把「继续」型命令包成不阻断链路的形式。
筛选与结果
- Filter by Tag:视图标题栏按标签筛选宏(含「无 tag」选项)。
- 结果写入 BMC Remote 输出通道(OutputChannel),包含每条命令的退出码、stdout、stderr 与汇总。
SFTP 上传
- 在资源管理器中右键本地文件或目录 → 「上传到 BMC 环境」。
- QuickPick 列出全部连接并实时探测连通性,仅可达环境可选。
- 选择目标 BMC 后,进度通知显示上传过程,完成后默认上传到远端
/tmp。
单文件使用 SFTP 直传;目录上传采用「本地 tar.gz 打包 → 传输 → 远端 tar -xzf 解压」流程。
说明:
目录上传需本机与远端均安装 tar(支持 -z),缺失会提示安装方式。无凭据或不可达的环境不可选。
HPM 一键升级
- 在资源管理器中右键
.hpm固件包 → 「一键升级到 BMC 环境」(仅.hpm文件出现该菜单项)。 - 多选目标 BMC(实时探测连通性,不可达项自动忽略),仅保留可达且有凭据的环境。
- 模态危险确认:「将对 N 个环境升级固件 xxx.hpm,升级期间 BMC 可能重启且不可中断,是否继续?」。
- 进度通知显示整体进度,完成后给出成功 / 失败汇总;失败环境的右下角通知可一键打开输出查看原因。
升级按 BMC HTTPS REST 协议执行「登录 → 上传 → 触发 → 轮询 → 登出」,使用 443 端口,自签名证书自动放行。
相关配置项:
| 配置项 | 默认值 | 说明 |
|---|---|---|
bmc.upgradeConcurrency | 3(1–8) | 多 BMC 并发度,重操作建议保守 |
bmc.upgradePollDeadlineMs | 600000 | 单台轮询整体硬超时(默认 10 分钟) |
bmc.upgradePollErrorTolerance | 5 | 轮询连续失败容错次数,兼容升级中途 BMC 重启 |
bmc.upgradeUploadTimeoutMs | 300000 | REST 上传 HTTP 超时(超时自动转 SFTP 兜底) |
BMC 重启期间,进度条数值暂停在最后已知值,提示信息切换为「设备异常不通,正在尝试重新查询升级状态」,避免被误判为卡死或误报成功。常见失败原因:登录失败(检查账号密码与 443 端口)、触发失败、状态异常、轮询连续失败、上传失败、网络错误。
注意:
升级为破坏性、不可逆操作,一旦开始不可取消。请确认固件版本与目标环境正确后再执行。
实时日志监控
- 在连接树右键某连接 → 「实时日志监控」。
- 插件通过 Telnet 列出
/var/log,归并出日志基名,QuickPick 选择目标日志。 - 打开日志监控 Webview(标题「{连接名} 日志监控」),实时追加日志。
- 顶部按钮:「日志信息下载」(可选「下载当前窗口内容」/「下载远程原始文件」)、「清空」、「停止」;滚动离开底部时出现「回到底部」。
核心能力:
- 日志轮转无缝衔接:跟随文件名
tail,在日志压缩切换瞬间自动重开新文件,流不中断。 - 时间回绕校准:当系统时间回绕(年份小于
rewindMinYear,典型如 1970)时,自动估算并标注[估算],时间恢复后线性插值回填[校准]。 - 断线自动重连:默认开启,退避重连且不重置状态机。
- 下载双通道:优先 SFTP 取回原始文件(含
.gz);SSH/SFTP 不可用时自动回退 Telnet 八进制传输。 - 下载后自动拼接:解压所有
.gz并按时间顺序拼接为完整日志。
相关配置项:
| 配置项 | 默认值 | 说明 |
|---|---|---|
bmc.logMonitor.maxBufferedLines | 5000 | 后端缓冲日志行数上限(超出丢最旧) |
bmc.logMonitor.tailInitialLines | 200 | 启动时初始输出行数 |
bmc.logMonitor.rewindMinYear | 2000 | 年份小于该值视为回绕 |
bmc.logMonitor.autoReconnect | true | 断线是否自动重连 |
bmc.logMonitor.reconnectAttempts | 3 | 自动重连尝试次数 |
bmc.logMonitor.downloadGzip | true | 下载原始文件是否包含 .gz |
说明:
仅开放 SSH(23 端口不通)的 BMC 无法使用日志监控。下载原始文件时密码可选(仅 SFTP 下载需要,缺失时自动回退 Telnet 传输)。
配置项总览
除上述章节提到的配置外,所有配置集中在 bmc.* 命名空间。可通过侧栏视图标题栏的齿轮按钮(「Open Settings」)直接打开本扩展配置页。
| 配置项 | 类型 | 默认值 | 用途 |
|---|---|---|---|
bmc.connectionTimeout | number | 30000 | SSH 连接超时(毫秒) |
bmc.pingTimeout | number | 3000 | 可达性 TCP 探测超时(毫秒) |
bmc.autoMaximizeTerminal | boolean | true | BMC 终端在编辑器区(而非底部面板)打开 |
bmc.upgradeConcurrency | number | 3 | HPM 升级并发度(1–8) |
bmc.upgradePollDeadlineMs | number | 600000 | 单台升级轮询整体硬超时 |
bmc.upgradePollErrorTolerance | number | 5 | 轮询连续失败容错次数 |
bmc.upgradeUploadTimeoutMs | number | 300000 | HPM 上传 HTTP 超时 |
bmc.logMonitor.* | — | — | 日志监控相关参数,见「实时日志监控」章节 |
与 AI 协作:MCP 工具
插件对外暴露 27 个 MCP 工具,可由 openUBMC Studio 的 MCP 宿主以鸭子类型发现,供 AI Agent 调用,实现自然语言驱动的批量运维与告警证据分析。凭据由安全存储服务端读取,绝不进入工具的输入参数或返回结果;连接、分组、宏均可用 ID 或名称(大小写不敏感)引用。
主要工具分类:
- 查询与探测:列出连接 / 分组、健康探测。
- SSH 执行 / SFTP 上传:单命令执行、单文件 / 目录上传。
- 连接与分组管理:增删改、自动检测与播报开关。
- 命令宏:列出(可按标签过滤)、运行、新增、删除。
- HPM 升级:指定固件与目标范围,返回逐环境结果与汇总。
- 告警证据分析:按事件码/时间或记录 ID 编译告警证据、定点读取报告,并生成有界的告警链条分析流程。
连接、宏、上传和升级等运维类 UI 命令与对应 MCP 工具共用同一套执行核心;告警证据分析只读 dump,不会修改日志或目标 BMC。
常见问题与注意事项
- 密码安全:所有密码存于操作系统级安全存储,不落配置文件、不进日志、不在 MCP 输入输出中回显。
- 平台支持:连接管理以 Linux 为目标平台;Windows / macOS 未纳入连接管理的测试范围。
- 可达性判据:宏、上传、升级在执行前均以「TCP 22 通 + 有凭据」作为就绪判据,不可达环境自动跳过。
- HPM 升级不可逆:一旦开始不可取消,BMC 可能中途重启,请确认无误后再执行。
- Telnet 依赖:Telnet 接入与日志监控依赖系统
telnet命令;目录上传与日志下载依赖tar。
九、快速调试 C/C++、Lua 与北向接口
快速调试功能由“BMC 环境管理”插件提供。它根据组件中已保存到磁盘的 Git 变更自动生成调试计划,将必要文件部署到目标 BMC,重启受影响的服务并验证是否生效,适用于开发和自测阶段的快速迭代。
说明
界面中的功能名称为“自动调试当前组件”。该功能用于快速部署和运行验证,不启动 GDB。如需使用断点、单步和变量查看,请执行“GDB 调试: 选择 BMC 连接并启动”,并参考使用 openUBMC Studio 远程调试 BMC。
支持的变更类型
| 变更类型 | 处理方式 | 是否构建 |
|---|---|---|
| 普通组件或北向接口中的运行时 Lua | 使用已保存源码直接部署到运行时目标 | 否 |
| 可证明为直接运行时文件的 JSON | 完成 JSON 语法和目标映射检查后直接部署 | 否 |
| 北向接口映射 JSON 等生成型输入 | 隔离构建当前组件,仅部署该输入影响的运行时生成结果 | 是,一轮最多一次 |
| C/C++ 源文件、头文件和 DMC 等编译型输入 | 隔离构建当前组件,部署本次构建产生的 ELF 或 Lua C 模块 | 是,一轮最多一次 |
| Lua、北向配置和 C/C++ 混合变更 | 合并为同一调试计划,直接部署项与构建产物一并生效 | 按需构建一次 |
README、设计文档和测试文件等无运行时影响的变更会被忽略;文件新增、删除、重命名、冲突或无法可靠映射的变更会被阻断,并在连接 BMC 前给出原因。
使用前准备
使用 openUBMC Studio 打开组件仓或 rackmount 仓。仓库中应包含
mds/service.json。将工作区标记为受信任,并确保组件代码由 Git 管理。自动调试可以采集已暂存、未暂存和未跟踪的修改。
单击活动栏中的“BMC 环境管理”图标。
在“BMC 环境管理”中添加目标 BMC,并确认连接地址和凭据可用。
仅包含可直接部署的 Lua/JSON 修改时,不依赖本地构建环境;C/C++ 和生成型北向配置的修改需要在支持 Bingo/Conan 的构建环境中调试。
仅在已授权、可通过 Telnet 连接到具有 root 权限的 Shell 环境的开发板或调试环境中使用此功能。自动调试会临时替换运行时文件并重启受影响的 systemd 服务,不应直接用于生产设备。
执行自动调试
保存本次需要验证的修改。若组件内仍有未保存文件,openUBMC Studio 会要求保存后再继续。
通过以下任一入口执行“自动调试当前组件”:
在业务仓列表中选择组件仓的快捷操作“自动调试当前组件”或“按 Git 提交基线自动调试”。
在“BMC 环境管理”的连接上右键单击,选择“自动调试当前组件”。
按
Ctrl + Shift + P打开命令面板,执行“BMC 调试: 自动调试当前组件”。
根据入口选择或确认目标 BMC。openUBMC Studio 会采集当前组件的 Git 变更并生成初步计划。
检查修改文件数、处理策略、预估替换文件数和是否需要构建。若需要构建,单击“开始构建”;直接部署场景单击“继续”。
构建和最终映射完成后,再次检查替换文件数及影响的逻辑应用,单击“确认自动调试”。
等待 openUBMC Studio 完成文件上传、完整性校验、服务归并、运行时激活、服务重启和结果验证。
说明
需要验证一段连续提交中的最终差异时,可以使用“按 Git 提交基线自动调试”,选择一个提交、标签或分支作为基线。普通“自动调试当前组件”只处理当前 Git 工作树修改。
验证调试结果
自动调试完成后,按以下步骤验证结果:
- 确认 openUBMC Studio 显示调试成功,并核对替换文件数和受影响服务数。
- 打开“BMC GDB”输出通道,检查详细计划、构建输出、运行时目标、服务名称和校验结果。
- 执行本次修改对应的业务操作,确认功能行为符合预期。
切换默认调试目标
如需切换默认调试目标,执行以下操作:
- 单击状态栏中的“BMC:当前环境名称”。
- 在环境列表中选择目标 BMC。
状态栏显示所选环境名称时,表示默认调试目标已切换。
调试生效与连续迭代
自动调试不会覆盖 BMC 的只读系统分区,而是在 /data/bmc-debug 下准备会话私有的最小替换集,通过临时挂载或服务配置让目标进程使用调试版本。openUBMC Studio 会进行以下校验:
- Lua、JSON 和可执行文件的运行时目标必须来自本轮调试目录,且内容摘要一致。
- 共享库必须在服务重启后由目标进程从本轮调试目录加载。
- 多个逻辑应用属于同一个 systemd 服务时,会合并替换内容,该服务只重启和验证一次。
- 任一服务组激活失败时,后续服务停止执行,已经生效的服务组按逆序恢复。
修改代码并再次执行自动调试时,新版本会直接接管同一服务的上一轮 openUBMC Studio 调试会话,不需要每轮都先恢复环境,也不会叠加多层调试挂载。
说明
自动调试仅支持替换目标环境中已存在的组件和文件。涉及文件新增或删除时,请构建并升级固件包进行验证。
恢复调试环境
完成验证后,通过以下任一入口恢复目标 BMC:
- 在“BMC 环境管理”的目标连接上右键单击,选择“恢复调试环境”。
- 在业务仓快捷操作中选择“恢复调试环境”。
- 打开命令面板,执行“BMC 调试: 恢复调试环境”。
openUBMC Studio 会根据板侧会话清单和实际挂载、临时服务配置及进程状态,仅清理能够证明属于 openUBMC Studio 的调试资源,并将服务恢复到首轮调试前的状态。若提示恢复不完整,请保留“BMC GDB”输出中的会话和路径信息,修复连接后再次执行恢复,不要直接批量删除 /data/bmc-debug。
配置项
| 配置项 | 默认值 | 说明 |
|---|---|---|
bmc.quickRestart.enabled | true | 是否在组件工作区启用自动调试 |
bmc.quickRestart.buildToolPath | bingo | 构建型修改使用的构建工具 |
bmc.quickRestart.buildArgs | ["build", "-bt", "debug"] | 隔离构建参数 |
bmc.quickRestart.buildTimeoutMs | 1800000 | 单次构建超时,默认 30 分钟 |
bmc.quickRestart.maxChangedFiles | 2000 | 单次自动调试允许采集的最大修改文件数 |
注意
自动调试用于临时验证,不能替代正式组件包、固件构建和升级流程。最终交付前仍需执行项目规定的构建、测试和发布检查。
十、远程调试 BMC
openUBMC Studio 通过 BMC 环境管理扩展(openubmc.bmcstudio-bmc-remote)提供远程 GDB 调试能力,用于对板端 C/C++ 组件进行源码级调试。扩展可以完成板端部署、gdbserver 启动、符号与源码路径解析和会话清理。
注意
仅在已授权的隔离调试板上使用远程调试,不要对生产环境中的 BMC 执行调试操作。
选择调试方式
| 场景 | 调试方式 | 是否进入 GDB |
|---|---|---|
| 调试板上正在运行的 systemd 业务服务 | Attach(附加)调试 | 是 |
| 调试独立测试程序、工具或 carrier | Standalone(独立程序)调试 | 是 |
| 仅验证新产物能否运行或查看日志 | Deploy & Restart(快速部署并重启) | 否 |
组件仅输出 .so 库 | 编写 carrier 后使用 Standalone 调试 | 是 |
在“运行和调试(Run and Debug)”下拉列表中选择 launch.json 配置。request 为 attach 的配置使用 Attach 调试,request 为 launch 的配置使用 Standalone 调试。
使用前准备
- 调试版产物:执行
bingo build -bt debug,构建包含 DWARF 调试信息的产物。推荐使用-g -O0编译选项。 - 本机交叉 GDB:安装
gdb-multiarch或aarch64-linux-gnu-gdb。 - BMC 连接:在“BMC 环境管理”中配置管理 IP 地址、SSH 端口和 Administrator 账号凭据。
- 板端 gdbserver:通常无需手动安装,扩展会探测板端
gdbserver或使用内置版本。
说明
首次调试时,openUBMC Studio 会自动安装 Eclipse CDT GDB Adapter 扩展。离线环境需要提前安装该扩展。生产网络或非隔离网络建议将 bmc.gdb.rspTransport 设置为 tunnel,使 RSP 流量通过 SSH 隧道传输。
使用 Attach 调试板上服务
Attach 调试会根据构建产物的二进制名称发现板端服务。以下 launch.json 配置将 artifact 指向构建产物目录或 ELF 文件:
{
"version": "0.2.0",
"configurations": [
{
"type": "bmc-gdb",
"request": "attach",
"name": "BMC 调试:附加板上服务",
"bmcConnection": "lab-bmc-03",
"artifact": "/home/dev/.conan2/p/b/xxxx/p", // 构建产物目录或 ELF 文件
"stopAtEntry": true,
"buildIdCheck": "warn"
}
]
}操作步骤如下:
- 执行
bingo build -bt debug,确认构建产物包含调试信息。 - 确认板端目标服务处于
active状态。 - 在“运行和调试”下拉列表中选择 Attach 配置。
- 按
F5启动调试。 - 在“BMC 调试会话”视图中确认各准备阶段均已通过。
扩展会根据 Build ID 比对结果选择执行策略:
- Build ID 匹配:不部署、不替换且不重启服务,仅使用
gdbserver --attach附加到当前进程。 - Build ID 不匹配:选择“准备调试版本并附加”可以部署调试产物、临时替换并重启服务,会话结束后自动恢复;也可以选择“继续仅汇编调试”或“选择其他 Artifact”。替换和重启前,openUBMC Studio 会显示影响确认窗口。
使用 Standalone 调试独立程序
Standalone 调试适用于独立工具、测试程序、尚未安装的新服务,以及为纯库组件编写的 carrier。以下配置将 artifact 指向构建输出目录:
{
"version": "0.2.0",
"configurations": [
{
"type": "bmc-gdb",
"request": "launch",
"name": "BMC 调试:部署并启动程序",
"bmcConnection": "lab-bmc-03",
"artifact": "/home/dev/build/output", // 推荐使用目录,也可以直接指定 ELF 文件
"stopAtEntry": true,
"buildIdCheck": "warn"
}
]
}使用 Standalone 调试时,请注意以下事项:
artifact指向目录时,扩展会扫描其中的 AArch64 可执行 ELF。只有一个候选文件时自动选用,存在多个候选文件时需要手动选择。- 产物包含共享库时,通过
artifactRoots指定本次构建对应的 Conan package 目录,避免混用不同版本的同名库。 - 启动程序前,扩展会执行 ABI 预检,并报告缺少共享库或符号未定义等问题。
- 调试纯
.so库时,需要编写调用目标库函数的最小 carrier,并在库函数中设置断点。
配置完成后,在“运行和调试”下拉列表中选择 Standalone 配置,按 F5 启动调试,并在“BMC 调试会话”视图中确认部署和启动阶段均已通过。
快速部署并重启组件
Deploy & Restart 不进入 GDB。该功能会将产物部署到板端影子目录、重启服务,并通过 /proc/<pid>/maps 验证目标进程是否加载新产物,适用于修改静态库后快速确认服务能否启动。
- 按
Ctrl + Shift + P打开命令面板。 - 执行“BMC调试: 快速重拉组件(部署+重启,不调试)”。
- 在“BMC GDB”输出通道中确认部署、服务重启和加载路径校验均已完成。
执行日常调试操作
断点、条件断点、日志断点、单步、变量监视和调用栈等操作均使用 openUBMC Studio 原生调试界面。常用 GDB 控制台命令如下:
| 命令 | 作用 |
|---|---|
bt、bt full | 查看当前线程的调用栈,或包含局部变量的调用栈 |
thread apply all bt | 查看所有线程的调用栈,用于排查卡死或死锁 |
info sharedlibrary | 查看共享库加载和符号读取情况 |
print <变量>、ptype <类型> | 打印变量或查看类型定义 |
info breakpoints | 查看断点是否已验证或处于 pending 状态 |
注意
Attach 会话中的进程由 systemd 和扩展管理,不要在 GDB 控制台中执行 run,请使用 continue、next 或 step。服务在断点处暂停过久可能触发上游超时或 watchdog,请控制暂停时间。
排查常见问题
| 现象 | 原因与处理方法 |
|---|---|
| 提示“无 DWARF 调试信息” | 当前文件可能是 strip 后的 package 文件;使用 bingo build -bt debug 重新构建,并选择 build 目录中未 strip 的副本 |
| 断点显示为灰色或未命中 | 检查源码映射和 Build ID,并使用 info sharedlibrary 确认目标库已加载 |
| GDB 连接立即断开 | 检查“BMC GDB”输出中最早出现的错误,确认 gdbserver 能够启动且运行依赖完整 |
libX.so => not found | 将本次构建对应的精确 package 目录加入 artifactRoots |
变量显示 <optimized out> | 使用 -O0 -g 重新构建调试产物 |
| 服务重启后立即退出 | 查看 ABI 预检报告和 journalctl -u <unit>,排查缺少共享库或 ABI 不兼容问题 |
| 调试结束后服务仍使用调试版本 | 执行“GDB调试: 清理板侧调试残留” |
结束调试并清理环境
- 正常结束:单击调试工具栏中的“停止”。扩展会停止
gdbserver、撤销板端替换、恢复服务并删除调试产物。 - 异常退出后恢复:重新启动扩展,等待扩展自动对账和恢复。如果仍有残留,在命令面板中执行“GDB调试: 清理板侧调试残留(崩溃会话对账)”。
完成远程调试时,请遵循以下原则:
- 符号文件、运行文件和依赖库应来自同一次构建。
- 排查故障时,优先查看“BMC 调试会话”视图中最早失败的阶段。
- 使用 openUBMC Studio 的停止按钮或清理命令结束会话,确保扩展能够执行恢复流程。
十一、白牌包定制
本章介绍 openUBMC Studio 的 白牌包定制 能力:在 IDE 内通过可视化编辑器定制 BMC 白牌包的 Web 界面风格、Logo/图片、产品信息等,并一键调用 bingo wbd_build 构建出白牌固件包。
说明:
本能力由 openUBMC Studio CSR 拓扑插件(bmcstudio_csr_topolopy)提供。关于白牌包定制的官方概念与字段含义,另见 白牌包定制官方指南。
白牌包定制用于把 BMC 从默认外观/信息改造为某品牌或客户专属形态,涵盖三类定制:
- 配置定制:产品联系信息、SSL 证书字段、软件名称、主机名、客户名等,写入
web_custom.xml。 - 风格定制:Web 主界面风格(精美/简约/标准),写入
style_config.json。 - 图片定制:浏览器图标、登录页 Logo、技术支持二维码、Web 界面图片等,写入
filelist.conf声明并随包发布。
白牌包定制分两种模式:
| 模式 | 作用 |
|---|---|
| 白牌包(普通) | 把 BMC 定制为目标品牌/客户形态 |
| 清白牌包 | 一种特殊白牌包,把已定制的 BMC 恢复为默认配置 |
两类模式共用同一套可视化编辑器与构建流程。
使用前准备
- 构建工具:需安装
bmcgo或bingo,且支持wbd_build子命令。插件会优先尝试bmcgo,不可用时回退bingo。 - 工作目录:准备一个用作白牌目录的文件夹(可为空)。白牌定制涉及的核心文件会生成在该目录下,构建产物
wbd-crypt-image-signed.hpm也会落回该目录。
打开白牌定制编辑器
在资源管理器中右键单击任意文件夹,选择 「定制白牌文件」 即可打开白牌定制编辑器(webview)。
打开时的行为遵循「缺哪个补哪个」:
- 若目录下尚无白牌文件,会自动创建默认的
filelist.conf、web_custom.xml、style_config.json(默认风格beautiful、版本2.00);同时扫描目录里已存在的图片自动加入filelist.conf声明,避免「图片在但 filelist 没声明」的不一致。 - 若目录下已有白牌文件,则按现有配置加载到编辑器中。
编辑器为单例面板:同一文件夹重复右键打开会回到已打开的面板;不同文件夹各自打开独立面板,互不干扰。
编辑器界面
编辑器顶部为模式切换与版本号,下方分为「配置定制」「风格定制」「图片定制」三个区域,底部为「保存」「构建」按钮。
模式与版本号
- 模式:
白牌包/清白牌包单选。切换到清白牌模式时,会隐藏「风格定制」段、图片按 BMC 路径分组展示、构建按钮文案变为「清白牌包构建」。图片在两种模式间共享,切换不重置。 - 版本号:格式
x.y(y最多两位,如1.0、2.0、1.10),保存后写入web_custom.xml的<?xml version="..."?>头部。加载时从 XML 头部解析回填。必填且需通过正则校验,否则保存/构建按钮禁用。
配置定制(web_custom.xml)
可视化表单对应 web_custom.xml 的 17 个属性,每项带 tooltip 说明,只需填写需要的项:
| 字段 | 说明 |
|---|---|
sysContact | 维护联系人 |
dBannerContent | 默认横幅内容 |
PreSSLSeverCommonName / PreSSLSeverOrgName / PreSSLSeverCountry | 预置 SSL 证书通用名/组织/国家 |
OfficalWeb / SupportWeb | 官网 / 技术支持网址 |
Copyright | 版权信息 |
Email / Phone | 邮箱 / 电话 |
DownloadKVMLink | KVM 下载链接 |
DocSupportFlag | 文档支持标记(取值 0/1) |
SoftwareName | 软件名称 |
CustomAlarmName | 自定义告警名称 |
CustomManufacturer | 自定义厂商 |
HostName | 主机名 |
Customer | 客户名 |
保存时只输出非空字段;DocSupportFlag 取值必须为 0 或 1。
风格定制(style_config.json)
选择 Web 主界面风格 pageStyle:
beautiful(精美,默认)simple(简约)standard(标准)
pageStyle 在白牌模式下必填(不选会校验失败,保存/构建禁用);清白牌模式下该段隐藏,style_config.json 强制写空对象 {}。
图片定制(filelist.conf)
可定制 8 张图片,每张对应固定的 BMC 路径与文件名,已按类型限制只能选择对应类型图片:
| 分组 | 文件名 | BMC 路径 |
|---|---|---|
| 浏览器图标 | favicon.ico | /data/opt/pme/web/htdocs |
| 技术支持二维码 | code1.png | /data/opt/pme/web/htdocs/theme/custom/img |
| Web 界面图片 | login.png、login_logo.png、img_01.png、img_02.png、img_03.png、header_logo.png | /data/opt/pme/web/custom |
每张图卡片支持「选择图片 / 更换 / 删除」;保存时所选图片会被复制到白牌目录(文件名与 filelist.conf 的声明一致)。
保存
点击「保存」执行两步:
- 同步图片:把所选图片复制到白牌目录,文件名改为与
filelist.conf声明一致; - 生成文件:按当前配置写出
filelist.conf、web_custom.xml、style_config.json。
保存成功后右下角提示「白牌配置已保存」。
构建白牌包
点击「白牌包构建」(清白牌模式为「清白牌包构建」),流程如下:
- 校验:
pageStyle必填、DocSupportFlag合法、版本号格式正确(实时校验,通过后才允许构建); - 自动保存:有未保存改动时先自动保存,保存成功后再构建;
- 前置文件检查:核对
filelist.conf声明的文件是否都实际存在;- 仅图片缺失 → 自动清理
filelist中缺失声明并提示重新构建; - 核心文件(
web_custom.xml/style_config.json)缺失 → 报错,需手动处理;
- 仅图片缺失 → 自动清理
- 临时目录构建:把白名单文件(
filelist.conf、其声明的文件、可选beforeaction.sh/afteraction.sh)复制到临时目录,在其中执行bingo wbd_build,终端面板实时输出进度(可手动终止); - 产物落回:构建成功后产物
wbd-crypt-image-signed.hpm自动复制回原白牌目录(同名覆盖),右下角提示带完整路径; - 按钮状态:构建期间按钮变为「构建中...」并禁用,结束后无论成功/失败/终止都恢复。
说明:
为什么要切到临时目录:bingo 命令清单对当前工作目录敏感,在 manifest 项目根或组件目录下会过滤掉 wbd_build。因此构建一律先切到脱离任何 manifest 树的临时目录执行,跑完再把产物复制回来。
工具回退:优先 bmcgo,不可用回退 bingo;执行中若返回退出码 127(命令不存在)会自动换另一个工具重试一次,其他业务错误不重试。
常见失败提示:
| 场景 | 提示 |
|---|---|
| 缺图片(可自动清理) | 已自动清理 filelist 中缺失的图片声明:xxx,请重新构建 |
| 缺核心文件 | 白牌目录缺少必要文件:xxx,请重新保存完整配置 |
| bingo 退出码非 0 | 白牌包构建失败(退出码 N),请查看终端输出 |
| 用户 Ctrl+C | 白牌包构建已终止 |
| 工具未找到 | 未找到打包工具,请先安装 |
清白牌包定制(恢复默认)
清白牌包用于把 BMC 从已定制状态恢复为默认配置,三类恢复默认规则:
- 配置定制:
web_custom.xml写默认值; - 风格定制:
style_config.json写空对象{}; - 图片定制:要恢复默认的图片在
filelist.conf中将Name=改为CLEAR_ALL(BMC 路径不变),并在白牌目录创建一个空CLEAR_ALL文件。
切到清白牌模式后,8 张图按 BMC 路径分 3 组展示(浏览器图标 / 技术支持二维码 / Web 界面图片),每组有组级复选框可整组恢复默认。
说明:
CLEAR_ALL 按路径去重:BMC 检测到某路径下有 CLEAR_ALL 文件就清空整个目录,与 filelist 中声明数量无关。因此同一 BMC 路径下多张图标记恢复默认时,filelist.conf 只生成一条 Name=CLEAR_ALL(例如 Web 界面图片组 6 张共用一个路径 → 只写 1 条)。
清白牌构建链路与白牌包完全一致(临时目录 + 白名单复制 + bingo wbd_build + HPM 落回原目录);filelist.conf 的 Version 为 2.02(白牌模式为 2.00)。
常见问题与注意事项
- 按钮一直禁用:检查
pageStyle是否已选(白牌模式必填)、DocSupportFlag是否为0/1、版本号是否符合x.y(y最多两位)。 - 图片显示但构建报缺失:以文件实际存在为准;缺图片会被自动清理,按提示重新构建即可。
- 找不到
wbd_build命令:不要在 manifest 项目根或组件目录下手动执行;编辑器的临时目录构建已规避此问题。若仍报工具未找到,请确认bmcgo/bingo已安装并在 PATH。 - 产物位置:
wbd-crypt-image-signed.hpm总是生成并覆盖回右键打开的白牌目录,不会留在临时目录。 - 清白牌模式风格段消失:属预期,清白牌会把
style_config.json强制写为{}。
十二、Manifest 配置与一键出包
Manifest 配置
Manifest 配置功能用于可视化查看和修改 manifest.yml 中的出包配置,包括构建变体、默认特性、组件依赖和组件特性。配置面板会结合 lockfile 显示组件的实际版本和生效配置,并在写回文件时尽量保留原有注释、缩进和其他未修改内容。
说明:
Manifest 配置功能当前支持 Linux 环境,完整解析组件版本和特性需要安装 Conan 2.x。
建议将 manifest 仓根目录作为受信任的工作空间打开,并确认目标产品的配置文件位于 build/product/<产品线>/<机型>/manifest.yml。
打开出包配置
- 在 openUBMC Studio 中打开需要配置的
manifest.yml文件。 - 点击依赖配置上方的“打开出包配置”。也可以打开命令面板,执行“Manifest: 打开出包配置面板(变体/依赖/默认特性)”。
- 在“出包配置”页面查看 schema 类型、平台包和 lockfile 状态,以及构建变体、默认特性、组件依赖和诊断结果。
配置构建变体和默认特性
- 在“构建变体”区域选择需要配置的
manufacture或tosupporte变体。未选择变体时,页面展示并修改基线配置。 - 查看当前变体的
build_type、signature_type和platform.package信息。选择变体后,依赖列表展示该变体与基线合并后的生效结果。 - 在“默认特性 default_options”区域修改已有特性,或点击“新增一项”添加特性。
- 点击“保存默认特性”,将配置写回当前基线或变体。
说明:
切换变体或清空默认特性前,如果存在未保存的修改,openUBMC Studio 会提示是否丢弃修改。
配置组件依赖和特性
- 在“依赖 dependencies”区域查看基础组件,
dt_dependencies(gcov)、debug_dependencies(dev)、qemu_dependencies(qemu)分别以独立卡片展示。 - 根据需要执行以下操作:
- 点击“插入”,从候选列表中向当前依赖类型添加组件。
- 点击“特性”,展开组件的
options和tool_options。特性值会标识为“显式”、“继承默认”或“recipe 默认”。 - 配置变体时,点击“删除”或“取消删除”,设置或取消组件的
action: delete状态。 - 点击“移除”,删除当前基线或变体中直接声明的组件。
- 修改组件特性后,点击“保存到 manifest”。
说明:
当 platform.package 已配置时,平台整包中的组件会显示“锁”标识,其版本和特性不可在产品 Manifest 中定制。
变体中继承自基线的组件不能直接从变体中移除,如需删除其声明,请切换到基线操作。
查看 SDK 组件
- 在
platform.conan配置上方点击“查看 ibmc_sdk 组件”,或在openubmc_sdk.conan配置上方点击“查看 openubmc_sdk 组件”。 - 在“SDK 组件”页面查看组件名称、版本或 Conan 引用,以及组件清单的来源。
- 在搜索框中输入组件名称,可以筛选当前 SDK 中的组件。
组件与固件联合构建
组件与固件联合构建功能用于在业务组件仓中构建本地 Conan 包,并将该组件集成到目标产品的调试固件中。本章节适用于需要验证组件改动或生成联调固件的组件开发人员。
准备构建环境
执行组件构建前,请准备以下环境:
- 受信任的 Linux 本地、WSL 或 SSH Remote 工作空间
- 包含有效
mds/service.json的业务组件仓 - 安装在 Extension Host 中的 Conan 2.x
- 登录 Shell 可以执行
bmcgo或bingo
执行组件与固件联合构建时,还需要满足以下要求:
- Extension Host 中已安装 Git
- 目标 Manifest 可以从同一 Extension Host 访问
- 目标 Manifest 位于
build/product/<产品线>/<机型>/manifest.yml - 目标 Manifest 所在仓库具有有效的 Git HEAD
- 目标 Manifest 的修改已经保存
- 目标 Manifest 未配置非空的
include
说明
如果同时检测到 bmcgo 和 bingo,openUBMC Studio 默认使用 bmcgo,并允许用户切换构建工具。组件构建面板与固件出包页面共用此设置。仅检测到 bingo 时,openUBMC Studio 直接使用 bingo。
打开组件构建面板
- 将包含
mds/service.json的业务组件仓作为工作空间打开。 - 在资源管理器中展开“业务组件仓快捷入口”。
- 展开“openUBMC Studio Local View”。
- 单击“组件构建”。
- 等待构建计划解析完成。
通过资源管理器中的快捷入口打开组件构建面板。
组件构建面板默认进入“仅组件模式 · 不关联 Manifest”,并显示组件包、组件 options、阻断项和诊断信息。
展开“运行环境与命令详情”,可以查看登录 Shell、工具路径、命令预览和目标 profile。展开“查证与会话技术详情”,可以查看组件包身份、依赖图和沙箱覆盖的证据位置。
仅构建组件
仅构建组件适用于只需要生成本地组件包、不需要生成固件的场景。此模式不创建 Manifest 沙箱,也不执行 install_sdk、app 或 publish。
- 确认页面处于“仅组件模式”。
- 如果已经选择固件目标,单击“返回仅组件模式”。
- 在“组件 options”区域选择需要的值。
- 确认“阻断项”为空。
- 根据需要展开“运行环境与命令详情”,检查命令预览。
- 单击“仅构建组件”。
- 在 Task 终端中查看构建输出。
- 构建完成后,确认“执行状态”为“成功”。
- 展开“查证与会话技术详情”,查看“组件独立构建包身份证明”。
只能选择当前 mds/service.json 中声明且类型一致的 option 值。openUBMC Studio 使用 debug build type 和 stable channel 构建组件。Task 终端会显示组件构建过程和最终结果。
Task 退出码为 0 后,openUBMC Studio 会从本地 Conan cache 验证本次组件包的 reference、RREV、package ID、PREV、settings 和 options。如果无法唯一确定本次组件包,构建结果仍会标记为失败。
注意
组件 Task 在源码仓根目录中执行,可能创建或刷新 conanbase.py、temp/、gen/ 以及 mds/service.json 中声明的代码生成目录。如果其他受保护文件发生变化,openUBMC Studio 会停止后续流程,但不会自动回滚文件。执行构建前,请保存重要修改。
构建组件并转到固件出包
组件与固件联合构建适用于生成包含当前组件改动的调试固件。openUBMC Studio 会在隔离的 Manifest 沙箱中应用组件包,不会修改源 Manifest、SDK 或 subsystem 文件。
选择固件目标
- 单击“选择固件目标”(已选择目标时显示为“更换固件目标”)。
- 选择需要构建的
tosupporte或manufacture包型。 - 如果列表中没有目标文件,单击“选择其他 manifest.yml…”。
- 选择当前 Extension Host 可以访问的
manifest.yml。 - 等待构建计划刷新完成。
- 确认页面标题下方显示正确的产品线、机型和包型。
固件目标列表显示已发现的产品、包型和 Manifest 路径。选择结果会自动缓存。
选择固件目标后,组件 options 由目标 Manifest 的生效配置锁定,不能在面板中修改。如果源码版本不满足目标版本约束,页面会显示非阻断提示;app 和 publish 仍会验证实际选中的组件包。无法安全解析配置或 option 时,页面会阻止构建。
执行联合构建
- 确认“阻断项”为空。
- 展开“运行环境与命令详情”。
- 检查
install_sdk、组件构建、app预检和publish命令。 - 单击“构建组件并转到固件出包”。
- 在 Task 终端中查看构建输出。
openUBMC Studio 按以下顺序执行联合构建:
- 复制 Manifest 的 Git 源输入并创建临时沙箱。
- 在沙箱中将所选包型的
build_type设置为debug。 - 使用 stable channel 执行
install_sdk。 - 使用目标 profile 构建并验证当前组件包。
- 在沙箱当前包型的
dependencies中写入组件的精确 reference、RREV 和业务 options。 - 使用 stable channel 执行
app依赖图预检。 - 验证依赖图选择的组件 recipe、目标 profile 和业务 options。
- 打开“固件出包”页面并自动启动 stable channel 的
publish任务。
验证联合构建结果
- 在组件构建面板中确认“执行状态”为“成功”。
- 确认“组件包证明”和“app 目标包证明”均已通过。
- 在自动打开的“固件出包”页面中查看计划组件和本次实际组件。
- 确认固件任务退出码为 0。
- 在“自动发现的本次产物”区域下载需要的固件产物。
在“固件出包”页面中核对计划组件和本次实际组件,确认固件使用了本次构建的组件包。
在“自动发现的本次产物”区域下载需要的固件文件。
组件会话、固件出包交接和固件任务分别记录结果。组件页面显示成功,表示组件包身份和 app 选包已经验证;固件是否成功以固件出包页面中 bmcgo 或 bingo 的退出码为准。未自动发现 HPM、ZIP 或 QEMU 文件不会改变固件任务的结果,需要结合 output 目录和完整的 task.log 确认实际文件。
选择合法的 tosupporte/qemu 目标时,app 和 publish 会自动启用 QEMU 构建参数。固件出包页面会尝试发现 .data.gz 和 .cpio.gz 产物并提供下载入口。后续操作请参见一键出包。
停止构建任务
关闭组件构建页面不会停止正在运行的任务。重新打开同一组件仓,可以继续查看当前会话。
- 组件构建阶段:单击“取消”
- 固件构建阶段:在“固件出包”页面中单击“终止任务”
清理构建沙箱
- 等待固件任务进入成功、失败或取消状态。
- 下载需要保留的固件产物。
- 返回组件构建页面。
- 单击“清理本次沙箱”。
- 在确认窗口中单击“清理本次沙箱”。
开始下一轮构建时,也可以在提示窗口中单击“清理并继续”。
注意
清理沙箱会永久删除本次联合构建生成的临时 Manifest、日志和固件产物,且无法恢复。openUBMC Studio 重启后也不保证能够访问旧会话产物。执行清理前,请下载需要保留的产物。
处理常见问题
| 诊断码或现象 | 处理建议 |
|---|---|
WORKSPACE_UNTRUSTED、UNSUPPORTED_PLATFORM | 在受信任的 Linux 本地、WSL 或 SSH Remote 工作空间中重新打开组件仓。 |
BUILD_TOOL_NOT_FOUND、SHELL_ENV_RESOLVE_FAILED | 确认登录 Shell 可以执行 bmcgo 或 bingo,并可以执行 Conan 2.x;也可以单击“配置工具路径”。 |
TARGET_MANIFEST_INVALID、MANIFEST_GIT_CONTEXT_UNAVAILABLE | 保存并检查目标 Manifest;确认已安装 Git,目标仓具有有效 HEAD,且没有非空 include。 |
PLAN_STALE | 组件源码、mds/service.json、Manifest 或相关 SDK 输入在计划生成后发生变化;保存文件并单击“刷新计划”。 |
PROFILE_DRIFT、共享构建资源等待 | 避免在其他 Studio 窗口或外部终端中同时修改同一 Conan profile 或 cache,等待当前任务结束后刷新计划。 |
COMPONENT_VERSION_OUT_OF_RANGE | 此提示不会阻止构建。确认源码版本符合本次调试目的后继续,实际选包仍由沙箱中的 app 和 publish 依赖图验证。 |
INTEGRATION_MISMATCH | 展开“查证与会话技术详情”,检查独立组件包、整包目标组件包、app 依赖图和 options 差异。 |
MANIFEST_INPUT_LIMIT_EXCEEDED、INSUFFICIENT_DISK_SPACE | 清理 Manifest 仓中未忽略的大文件或释放沙箱所在卷空间;确有需要时在“组件构建”设置中调整输入上限或最低可用空间。 |
DEBUG_PACKAGE_SIGNING_UNAVAILABLE | 此提示不会阻止构建。固件签名或占位行为由 bmcgo 或 bingo 决定,请以固件任务退出码和产物为准。 |
FIRMWARE_PACKAGE_HANDOFF_FAILED | 组件包和 app 预检可能已经成功;根据提示中的沙箱 Manifest 和覆盖报告,在固件出包页面检查阻断项并重试。 |
一键出包
一键出包功能可以根据产品 manifest.yml 中的 tosupporte 和 manufacture 包型生成构建命令,完成环境预检并启动固件构建。构建过程中可以查看计划组件、实际组件、构建进度和日志,构建完成后可以下载本次生成的固件产物。
说明:
执行一键出包需要使用受信任的 Linux 本地、WSL 或 SSH Remote 工作空间,manifest 仓及其 output 目录需要具备写权限。
用户登录 Shell 环境中需要存在 bmcgo 或 bingo 命令。检测到 bmcgo 时默认使用 bmcgo 并支持切换到 bingo;仅检测到 bingo 时直接使用 bingo。
选择机型和包型
可以通过以下任一方式进入出包流程:
- 在资源管理器的“快捷入口”中展开“openUBMC Studio Local View”,点击对应机型的出包入口,例如
BMC/openUBMC 出包。 - 打开产品
manifest.yml,点击目标tosupporte或manufacture包型上方的入口,例如default 出包入口,直接进入该包型的出包页面。
通过“出包配置”页面或“快捷入口”进入时,按以下步骤选择包型:
- 在“固件包类型选择”页面查看当前机型的所有包型。页面按照“To Support E”和“Manufacture”分组,显示包型名称、构建类型、包名和签名类型。
- 可以在搜索框中按照包型名称、分类或包名筛选。
- 在目标包型右侧点击“进入出包页”。无效包型会显示具体的配置错误,需要修改
manifest.yml并刷新后再选择。
执行出包预检
- 进入“固件出包”页面后,等待 openUBMC Studio 读取 Manifest、组件清单和构建环境。
- 在“构建选择”区域选择构建类型。若
manifest.yml已配置build_type,构建类型不可修改。 - 查看出包信息、构建命令预览和计划组件。组件来源默认折叠,可按需展开查看。
- 如果“组件来源”中存在支持获取的缺失 SDK 制品,点击“从 Conan 获取”,完成后页面会自动重新加载出包信息。
- 点击“一键预检”重新检查当前配置和环境。如果页面显示“预检阻断”,请根据提示保存 Manifest、信任工作空间、修复配置或补齐构建工具后再次预检。
执行出包任务
- 预检通过后,点击页面顶部的“开始出包”。openUBMC Studio 会根据包型自动生成参数,并通过 Task 终端启动构建。
- 任务启动后,页面会自动定位到“构建阶段”,依次展示“计划就绪”、“有效 manifest”、“依赖图就绪”和“产物就绪”状态。
- 构建期间可以在 Task 终端查看实时输出,也可以在页面查看本次实际组件以及计划和实际配置之间的差异。
- 如需停止构建,点击“终止任务”。关闭出包页面不会自动终止正在执行的任务,重新打开同一包型的出包入口可以继续查看当前会话。
查看日志和下载产物
- 构建成功、失败或取消后,页面会自动定位到“构建日志”,并显示
temp/log/task.log末尾最多 128KiB 的内容。 - 构建失败时,可以点击“只看异常上下文”或“跳到最近异常”辅助定位问题;点击“打开完整 task.log”可以查看完整日志。
- 构建成功后,在“本次新产物”区域根据包型查看本次构建生成的 HPM、发布 ZIP 等文件,点击“下载”并选择保存位置。Remote 工作空间中的产物也可以下载到本机。
- 在“最近记录”区域查看当前工作区近期出包任务的状态、执行时间和产物数量。
说明:
日志中的异常高亮仅用于提供排查线索,不代表 openUBMC Studio 已经确定失败根因,请结合完整日志确认。
“本次新产物”仅展示当前构建会话中新生成且校验通过的文件,不会将历史 output 目录中的文件作为本次结果。
十三、出包签名配置
openUBMC Studio 签名配置扩展(bmcstudio_sign_config)提供可视化的 HPM 签名档案管理、本地自签名证书生成和 EEPROM 签名配置。开发者可以在 CSR 出包和白牌包构建时复用签名档案,无需手动编辑 .bmcgo/config 中的 INI 配置。
选择出包签名档案
CSR 出包和白牌包构建页面均支持选择已有签名档案:
- 单 CSR 出包:在出包窗口的签名档案下拉列表中选择档案。如果工作目录的
.bmcgo/config中存在同名 INI 节,界面会显示配置冲突提示。 - 多 CSR 出包:通过 QuickPick 选择签名档案。
- 白牌包构建:在白牌定制编辑器的构建流程中选择签名档案。
如果没有可用档案,单击签名档案下拉列表旁的“新增签名档案”,进入签名配置界面。
管理 HPM 签名档案
HPM 签名档案用于保存签名方式、密钥路径和服务端参数,可以在多次出包任务之间复用。签名配置界面包含以下页签:
| 页签 | 说明 |
|---|---|
| 签名管理 | 新增、编辑和删除签名档案 |
| 证书生成 | 生成本地自签名所需的证书文件 |
| 证书吊销 | 吊销签名者证书并更新 CRL |
新增 HPM 签名档案
支持以下签名方式:
| 签名方式 | 说明 | 适用场景 |
|---|---|---|
| 本地自签名 | 使用本地 OpenSSL 密钥签名 | 开发调试 |
| 简易签名服务器 | 通过 HTTP 请求签名服务器 | 内部 CI |
| 远程签名 | 通过 SignServer 远程签名 | 正式发布 |
不同签名方式需要配置以下字段:
| 签名方式 | 配置字段 |
|---|---|
| 本地自签名 | 根证书(DER)、吊销列表(CRL)、签名证书、时间戳证书、时间戳配置 |
| 简易签名服务器 | 根证书(DER)、证书标识符、签名服务器地址、TLS 验证方式 |
| 远程签名 | SignServer 地址、时间戳服务器地址、根证书(DER)、吊销列表(CRL)、Worker 路由标识、签名哈希算法、TLS 验证方式、Keyfactory 模式 |
打开“签名管理”页签。
单击“新增签名档案”。
选择签名方式。
填写对应的证书路径、密钥路径或服务端参数。
单击“保存”。
说明
保存时会自动检查密钥和证书文件是否存在。路径无效时,界面会显示错误并阻止保存。
编辑或删除 HPM 签名档案
- 编辑档案:在档案列表中单击目标档案,修改配置后单击“保存”。
- 删除档案:单击档案旁的“删除”,在确认窗口中继续操作。
创建本地自签名证书
首次使用本地自签名方式时,可以在“证书生成”页签中生成所需文件。该功能依赖 OpenSSL,请先执行 openssl version,确认系统已安装 OpenSSL。
需要填写以下信息:
| 字段 | 说明 |
|---|---|
| 输出目录 | 证书文件的生成目录 |
| 组织名(O) | 证书中的组织名称 |
| 根私钥保护密码 | PFX 根私钥的加密密码,不少于 12 个字符,可以通过“随机生成”创建 |
操作步骤如下:
打开“证书生成”页签。
填写输出目录、组织名和根私钥保护密码。
根据需要填写国家、证书通用名称和各证书有效期。RSA 密钥长度固定为 4096 位。
单击“一键生成全套证书”。
生成的文件如下:
| 文件 | 说明 |
|---|---|
rootca.pfx | 包含私钥的根 CA 证书,采用 PKCS#12 格式 |
rootca.der | DER 格式的根 CA 证书 |
rootca.crl | 证书吊销列表 |
signer.pem | 包含私钥的签名者证书 |
ts_signer.pem | 时间戳签名者证书 |
tsa.cnf | 时间戳配置文件 |
- 将所需文件路径填写到本地自签名档案中。
说明
签名档案使用 rootca.der、rootca.crl、signer.pem、ts_signer.pem 和 tsa.cnf。rootca.pfx 包含根 CA 私钥,仅在证书吊销时使用,不需要填写到签名档案中。
吊销签名者证书
签名私钥泄露时,可以在“证书吊销”页签中吊销签名者证书并更新 CRL。
| 字段 | 说明 |
|---|---|
| 证书目录 | 包含 rootca.pfx 和 rootca.crl 的目录 |
| 根私钥保护密码 | 生成证书时设置的 PFX 密码 |
| 签名者证书 | 需要吊销的 signer.pem 文件路径 |
打开“证书吊销”页签。
填写证书目录、根私钥保护密码和签名者证书路径。
单击“吊销并更新 CRL”。
注意
证书吊销不可逆。吊销后,签名者证书会写入 CRL,继续使用该证书签名 HPM 包将失败。如需继续签名,请创建新的签名者证书。
管理 EEPROM 签名档案
EEPROM 签名与 HPM 签名是两条独立链路。HPM 签名使用 CMS 对固件包外层进行签名,EEPROM 签名使用 ECDSA P-256/SHA-256 对写入 EEPROM 的原始二进制内容进行签名。CSR 出包时可以分别配置两类签名。
CSR 出包页面中的 HPM 签名和 EEPROM 签名分别使用独立的下拉列表。选择“使用现有配置”可以保留当前配置;单击 EEPROM 下拉列表旁的“新增 EEPROM 档案”可以打开 EEPROM 签名配置页面。
EEPROM 签名档案支持以下签名方式:
| 签名方式 | 说明 |
|---|---|
| 本地自签名 | 使用本地 ECC 密钥签名 |
| 简易签名服务器 | 通过 HTTP 请求签名服务器 |
| 远程 ECC 签名 | 通过 SignServer 远程签名 |
说明
EEPROM 签名档案与 HPM 签名档案独立管理,互不影响。
常见问题
- 保存时提示路径不存在:检查密钥和证书文件路径。签名配置界面会在保存时验证文件是否存在。
- 出包时提示全局配置冲突:工作目录的
.bmcgo/config中存在同名 INI 节。请确认是否使用签名档案覆盖已有配置。 - 证书生成失败:执行
openssl version,确认 OpenSSL 已安装并已加入PATH。
十四、常用操作
快捷键参考
openUBMC Studio提供了丰富的快捷键支持,帮助开发者提高工作效率:
| 功能 | 快捷键 | 说明 |
|---|---|---|
| 转到定义 | Ctrl + 点击 或 F12 | 跳转到符号的定义位置 |
| 转到引用 | Shift + F12 | 查看符号的所有引用位置 |
| 查找 | Ctrl + F | 在当前文件中查找 |
| 全局搜索 | Ctrl + Shift + F | 在整个项目中搜索 |
| 保存 | Ctrl + S | 保存当前文件 |
| 全部保存 | Ctrl + Shift + S | 保存所有打开的文件 |
| 撤销 | Ctrl + Z | 撤销上一步操作 |
| 重做 | Ctrl + Y | 重做上一步操作 |
| 快速打开文件 | Ctrl + P | 快速打开项目中的文件 |
| 命令面板 | Ctrl + Shift + P | 打开命令面板,执行各种命令 |
| 切换侧边栏 | Ctrl + B | 显示/隐藏侧边栏 |
说明:
可以在“文件”>“首选项”>“键盘快捷方式”中查看和自定义所有快捷键。
设置与配置
修改用户设置
- 点击菜单栏“文件”>“首选项”>“设置”,或使用快捷键
Ctrl + , - 在设置页面中,可以修改各类配置:
- 编辑器设置(字体、主题、缩进等)
- CSR规则检查设置
- 快捷键配置
- 扩展设置
十五、卸载 openUBMC Studio
如果您不再需要使用openUBMC Studio,可以通过以下步骤卸载。
Windows系统卸载
- 打开“控制面板”>“程序”>“程序和功能”
- 在程序列表中找到“openUBMC Studio”
- 右键点击,选择“卸载”
- 按照卸载向导提示完成卸载
卸载后清理
说明:
卸载程序不会删除用户配置文件和工作空间数据,如需完全清理,请手动删除以下目录:
- 用户数据目录:
%APPDATA%\.bmc-Studio - 远程连接服务目录:
~/.bmcstudio-server
注意:
删除配置目录和工作空间数据是不可逆操作,请确保已备份重要数据后再执行删除。