如何从零开发一个CSR
更新时间: 2026/06/16
在Gitcode上查看源码

如何从零开发一个CSR

拟制:郭康 日期:2025/07/21

修订记录

日期修订版本修改描述
2025/07/21V1.0初版完成

[TOC]

1 CSR简介

在学会配置CSR之前,首先要理解以下几个问题:

1.什么是CSR?

CSR即组件自描述信息。

2.CSR是做什么用的?

组件在BMC管理根链路下挂一个固定地址为0xAE的EEPROM,BMC通过读取自描述文件CSR获取组件信息。

3.CSR里面都有什么?

组件CSR中包含单板的基本硬件、单板的物理拓扑、单板上需要管理的器件的物理对象。其中单板的基本硬件属性描述单板的类型、ID、版本号等;单板的物理拓扑主要定义单板的器件管理拓扑信息,比如管理总线拓扑,单板可以根据硬件实际情况定义数据文件包含的内容,但是管理拓扑是必须要有的;单板的物理对象主要定义了板内的物理对象,包含芯片、连接器、总线、IO槽位等,BMC通过获取这些物理对象加载对应的管理特性。

4.为什么要搞CSR?

传统的单板管理方案,需要一个独立的单板ID(board ID),BMC软件在启动后,采集单板的board ID,区分单板的类型,然后通过查表加载对应单板的配置文件。BMC软件通过Localbus总线读取单板的CPLD寄存器值,通过在上述配置文件中描述每个单板的CPLD寄存器列表,来获取单板对应的告警、在位信息。缺点:8bit的board ID可以描述256种单板,board ID需要专门的管理,并且直接限制了BMC可以管理的总单板数量上限;每块单板需要制作独立的配置文件,增加了BMC软件的开发适配的工作量; 单板的管理总线不归一,新增一种类型的管理器件都需要BMC做适配工作量。

天池架构管理方案,将单板的带外管理接口归一为统一的管理总线,这条总线当前为I2C总线(可以平滑演进到I3C总线),也可以为SPI总线等,这条管理总线作为单板管理的根管理链路。单板管理根链路上必须接一颗地址固定的EEPROM作为FRUD(Field Replaceable Unit Description),FRUD中应该包含单板的硬件信息、需要管理的器件以及拓扑信息,告警信息等。BMC软件通过读取FRUD信息,自动加载单板的管理特性。

5.CSR是怎么工作的?

单板上的其他带外管理器件,包括但不限于温感、ADC等传感器,以及外出设备如硬盘等的管理,不直接挂在BMC直出的根管理总线下,统一在单板上采用SMC(Satellite Manager Centre)来管理,SMC可以是一个CPLD,也可以是一个MCU。SMC采集到单板上的传感器信息之后,通过根管理总线接口上报给BMC,上报采用命令字方式,一种类型数据对应一个命令字。命令字在不同单板之间共用,BMC不需要对不同单板进行适配。SMC命令字固定定义为4个字节(32个比特)

其中Opcode包含4个部分,Function用于描述功能定义对应的单板类型,command用于定义标准命令字,MS用于区分是多个读取还是单个读取,RW用于区分命令是读取还是写入。parameter用于描述命令字获取的是第几个传感器信息。

2 熟悉单板管理方案,输出CSR软硬件接口文档

想要配置一个单板完整的CSR文件,就必须要熟悉这个单板的管理方案。这部分通过CSR软硬件接口文档承载,该部分由板主提供。这个文档呈现单板的功能单板硬件基本配置,包括单板的uid、0302、pcb id等配置,单板硬件带外带内管理拓扑情况,单板高速端口级线缆告警对应说明,单板电压门限,单板各种告警事件说明等,该部分内容基本都是需要配置在CSR中的,想要配置CSR一定到清楚该文档的内容。

在首次上库前需要输出单板CSR软硬件接口文档,没有文档不给上库。

软硬件接口文档模板请参考 openUBMC 社区提供的相关模板。

3 拉取对应组件金样SR,分析差异

天池智能组件一般分为基础板,拓展板,背板,风扇板,Riser 5种,再加上整机的PSR,目前已经提供这6种组件的金样sr文件和对应的配置指导书。金样sr与配置指导书是对应的。在了解清楚单板管理方案后可以通过查看配置指导书和金样sr确认板卡间的差异。

金样sr、CSR配置指导书请参考 openUBMC 社区归档文档。

这里列举比较常见的一些差异点:

差异1:管理拓扑的差异,不同的单板管理拓扑大体上一致,细节存在差异,在ManagementTopology模块主要表现为对外接口的数量,同步增加或者减少Connector相关配置,以及DFX中hisport_IIC使能配置修改(需要与逻辑对齐)。这里以基础板管理拓扑举例,每种板卡的管理拓扑在对应的配置指导书中有归档。假设在920B的基础上开发一款新的单板,板上UBC数量位920B的一半,需要删掉一半的Hisport_I2C和对应的Connector。

差异2:板卡信息差异,主要包括uid,板名以及单板上器件位号的差异。

差异3:板级所有电压、温度、时钟、功率传感器以及相关告警配置。一般区别为传感器数量变化,告警门限变化。传感器信息在软硬件接口文档有描述。主要进行以下四部分的配置:

1.在sr文件中配置对应传感器的Scanner

2.在DFX中配置对应的Scanner,在SMCDFX的Config中配置相应数据,在Mapping进行拼接、移位操作,赋值给对应的传感器,注意dfx Config的配置与mapping一定要一一对应。

3.根据Scanner配置相关的告警,需注意Event相关配置一般是在soft文件里,新增告警需要与BMC一同配置相关参数。

4.配置对应的传感器信息,需注意传感器信息目前软件相关的信息配置在soft文件里,硬件相关的信息配置在sr文件里,新增传感器需要与BMC一同配置相关参数。

差异4:DFX的差异。该部分需要与逻辑/MCU对齐,确保smc的每个字节内容与逻辑/MCU对应。注意Config的配置与mapping一定要一一对应。

差异5:CPLD/CSR/MCU等升级管理,需要配置对应的UID进行校验。

CPLD升级:

CSR升级:

MCU升级:

差异6:能效管理差异。最终会用到整机调速上面,需要配置温度点以及异常调速值该部分由热设计提供。

差异7:Riser槽位差异,背板槽位差异,风扇板风扇数量差异等相关配置差异同步在管理拓扑差异中,进行管理拓扑配置时进行修改相关配置。

差异8:PSR在调速策略相关配置这一块由BMC主导。

差异9:线缆检测白名单相关配置(仅涉及PSR),该部分配置在PSR配置指导书里面已经阐述很清楚,具体可参考PSR配置指导书。

这里列举的差异点是非常明显差异的地方,具体一些细节上的配置还是要按照软硬件接口文档里面的参数进行配置的。

4 通过BMC Studio进行差异点修改

BMC Studio是一个一站式开发、配置、出包、调试的BMC开发软件。社区硬件平台进行 CSR 修改变更时需要通过 Studio 工具修改,尤其是首版本必须通过工具进行编写修改,减少低级错误。不使用 Studio 工具不给上库!!

排查完与金样sr差异之后,通过BMC Studio对差异点配置进行修改。

BMC Studio工具具体的安装以及配置使用请参考 openUBMC 社区相关文档。

具体参数配置请参考配置字典。

在安装,配置使用中遇到的问题可以咨询社区维护者。

5 验证基本功能,根据测试用例输出验证报告

进行修改完之后出包,对基本功能进行验证,验证无问题后输出验证报告,评审上库。

基本功能:

1.正常升级。

2.升级后环境正常上电。

3.无异常告警。

4.组件信息显示正常,web界面组件的名称,位置,描述,UID等信息显示正常。

5.测试用例相关测试正常。

测试用例请参考 openUBMC 社区相关模板文档。

6 上库前CSR-DEG评审

每周一晚上固定CSR-DEG评审。提前申报议题,进行上库前评审。

议题申报请通过 openUBMC 社区标准流程进行。

7 输出CSR详细设计文档

首次上库前输出CSR详细设计文档。

模板请参考 openUBMC 社区提供的相关模板。