硬件适配约束
操作系统及SDK约束
适配需基于openubmc的RTOS操作系统及配套的SDK,具体配套关系可从openUBM官网获取。
硬件发现机制
1、整体流程及app相关流程建议采用社区默认模式,不做修改,如需深度定制请自行研究。 2、整体流程不变的情况下,硬件发现主要根据sr文件配置的信息进行硬件扫描,一般在root.sr中配置载板(或底板)的连接器,然后在载板sr中配置模组板的连接器,此处连接器的“IdentifyMode”可以配置为3,也可以配置为1或2,建议优先考虑配置为3,即自发现模式。 3、服务器启动后,会根据sr配置进行设备扫描加载,扫描到设备信息后,更新对应Connector的“Id”信息,从而加载对应Bom_Id.sr的配置文件(“IdentifyMode”为1加载的配置文件名相同,“IdentifyMode”为2加载的文件名为Bom_Id_AuxId.sr)。
$ mdbctl
**********************************************************************
Debug Shell
Copyright(C) 2023
**********************************************************************
% lsobj Connector
Connector_A1a_010101
Connector_A1c_010101
Connector_A2a_010101
Connector_A2c_010101
Connector_A3a_010101
Connector_A4a_010101
Connector_B1a_010101
Connector_B2a_010101
Connector_B3a_010101
Connector_B3c_010101
Connector_B4a_010101
Connector_B4c_010101
Connector_BCUExtend_010101
Connector_BCU_1_0101
Connector_C4a_010101
Connector_C5a_010101
Connector_C6a_010101
Connector_C7b_010101
Connector_CLU_1_0101
Connector_D4b_010101
Connector_D5a_010101
Connector_D6a_010101
Connector_D7a_010101
Connector_EXU_1_01
Connector_Fan1DualSensor_010103
Connector_Fan1SingleSensor_010103
Connector_Fan2DualSensor_010103
Connector_Fan2SingleSensor_010103
Connector_Fan3DualSensor_010103
Connector_Fan3SingleSensor_010103
Connector_Fan4DualSensor_010103
Connector_Fan4SingleSensor_010103
Connector_LOM_1_0101
Connector_LOM_2_0101
Connector_Memory_010101
Connector_OCP_1_0101
Connector_OCP_2_0101
Connector_PCIE_SLOT1_01010103
Connector_PCIE_SLOT1_01010109
Connector_PCIE_SLOT2_01010103
Connector_PCIE_SLOT2_01010109
Connector_PCIE_SLOT3_01010103
Connector_PCIE_SLOT3_01010109
Connector_PSR_EEP_0101
Connector_PowerSupply_1_0101
Connector_PowerSupply_2_0101
Connector_PsEvent_010101
Connector_SEU_1_0101
Connector_SEU_2_0101
Connector_SEU_3_0101
Connector_SEU_Inner_1_010102
Connector_SEU_Inner_2_010102
Connector_Sensor_01
Connector_TrustedModule_010101
Connector_UbcConfig_010101
% lsprop Connector_BCU_1_0101
bmc.kepler.Connector
AuxId=""
Bom="14060876"
Buses=["I2c_1","I2c_2","I2c_8","JtagMux_JtagSwitch_1_1_0101","Hisport_0","Hisport_1","Hisport_2","Hisport_3","Hisport_4","Hisport_5","Hisport_6","Hisport_7","Hisport_8","Hisport_9","Hisport_10","Hisport_11","Hisport_12","Hisport_13","Hisport_14","Hisport_15","Hisport_16","Hisport_17","Hisport_18","Hisport_19","Hisport_20","Hisport_21"]
ChassisId="1"
GroupId=8
GroupPosition="010101"
Id="00000001020302031825"
IdentifyMode=3
LoadStatus=0
ManagerId="1"
Presence=1
SilkText="BCU"
Slot=1
SystemId=1
Type="CPUBoard"
bmc.kepler.Object.Properties
ClassName="Connector"
ObjectIdentifier=[1,"1","1","0101"]
ObjectName="Connector_BCU_1_0101"
TraceSamplingRate=0
Private
CSRVersion=""
Chip="Eeprom_3_1_0101"
Container=""
IdChipAddr=0
Position=14、适配完模组板连接器后,升级bmc到环境,并在mdbctl命令行下查询模组板的连接器信息,并根据"Id"和、"AuxId"信息及“IdentifyMode”信息配置对应的模组板sr文件名。 5、从社区的sr仓库中获取的模组板sr文件可能和实际的硬件配置存在区别,需自行修改后使用,如社区的sr文件配置是2个CPU,实际只有一个等。 PS: 社区中提供了一些模组板的配置sr,可根据"Id"信息查找对应的模组板sr文件,“Bom”值仅用于参考,社区提供的模组板“Bom”通常为“14100513”和“14060876”,实际适配时需要根据社区已有sr文件进行修改。
适配说明
上下电
上下电需要配置以下几个对象:“FruCtrl”,“PGSignal”,“PowerButton”,“RecordFault”,“ThermTrip”,通常“FruCtrl”在“platform.sr”中,“PGSignal”和“PowerButton”在载板的sr文件中,“RecordFault”和“ThermTrip”在模组板的sr文件中,如果缺少对象则无法操作OS上下电。
常见问题
1、以上对象都配置了,载板或模组板的sr文件加载失败,导致上下电功能不可用; 2、以上对象都配置了,载板或模组板的sr文件正常加载,模组板拓扑信息配置有问题,导致上下电功能不可用; 3、所有配置都正确,cpld命令字不符合预期或cpld提供的上下电功能存在问题,导致上下电功能不可用。
拓扑信息
“ManagementTopology”对象中配置模组板的拓扑信息,需要按照硬件提供的实际拓扑信息配置,缺少配置会导致对应链路的信息无法访问,如有错误信息则可能导致配置文件加载异常,部分甚至全部功能不可用。
建议配置对象
“RecordFault”:上下电依赖; “ThermTrip”:上下电依赖; “Smc”:天池架构推荐使用smc协议与cpld等通信; “CpuBoard”:组件信息中显示cpu板信息; “CPU”:处理器信息中显示cpu的在位、数量及属性信息; “CoolingRequirement”:调速策略; “CoolingArea”:调速策略生效组; “Memory”:内存信息中显示在位,数量及属性信息; “MemorySilk”:内存丝印信息; “MemoryChannel”:内存通道信息; “Bios”:bios信息,包括bdf、bios启动阶段,bios启动项、菜单等配置信息; “Cpld”:cpld chip信息 “LogicFirmware”:cpld升级相关信息; “VrdMgmt”:vrd管理信息; 其余,如Accessor、各种Chip、FRU相关、传感器相关、告警相关、PcieAddrInfo、线缆检测、MCUFirmware、Component、Dft等按需增加。
功能验证
命令查询版本号
mcu:
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x00018500 7
VRD:
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x00018501 7
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x00018502 7
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x00018503 7
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x00018504 7
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x00018505 7
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x00018506 7
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x00018507 7
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x00018508 7CPLD升级获取芯片信息
多厂商cpld升级时,日志中出现“[cpld]get cpld device info failed”,大概率是ChipInfo获取失败,如果该Chip是挂在Jtag链路上的,一般有以下几种情况:
1、jtag链路没有切过去,在BMC中输入一下命令,看看是否可以获取到版本信息:
busctl --user set-property bmc.kepler.hwproxy /bmc/kepler/Accessor/Accessor_JtagSwitch_010101 bmc.kepler.Accessor Value t _( _ 为对应的链路,当前EXU为0,BCU为1,具体查看LogicFirmware对象的FirmwareRoute属性)
设置后查看信息,value是否改变:
busctl --user introspect bmc.kepler.hwproxy /bmc/kepler/Accessor/Accessor_JtagSwitch_010101
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
bmc.kepler.Accessor interface - - -
.Status property y 0 emits-change
.Value property t 1 emits-change writable
bmc.kepler.Object.Properties interface - - -
.GetAllWithContext method a{ss}s a{sv} -
.GetOptions method a{ss}ss a{ss} -
.GetPrivateProperties method a{ss} s -
.GetPropertiesByNames method a{ss}sas a{sv}a{sv} -
.GetPropertiesByOptions method a{ss}sa{ss} as -
.GetPropertyDetail method a{ss}ss s -
.GetWithContext method a{ss}ss v -
.SetWithContext method a{ss}ssv - -
.ClassName property s "Accessor" emits-change
.ObjectIdentifier property (ysss) 1 "1" "1" "010101" emits-change
.ObjectName property s "Accessor_JtagSwitch_010101" emits-change
.TraceSamplingRate property d 0 emits-change
org.freedesktop.DBus.Introspectable interface - - -
.Introspect method - s -
org.freedesktop.DBus.ObjectManager interface - - -
.GetManagedObjects method - a{oa{sa{sv}}} -
org.freedesktop.DBus.Peer interface - - -
.GetMachineId method - s -
.Ping method - - -
org.freedesktop.DBus.Properties interface - - -
.Get method ss v -
.GetAll method s a{sv} -
.Set method ssv - -
.PropertiesChanged signal sa{sv}as - -busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Cpld/Cpld_1_0101 bmc.kepler.Chip.JtagTarget GetChipIdcode a{ss} 0(0101为EXU,010101为BCU,具体查看板卡的position)
以基础板为例子,正常获取到chip信息:
busctl --user set-property bmc.kepler.hwproxy /bmc/kepler/Accessor/Accessor_JtagSwitch_010101 bmc.kepler.Accessor Value t 1
busctl --user cal1 bmc.kepler.hwproxy /bmc/kepler/Chip/Cpld/Cpld_1_010101 bmc.kepler.Chip.JtagTarget GetChipIdcode a{ss} 0
au 2 35899 358992、cpld扫链失败,输入dmesg驱动日志查看,可能是扩展板CPLD的版本问题,或者BMC测链路未通,未将CPLD和1711选通
3、jtag链路异常,测波形排查Jtag链路
传感器信息
1、可在“系统管理”->“系统信息”->“门限传感器”页面查看; 2、通过命令行输入"ipmcget -t sensor -d list"查看 3、ipmi等接口查看
常见问题
1、传感器信息获取失败,可能是传感器未配置或者传感器配置错误; 2、传感器信息获取到的门限值和实际值存在差异,可能是传感器配置错误或者传感器本身存在问题; 3、传感器无法正确获取读值信息,可能是配置错误或硬件本身不存在对应传感器,如:模组板一般是贴片内存,没有内存温感或配置的数据源数据类型和预期数据类型不匹配。