BMC_IPMI_v2.0_IPMB接口

一、IPMB Access via Master Write-Read command 通过主读写命令访问IPMB

  1. BMC作为控制器:当系统中实现了IPMB时,BMC(基板管理控制器)充当控制器,为系统软件提供对IPMB的访问。
  2. IPMB的功能:IPMB允许非智能设备以及总线上的管理控制器。这种设计支持多种设备在同一总线上进行通信和管理。
  3. 主读写命令:BMC通过其与系统软件的接口提供主读写命令。这个命令允许系统软件对IPMB上的非智能设备进行低级访问。
  4. 低级访问:主读写命令提供了对IPMB上的非智能设备(如FRU SEEPROMs,即现场可更换单元的电子设备)的低级访问能力。
  5. I2C和SMBus操作的子集:主读写命令提供了可能的I2C(集成电路间)和SMBus(系统管理总线)操作的一个子集,这个子集覆盖了大多数I2C/SMBus兼容设备的需求。
  6. 私有总线的访问:除了支持IPMB上的非智能设备外,主读写命令还提供了对管理控制器背后的私有总线上的非智能设备的访问。这主要用于支持私有总线上的FRU SEEPROMs。
  7. 主要目的:主读写命令支持私有总线的主要目的是支持在这些总线上的FRU SEEPROMs,这有助于管理和识别硬件组件,例如在服务器或数据中心环境中。
  8. 灵活性和扩展性:通过主读写命令,BMC能够提供对各种设备的灵活和扩展性的访问,无论是直接连接到IPMB还是通过管理控制器连接到私有总线的设备。

二、BMC IPMB LUNs IPMB接口支持的逻辑单元号(LUN)

  1. 逻辑单元号(LUN):BMC支持多个LUN,用于标识BMC内部不同子地址,消息可以发送到这些子地址。
  2. IPMB接口的LUN:通过IPMB接口发送的消息可以被发送到不同的LUN,每个LUN有特定的用途和处理方式。
  3. BMC IPMB LUN表
  • 00b:BMC命令和事件请求消息。
    • 事件请求消息接收在此LUN时,会被路由到BMC中的事件接收器功能,并在启用SEL(系统事件日志)记录时自动记录。
  • 01b:OEM LUN 1。
    • 保留给BMC实现者或系统集成商定义。
  • 10b:SMS消息LUN(旨在用于发送消息到系统管理软件)。
    • 接收在此LUN的消息会被路由到接收消息队列,并可以使用读取消息命令检索。每当接收消息队列中有有效内容时,SMS_Avail标志会被设置。
  • 11b:OEM LUN 2。
    • 保留给BMC实现者或系统集成商定义。
  1. 事件请求消息:当事件请求消息发送到LUN 00b时,BMC会自动将这些消息路由到事件接收器,并在启用了SEL记录的情况下自动将事件记录到系统事件日志中。
  2. 系统管理软件:LUN 10b专门用于将消息发送到系统管理软件。这些消息会被存储在接收消息队列中,系统管理软件可以通过读取消息命令来检索这些消息。
  3. OEM LUN:LUN 01b和11b是OEM(原始设备制造商)LUN,这些LUN被保留用于BMC实现者或系统集成商根据特定需求进行定义和使用。
  4. 消息路由:每个LUN都定义了消息的路由方式,确保消息能够被正确地传递到BMC内部的相应功能或组件。

三、Sending Messages to IPMB from System Software 系统管理软件(SMS)如何通过BMC发送和接收IPMB消息

  1. 系统管理软件的角色:系统管理软件可以使用BMC来发送和接收IPMB消息。这意味着系统软件不仅能向IPMB发送请求并接收响应,还能接收来自IPMB的请求并发送IPMB响应。
  2. 使用BMC作为IPMB控制器:系统软件通过系统接口使用BMC作为IPMB控制器来向IPMB发送消息。这是通过使用发送消息命令将消息写入IPMB(通道0)来实现的。
  3. BMC的限制:BMC对于发送的IPMB消息的类型或内容没有任何限制。只要消息满足发送消息命令的最大长度要求,系统管理软件就可以发送任何IPMB请求或响应消息。
  4. 系统软件的责任:系统管理软件负责提供IPMB消息的所有字段,包括请求者和响应者的从机地址以及校验和。
  5. 示例:文中提供了一个使用发送消息命令向IPMB设备(从机地址52h,LUN 00b)发送设置事件接收器命令的示例。示例命令将事件接收器地址设置为20h,即BMC。
  6. 发送消息命令的字段:重边框字段显示了在发送消息命令中携带的IPMB消息的字节。请求者的LUN字段(rqLUN)设置为10b(BMC SMS LUN),这指示响应者将对设置事件接收器命令的响应发送到BMC的接收消息队列。
  7. 发送消息命令的响应:图7-2显示了发送消息命令的响应。注意,响应是针对发送消息命令的,而不是针对设置事件接收器命令的。设置事件接收器命令的响应将稍后在接收消息队列中返回。
  8. 接收消息队列:系统软件使用获取消息命令从接收消息队列中读取消息。系统软件跟踪任何未完成的响应,并将响应与相应的请求匹配。系统软件还必须跟踪分配给特定通道的协议,以便解释获取消息命令的响应。
  9. 消息匹配和协议解释:系统软件必须跟踪未完成的响应,以便在接收到响应时与对应的请求进行匹配。此外,系统软件需要根据特定通道分配的协议来解释获取消息命令的响应。

四、Sending IPMB Messages to System Software 通过BMC向系统管理软件发送消息

  1. IPMB设备向系统软件发送消息:IPMB上的设备可以自主地向系统管理软件发送消息,这些消息通过BMC进行传递。
  2. SMS LUN(10b):当IPMB消息被发送到BMC的SMS LUN(逻辑单元号10b)时,这些消息将被放入接收消息队列(Receive Message Queue)中。
  3. 获取消息:系统管理软件可以使用获取消息命令(Get Message command)来检索接收消息队列中的内容,然后对消息进行解释,并使用发送消息命令(Send Message command)返回响应。
  4. BMC对接收内容的限制:只要IPMB消息格式正确、地址为SMS LUN,并且满足获取消息命令的最大长度要求,BMC不会对接收的消息内容类型进行限制。
  5. ‘ATN’标志当消息被接收到接收消息队列时,BMC会在系统接口中设置相应的‘ATN’(注意)标志。系统软件必须轮询‘ATN’标志,或者接收中断信号,以确定何时有消息可用。
  6. 事件消息缓冲区:事件消息也可以通过可选的事件消息缓冲区直接提供给系统软件,并使用读取事件消息缓冲区命令(Read Event Message Buffer command)进行检索。
  7. 设置事件接收器命令示例:在前一节的示例中,使用发送消息命令在IPMB上发送了设置事件接收器命令。在IPMB命令中,请求者的从机地址(rqSA)设置为20h(BMC),请求者的LUN(rqLUN)设置为10b(SMS LUN),这意味着响应将被发送到BMC中的SMS消息缓冲区。
  8. IPMB响应的内容:对设置事件接收器命令的IPMB响应仅包含数据部分中的一个完成代码字节。假设完成代码为00h(OK),接收消息队列最终会包含一个具有以下内容的响应消息:
    • NetFn(05h = 传感器/事件响应)
    • rqLUN(10b = SMS LUN)
    • 校验1(Check 1,CAh)
    • rsSA(52h)
    • rqSeq/rsLUN(000001b / 00b)
    • Cmd(00h = 设置事件接收器)
    • 完成代码(Completion Code,00h = OK)
    • 校验2(Check 2,AAh)

9.获取消息命令的响应:获取消息命令的响应将如下所示。重边框字段显示了来自接收消息队列的数据部分: - NetFn(07h = 应用响应) - LUN(00b) - 命令(Get Message) - 完成代码(Completion Code,00h) - 通道号(Channel Number,00h) - NetFn(05h = 传感器/事件响应) - rqLUN(10b = SMS LUN) - 校验1(CAh) - rsSA(52h) - rqSeq/rsLUN(000001b / 00b) - Cmd(00h = 设置事件接收器) - 完成代码(00h = OK) - 校验2(AAh)

10.消息的前导从机地址:注意,这是整个IPMB响应消息,前导从机地址已被剥离(不需要存储,因为已知是BMC从机地址20h)。

五、Testing for Event Message Buffer Support 如何测试BMC是否支持事件消息缓冲

  1. 系统软件的测试责任:系统软件必须测试BMC是否支持事件消息缓冲区。
  2. 使用Get BMC Global Enables命令:系统软件可以通过发送一个“获取BMC全局启用”(Get BMC Global Enables)命令来检查事件消息缓冲区是否被启用。
  3. 缓冲区启用的假设:如果系统软件发现通过“获取BMC全局启用”命令返回的结果表明缓冲区已启用,它就可以假设控制器支持该缓冲区。
  4. 尝试启用缓冲区:如果通过“获取BMC全局启用”命令发现缓冲区未启用,系统软件必须尝试通过“设置BMC全局启用”(Set BMC Global Enables)命令来启用事件消息缓冲区。
  5. 不支持缓冲区的错误代码:如果BMC不支持所需的缓冲区,当尝试使用“设置BMC全局启用”命令来启用相应缓冲区时,它将返回一个“无效数据字段”(Invalid Data Field,CC)的错误完成代码。
  6. 不支持中断的错误代码:如果尝试启用事件消息缓冲区中断,但该选项不被支持,系统软件也将收到错误完成代码。
  7. 错误处理:系统软件需要能够处理这些错误代码,并据此判断BMC是否支持事件消息缓冲区或中断功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值