CSR配置字典之ManagementTopology
更新时间: 2025/12/19
在Gitcode上查看源码

文档信息

项目内容
文档标题ManagementTopology配置字典
版本v1.0
创建日期2025-12-19
最后更新2025-12-19
维护状态活跃维护

变更历史记录

版本发布日期变更类型变更内容影响范围维护人员
v1.02025-12-19初始版本创建ManagementTopology配置说明全新文档Hardware SIG

类概览

ManagementTopology 结构

属性
类名称ManagementTopology
功能描述定义CSR文件中管理拓扑的层级关系,描述Bus/Chip/Connector的连接关系
所属SIG组hardware
所属组件CSR框架
责任人硬件架构组
最后更新2025-12-19
状态正常运行

结构定义详表

必选结构

结构名类型描述使用场景举例来源分类
AnchorObject管理拓扑的根节点,是上一级Connector传递链路的入口,和上级板卡连接的桥梁
注意:Anchor是必选对象类型且它一定包含Buses属性
所有CSR文件必须配置Anchor作为拓扑入口{"Anchor": {"Buses": ["I2c_2"]}}CSR配置硬件
Anchor.BusesString[]Anchor下挂载的总线列表,这些总线来自上级Connector传递的链路定义从上级板卡传入的总线["I2c_2", "I2c_5", "JtagOverLocalBus_1"]CSR配置硬件

可选结构

结构名类型描述使用场景举例来源分类
BusesObject总线对象,可以挂载Chips和Connectors
注意:openUBMC规定传入的Buses下必须至少配置一个器件(Connector或Chip)或被传入到下一级连接器
在总线上挂载芯片或连接器{"I2c_2": {"Chips": ["Smc_ExpBoardSMC"]}}CSR配置硬件
Buses.ChipsString[]总线下挂载的芯片对象名称列表
芯片对象必须在Objects中定义
在总线上挂载物理芯片["Smc_ExpBoardSMC", "Eeprom_SEU"]CSR配置硬件
Buses.ConnectorsString[]总线下挂载的连接器对象名称列表
连接器对象必须在Objects中定义
在总线上挂载连接器,用于连接下级板卡["Connector_ComVPDConnect_1"]CSR配置硬件
ChipsObject芯片对象,某些芯片类型(如Pca9544、Pca9545、Pca9548、Smc、JtagSwitch)可以扩展出新的总线
注意:同一个I2cMux或JtagMux总线不能挂在两个Chip下
芯片扩展总线或作为终端设备{"Smc_EnclSMC": {"Buses": ["I2cMux_SMC_1"]}}CSR配置硬件
Chips.BusesString[]芯片扩展出的总线列表
只有特定芯片类型(Pca9544、Pca9545、Pca9548、Smc、JtagSwitch)可以扩展总线
通过芯片扩展总线通道["I2cMux_SMC_1", "I2cMux_SMC_2"]CSR配置硬件
ConnectorsObject连接器对象,用于连接下级板卡
连接器对象必须在Objects中定义
连接下级板卡或组件在Objects中定义Connector对象CSR配置硬件
SubBusesString[]总线拓展关系标识
用于标识物理总线(控制器)被拓展的场景,如Hisport控制器拓展出I2cOverHisport协议总线
注意:此属性配置在ManagementTopology中父总线的定义里,用于列出该物理总线拓展出来的协议总线列表
注意:通过通道复用(如Pca9545、Smc等芯片扩展出来的I2cMux)不算总线拓展特性
标识物理总线协议转换关系["I2cOverHisport_1"]CSR配置硬件

拓扑结构规则

层级关系规则

  1. ManagementTopology只能包含AnchorBusesChipsConnectors的层级关系

    • Anchor是必选对象类型且它一定包含Buses属性
    • BusesChipsConnectors是可选字段,且不能包含其他对象
  2. 解析方式

    • ManagementTopology中的对象都是对Objects下面对象的引用
    • 按照树结构根节点开始,以层序遍历的方式平铺列出Bus/Chip/Connector的连接关系
  3. Anchor规则

    • Anchor是上一级Connector传递链路的入口
    • Anchor是和管理拓扑的root节点(BMC芯片/板卡)连接的桥梁
    • Anchor必须包含Buses属性,这些Buses来自上级Connector传递
  4. Buses规则

    • 传入的Buses上可以挂载Chips和Connectors对象,也可以什么都不挂载
    • 但如果Buses挂载其他对象,则需要定义它配置的Chips和Connectors
    • 注意:openUBMC规定传入的Buses下必须至少配置一个器件(Connector或Chip)或被传入到下一级连接器
  5. Chips规则

    • Chip对象必须挂在总线下,需要在ManagementTopology中声明该Chip对象挂载在哪个总线下
    • 某些Chip类型(Pca9544、Pca9545、Pca9548、Smc、JtagSwitch)可以扩展出新的总线
    • I2cMux对象必须放在Pca9544、Pca9545、Pca9548或Smc下
    • JtagMux对象必须放在JtagSwitch下
    • 注意:同一个I2cMux或JtagMux总线不能挂在两个Chip下
  6. Connectors规则

    • Connector对象必须挂在总线下
    • Connector用于连接下级板卡,传递总线链路给下级板卡的Anchor
  7. SubBuses规则(总线拓展特性)

    • 支持物理总线(控制器)被拓展的场景,使用SubBuses关键词来标识物理总线和其拓展出来的协议总线的关系
    • 例如:Hisport控制器可以拓展出I2cOverHisport协议总线
    • 在ManagementTopology中,父总线(物理总线)使用SubBuses属性列出它拓展出来的协议总线列表
    • SubBuses属性值为字符串数组类型,包含该物理总线拓展出来的所有协议总线名称
    • 拓展出来的协议总线必须在Objects中定义,并在ManagementTopology中正确配置其层级关系
    • 注意:SubBuses特性用于标识物理总线协议转换关系,便于系统识别和管理总线拓扑
    • 注意:通过通道复用(如Pca9545、Smc等芯片扩展出来的I2cMux总线)不算总线拓展特性,不需要配置SubBuses

分类标准

硬件属性

  • 定义:与物理硬件连接和组件管理直接相关的参数
  • 特点:所有结构均为硬件相关,涉及物理连接、总线配置和组件识别
  • 示例AnchorBusesChipsConnectors

配置示例

基础配置示例(简单拓扑)

json
{
  "ManagementTopology": {
    "Anchor": {
      "Buses": [
        "I2c_2",
        "I2cMux_pca9545_chan1"
      ]
    },
    "I2cMux_pca9545_chan1": {
      "Chips": [
        "Eeprom_NIC",
        "Pca9555_NIC",
        "Lm75_1"
      ]
    },
    "I2c_2": {
      "Chips": [
        "Smc_ExpBoardSMC"
      ]
    }
  }
}

复杂配置示例(多级拓扑)

json
{
  "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"
      ]
    }
  }
}

网卡配置示例

json
{
  "ManagementTopology": {
    "Anchor": {
      "Buses": [
        "I2c_2",
        "I2cMux_pca9545_chan1"
      ]
    },
    "I2c_2": {
      "Chips": [
        "Smc_ExpBoardSMC"
      ]
    },
    "I2cMux_pca9545_chan1": {
      "Chips": [
        "Chip_NICTempChip",
        "Eeprom_NIC"
      ]
    }
  }
}

Root节点配置示例(root.sr)

json
{
  "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)

json
{
  "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配置:

json
{
  "Objects": {
    "Connector_BCU": {
      "Buses": [
        "Hisport2"
      ]
    }
  }
}

下级板卡(BCU)的ManagementTopology配置:

json
{
  "ManagementTopology": {
    "Anchor": {
      "Buses": [
        "Hisport2"
      ]
    },
    "Hisport2": {
      "SubBuses": [
        "I2cOverHisport_1"
      ]
    },
    "I2cOverHisport_1": {
      "Chips": [
        "Eeprom_BCU",
        "Lm75_1"
      ]
    }
  }
}

下级板卡(BCU)的Objects配置(使用SubBuses标识拓展关系):

json
{
  "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总线属于通道复用,不算总线拓展特性:

json
{
  "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:

json
{
  "ManagementTopology": {
    "Anchor": {
      "Buses": [
        "Hisport2"
      ]
    },
    "Hisport2": {
      "SubBuses": [
        "I2cOverHisport_1"
      ]
    },
    "I2cOverHisport_1": {
      "Chips": [
        "Eeprom_1"
      ]
    }
  },
  "Objects": {
    "I2cOverHisport_1": {
      "Id": 1
    }
  }
}

使用指南

配置步骤

  1. 确定Anchor入口:配置Anchor及其Buses属性,这些Buses来自上级Connector传递
  2. 配置总线挂载:在传入的Buses上挂载Chips或Connectors对象
  3. 配置芯片扩展:如果使用可扩展总线的芯片(如Pca9545、Smc等),配置其扩展的Buses
  4. 配置连接器:在需要连接下级板卡的总线上配置Connectors
  5. 配置SubBuses:如果存在总线拓展,在ManagementTopology中父总线的定义里使用SubBuses属性列出拓展出来的协议总线
  6. 验证拓扑完整性:确保所有引用的对象都在Objects中定义
  7. 验证层级关系:确保拓扑结构符合硬件链路设计

注意事项

  • 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是可选属性,仅在物理总线被用作其他协议的场景下需要配置,用于标识物理总线协议转换关系

相关文档