2603版,内存温度传感器问题

bmc版本:2603

在BCU里面添加了内存温度的门限传感器,Huawei/TianChi/BCU/14100513_00000001020330323030_0.sr

内容如下:

 "ThresholdSensor_Mem1Temp": {
	            "EntityId": "<=/Entity_DIMM000.Id",
	            "EntityInstance": "<=/Entity_DIMM000.Instance",
	            "Initialization": 127,
	            "Capabilities": 232,
	            "SensorType": 1,
	            "ReadingType": 1,
	            "SensorName": "DIMM000 Temp",
	            "Unit": 128,
	            "BaseUnit": 1,
	            "NominalReading": 30,
	            "MaximumReading": 127,
	            "MinimumReading": 128,
	            "Reading": "<=/Memory_1.TemperatureCelsius |> expr($1 > 255 ? 128 : $1)",
	            "ReadingStatus": "<=/::FruCtrl_1_0.PowerState ; <=/Memory_1.TemperatureCelsius |> string.cmp($1, 'ON') |> expr($1 ? 1 : 0)  |> expr(($1 == 0) ? 2 : ($2 > 255 ? 2 : 0))",
	            "SensorNumber": 255,
	            "AssertMask": 128,
				"DeassertMask": 28800,
				"ReadingMask": 2056,
	            "UpperNoncritical": 95,
	            "PositiveHysteresis": 2,
				"NegativeHysteresis": 2,
	            "M": 1,
	            "IsValid": "<=/Memory_1.Presence |> expr($1 == 1 ? true : false)"
	        },
	
	
	
	        "ThresholdSensor_Mem2Temp": {
	            "EntityId": "<=/Entity_DIMM001.Id",
	            "EntityInstance": "<=/Entity_DIMM001.Instance",
	            "Initialization": 127,
	            "Capabilities": 232,
	            "SensorType": 1,
	            "ReadingType": 1,
	            "SensorName": "DIMM001 Temp",
	            "Unit": 128,
	            "BaseUnit": 1,
	            "NominalReading": 30,
	            "MaximumReading": 127,
	            "MinimumReading": 128,
	            "Reading": "<=/Memory_2.TemperatureCelsius |> expr($1 > 255 ? 128 : $1)",
	            "ReadingStatus": "<=/::FruCtrl_1_0.PowerState ; <=/Memory_2.TemperatureCelsius |> string.cmp($1, 'ON') |> expr($1 ? 1 : 0)  |> expr(($1 == 0) ? 2 : ($2 > 255 ? 2 : 0))",
	            "SensorNumber": 255,
	            "AssertMask": 128,
				"DeassertMask": 28800,
				"ReadingMask": 2056,
	            "UpperNoncritical": 95,
	            "PositiveHysteresis": 2,
				"NegativeHysteresis": 2,
	            "M": 1,
	            "IsValid": "<=/Memory_2.Presence |> expr($1 == 1 ? true : false)"
	        },
	
	
	
	        "ThresholdSensor_Mem3Temp": {
	            "EntityId": "<=/Entity_DIMM010.Id",
	            "EntityInstance": "<=/Entity_DIMM010.Instance",
	            "Initialization": 127,
	            "Capabilities": 232,
	            "SensorType": 1,
	            "ReadingType": 1,
	            "SensorName": "DIMM010 Temp",
	            "Unit": 128,
	            "BaseUnit": 1,
	            "NominalReading": 30,
	            "MaximumReading": 127,
	            "MinimumReading": 128,
	            "Reading": "<=/Memory_3.TemperatureCelsius |> expr($1 > 255 ? 128 : $1)",
	            "ReadingStatus": "<=/::FruCtrl_1_0.PowerState ; <=/Memory_3.TemperatureCelsius |> string.cmp($1, 'ON') |> expr($1 ? 1 : 0)  |> expr(($1 == 0) ? 2 : ($2 > 255 ? 2 : 0))",
	            "SensorNumber": 255,
	            "AssertMask": 128,
				"DeassertMask": 28800,
				"ReadingMask": 2056,
	            "UpperNoncritical": 95,
	            "PositiveHysteresis": 2,
				"NegativeHysteresis": 2,
	            "M": 1,
	            "IsValid": "<=/Memory_3.Presence |> expr($1 == 1 ? true : false)"
	        },
	
	
	        "ThresholdSensor_Mem4Temp": {
	            "EntityId": "<=/Entity_DIMM011.Id",
	            "EntityInstance": "<=/Entity_DIMM011.Instance",
	            "Initialization": 127,
	            "Capabilities": 232,
	            "SensorType": 1,
	            "ReadingType": 1,
	            "SensorName": "DIMM011 Temp",
	            "Unit": 128,
	            "BaseUnit": 1,
	            "NominalReading": 30,
	            "MaximumReading": 127,
	            "MinimumReading": 128,
	            "Reading": "<=/Memory_4.TemperatureCelsius |> expr($1 > 255 ? 128 : $1)",
	            "ReadingStatus": "<=/::FruCtrl_1_0.PowerState ; <=/Memory_4.TemperatureCelsius |> string.cmp($1, 'ON') |> expr($1 ? 1 : 0)  |> expr(($1 == 0) ? 2 : ($2 > 255 ? 2 : 0))",
	            "SensorNumber": 255,
	            "AssertMask": 128,
				"DeassertMask": 28800,
				"ReadingMask": 2056,
	            "UpperNoncritical": 95,
	            "PositiveHysteresis": 2,
				"NegativeHysteresis": 2,
	            "M": 1,
	            "IsValid": "<=/Memory_4.Presence |> expr($1 == 1 ? true : false)"
	        },
	
	        "ThresholdSensor_Mem5Temp": {
	            "EntityId": "<=/Entity_DIMM020.Id",
	            "EntityInstance": "<=/Entity_DIMM020.Instance",
	            "Initialization": 127,
	            "Capabilities": 232,
	            "SensorType": 1,
	            "ReadingType": 1,
	            "SensorName": "DIMM020 Temp",
	            "Unit": 128,
	            "BaseUnit": 1,
	            "NominalReading": 30,
	            "MaximumReading": 127,
	            "MinimumReading": 128,
	            "Reading": "<=/Memory_5.TemperatureCelsius |> expr($1 > 255 ? 128 : $1)",
	            "ReadingStatus": "<=/::FruCtrl_1_0.PowerState ; <=/Memory_5.TemperatureCelsius |> string.cmp($1, 'ON') |> expr($1 ? 1 : 0)  |> expr(($1 == 0) ? 2 : ($2 > 255 ? 2 : 0))",
	            "SensorNumber": 255,
	            "AssertMask": 128,
				"DeassertMask": 28800,
				"ReadingMask": 2056,
	            "UpperNoncritical": 95,
	            "PositiveHysteresis": 2,
				"NegativeHysteresis": 2,
	            "M": 1,
	            "IsValid": "<=/Memory_5.Presence |> expr($1 == 1 ? true : false)"
	        },
	
	
	        "ThresholdSensor_Mem6Temp": {
	            "EntityId": "<=/Entity_DIMM021.Id",
	            "EntityInstance": "<=/Entity_DIMM021.Instance",
	            "Initialization": 127,
	            "Capabilities": 232,
	            "SensorType": 1,
	            "ReadingType": 1,
	            "SensorName": "DIMM021 Temp",
	            "Unit": 128,
	            "BaseUnit": 1,
	            "NominalReading": 30,
	            "MaximumReading": 127,
	            "MinimumReading": 128,
	            "Reading": "<=/Memory_6.TemperatureCelsius |> expr($1 > 255 ? 128 : $1)",
	            "ReadingStatus": "<=/::FruCtrl_1_0.PowerState ; <=/Memory_6.TemperatureCelsius |> string.cmp($1, 'ON') |> expr($1 ? 1 : 0)  |> expr(($1 == 0) ? 2 : ($2 > 255 ? 2 : 0))",
	            "SensorNumber": 255,
	            "AssertMask": 128,
				"DeassertMask": 28800,
				"ReadingMask": 2056,
	            "UpperNoncritical": 95,
	            "PositiveHysteresis": 2,
				"NegativeHysteresis": 2,
	            "M": 1,
	            "IsValid": "<=/Memory_6.Presence |> expr($1 == 1 ? true : false)"
	        },
	
	        "ThresholdSensor_Mem7Temp": {
	            "EntityId": "<=/Entity_DIMM030.Id",
	            "EntityInstance": "<=/Entity_DIMM030.Instance",
	            "Initialization": 127,
	            "Capabilities": 232,
	            "SensorType": 1,
	            "ReadingType": 1,
	            "SensorName": "DIMM030 Temp",
	            "Unit": 128,
	            "BaseUnit": 1,
	            "NominalReading": 30,
	            "MaximumReading": 127,
	            "MinimumReading": 128,
	            "Reading": "<=/Memory_7.TemperatureCelsius |> expr($1 > 255 ? 128 : $1)",
	            "ReadingStatus": "<=/::FruCtrl_1_0.PowerState ; <=/Memory_7.TemperatureCelsius |> string.cmp($1, 'ON') |> expr($1 ? 1 : 0)  |> expr(($1 == 0) ? 2 : ($2 > 255 ? 2 : 0))",
	            "SensorNumber": 255,
	            "AssertMask": 128,
				"DeassertMask": 28800,
				"ReadingMask": 2056,
	            "UpperNoncritical": 95,
	            "PositiveHysteresis": 2,
				"NegativeHysteresis": 2,
	            "M": 1,
	            "IsValid": "<=/Memory_7.Presence |> expr($1 == 1 ? true : false)"
	        },
	
	        "ThresholdSensor_Mem8Temp": {
	            "EntityId": "<=/Entity_DIMM031.Id",
	            "EntityInstance": "<=/Entity_DIMM031.Instance",
	            "Initialization": 127,
	            "Capabilities": 232,
	            "SensorType": 1,
	            "ReadingType": 1,
	            "SensorName": "DIMM031 Temp",
	            "Unit": 128,
	            "BaseUnit": 1,
	            "NominalReading": 30,
	            "MaximumReading": 127,
	            "MinimumReading": 128,
	            "Reading": "<=/Memory_8.TemperatureCelsius |> expr($1 > 255 ? 128 : $1)",
	            "ReadingStatus": "<=/::FruCtrl_1_0.PowerState ; <=/Memory_8.TemperatureCelsius |> string.cmp($1, 'ON') |> expr($1 ? 1 : 0)  |> expr(($1 == 0) ? 2 : ($2 > 255 ? 2 : 0))",
	            "SensorNumber": 255,
	            "AssertMask": 128,
				"DeassertMask": 28800,
				"ReadingMask": 2056,
	            "UpperNoncritical": 95,
	            "PositiveHysteresis": 2,
				"NegativeHysteresis": 2,
	            "M": 1,
	            "IsValid": "<=/Memory_8.Presence |> expr($1 == 1 ? true : false)"
	        },
	
	
	        "ThresholdSensor_Mem9Temp": {
	            "EntityId": "<=/Entity_DIMM100.Id",
	            "EntityInstance": "<=/Entity_DIMM100.Instance",
	            "Initialization": 127,
	            "Capabilities": 232,
	            "SensorType": 1,
	            "ReadingType": 1,
	            "SensorName": "DIMM100 Temp",
	            "Unit": 128,
	            "BaseUnit": 1,
	            "NominalReading": 30,
	            "MaximumReading": 127,
	            "MinimumReading": 128,
	            "Reading": "<=/Memory_9.TemperatureCelsius |> expr($1 > 255 ? 128 : $1)",
	            "ReadingStatus": "<=/::FruCtrl_1_0.PowerState ; <=/Memory_9.TemperatureCelsius |> string.cmp($1, 'ON') |> expr($1 ? 1 : 0)  |> expr(($1 == 0) ? 2 : ($2 > 255 ? 2 : 0))",
	            "SensorNumber": 255,
	            "AssertMask": 128,
				"DeassertMask": 28800,
				"ReadingMask": 2056,
	            "UpperNoncritical": 95,
	            "PositiveHysteresis": 2,
				"NegativeHysteresis": 2,
	            "M": 1,
	            "IsValid": "<=/Memory_9.Presence |> expr($1 == 1 ? true : false)"
	        },
	
	
	        "ThresholdSensor_Mem10Temp": {
	            "EntityId": "<=/Entity_DIMM101.Id",
	            "EntityInstance": "<=/Entity_DIMM101.Instance",
	            "Initialization": 127,
	            "Capabilities": 232,
	            "SensorType": 1,
	            "ReadingType": 1,
	            "SensorName": "DIMM101 Temp",
	            "Unit": 128,
	            "BaseUnit": 1,
	            "NominalReading": 30,
	            "MaximumReading": 127,
	            "MinimumReading": 128,
	            "Reading": "<=/Memory_10.TemperatureCelsius |> expr($1 > 255 ? 128 : $1)",
	            "ReadingStatus": "<=/::FruCtrl_1_0.PowerState ; <=/Memory_10.TemperatureCelsius |> string.cmp($1, 'ON') |> expr($1 ? 1 : 0)  |> expr(($1 == 0) ? 2 : ($2 > 255 ? 2 : 0))",
	            "SensorNumber": 255,
	            "AssertMask": 128,
				"DeassertMask": 28800,
				"ReadingMask": 2056,
	            "UpperNoncritical": 95,
	            "PositiveHysteresis": 2,
				"NegativeHysteresis": 2,
	            "M": 1,
	            "IsValid": "<=/Memory_10.Presence |> expr($1 == 1 ? true : false)"
	        },
	
	
	        "ThresholdSensor_Mem11Temp": {
	            "EntityId": "<=/Entity_DIMM110.Id",
	            "EntityInstance": "<=/Entity_DIMM110.Instance",
	            "Initialization": 127,
	            "Capabilities": 232,
	            "SensorType": 1,
	            "ReadingType": 1,
	            "SensorName": "DIMM110 Temp",
	            "Unit": 128,
	            "BaseUnit": 1,
	            "NominalReading": 30,
	            "MaximumReading": 127,
	            "MinimumReading": 128,
	            "Reading": "<=/Memory_11.TemperatureCelsius |> expr($1 > 255 ? 128 : $1)",
	            "ReadingStatus": "<=/::FruCtrl_1_0.PowerState ; <=/Memory_11.TemperatureCelsius |> string.cmp($1, 'ON') |> expr($1 ? 1 : 0)  |> expr(($1 == 0) ? 2 : ($2 > 255 ? 2 : 0))",
	            "SensorNumber": 255,
	            "AssertMask": 128,
				"DeassertMask": 28800,
				"ReadingMask": 2056,
	            "UpperNoncritical": 95,
	            "PositiveHysteresis": 2,
				"NegativeHysteresis": 2,
	            "M": 1,
	            "IsValid": "<=/Memory_11.Presence |> expr($1 == 1 ? true : false)"
	        },
	
	
	        "ThresholdSensor_Mem12Temp": {
	            "EntityId": "<=/Entity_DIMM111.Id",
	            "EntityInstance": "<=/Entity_DIMM111.Instance",
	            "Initialization": 127,
	            "Capabilities": 232,
	            "SensorType": 1,
	            "ReadingType": 1,
	            "SensorName": "DIMM111 Temp",
	            "Unit": 128,
	            "BaseUnit": 1,
	            "NominalReading": 30,
	            "MaximumReading": 127,
	            "MinimumReading": 128,
	            "Reading": "<=/Memory_12.TemperatureCelsius |> expr($1 > 255 ? 128 : $1)",
	            "ReadingStatus": "<=/::FruCtrl_1_0.PowerState ; <=/Memory_12.TemperatureCelsius |> string.cmp($1, 'ON') |> expr($1 ? 1 : 0)  |> expr(($1 == 0) ? 2 : ($2 > 255 ? 2 : 0))",
	            "SensorNumber": 255,
	            "AssertMask": 128,
				"DeassertMask": 28800,
				"ReadingMask": 2056,
	            "UpperNoncritical": 95,
	            "PositiveHysteresis": 2,
				"NegativeHysteresis": 2,
	            "M": 1,
	            "IsValid": "<=/Memory_12.Presence |> expr($1 == 1 ? true : false)"
	        },
	
	
	        "ThresholdSensor_Mem13Temp": {
	            "EntityId": "<=/Entity_DIMM120.Id",
	            "EntityInstance": "<=/Entity_DIMM120.Instance",
	            "Initialization": 127,
	            "Capabilities": 232,
	            "SensorType": 1,
	            "ReadingType": 1,
	            "SensorName": "DIMM120 Temp",
	            "Unit": 128,
	            "BaseUnit": 1,
	            "NominalReading": 30,
	            "MaximumReading": 127,
	            "MinimumReading": 128,
	            "Reading": "<=/Memory_13.TemperatureCelsius |> expr($1 > 255 ? 128 : $1)",
	            "ReadingStatus": "<=/::FruCtrl_1_0.PowerState ; <=/Memory_13.TemperatureCelsius |> string.cmp($1, 'ON') |> expr($1 ? 1 : 0)  |> expr(($1 == 0) ? 2 : ($2 > 255 ? 2 : 0))",
	            "SensorNumber": 255,
	            "AssertMask": 128,
				"DeassertMask": 28800,
				"ReadingMask": 2056,
	            "UpperNoncritical": 95,
	            "PositiveHysteresis": 2,
				"NegativeHysteresis": 2,
	            "M": 1,
	            "IsValid": "<=/Memory_13.Presence |> expr($1 == 1 ? true : false)"
	        },
	
	
	
	        "ThresholdSensor_Mem14Temp": {
	            "EntityId": "<=/Entity_DIMM121.Id",
	            "EntityInstance": "<=/Entity_DIMM121.Instance",
	            "Initialization": 127,
	            "Capabilities": 232,
	            "SensorType": 1,
	            "ReadingType": 1,
	            "SensorName": "DIMM121 Temp",
	            "Unit": 128,
	            "BaseUnit": 1,
	            "NominalReading": 30,
	            "MaximumReading": 127,
	            "MinimumReading": 128,
	            "Reading": "<=/Memory_14.TemperatureCelsius |> expr($1 > 255 ? 128 : $1)",
	            "ReadingStatus": "<=/::FruCtrl_1_0.PowerState ; <=/Memory_14.TemperatureCelsius |> string.cmp($1, 'ON') |> expr($1 ? 1 : 0)  |> expr(($1 == 0) ? 2 : ($2 > 255 ? 2 : 0))",
	            "SensorNumber": 255,
	            "AssertMask": 128,
				"DeassertMask": 28800,
				"ReadingMask": 2056,
	            "UpperNoncritical": 95,
	            "PositiveHysteresis": 2,
				"NegativeHysteresis": 2,
	            "M": 1,
	            "IsValid": "<=/Memory_14.Presence |> expr($1 == 1 ? true : false)"
	        },
	
	
	
	        "ThresholdSensor_Mem15Temp": {
	            "EntityId": "<=/Entity_DIMM130.Id",
	            "EntityInstance": "<=/Entity_DIMM130.Instance",
	            "Initialization": 127,
	            "Capabilities": 232,
	            "SensorType": 1,
	            "ReadingType": 1,
	            "SensorName": "DIMM130 Temp",
	            "Unit": 128,
	            "BaseUnit": 1,
	            "NominalReading": 30,
	            "MaximumReading": 127,
	            "MinimumReading": 128,
	            "Reading": "<=/Memory_15.TemperatureCelsius |> expr($1 > 255 ? 128 : $1)",
	            "ReadingStatus": "<=/::FruCtrl_1_0.PowerState ; <=/Memory_15.TemperatureCelsius |> string.cmp($1, 'ON') |> expr($1 ? 1 : 0)  |> expr(($1 == 0) ? 2 : ($2 > 255 ? 2 : 0))",
	            "SensorNumber": 255,
	            "AssertMask": 128,
				"DeassertMask": 28800,
				"ReadingMask": 2056,
	            "UpperNoncritical": 95,
	            "PositiveHysteresis": 2,
				"NegativeHysteresis": 2,
	            "M": 1,
	            "IsValid": "<=/Memory_15.Presence |> expr($1 == 1 ? true : false)"
	        },
	
	
	        "ThresholdSensor_Mem16Temp": {
	            "EntityId": "<=/Entity_DIMM131.Id",
	            "EntityInstance": "<=/Entity_DIMM131.Instance",
	            "Initialization": 127,
	            "Capabilities": 232,
	            "SensorType": 1,
	            "ReadingType": 1,
	            "SensorName": "DIMM131 Temp",
	            "Unit": 128,
	            "BaseUnit": 1,
	            "NominalReading": 30,
	            "MaximumReading": 127,
	            "MinimumReading": 128,
	            "Reading": "<=/Memory_16.TemperatureCelsius |> expr($1 > 255 ? 128 : $1)",
	            "ReadingStatus": "<=/::FruCtrl_1_0.PowerState ; <=/Memory_16.TemperatureCelsius |> string.cmp($1, 'ON') |> expr($1 ? 1 : 0)  |> expr(($1 == 0) ? 2 : ($2 > 255 ? 2 : 0))",
	            "SensorNumber": 255,
	            "AssertMask": 128,
				"DeassertMask": 28800,
				"ReadingMask": 2056,
	            "UpperNoncritical": 95,
	            "PositiveHysteresis": 2,
				"NegativeHysteresis": 2,
	            "M": 1,
	            "IsValid": "<=/Memory_16.Presence |> expr($1 == 1 ? true : false)"
	        },


重新生成固件,更新固件后,BMCweb界面可以显示内存条温度:

然后整机掉电,重新上电开机之后,web界面内存温度传感器消失了

之后再也没有出现过,这是什么情况,如何定位,新增的传感器代码在2509上面是正常的,整机断电也不会消失

答案内容由AI生成,仅供参考:

总结

根据现有上下文信息,您的传感器消失问题可能与以下因素相关:

  1. AC/掉电重启时BMC启动时序问题,导致传感器对象在服务尚未就绪时初始化失败且不重试(参考AC重启丝印问题案例)。
  2. 内存温度数据获取失败(与事件码0x0100003F相关),在掉电重启场景下传感器读取到无效值导致状态异常。
  3. 版本差异:2603版本在传感器初始化或处理逻辑上与2509存在变化,可能需要确认闭源组件或BMC框架在2603中的行为。

建议优先执行的第一步定位操作:打开debug开关并收集 applog,重点检查BMC启动到传感器消失这段时间内的传感器初始化日志、I2C通信失败日志以及传感器对象创建失败记录。

点击此处查看详细分析解答

根据您提供的信息和知识库内容,针对您在 2603版本 上新增内存温度传感器后,整机断电重新上电后传感器消失且不再出现的问题,以下是基于现有上下文的综合分析与定位建议:

问题概述

  • BMC版本:2603
  • 问题现象:在BCU中添加了 ThresholdSensor_Mem1Temp 至 ThresholdSensor_Mem16Temp 等内存温度门限传感器后,重新生成并更新固件,BMC Web界面可以正常显示内存条温度。但整机掉电重新上电开机后,Web界面内存温度传感器消失,且之后不再出现。
  • 版本差异:同样新增传感器代码在 2509版本 上正常,整机断电后传感器不会消失。

可能原因分析

1. 启动时序问题(与AC重启场景类似)

根据文档 《AC重启后Bios从BMC获取内存丝印失败导致BMC获取厂商为NA问题分析》,存在一个非常相似的场景:AC重启时,BMC在尚未完成服务启动的情况下,部分组件(如fructrl)就执行了信息获取操作,导致获得的数据为空或错误,且该次上报不会重试。

  • 在该案例中,fructrl 组件在BMC未完成丝印信息准备时,BIOS获取丝印失败,导致内存信息无法正确上报,Web页面无法正常展示厂商信息。
  • 解决方案是将上电时间不足90s时修改为等待至90s,等待所有服务全部启动完成后再上报。

与此关联,您的场景中传感器消失可能与 BMC启动时传感器初始化时序 有关:

  • 新增的 ThresholdSensor_MemXTemp 传感器对象在BMC启动早期可能尚未完成注册或初始化,而系统已经进行了一次传感器扫描或数据读取。
  • 如果该次初始化失败,且系统不会重新尝试,则传感器对象有可能永久丢失。

2. 传感器数据获取失败(与内存温度获取失败场景关联)

知识库中的 Memory Temperature 实体描述明确指出:

内存温度数据在 AC cycle执行、电源循环 等场景下多次获取失败,这与IPMB消息传输问题及硬件监控失败有关,影响CPU1和CPU2。

此外,事件码 0x0100003F 正是 内存温度数据获取失败 时记录的告警事件(如在冷重启测试中出现)。这说明在掉电重启场景下,内存温度数据的获取确实存在已知的不稳定性。

您的场景是整机断电重新上电,可能触发了类似的内存温度数据获取失败,导致传感器读取到无效值(如32768),进而传感器状态异常或对象未创建。

3. 定制化传感器与CSR的兼容性问题

文档 《定制化内存传感器,导致内存离散传感器丢失》(topic_id: 4797)描述了一个高度相关的问题:

在定制化仓中定制化内存CSR,添加 ThresholdSensor_Mem1Temp 内存温度传感器后,CSR中原来的内存离散传感器在环境上以及web上都丢失了。

这说明 新增定制化传感器可能导致其他传感器对象丢失 的问题在社区中已有先例。虽然您的场景是传感器自身消失,但可能与CSR中对象定义、加载优先级或冲突有关。

定位建议

第一步:检查启动日志与传感器扫描

参考知识库中 Huangjiapei O2800 在冷重启传感器丢失问题中给出的建议:

  1. 打开debug开关,查看是否从带内获取温度失败(或传感器初始化失败)的打印。
  2. 通过一键收集 applog ,确认带内运行状态以及BMC启动过程中的传感器扫描情况。

重点查看:

  • BMC启动过程中 ThresholdSensor_Mem1Temp 等传感器对象是否存在创建失败的日志。
  • 传感器扫描配置是否在掉电重启后未正确加载。
  • 是否存在I2C通信失败(类似 i2c read fail, ret:5)的记录——文档中提到该错误会导致温度传感器对象缺失。

第二步:检查掉电时序与90秒等待机制

参考AC重启案例的定位思路:

  • 查看掉电上电后,BMC是否在 所有服务(尤其涉及内存信息上报的服务)完全启动 后才进行传感器初始化和数据读取。
  • 确认是否因为BMC启动过快,导致新增传感器对象在 FruCtrl_1_0.PowerState 尚未变为 ON 时被评估,传感器 ReadingStatus 返回无效(如数值2),进而传感器未正常显示。

第三步:对比版本差异(2509 vs 2603)

  • 知识库中 Temperature Sensor Data 实体提到,升级后 AiCoreTemp、HBMTemp、VRDChipTemp、NimBusTemp 等 温度传感器数据无法访问。
  • 建议对比2509和2603版本在 BMC启动初始化流程、传感器扫描机制、以及闭源组件中的传感器处理逻辑 是否存在变更。知识库提到“闭源组件进行了优化”但尚未发布或在不同版本中行为不同,这可能解释了版本差异。

第四步:验证传感器独立性

  • 参考topic 4797中的现象,检查新增的16个温度传感器是否 与原有的内存离散传感器或其他对象存在冲突,导致传感器在特定启动条件下未被正确创建。
  • 尝试确认掉电后传感器消失是 全部消失 还是 仅新增传感器消失,这有助于区分是配置问题还是整体传感器加载问题。

总结

根据现有上下文信息,您的传感器消失问题可能与以下因素相关:

  1. AC/掉电重启时BMC启动时序问题,导致传感器对象在服务尚未就绪时初始化失败且不重试(参考AC重启丝印问题案例)。
  2. 内存温度数据获取失败(与事件码0x0100003F相关),在掉电重启场景下传感器读取到无效值导致状态异常。
  3. 版本差异:2603版本在传感器初始化或处理逻辑上与2509存在变化,可能需要确认闭源组件或BMC框架在2603中的行为。

建议优先执行的第一步定位操作:打开debug开关并收集 applog,重点检查BMC启动到传感器消失这段时间内的传感器初始化日志、I2C通信失败日志以及传感器对象创建失败记录。

根据ai的提示还未解决

可以看下框架日志是否对象未加载

请问具体在哪里看呢

麻烦给一份出现问题时的日志

请问该问题是否还存在呢?可以从一键式日志的AppDump目录下找到sensor目录,里面有一个mdb_info.log,文件中记录了所有门限传感器对象的上树情况,可以检查下出问题的sensor有没有上树

mdb_info.txt (355.1 KB)

Threshold传感器没有上树哎,是我配的有问题嘛,但是这个固件刷上去不断电的时候是可以看到内存温度传感器的,大断之后传感器就消失了,然后这个一键收集没上树,能否提供一个2603的内存温度传感器正确配置参考

下电后传感器消失了比较奇怪,建议看下一键式日志中AppDump目录下的hwdiscovery目录,这个目录下收集了当前环境上加载的各个板卡的csr文件。你可以看下BCU板当前加载的csr是不是你添加了传感器的那一份