文档信息
| 项目 | 内容 |
|---|---|
| 文档标题 | ManagementTopology配置字典 |
| 版本 | v1.0 |
| 创建日期 | 2025-12-19 |
| 最后更新 | 2025-12-19 |
| 维护状态 | 活跃维护 |
变更历史记录
| 版本 | 发布日期 | 变更类型 | 变更内容 | 影响范围 | 维护人员 |
|---|---|---|---|---|---|
| v1.0 | 2025-12-19 | 初始版本 | 创建ManagementTopology配置说明 | 全新文档 | Hardware SIG |
类概览
ManagementTopology 结构
| 属性 | 值 |
|---|---|
| 类名称 | ManagementTopology |
| 功能描述 | 定义CSR文件中管理拓扑的层级关系,描述Bus/Chip/Connector的连接关系 |
| 所属SIG组 | hardware |
| 所属组件 | CSR框架 |
| 责任人 | 硬件架构组 |
| 最后更新 | 2025-12-19 |
| 状态 | 正常运行 |
结构定义详表
必选结构
| 结构名 | 类型 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
|---|---|---|---|---|---|---|
Anchor | Object | 管理拓扑的根节点,是上一级Connector传递链路的入口,和上级板卡连接的桥梁 注意:Anchor是必选对象类型且它一定包含Buses属性 | 所有CSR文件必须配置Anchor作为拓扑入口 | {"Anchor": {"Buses": ["I2c_2"]}} | CSR配置 | 硬件 |
Anchor.Buses | String[] | Anchor下挂载的总线列表,这些总线来自上级Connector传递的链路 | 定义从上级板卡传入的总线 | ["I2c_2", "I2c_5", "JtagOverLocalBus_1"] | CSR配置 | 硬件 |
可选结构
| 结构名 | 类型 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
|---|---|---|---|---|---|---|
Buses | Object | 总线对象,可以挂载Chips和Connectors 注意:openUBMC规定传入的Buses下必须至少配置一个器件(Connector或Chip)或被传入到下一级连接器 | 在总线上挂载芯片或连接器 | {"I2c_2": {"Chips": ["Smc_ExpBoardSMC"]}} | CSR配置 | 硬件 |
Buses.Chips | String[] | 总线下挂载的芯片对象名称列表 芯片对象必须在Objects中定义 | 在总线上挂载物理芯片 | ["Smc_ExpBoardSMC", "Eeprom_SEU"] | CSR配置 | 硬件 |
Buses.Connectors | String[] | 总线下挂载的连接器对象名称列表 连接器对象必须在Objects中定义 | 在总线上挂载连接器,用于连接下级板卡 | ["Connector_ComVPDConnect_1"] | CSR配置 | 硬件 |
Chips | Object | 芯片对象,某些芯片类型(如Pca9544、Pca9545、Pca9548、Smc、JtagSwitch)可以扩展出新的总线 注意:同一个I2cMux或JtagMux总线不能挂在两个Chip下 | 芯片扩展总线或作为终端设备 | {"Smc_EnclSMC": {"Buses": ["I2cMux_SMC_1"]}} | CSR配置 | 硬件 |
Chips.Buses | String[] | 芯片扩展出的总线列表 只有特定芯片类型(Pca9544、Pca9545、Pca9548、Smc、JtagSwitch)可以扩展总线 | 通过芯片扩展总线通道 | ["I2cMux_SMC_1", "I2cMux_SMC_2"] | CSR配置 | 硬件 |
Connectors | Object | 连接器对象,用于连接下级板卡 连接器对象必须在Objects中定义 | 连接下级板卡或组件 | 在Objects中定义Connector对象 | CSR配置 | 硬件 |
SubBuses | String[] | 总线拓展关系标识 用于标识物理总线(控制器)被拓展的场景,如Hisport控制器拓展出I2cOverHisport协议总线 注意:此属性配置在ManagementTopology中父总线的定义里,用于列出该物理总线拓展出来的协议总线列表 注意:通过通道复用(如Pca9545、Smc等芯片扩展出来的I2cMux)不算总线拓展特性 | 标识物理总线协议转换关系 | ["I2cOverHisport_1"] | CSR配置 | 硬件 |
拓扑结构规则
层级关系规则
ManagementTopology只能包含
Anchor、Buses、Chips、Connectors的层级关系Anchor是必选对象类型且它一定包含Buses属性Buses、Chips和Connectors是可选字段,且不能包含其他对象
解析方式
- ManagementTopology中的对象都是对Objects下面对象的引用
- 按照树结构根节点开始,以层序遍历的方式平铺列出Bus/Chip/Connector的连接关系
Anchor规则
- Anchor是上一级Connector传递链路的入口
- Anchor是和管理拓扑的root节点(BMC芯片/板卡)连接的桥梁
- Anchor必须包含Buses属性,这些Buses来自上级Connector传递
Buses规则
- 传入的Buses上可以挂载Chips和Connectors对象,也可以什么都不挂载
- 但如果Buses挂载其他对象,则需要定义它配置的Chips和Connectors
- 注意:openUBMC规定传入的Buses下必须至少配置一个器件(Connector或Chip)或被传入到下一级连接器
Chips规则
- Chip对象必须挂在总线下,需要在ManagementTopology中声明该Chip对象挂载在哪个总线下
- 某些Chip类型(Pca9544、Pca9545、Pca9548、Smc、JtagSwitch)可以扩展出新的总线
- I2cMux对象必须放在Pca9544、Pca9545、Pca9548或Smc下
- JtagMux对象必须放在JtagSwitch下
- 注意:同一个I2cMux或JtagMux总线不能挂在两个Chip下
Connectors规则
- Connector对象必须挂在总线下
- Connector用于连接下级板卡,传递总线链路给下级板卡的Anchor
SubBuses规则(总线拓展特性)
- 支持物理总线(控制器)被拓展的场景,使用
SubBuses关键词来标识物理总线和其拓展出来的协议总线的关系 - 例如:Hisport控制器可以拓展出I2cOverHisport协议总线
- 在ManagementTopology中,父总线(物理总线)使用
SubBuses属性列出它拓展出来的协议总线列表 SubBuses属性值为字符串数组类型,包含该物理总线拓展出来的所有协议总线名称- 拓展出来的协议总线必须在Objects中定义,并在ManagementTopology中正确配置其层级关系
- 注意:SubBuses特性用于标识物理总线协议转换关系,便于系统识别和管理总线拓扑
- 注意:通过通道复用(如Pca9545、Smc等芯片扩展出来的I2cMux总线)不算总线拓展特性,不需要配置SubBuses
- 支持物理总线(控制器)被拓展的场景,使用
分类标准
硬件属性
- 定义:与物理硬件连接和组件管理直接相关的参数
- 特点:所有结构均为硬件相关,涉及物理连接、总线配置和组件识别
- 示例:
Anchor、Buses、Chips、Connectors
配置示例
基础配置示例(简单拓扑)
{
"ManagementTopology": {
"Anchor": {
"Buses": [
"I2c_2",
"I2cMux_pca9545_chan1"
]
},
"I2cMux_pca9545_chan1": {
"Chips": [
"Eeprom_NIC",
"Pca9555_NIC",
"Lm75_1"
]
},
"I2c_2": {
"Chips": [
"Smc_ExpBoardSMC"
]
}
}
}复杂配置示例(多级拓扑)
{
"ManagementTopology": {
"Anchor": {
"Buses": [
"I2c_2",
"I2c_5",
"JtagOverLocalBus_1"
]
},
"I2c_5": {
"Chips": [
"Smc_EnclSMC",
"Eeprom_SEU"
]
},
"I2c_2": {
"Chips": [
"Smc_ExpBoardSMC"
]
},
"Smc_EnclSMC": {
"Buses": [
"I2cMux_SMC_1",
"I2cMux_SMC_2",
"I2cMux_SMC_3",
"I2cMux_SMC_4"
]
},
"I2cMux_SMC_1": {
"Connectors": [
"Connector_ComVPDConnect_1"
]
},
"I2cMux_SMC_2": {
"Connectors": [
"Connector_ComVPDConnect_2"
]
},
"I2cMux_SMC_3": {
"Connectors": [
"Connector_ComVPDConnect_3"
]
},
"I2cMux_SMC_4": {
"Connectors": [
"Connector_ComVPDConnect_4"
]
},
"JtagOverLocalBus_1": {
"Chips": [
"Cpld_1"
]
}
}
}网卡配置示例
{
"ManagementTopology": {
"Anchor": {
"Buses": [
"I2c_2",
"I2cMux_pca9545_chan1"
]
},
"I2c_2": {
"Chips": [
"Smc_ExpBoardSMC"
]
},
"I2cMux_pca9545_chan1": {
"Chips": [
"Chip_NICTempChip",
"Eeprom_NIC"
]
}
}
}Root节点配置示例(root.sr)
{
"ManagementTopology": {
"Anchor": {
"Buses": [
"I2c_1"
]
},
"I2c_1": {
"Connectors": [
"Connector_EXU_1"
]
}
},
"Objects": {
"I2c_1": {
"Id": 1
}
}
}说明:Buses总线只在BMC芯片/板卡(管理拓扑的root节点)的CSR文件描述,即在root.sr的Objects下描述具体内容,在非root节点的CSR中,Anchor中的Buses只是一种符号标记,不需要在Objects中描述具体内容。
非Root节点配置示例(非root.sr)
{
"ManagementTopology": {
"Anchor": {
"Buses": [
"I2c_2"
]
},
"I2c_2": {
"Chips": [
"Pca9545_BCU"
]
},
"Pca9545_BCU": {
"Buses": [
"I2cMux_9545Chan1"
]
}
}
}说明:在非root节点的CSR中,Anchor中的Buses来自上级Connector传递,不需要在Objects中定义。
SubBuses总线拓展配置示例
场景说明
当物理总线(控制器)(如Hisport2)被用作其他协议(如I2cOverHisport)时,需要在拓展出来的协议总线的CSR中使用SubBuses标识其与物理父总线的关系。
注意:通过通道复用(如Pca9545、Smc等芯片扩展出来的I2cMux总线)不算总线拓展特性,不需要配置SubBuses。
配置示例
上级板卡(EXU)的Connector配置:
{
"Objects": {
"Connector_BCU": {
"Buses": [
"Hisport2"
]
}
}
}下级板卡(BCU)的ManagementTopology配置:
{
"ManagementTopology": {
"Anchor": {
"Buses": [
"Hisport2"
]
},
"Hisport2": {
"SubBuses": [
"I2cOverHisport_1"
]
},
"I2cOverHisport_1": {
"Chips": [
"Eeprom_BCU",
"Lm75_1"
]
}
}
}下级板卡(BCU)的Objects配置(使用SubBuses标识拓展关系):
{
"Objects": {
"I2cOverHisport_1": {
"Id": 1
},
"Eeprom_BCU": {
"Address": 174,
"AddrWidth": 1,
"OffsetWidth": 2
},
"Lm75_1": {
"Address": 144,
"AddrWidth": 1,
"OffsetWidth": 2
}
}
}说明:
I2cOverHisport_1是从物理总线(控制器)Hisport2拓展出来的I2C协议总线- 在ManagementTopology中,父总线
Hisport2使用SubBuses属性列出它拓展出来的协议总线 - 拓展出来的协议总线必须在ManagementTopology中正确配置其层级关系(如挂载Chips或Connectors)
- 拓展出来的协议总线必须在Objects中定义,包含必要的总线属性(如Id)
通道复用与总线拓展的区别
通道复用(不需要SubBuses)
通过芯片(如Pca9545、Smc等)扩展出来的I2cMux总线属于通道复用,不算总线拓展特性:
{
"ManagementTopology": {
"Anchor": {
"Buses": [
"I2c_2"
]
},
"I2c_2": {
"Chips": [
"Pca9545_BCU"
]
},
"Pca9545_BCU": {
"Buses": [
"I2cMux_1",
"I2cMux_2"
]
}
},
"Objects": {
"I2cMux_1": {
"ChannelId": 0
},
"I2cMux_2": {
"ChannelId": 1
}
}
}总线拓展(需要SubBuses)
物理总线(控制器)被拓展的场景,需要在ManagementTopology中配置SubBuses:
{
"ManagementTopology": {
"Anchor": {
"Buses": [
"Hisport2"
]
},
"Hisport2": {
"SubBuses": [
"I2cOverHisport_1"
]
},
"I2cOverHisport_1": {
"Chips": [
"Eeprom_1"
]
}
},
"Objects": {
"I2cOverHisport_1": {
"Id": 1
}
}
}使用指南
配置步骤
- 确定Anchor入口:配置Anchor及其Buses属性,这些Buses来自上级Connector传递
- 配置总线挂载:在传入的Buses上挂载Chips或Connectors对象
- 配置芯片扩展:如果使用可扩展总线的芯片(如Pca9545、Smc等),配置其扩展的Buses
- 配置连接器:在需要连接下级板卡的总线上配置Connectors
- 配置SubBuses:如果存在总线拓展,在ManagementTopology中父总线的定义里使用
SubBuses属性列出拓展出来的协议总线 - 验证拓扑完整性:确保所有引用的对象都在Objects中定义
- 验证层级关系:确保拓扑结构符合硬件链路设计
注意事项
- Anchor必选:所有CSR文件必须配置Anchor作为拓扑入口
- Buses最小配置:传入的Buses下必须至少配置一个器件(Connector或Chip)或被传入到下一级连接器
- 对象引用:ManagementTopology中引用的所有对象(Buses、Chips、Connectors)都必须在Objects中定义
- 总线唯一性:同一个I2cMux或JtagMux总线不能挂在两个Chip下
- 芯片扩展限制:只有特定芯片类型(Pca9544、Pca9545、Pca9548、Smc、JtagSwitch)可以扩展总线
- Root节点区别:root.sr中的Buses需要在Objects中定义,非root.sr中的Buses只是符号标记
- 层序遍历:拓扑结构按照层序遍历的方式平铺列出,需要保持逻辑清晰
- SubBuses配置位置:SubBuses属性必须在ManagementTopology中父总线(物理总线)的定义里配置,用于列出该物理总线拓展出来的协议总线列表
- SubBuses属性类型:SubBuses是字符串数组类型,包含该物理总线拓展出来的所有协议总线名称
- SubBuses适用范围:仅用于物理总线(控制器)被拓展的场景(如Hisport控制器拓展出I2cOverHisport),通道复用(如Pca9545扩展I2cMux)不需要配置SubBuses
最佳实践
- 对照硬件设计:ManagementTopology需要对照设计的硬件链路来配置
- 命名规范:遵循对象命名规范,如Chip对象使用"Type_Name"格式
- 层级清晰:保持拓扑层级关系清晰,便于维护和理解
- 完整配置:确保所有硬件链路都在ManagementTopology中体现
- 文档同步:拓扑变更时及时更新相关文档
常见问题
Q: Anchor中的Buses从哪里来?
- A: Anchor中的Buses来自上级Connector传递的链路,是上级板卡通过连接器传递下来的总线
Q: 为什么传入的Buses下必须至少配置一个器件?
- A: 这是openUBMC的规定,确保总线资源得到有效利用,避免空置的总线配置
Q: 哪些芯片可以扩展总线?
- A: 只有Pca9544、Pca9545、Pca9548、Smc、JtagSwitch等特定芯片类型可以扩展总线
Q: Root节点和非Root节点的Buses配置有什么区别?
- A: Root节点的Buses需要在Objects中定义具体内容(如I2c的Id),非Root节点的Buses只是符号标记,不需要在Objects中定义
Q: 如何验证ManagementTopology配置是否正确?
- A: 需要确保:1) 所有引用的对象都在Objects中定义;2) 拓扑结构符合硬件链路设计;3) 层级关系符合规则要求
Q: SubBuses属性应该配置在哪里?
- A: SubBuses属性应该配置在ManagementTopology中父总线(物理总线)的定义里,用于列出该物理总线拓展出来的协议总线列表
Q: 什么情况下需要配置SubBuses?
- A: 当物理总线(控制器)(如Hisport)被拓展为其他协议(如I2cOverHisport)时,需要在ManagementTopology中父总线的定义里配置SubBuses属性,列出拓展出来的协议总线
Q: 通过芯片(如Pca9545)扩展出来的I2cMux总线需要配置SubBuses吗?
- A: 不需要。通过通道复用(如Pca9545、Smc等芯片扩展出来的I2cMux总线)不算总线拓展特性,不需要配置SubBuses
Q: SubBuses是必选属性吗?
- A: SubBuses是可选属性,仅在物理总线被用作其他协议的场景下需要配置,用于标识物理总线协议转换关系