热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

IntelligentPlatformManagementInterface(IPMI)相关知识学习

IPMI用于连接系统下的管理软件,OS及管理软件可以通过IPMI可以提供更多有关精密控制、错误处理及警告的功能。IPMI的核心是BMC。IPMI同样支持拓展的平台管理

IPMI用于连接系统下的管理软件,OS及管理软件可以通过IPMI可以提供更多有关精密控制、错误处理及警告的功能。IPMI的核心是BMC。

IPMI同样支持拓展的平台管理,该功能需要与系统连接额外的管理控制器IPMB。IPMB是基于I2C的串口线,它用于管理控制器之间的连接。

SEL,全称System Event Log,SEL是由BMC提供的,用来记录是系统进程停止的错误的信息。通过IPMI commands的设置可以读取、添加或清空SEL的信息。

IPMI为描述平台管理能力的信息提供两种机制:

(1)capabilities commands,IPMI command

(2)Sensor Data Records(SDR),command about sensor

IPMI定义了三种标准系统接口来向BMC传送信息。

(1)       Keyboard Controller Style (KCS),

Intel 8742 Universal Peripheral Interface microcontroller

(2)       System Management Interface Chip(SMIC),

当BMC没有建立KCS接口时,SMIC提供一个可选择的选项。

(3)       Block Transfer(BT),

统提供的一个更高执行效率的接口,与前两者不同,它以a per-block handshake来进行数据传输。

除了以上基本接口,还有我们常用的串口,LAN口。

串口支持3种connection modes

Basic Mode        PPP Mode       Terminal Mode:

SOL, Serial Over LAN ,

它被用于异步的serial-based OS and pre-OS communication同BMC。

 

BMC Transfer在我们的code中一般通过KCS接口实现。

了解实现过程之前首先要了解KCS Interface Registers

1,Status Register

系统中总会开始一些信息传送,传送之前需要判断设备的状态,对于KCS接口就通过他的Status Register来进行判断。Status Register每一位代表的信息如图所示:

Bit6,Bit7两个状态位总共表示接口会处于的4种状态。

2,Command Register

当IBF被清除时,可以向其中写进命令。

3,Data Registers

BMC用来传输数据。

 

CODE中如何实现通过KCS接口向BMC写入数据:

(1)       读取Status Register信息,获得IBF的值,直至等到IBF值为0时,继续执行。

(2)       清除   OBF

(3)       检查KCS状态

(4)       以byte为单位向BMC发送数据

(5)       再次检查KCS状态

从BMC读取数据:

(1)       检查KCS状态,若为IDLE_STATE,则返回EFI_SUCCESS。

(2)       从DATA_OUT读取数据。

(3)       将DATA_OUT读出的数据写入DATA_IN

 

注意到KCS在PEI与DXE两个阶段中的code并不一样。

 在DXE阶段memory已经初始化好了,所以KCS在DXE阶段的使用需要判断是否是SMM模式。

 

转:https://www.cnblogs.com/wudibuzaijia/p/8526848.html



推荐阅读
  • C# 中创建和执行存储过程的方法
    本文详细介绍了如何使用 C# 创建和调用 SQL Server 存储过程,包括连接数据库、定义命令类型、设置参数等步骤。 ... [详细]
  • 本文详细介绍了在Mac平台上安装和配置MySQL的步骤,包括下载安装包、卸载MySQL以及解决命令行中找不到mysql命令的问题。 ... [详细]
  • 申请地址:https://developer.apple.com/appstore/contact/?topic=expedite 常见申请理由:1. 我们即将发布新产品,这是一个媒体活动,我们无法承担任何风险,因此在多个方面努力提升应用质量。 ... [详细]
  • 本文详细介绍了Linux系统中信号量的相关函数,包括sem_init、sem_wait、sem_post和sem_destroy,解释了它们的功能和使用方法,并提供了示例代码。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 利用 Calcurse 在 Linux 终端高效管理日程与任务
    对于喜爱使用 Linux 终端进行日常操作的系统管理员来说,Calcurse 提供了一种强大的方式来管理日程安排、待办事项及会议。本文将详细介绍如何在 Linux 上安装和使用 Calcurse,帮助用户更有效地组织工作。 ... [详细]
  • 本文介绍了ADO.NET框架中的五个关键组件:Connection、Command、DataAdapter、DataSet和DataReader。每个组件都在数据访问和处理过程中扮演着不可或缺的角色。 ... [详细]
  • Windows操作系统提供了Encrypting File System (EFS)作为内置的数据加密工具,特别适用于对NTFS分区上的文件和文件夹进行加密处理。本文将详细介绍如何使用EFS加密文件夹,以及加密过程中的注意事项。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文介绍如何通过参数化查询来防止SQL注入攻击,确保数据库的安全性。示例代码展示了在C#中使用参数化查询添加学生信息的方法。 ... [详细]
  • WPF MVVM: 动态添加控件与数据绑定的最佳实践
    本文介绍如何在WPF应用程序中使用MVVM模式动态添加控件并进行数据绑定。通过示例展示如何创建一个虚拟键盘,其中包含多个按键。 ... [详细]
  • 深入理解Java多线程与并发机制
    本文探讨了Java多线程和并发机制的核心概念,包括多线程类的分类、执行器框架、并发容器及控制工具。通过详细解析这些组件,帮助开发者更好地理解和应用多线程技术。 ... [详细]
author-avatar
无终的流浪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有