升级到openubmc, 920s模组如何修改vpd以支持获取CPU、内存信息和电源控制

问题描述

升级到openubmc, 920s模组如何修改vpd以支持获取CPU、内存信息和电源控制

环境信息

  • 软件版本:[如 OpenUBMC2509]

  • 硬件配置:[鲲鹏920s模组]

[repeated 1 times in 1s from 1970-01-01 00:05:30.353556 to 1970-01-01 00:05:31.460368][flush]

1970-01-01 00:11:46.722376 oms NOTICE: task_mgmt.lua(443): Update task[Id: 1988002370, StartTime: 1970-01-01T00:03:52+00:00, Progress: 61, State: Running] successfully [repeated 1 times in 2s from 1970-01-01 00:05:25.957784 to 1970-01-01 00:05:27.056759][flush]
1970-01-01 00:12:01.024408 iam ERROR: init.lua(97): nil:-1 > model.lua:1590 > session_service.lua:877: The session has timed out, please log in again.
1970-01-01 00:12:01.635311 iam ERROR: init.lua(97): nil:-1 > model.lua:1599 > session_service.lua:877: The session has timed out, please log in again.
1970-01-01 00:12:18.934703 fructrl NOTICE: fructrl_obj_mgnt.lua(291): [System:1]call PowerCtrl method, PowerCtrlType=On, RestartCause=ChassisControlCommand, FruID=0.
1970-01-01 00:12:18.935811 fructrl NOTICE: fructrl_obj_mgnt.lua(45): host 1 call power ctrl, ctrl_type=On, reason=ChassisControlCommand, fruid=0
1970-01-01 00:12:26.227499 product_mgmt ERROR: service.lua(49): Get product obj failed!

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

解决方案

1. VPD配置支持

920s模组已获得官方支持

  • 已有名为"Support 920s Modul"的Pull Request合并到openUBMC/vpd: main分支
  • 该提交包含了对920s模组的支持文件:
    • vendor/Huawei/TianChi/EXU/14100513_920s.sr
    • vendor/Huawei/TianChi/EXU/14100513_920s_soft.sr

2. CPU与内存信息获取配置

要使openUBMC获取CPU和内存信息,必须确保正确的硬件连接器配置:

**关键步骤**:
1. 确认920s模组的CSR(Component Specific Resource)文件中配置了connector,连接到VPD对应的memory CSR
2. 在相关模组的.sr文件中添加内存连接器connector配置
3. 示例配置应包含:

Connector Memory_1: {
“Bom”: “memory”,
“Slot”: 1,
“Position”: 7,
“Presence”: 1,
“Id”: “920”,
“AuxId”: “0”,
“Buses”: ,
“IdentifyMode”: 2
}

3. 电源控制配置

电源控制功能由fructl组件和VPD组件共同实现:

**VPD配置要点**:
- 配置`FruCtrl`对象相关属性
- 需要正确设置以下关键对象:
  - `PGSignal_1_0101`: 电源正常信号
  - `ButtonEvt_1_0101`: 按钮事件
  - `ACCycle_1_0101`: AC循环控制
  - `PowerButton_1_0101`: 电源按钮

**配置方式**:
这些对象应配置在对应硬件的.soft.sr文件中,如:
`vendor\openUBMC\14060876_00000001020302031825_soft.sr`

4. 构建与部署流程

**构建步骤**:
1. 修改`mds/service.json`,设置默认board_name:
   ```json
   "board_name": {
       "option": ["common", "openUBMC", "S920H20", "S920X20"],
       "default": "S920X20"  // 或对应920s型号
   }
  1. 本地构建命令:

    bingo build --stage=stable -o vpd/*:board_name=S920X20
    
  2. 在manifest.yml中指定VPD版本:

    - conan: "vpd/1.80.192@openubmc/stable"
      options:
        board_name: S920X20
    
  3. 构建最终固件包:

    SIGN_PASSWORD=*** bmcgo build -b openUBMC
    

[details="点击此处查看详细分析解答"]
# 920s模组升级openUBMC后配置VPD以支持CPU、内存信息获取和电源控制

根据您的问题,920s模组在升级到openUBMC后,需要正确配置VPD(Vital Product Data)才能正常获取CPU、内存信息并实现电源控制功能。

## 核心问题分析

920s模组(具体型号为KP920S08)使用Hi1711 BMC,升级到openUBMC后无法正常显示CPU、内存、硬盘、电源等相关信息。这通常是VPD配置不完整导致的,尽管相关特性已通过提交支持。

## 解决方案

### 1. VPD配置支持

**920s模组已获得官方支持**:
- 已有名为"**Support 920s Modul**"的Pull Request合并到`openUBMC/vpd: main`分支
- 该提交包含了对920s模组的支持文件:
  - `vendor/Huawei/TianChi/EXU/14100513_920s.sr`
  - `vendor/Huawei/TianChi/EXU/14100513_920s_soft.sr`

### 2. CPU与内存信息获取配置

要使openUBMC获取CPU和内存信息,必须确保正确的硬件连接器配置:

```markdown
**关键步骤**:
1. 确认920s模组的CSR(Component Specific Resource)文件中配置了connector,连接到VPD对应的memory CSR
2. 在相关模组的.sr文件中添加内存连接器connector配置
3. 示例配置应包含:

Connector Memory_1: {
“Bom”: “memory”,
“Slot”: 1,
“Position”: 7,
“Presence”: 1,
“Id”: “920”,
“AuxId”: “0”,
“Buses”: ,
“IdentifyMode”: 2
}

3. 电源控制配置

电源控制功能由fructl组件和VPD组件共同实现:

**VPD配置要点**:
- 配置`FruCtrl`对象相关属性
- 需要正确设置以下关键对象:
  - `PGSignal_1_0101`: 电源正常信号
  - `ButtonEvt_1_0101`: 按钮事件
  - `ACCycle_1_0101`: AC循环控制
  - `PowerButton_1_0101`: 电源按钮

**配置方式**:
这些对象应配置在对应硬件的.soft.sr文件中,如:
`vendor\openUBMC\14060876_00000001020302031825_soft.sr`

4. 构建与部署流程

**构建步骤**:
1. 修改`mds/service.json`,设置默认board_name:
   ```json
   "board_name": {
       "option": ["common", "openUBMC", "S920H20", "S920X20"],
       "default": "S920X20"  // 或对应920s型号
   }
  1. 本地构建命令:

    bingo build --stage=stable -o vpd/*:board_name=S920X20
    
  2. 在manifest.yml中指定VPD版本:

    - conan: "vpd/1.80.192@openubmc/stable"
      options:
        board_name: S920X20
    
  3. 构建最终固件包:

    SIGN_PASSWORD=*** bmcgo build -b openUBMC
    

## 常见问题排查

### 信息不显示的可能原因
- VPD配置文件未正确应用到构建流程
- .sr文件未包含必要的connector配置
- BIOS未通过IPMI正确上报CPU和内存静态信息
- 构建时board_name选项设置错误

### 验证方法
- 使用`cat /etc/package_info | grep vpd`确认VPD版本正确
- 检查构建临时目录中是否包含正确的.sr文件
- 确认web界面中"系统信息"下的"资产摘要"、"处理器"、"内存"等子标签页是否能显示数据

## 参考资料

- [920s模组参考代码链接](https://gitcode.com/AtomGit)
- OpenUBMC Documentation ([https://www.openubmc.cn/docs/zh/development/](https://www.openubmc.cn/docs/zh/development/))
- openUBMC论坛相关讨论话题 #5462, #3743, #4453

按上述步骤配置后,应能解决920s模组在openUBMC下无法获取CPU、内存信息及电源控制的问题。
[/details]

现在改了opeubmc root.sr,
“Connector_EXU_1”: {
“Bom”: “14100513”,
“Slot”: 1,
“Position”: 1,
“Presence”: 1,
“Id”: “920s”,
编译烧录后,web页面报错Expansion board CPLD 1 self-check result is abnormal.
connectors.txt (7.7 KB)
app.zip (125.7 KB)

从日志信息看,cpld自检失败是因为环境启动后运行cpld自检流程,向自检寄存器中写入的值和读出的值不一致。检查下扩展板的ExpBoard对象是否配置了CpldTestReg属性,该属性关联的Accessor是否配置正确。配置无问题的话,可以使用mdbctl手动向该Accessor中写入数值看下能否写入。

我们现在烧录了openubmc 2603社区无签名版本后,开机后KP920S一直没有电,这个需要配置什么吗?

现在KP920S的nvme系统盘也没有识别到,CPU 串口也没有日志输出
2000-01-01 00:54:50.192841 certificate ERROR: certificate_parser.lua(265): The certificate start time is greater than the current time
2000-01-01 00:54:50.196235 event NOTICE: event_management.lua(1052): add_software_event is called by bmc.kepler.certificate [repeated 1 times in 401s from 2000-01-01 00:48:09.973555 to 2000-01-01 00:54:50.196235]
bios ERROR: bios file not exist
1970-01-01 00:00:21.007888 file_transfer NOTICE: get_dbus_connection:1905 > Dbus (session bus) connected

2000-01-01 00:01:39.357436 fructrl NOTICE: fructrl_obj_mgnt.lua(300): [System:1]set poweron lock, pwronlocked=false, timeout=65535, appname=Upgrade, reason=VerifyFlash
2000-01-01 00:01:39.357444 sensor NOTICE: object_manage.lua(720): fetch hwdiscovery objects completely, took 0 ms, uptime: 71 s
2000-01-01 00:01:39.358297 sensor NOTICE: object_manage.lua(682): start to fetch devmon objects
2000-01-01 00:01:39.366108 bios NOTICE: pfr_service.lua(120): [PfrService]PfrService: system 1 unlock fructl forever lock success.
2000-01-01 00:01:39.366620 bios NOTICE: alarm_manager.lua(162): event_list is nil, no need recover, system id: nil
2000-01-01 00:01:39.367010 bios NOTICE: bios_app.lua(526): [bios]power status is off, execute insure action successfully
2000-01-01 00:01:39.367381 bios NOTICE: bios_app.lua(572): [bios]fork init end

2000-01-01 00:31:19.716495 remote_console NOTICE: dump.lua(61): remote_console dump end
2000-01-01 00:31:20.376688 storage ERROR: bus_monitor_service.lua(191): SmBiosObjects is null!
2000-01-01 00:31:20.671803 oms NOTICE: task_mgmt.lua(443): Update task[Id: 4293302830, StartTime: 2000-01-01T00:31:05+00:00, Progress: 49, State: Running] successfully
2000-01-01 00:31:21.773654 oms NOTICE: task_mgmt.lua(443): Update task[Id: 4293302830, StartTime: 2000-01-01T00:31:05+00:00, Progress: 49, State: Running] successfully
2000-01-01 00:31:22.873692 oms NOTICE: task_mgmt.lua(443): Update task[Id: 4293302830, StartTime: 2000-01-01T00:31:05+00:00, Progress: 49, State: Running] successfully
2000-01-01 00:31:24.875996 storage ERROR: bus_monitor_service.lua(204): BiosObjects is null!
2000-01-01 00:31:24.876492 storage NOTICE: storage_app.lua(84): Dumping controllers info