TPSU&PSU模块管理特性说明书
更新时间: 2025/09/18
在Gitcode上查看源码

本文旨在介绍TPSU&PSU模块管理特性,重点说明电源基础管理、电源设备树管理、电源升级管理等管理特性。

1. TPSU&PSU电源识别加载流程

  1. 自发现识别加载CSR
  2. 自发现上树ObejctGroup对象
  3. 组件框架发送InterfaceAdd信号给各个组件
  4. 各个组件向自发现请求MDS对象
  5. 组件框架创建资源树对象
  6. 组件框架将自发现解析出来的属性赋值给对象
  7. 组件框架从持久化恢复数据到对象上
  8. 组件框架把对象注册上树
  9. 调用各个组件的addobject回调
  10. 执行组件设备树的差异性适配
  11. 执行orm初始化回调,对象初始化完成

2. TPSU&PSU电源设备树管理

电源设备树主要涉及的对象有OnePowerPsuSlotMonitorProtocol,各对象定义和作用如下:

OnePower

设备树加载通用模型,与通用逻辑不一致的需要自行在对应的CSR目录下补充adapter,通用OnePowerinit阶段关联上一级position的同槽位PsuSlot对象,并刷新Fru信息。


PsuSlot

PsuSlot所在不同的单板,需要独立配置一份adapter。框架在获取到PsuSlot对象后,会根据所属的CSR,拉起不同的adapter

PsuSlot主要函数逻辑(适配新adapter需要实现):

  • fetch_power_supply_info 注册对应的协议(如pmbus,canbus),并刷新Fru数据
  • power_monitor_start 拉起属性轮询任务
  • psm_monitor_stop 停止电源轮询任务

Monitor

不同协议的电源在属性查询、轮询周期等实现上有所不同,所以需要对fetch_power_supply_infopower_monitor_start的实现函数提取,不同的任务调度提取出来作为monitor

Monitor主要函数逻辑(适配新adapter需要实现):

  • fetch_power_supply_info 获取并刷新Fru数据
  • power_monitor_start 启动电源信息监控
  • stop_monitor_tasks 停止电源信息监控

Protocol

电源协议,根据不同的电源类型实现,对外屏蔽命令字和逻辑功能实现,接口功能和名称保持一致。

主要包含:

  • 电源功率信息、状态信息、Fru信息的查询;
  • 电源黑匣子数据获取;
  • 电源模式设置(主备、深度休眠);
  • 电源风扇转速设置;
  • 电源升级处理。


3. TPSU&PSU电源固件升级管理

  1. 获取协议和升级包匹配的电源
  2. 检验电源数是否为0
  3. 电源模式切换,防止整机掉电
  4. 电源升级顺序排序,按照电源健康度进行排序
  5. 按照排序顺序遍历每个电源电源
  6. 校验环境是否支持升级
  7. 停止电源数据监控
  8. 升级单个电源
  9. 恢复数据监控并刷新电源固件信息
  10. 返回电源升级结果


主要函数逻辑

power_upgrade

is_support_upgrade(psu_obj)

校验电源是否支持升级(电源状态、模式、数量校验)


PsuSlot

power_upgrade(upgrade_path, upgrade_process)

升级前后处理(电源监控任务的停止、拉起和电源状态的刷新)及protocol升级处理的调用


Protocol

upgrade(upgrade_path, upgrade_process)

电源升级处理