代码仓
中

bmc_soc ​

版本信息 ​

项目内容
组件版本1.120.3
首发版本openUBMC 25.3.0
文档作者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描述示例值
IdU8✓false端口ID0
BusTypeString✓false串口协议类型,取值如下:
- 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描述示例值
IdU8✓false串口链路的ID3
AvailabilityU8✓false串口链路的可用性1
CurrentConnectStatusU8✓-当前串口连接状态,0:未连接,1:已连接0
SourceString✓false链路关系源端PANEL COM
DestinationString✓false链路关系对端openUBMC COM
SrcSerialU8✓false源Uart或Port口,其中取值大于16是Port,否则是Uart18
DestSerialU8✓false目的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
WriteProtectionU8✗falseNand Flash写保护状态,写入与否:0(允许)/1(禁止)0
LifeTimeU8✓-剩余寿命百分比,支持Nand Flash已用寿命超限严重告警99
LifeTimeThresholdU8✓-寿命阈值10
PreEOLU8✓-(end of life)Nand Flash的PreEOL信息(通过平均预留块来反映设备寿命)1
OverWriteU8✓-写入量是否超过门限,1:超过/0:未超过0
WriteThresholdU8✓falseNand Flash写入量,单位GB12
RWTestStateU8✓-读写测试状态0
MaxEraseCountS32✓false最大擦除次数(非JPR型号海力士支持),不支持厂商置-13000
RemainingEraseCountS32✓false剩余擦除次数(非JPR型号海力士支持),不支持厂商置-12917
EraseCountPerDaysS32[]✓false最近15天每天擦除次数(非国产海力士支持),不支持或无数据为空[1, 0]
TotalWriteAmountDouble✓false开机至今总写入量,单位GB0.112
TotalWriteAmountIn15DaysDouble✓false最近15天总写入量,单位GB0.112
WriteAmountPerDayDouble[]✓false最近15天每天写入量,无数据时为空,单位GB[1, 0.112]
ReservedBlocksS32✓false剩余预留块(非JPR型号海力士支持),不支持厂商置-181
RuntimeBadBlocksS32✓false坏块数量(非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
TemperatureS32✓-BMC核心温度43
TemperatureThresholdS32✓-BMC核心温度告警阈值105
NameString✓false芯片名字SocNameExample
VersionString✓false芯片版本,如V100100
DesignatorString✓false芯片位置,如U82U82
DIEIDString✓falseDIE(裸片)ID(标识)12345678 90ABCDEF
ResetTypeU8✓falseBMC复位原因,0 AC复位,2 软复位2
DDRSelfTestResultU8✓-DDR自检结果,BMC启动检查一次,1 自检成功 0 自检失败1
DDRSingleBitECCStatisticsU32✓falseDDR ECC错误检查,1小时例测一次单bit结果0
DDRMultiBitECCStatisticsU32✓falseDDR ECC错误检查,1小时例测一次多bit结果0
StartupDurationU16✓falseBMC启动时间规格160
LastResetTimeString✓false表征BMC上一次重启时间2025-10-10T07:39:59+00:00
BootStatusU8✓true加载状态,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

响应:无

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描述示例值
IdU8✓false串口链路ID(主键)-
Availability-✓false串口链路的可用性-
Source-✓false链路关系源端-
Destination-✓false链路关系对端-
SrcSerial-✓false源Uart或Port口,其中取值大于16是Port,否则是Uart-
DestSerial-✓false目的Uart或Port口,其中取值大于16是Port,否则是Uart-
SourceIdU8✗false源ID-
DestinationIdU8✗false目的ID-
RetainedPolicyU8✗false串口的持久化方案,取值:0-掉电保留,1-复位保留-
ConnectStatusU8✗false掉电保留的串口连接状态-
ConnectStatusResetPerU8✗false复位保留的串口连接状态-
SystemIdU8✓false复位后自动恢复的多host串口连接状态0
CPLDValueU8✓false切换串口方向寄存器的值255
ConnectModeU8✓false串口连接方式0
ListenSwitchCmdEnabledBoolean✗false面板串口SwitchCMD命令使能false
ListenSwitchCmdString✗false面板串口SwitchCMD命令-

4.2 UartCircularLog对象配置介绍 ​

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

属性名数据类型只读emitsChangedSignal描述示例值
IdU8✓falseUART日志ID-
LogDirectionU8✗false日志方向-
RxSizeU8✗false接收缓冲区大小-
TxSizeU8✗false发送缓冲区大小-
IsSysComU8✗false是否系统串口-
LogEnableU8✗false日志使能-
AutoCollectU8✗false自动收集-
LastOffsetU32✗false上次偏移量-
SystemIdU8✓false系统ID255
LogFileNameString✗false日志文件名-

4.3 NandInfo对象配置介绍 ​

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

属性名数据类型只读emitsChangedSignal描述示例值
VIDU8✓false厂商ID-
VendorString✓false厂商名称-
LifeThresholdU8✓false寿命阈值-
WriteThresholdU8✓false写阈值-
DftLifeThresholdU8✓false默认寿命阈值-
ProductNameString✓false产品名称``
MaxWriteTimesS16✓false最大写入次数-1
LifeInfoOffsetU16✓false寿命信息偏移量269

4.4 BMCFileSystemCheck对象配置介绍 ​

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

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

4.5 SerialSwitchAction对象配置介绍 ​

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

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

4.6 McuLog对象配置介绍 ​

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

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

4.7 UartDynamicConfig对象配置介绍 ​

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

属性名数据类型只读emitsChangedSignal描述示例值
SysComIdU8✗false支持动态配置的输入端口Id, Uart:0~15,Port:16~31-
RawConfigDataU64✗false从cpld获取到的原始串口配置数据0
BaudRateU32✗false从cpld获取到的串口波特率配置115200
DataBitU8✗false从cpld获取到的串口数据位长配置8
ParityBitU8✗false从cpld获取到的串口校验开关配置78
StopBitU8✗false从cpld获取到的串口停止位配置1
FlowControlU8✗false从cpld获取到的串口控制流配置0

4.8 NandFlashRecord对象配置介绍 ​

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

属性名数据类型只读emitsChangedSignal描述示例值
RecordIdU32✓false记录ID(主键)-
TimeU32✓false该条数据记录时的时间戳-
WriteAmountString✓falsenandflash写入量-
RemainingLifeU32✓falsenandflash剩余寿命-
ReservedBlocksS32✓false剩余预留块-
BadBlocksS32✓false坏块数量-
EraseCountS32✓false擦除次数-

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 资源协作接口的 LifeTime 和 PreEOL 属性

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

Q2:SOC温度过高 ​

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

处理方法:

  • 检查SOC资源协作接口的 Temperature 和 TemperatureThreshold 属性

  • 根据需要调整 CoreEnableTemp 和 CoreDisableTemp 配置

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

Q3:串口连接状态异常 ​

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

处理方法:

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

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

  • 检查 CPLDValue 和 ConnectMode 配置是否正确

附录 ​

附录A 参考资料 ​

附录B 修订记录 ​

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