bmc_soc

版本信息

项目内容
组件版本1.120.3
文档作者mkdlf
最后更新2026-05-09

1. 组件概述

1.1 组件简介

BMC SOC管理为BMC基本功能特性,主要提供BMC片上资源的管理和监控功能,包括UART串口管理、串口连接管理、NAND Flash健康管理、SOC状态监控、生产自检等功能。

1.2 解决什么问题

bmc_soc主要涉及与芯片相关的功能,包括串口管理、串口日志导出、efuse升级、温度信息、同步DIEID信息、电源事件、nandflash监控等功能。对于串口管理、串口日志导出、nandflash写保护、PCIe通道使能、Efuse升级等功能均通过调用soctrl组件来实现;对于获取BMC的自检结果、BMC核温、BMC复位原因、DIEID信息、nandflash信息(厂商、EMMC型号、寿命、写入量、擦写次数)等数据,通过调用libsoc_adapter库方法来实现。

1.3 核心功能

  • UART串口管理

支持BMC多个UART串口的配置和管理,包括串口参数配置(波特率、数据位、校验位、停止位)和串口连接管理。支持串口数据的监听和日志记录功能。

  • 串口连接管理

提供串口源和目的地的动态连接管理,支持串口连接的持久化策略(掉电保留/复位保留),支持面板串口SwitchCMD命令切换。

  • NAND Flash健康管理

对BMC的NAND Flash存储介质进行健康度监控,包括寿命监控、擦写次数统计、坏块管理、写保护等功能,支持Flash健康度告警。

  • SOC状态监控

监控SOC芯片的工作状态,包括温度监控、黑匣子功能、PCIe控制器使能、DDR自检结果、启动时间等关键指标。

1.4 关键术语表

术语解释
SOC系统级芯片(System on Chip)
NAND FlashNAND闪存
UART串口,全称为通用异步收发器(Universal Asynchronous Receiver/Transmitter)

2. API 使用说明与示例

2.1 资源协作接口概览

2.1.1 SOC串口端口资源协作接口

资源协作接口:

path: /bmc/kepler/Managers/${ManagerId}/UartPorts/${Id}

interface: bmc.kepler.Managers.UartPort

properties

属性名数据类型只读emitsChangedSignal描述示例值
IdU8false端口ID0
BusTypeStringfalse串口协议类型,取值如下:
- Uart: Uart通用端口
- UartOverHisport: 基于Hisport通道的Uart端口
- UartOverEspi: 基于ESPI通道的Uart端口
Uart
UartConnectionU8-UART连接编号-
PortConnectionU8-端口连接编号-
BaudRateU32-波特率115200
DataBitU8-数据位8
ParityBitU8-校验位-
StopBitU8-停止位1
SerialSwitchU8-串口切换开关-

methods

方法名权限描述请求参数响应参数
ResetBasicSetting打开启动Uart设备,并对设备进行参数设置等初始化

2.1.2 SOC串口数据配置资源协作接口

path:/bmc/kepler/Managers/${ManagerId}/UartData

interface: bmc.kepler.Managers.UartData

properties

属性名数据类型只读emitsChangedSignal描述示例值
EnabledBoolean-设置SOL使能状态true
SystemLogSizeU32-系统串口日志大小2097152
IdU8-UART数据ID-
SerialListenSwitchEnabledBoolean-面板串口SwitchCMD命令使能false
UartIdforSerialListenU8-监听SwitchCMD命令的串口0

methods

方法名权限描述请求参数响应参数
ExportDiagnoseMgmt导出串口日志Type: String - 导出数据的类型,可选值:SYS COM/ALL
FilePath: String - 导出数据的文件路径
TaskId: U32 - 任务标识

2.1.3 SOC串口互联配置资源协作接口

path:/bmc/kepler/Managers/${ManagerId}/SerialManagement

interface: bmc.kepler.Managers.SerialManagement.Config

methods

方法名权限描述请求参数响应参数
ResetBasicSetting恢复串口管理配置

2.1.4 SOC串口互联关系资源协作接口

path:/bmc/kepler/Managers/${ManagerId}/SerialManagement/${Id}

interface: bmc.kepler.Managers.SerialManagement

properties

属性名数据类型只读emitsChangedSignal描述示例值
IdU8false串口链路的ID3
AvailabilityU8false串口链路的可用性1
CurrentConnectStatusU8-当前串口连接状态,0:未连接,1:已连接0
SourceStringfalse链路关系源端PANEL COM
DestinationStringfalse链路关系对端openUBMC COM
SrcSerialU8false源Uart或Port口,其中取值大于16是Port,否则是Uart18
DestSerialU8false目的Uart或Port口,其中取值大于16是Port,否则是Uart2
SourceIdU8-源ID-
DestinationIdU8-目的ID-
RetainedPolicyU8-串口的持久化方案,取值:0-掉电保留,1-复位保留-
ConnectStatusU8-掉电保留的串口连接状态-
ConnectStatusResetPerU8-复位保留的串口连接状态-
SystemIdU8-复位后自动恢复的多host串口连接状态0
CPLDValueU8-切换串口方向寄存器的值255
ConnectModeU8-串口连接方式0
ListenSwitchCmdEnabledBoolean-面板串口SwitchCMD命令使能false
ListenSwitchCmdString-面板串口SwitchCMD命令-

methods

方法名权限描述请求参数响应参数
SetConnectStatusBasicSetting设置串口链路状态NeedSaved: Boolean - 此次串口连接方向是否持久化

2.1.5 SOC Flash资源协作接口

path:/bmc/kepler/Managers/:ManagerId/NandFlash

interface: bmc.kepler.Managers.NandFlash

properties

属性名数据类型只读emitsChangedSignal描述示例值
VendorString-nand厂商Hynix
WriteProtectionU8falseNand Flash写保护状态,写入与否:0(允许)/1(禁止)0
LifeTimeU8-剩余寿命百分比,支持Nand Flash已用寿命超限严重告警99
LifeTimeThresholdU8-寿命阈值10
PreEOLU8-(end of life)Nand Flash的PreEOL信息(通过平均预留块来反映设备寿命)1
OverWriteU8-写入量是否超过门限,1:超过/0:未超过0
WriteThresholdU8falseNand Flash写入量,单位GB12
RWTestStateU8-读写测试状态0
MaxEraseCountS32false最大擦除次数(非JPR型号海力士支持),不支持厂商置-13000
RemainingEraseCountS32false剩余擦除次数(非JPR型号海力士支持),不支持厂商置-12917
EraseCountPerDaysS32[]false最近15天每天擦除次数(非国产海力士支持),不支持或无数据为空[1, 0]
TotalWriteAmountDoublefalse开机至今总写入量,单位GB0.112
TotalWriteAmountIn15DaysDoublefalse最近15天总写入量,单位GB0.112
WriteAmountPerDayDouble[]false最近15天每天写入量,无数据时为空,单位GB[1, 0.112]
ReservedBlocksS32false剩余预留块(非JPR型号海力士支持),不支持厂商置-181
RuntimeBadBlocksS32false坏块数量(非JPR型号海力士支持),不支持厂商置-10
IdU8-NAND Flash ID-
WriteAmountOver800mOneDayU8-单日写入量超过800MB标志-
FlashRecoverPolicyU8-用于配置连续读写测试失败后是否支持自愈。取值,0:不采取动作;1:重启BMC-
FlashRecoveredU8-用于标记BMC是否重启修复过。取值,0:未重启修复过;1:重启修复过-

methods

方法名权限描述请求参数响应参数
ClearStatisticsBasicSetting清除写入量统计

2.1.6 SOC 资源协作接口

path:/bmc/kepler/Managers/:ManagerId/SOC

interface: bmc.kepler.Managers.SOC

properties

属性名数据类型只读emitsChangedSignal描述示例值
BlackBoxEnabledBoolean-设置黑匣子使能开关状态,false(关闭)/true(打开)false
PCIeControllerEnabledBoolean-设置PCIe接口使能开关状态,false(关闭)/true(打开)false
TemperatureU16-BMC核心温度43
TemperatureThresholdU16-BMC核心温度告警阈值105
NameStringfalse芯片名字SocNameExample
VersionStringfalse芯片版本,如V100100
DesignatorStringfalse芯片位置,如U82U82
DIEIDStringfalseDIE(裸片)ID(标识)12345678 90ABCDEF
ResetTypeU8falseBMC复位原因,0 AC复位,2 软复位2
DDRSelfTestResultU8-DDR自检结果,BMC启动检查一次,1 自检成功 0 自检失败1
DDRSingleBitECCStatisticsU32falseDDR ECC错误检查,1小时例测一次单bit结果0
DDRMultiBitECCStatisticsU32falseDDR ECC错误检查,1小时例测一次多bit结果0
StartupDurationU16falseBMC启动时间规格160
LastResetTimeStringfalse表征BMC上一次重启时间2025-10-10T07:39:59+00:00
BootStatusU8true加载状态,1:表示BMC已启动;0为默认值,表示未完成启动-
BmcHardResetFlagU8-BMC硬复位标志0
ProcessRestartFlagU8-进程重启标志0
CoreEnableTempU8[]-开核的温度,有3个值,分别代表开第一个,第二个,第三个从核开核的芯片温度-
CoreDisableTempU8-高温关核温度-
CoreDisablePowerOffTimeU8-下电关核的超时时间,为0表示下电不关核-
DCAEnableU8-动态开关核功能使能 1使能 0关闭-

2.2 Reset

功能说明

打开启动UART设备, 并对设备进行参数设置等初始化。

属性内容
接口名bmc.kepler.Managers.UartPort
首发版本bmcsdk 25.12
废弃状态正常可用

参数说明

参数名方向类型描述取值范围
-----

返回值与异常

返回值含义触发条件处理建议
成功正常执行完成

应用场景

打开启动UART设备, 并对设备进行参数设置等初始化。

调试示例

命令行调试
text
busctl --user call bmc.kepler.bmc_soc /bmc/kepler/Managers/1/UartPorts/Uart_0_01 bmc.kepler.Managers.UartPort Reset a{ss} 0

响应:0

2.3 Export

功能说明

导出串口日志。

属性内容
接口名bmc.kepler.Managers.UartData
首发版本bmcsdk 25.03
废弃状态正常可用

参数说明

参数名方向类型描述取值范围
Type输入String导出数据的类型“SYS COM”或“ALL”
FilePath输入String导出数据的文件路径String
TaskId输出U32任务标识U32

返回值与异常

返回值含义触发条件处理建议
抛错Call failed: {"format":"Failed to operate because the current status does not support it.","registry_prefix":"BMC","name":"FeatureDisabledAndNotSupportOperation"}日志导出校验失败未打开日志使能开关打开日志使能开关
抛错Call failed: {"registry_prefix":"BMC","format":"The value %s of the property %s is invalid.","name":"InvalidValue","params":["SYS COMM","Type"]}入参Type校验失败输入的参数Type值不合法Type值需为“SYS COM”或“ALL”
抛错Call failed: {"registry_prefix":"BMC","format":"The value %s of the property %s does not contain the file name or does not exist in the tmp directory.","name":"InvalidPath","params":["******","Content"]}入参FilePath校验失败输入的参数FilePath值不合法输入有效的文件本地导出路径
Call failed: {"format":"The transfer protocols specified in the image URI and in the action parameter do not match.","registry_prefix":"BMC","name":"FileTransferProtocolMismatch"}输入的参数FilePath值不合法输入有效的文件远程导出路径

应用场景

导出串口日志,前提是日志使能开关打开。

调试示例

命令行调试
text
busctl --user call bmc.kepler.bmc_soc /bmc/kepler/Managers/1/UartData bmc.kepler.Managers.UartData Export a{ss}ss 0 'SYS COM' '/tmp/ee.txt'

响应:u 2088034522

2.4 Reset

功能说明

恢复串口管理配置。

属性内容
接口名bmc.kepler.Managers.SerialManagement.Config
首发版本bmcsdk 25.03
废弃状态正常可用

参数说明

参数名方向类型描述取值范围
-----

返回值与异常

返回值含义触发条件处理建议
成功正常执行完成

应用场景

恢复串口管理配置。

调试示例

命令行调试
text
busctl --user call bmc.kepler.bmc_soc /bmc/kepler/Managers/1/SerialManagement bmc.kepler.Managers.SerialManagement.Config Reset a{ss} 0

响应:0

2.5 SetConnectStatus

功能说明

设置串口链路状态。

属性内容
接口名bmc.kepler.Managers.SerialManagement
首发版本bmcsdk 25.03
废弃状态正常可用

参数说明

参数名方向类型描述取值范围
NeedSaved输入Boolean此次串口连接方向是否持久化true或false

返回值与异常

返回值含义触发条件处理建议
成功正常执行完成

应用场景

设置串口链路状态。

调试示例

命令行调试
text
busctl --user call bmc.kepler.bmc_soc /bmc/kepler/Managers/1/SerialManagement/SerialManagement_5_00 bmc.kepler.Managers.SerialManagement SetConnectStatus a{ss}b 0 false

响应:无

2.6 ClearStatistics

功能说明

清除写入量统计。

属性内容
接口名bmc.kepler.Managers.NandFlash
首发版本bmcsdk 25.03
废弃状态正常可用

参数说明

参数名方向类型描述取值范围
-----

返回值与异常

返回值含义触发条件处理建议
无抛错设置成功输入参数在合法的范围内

应用场景

清除写入量统计。

调试示例

命令行调试
text
busctl --user call bmc.kepler.bmc_soc /bmc/kepler/Managers/1/NandFlash bmc.kepler.Managers.NandFlash ClearStatistics a{ss} 0

响应:无

2.7 SetDebugValue

功能说明

调试模式下设置参数。

属性内容
接口名bmc.kepler.Debug.Managers.NandFlashMock
首发版本bmcsdk 25.03
废弃状态正常可用

参数说明

参数名方向类型描述取值范围
LifeTime输入U8调试模式下flash使用的寿命,百分比[0,100]
PreEOL输入U8调试模式下预留块状态[1,3]
DelayTime输入U32调试模式下计算使用寿命及使用块的间隔时间,单位秒U32
TimeInterval输入U32调试模式下写入量统计时间间隔,单位秒U32
WriteThreshold输入U64调试模式下写入量的阈值,单位字节U64
ClearStatisticsInterval输入U32调试模式下重置写入量的时间间隔,单位秒U32

返回值与异常

返回值含义触发条件处理建议
抛错Call failed: {"registry_prefix":"BMC","format":"The value for the property %s is out of range.","name":"ValueOutOfRange","params":["PreEOL"]}输入参数PreEOL的值不在允许的范围参数PreEOL的值小于1或大于3控制输入参数PreEOL的值属于区间[1,3]
无抛错设置成功输入参数在合法的范围内

应用场景

调试模式下设置参数。

调试示例

命令行调试
text
busctl --user call bmc.kepler.bmc_soc /bmc/kepler/Debug/Managers/1/NandFlashMock bmc.kepler.Debug.Managers.NandFlashMock SetDebugValue a{ss}yyuutu 0 50 2 60 30 10 60

响应:无

3. 组件扩展案例

4 CSR配置介绍

4.1 SerialManagement 对象配置介绍

此对象用于配置串口链路连接管理,表名:t_serial_management。

属性名数据类型只读emitsChangedSignal描述示例值
IdU8false串口链路ID(主键)-
Availability-false串口链路的可用性-
Source-false链路关系源端-
Destination-false链路关系对端-
SrcSerial-false源Uart或Port口,其中取值大于16是Port,否则是Uart-
DestSerial-false目的Uart或Port口,其中取值大于16是Port,否则是Uart-
SourceIdU8false源ID-
DestinationIdU8false目的ID-
RetainedPolicyU8false串口的持久化方案,取值:0-掉电保留,1-复位保留-
ConnectStatusU8false掉电保留的串口连接状态-
ConnectStatusResetPerU8false复位保留的串口连接状态-
SystemIdU8false复位后自动恢复的多host串口连接状态0
CPLDValueU8false切换串口方向寄存器的值255
ConnectModeU8false串口连接方式0
ListenSwitchCmdEnabledBooleanfalse面板串口SwitchCMD命令使能false
ListenSwitchCmdStringfalse面板串口SwitchCMD命令-

4.2 UartCircularLog对象配置介绍

此对象用于配置UART循环日志功能。

属性名数据类型只读emitsChangedSignal描述示例值
IdU8falseUART日志ID-
LogDirectionU8false日志方向-
RxSizeU8false接收缓冲区大小-
TxSizeU8false发送缓冲区大小-
IsSysComU8false是否系统串口-
LogEnableU8false日志使能-
AutoCollectU8false自动收集-
LastOffsetU32false上次偏移量-
SystemIdU8false系统ID255
LogFileNameStringfalse日志文件名-

4.3 NandInfo对象配置介绍

此对象用于配置NAND Flash的基本信息。

属性名数据类型只读emitsChangedSignal描述示例值
VIDU8false厂商ID-
VendorStringfalse厂商名称-
LifeThresholdU8false寿命阈值-
WriteThresholdU8false写阈值-
DftLifeThresholdU8false默认寿命阈值-
ProductNameStringfalse产品名称``
MaxWriteTimesS16false最大写入次数-1
LifeInfoOffsetU16false寿命信息偏移量269

4.4 BMCFileSystemCheck对象配置介绍

此对象用于配置BMC文件系统健康检查功能。

属性名数据类型只读emitsChangedSignal描述示例值
IdU8false文件系统检查ID-
EnabledU8false文件系统健康检查使能,状态定义0:禁止;1:使能-
MountTypeU8false数据分区挂载方式,0:Read-Write;1:Read-Only-

4.5 SerialSwitchAction对象配置介绍

此对象用于配置串口切换动作的寄存器关联。

属性名数据类型只读emitsChangedSignal描述示例值
SerialSwitchAccessorU8false串口切换关联第一级寄存器, CPLDValue对应的寄存器255
RemoteAccessorU8false串口切换关联第二级寄存器255

4.6 McuLog对象配置介绍

此对象用于配置MCU日志相关参数。

属性名数据类型只读emitsChangedSignal描述示例值
SystemIdU8false系统ID-
ValidSlotBooleanfalse有效Mcu片-
BoardLogChipU8[]false板载日志芯片-
GetLenthCmdU32false读取flash长度命令-
SetStartPosCmdU32false设置读取flash起点命令-

4.7 UartDynamicConfig对象配置介绍

此对象用于配置支持动态配置的串口参数。

属性名数据类型只读emitsChangedSignal描述示例值
SysComIdU8false支持动态配置的输入端口Id, Uart:0~15,Port:16~31-
RawConfigDataU64false从cpld获取到的原始串口配置数据0
BaudRateU32false从cpld获取到的串口波特率配置115200
DataBitU8false从cpld获取到的串口数据位长配置8
ParityBitU8false从cpld获取到的串口校验开关配置78
StopBitU8false从cpld获取到的串口停止位配置1
FlowControlU8false从cpld获取到的串口控制流配置0

4.8 NandFlashRecord对象配置介绍

此对象用于记录NAND Flash的历史数据,表类型为PoweroffPer。

属性名数据类型只读emitsChangedSignal描述示例值
RecordIdU32false记录ID(主键)-
TimeU32false该条数据记录时的时间戳-
WriteAmountStringfalsenandflash写入量-
RemainingLifeU32falsenandflash剩余寿命-
ReservedBlocksS32false剩余预留块-
BadBlocksS32false坏块数量-
EraseCountS32false擦除次数-

5. 日志说明

5.1 一键日志收集

文件路径内容说明
dump_info/AppDump/bmc_soc/nandflash_info.txt记录NAND Flash信息,包括NAND Flash写入量、剩余寿命、剩余预留块、坏块历史数据记录等

5.2 关键日志信息

日志片段日志级别含义解读建议处理动作
download failed, the sol is disabledERRORSOL未使能确保SOL使能后再收集串口日志
bmc_soc start failed, err: %sERRORbmc_soc组件服务没起来根据具体的报错信息定位失败原因

6. 问题定界指南

6.1 典型问题定界

现象描述是否为本组件问题判断依据关键证据收集方法

6.2 调试方法

开启调试日志

busctl资源协作接口方法调试见文档第二章节

查看串口连接

bash
ipmcget -d serialdir

切换串口

bash
ipmcset -d serialdir -v

Usage: ipmcset -d serialdir -v <option> [-s <systemid>]
Options are:
 0 Serial switch from PANEL COM to SYS COM
 1 Serial switch from SOL COM to SYS COM
 2 Serial switch from SOL COM to BMC COM
 3 Serial switch from PANEL COM to BMC COM
 4 Serial switch from SOL COM to CARD COM1
 5 Serial switch from SOL COM to CARD COM2
 254 Serial switch from PANEL COM to CLOSE

切换SOL

bash
ipmcset -t sol -d ac -v
Usage: ipmcset -t sol -d activate -v <option> <mode> [-s <systemid>]
Options are:
    1 SYS COM
    2 BMC COM
    4 CARD COM1
    5 CARD COM2
Mode :
    0 Shared mode
    1 Private mode

导出串口数据

bash
/redfish/v1/Managers/:managerid/DiagnosticService/Actions/DiagnosticService.ExportSerialPortData
bash
ipmcget -d systemcom

7. 常见问题解答

Q1:NAND Flash寿命监控告警

关键日志: NAND Flash寿命低于阈值时,系统会产生告警信息。

处理方法:

  • 检查 NandInfo 对象中的 LifeThreshold 配置

  • 查看 NandFlash 资源协作接口的 LifeTimePreEOL 属性

  • 关注 NandFlashRecord 表中的历史数据记录

Q2:SOC温度过高

关键日志: SOC温度超过 TemperatureThreshold 阈值时触发告警。

处理方法:

  • 检查SOC资源协作接口的 TemperatureTemperatureThreshold 属性

  • 根据需要调整 CoreEnableTempCoreDisableTemp 配置

  • 当温度过高时,SOC可能自动关闭部分核心以降低温度

Q3:串口连接状态异常

关键日志: 串口连接状态与预期不符时产生告警。

处理方法:

  • 检查 SerialManagement 资源协作接口的连接状态

  • 验证 RetainedPolicy 配置(掉电保留/复位保留)

  • 检查 CPLDValueConnectMode 配置是否正确

附录

附录A 参考资料

附录B 修订记录

版本日期修订人修订内容
v1.02026-05-09mkdlf修改文档格式,补充API、日志说明、常见问题解答