【Note9】

news2024/11/19 18:20:30

9.PECI(Platform Environment Control Interface):peci是 intel提供的私有协议,openbmc是由intel授权的,其他不授权是不能用。硬件上是一根线,不像i2c是2根线

11.1 模式和命令介绍:peci1.1只支持CPU温度,2.0增加支持MSR相关寄存器,3.0增加支持读intel的PCI配置(根据intel的BDF【Bus/Device/Function】确定读pcie设备里的寄存器地址)

在这里插入图片描述
1.PCH模式:需要先访问ME地址挂在smlink上,如下-b就是挂的bus号(i2c即smlink的bus号),-t是挂的地址,一般都是0x2c(设备地址)。BMC通过IPMI给ME发一个raw date命令,ME再发pcie命令到cpu。实际是ME不停给cpu发一些peci命令来获取它需要的数据,它把这些数据做一个缓存在自己内部,bmc向它访问数据的话,me会直接把缓存的数据回到bmc上,如下raw 6 1 是读ME的版本号。
在这里插入图片描述
2.PECI模式:obmc上有一个peci-util命令,通过这命令直接访问到cpu内部,peci-util虽是二进制命令,但是底层调用libpeci库(https://github.com/openbmc/libpeci.git),通过libpeci访问 /dev/peci-0节点进行IO操作即那根数据线发peci指令。Openbmc中使能PECI需要同时修改kernel.cfg和image.bb文件:在image.bb中IMAGE_INSTALL 变量中追加”peci-util-v2”来安装peci-util二进制文件即命令,在kernel.cfg中打开三行CONFIG_PECI相关宏来使能PECI驱动即生成 /dev/peci-0,如下图:
在这里插入图片描述
如下peci3.0支持的方式,如下10个命令也不是所有cpu平台都支持,具体还要看cpu手册,因为cpu平台功能划分比较细,不是所有平台都支持所有功能,前5个全平台支持。
在这里插入图片描述

11.2 通过peci读cpu温度:使用RdPkgconfig()命令(read page config),通过peci读到cpu的最大值(tjmax)和一个偏移量(Tcontrol)(距离当前设定的最大值还差多少值),这两个的差值作为cpu实际温度

在这里插入图片描述
如上LSB和MSB反一下。
在这里插入图片描述

11.3 通过peci读cpu的DIMM温度:不涉及偏差多少,直接读实时温度,也用RdPkgconfig()

在这里插入图片描述

11.4 通过peci读MSR:不止msr还有pcie寄存器一些读法,lerrLoggingReg寄存器通过查cpu手册,发现是pcie寄存器。BDFO四个变量才能确定一个地址,带外方式用RdPCIConfigLocal()读PCIE寄存器

在这里插入图片描述
在这里插入图片描述
如下第一列0-15个物理核(intel最多支持),项目是0-4个物理核相当于5个cpu,现在项目只读物理核。读出如下0x0400寄存器值,具体解析bios做。读取期间不让cpld使cpu复位重启。cpu中所有msr寄存器(model specific register)是x86中监测CPU方面的寄存器,MSR使用RdIAMSR()命令。
在这里插入图片描述

# dumplwt.sh
. /usr/local/bin/openbmc-utils.sh
renice -20 -p $$ >/dev/null 2>&1

do_msr_deal()
{
echo
echo CPU MSR DUMP:
echo ==============
echo
echo "MCA_ERR_SRC_LOG"
peci-util 0x30 0x05 0x05 0xA1 0x00 0x00 0x05 0x00  
echo
echo "IerrLoggingReg"
peci-util 0x30 0x05 0x05 0xE1 0x00 0xA4 0x50 0x18
echo
echo "MCerrLoggingReg"
peci-util 0x30 0x05 0x05 0xE1 0x00 0xA8 0x50 0x18
echo
echo "********************************************************"
echo "*                    MC index 00                       *"
echo "********************************************************"
echo " IA32_MC0_CTL, ProcessorID from 0 to 4 "  # 0x0400,查看RdIAMSR()命令组成
peci-util 0x30 0x05 0x09 0xB1 0x00 0x00 0x00 0x04  # 倒数第三个是ProcessorID即5个cpu
peci-util 0x30 0x05 0x09 0xB1 0x00 0x01 0x00 0x04 
peci-util 0x30 0x05 0x09 0xB1 0x00 0x02 0x00 0x04 
peci-util 0x30 0x05 0x09 0xB1 0x00 0x03 0x00 0x04 
peci-util 0x30 0x05 0x09 0xB1 0x00 0x04 0x00 0x04 
echo " IA32_MC0_CTL2, ProcessorID from 0 to 4 " # 0x0280
peci-util 0x30 0x05 0x09 0xB1 0x00 0x00 0x80 0x02 
peci-util 0x30 0x05 0x09 0xB1 0x00 0x01 0x80 0x02 
peci-util 0x30 0x05 0x09 0xB1 0x00 0x02 0x80 0x02 
peci-util 0x30 0x05 0x09 0xB1 0x00 0x03 0x80 0x02 
peci-util 0x30 0x05 0x09 0xB1 0x00 0x04 0x80 0x02 
do_peci_select 7 #peci通道提前手动选择
do_msr_deal
do_peci_select 8
do_msr_deal
# 如下0x400是MC0起始地址,0x404是MC1起始地址
IA32_MCi_CTL=(0x400 0x404 0x408 0x40c 0x410 0x414 0x418 0x41c 0x420 0x424 0x428)

mce_log(){
    modprobe msr
    mcelog --daemon  # 手动启动mcelog。查看mcelog日志:vim /var/log/mcelog
    i=${#IA32_MCi_CTL[@]}
    echo "read IA32_MCi_CTL register begin ${IA32_MCi_CTL[*]}"
    for ((cpu=0;cpu<8;cpu++));do
    	echo "cpu $cpu read IA32_MCi_CTL register"
        for ((row=0;row<i;row++));do
            rdmsr -p   $cpu  ${IA32_MCi_CTL[row]}   -x
        done
    done
    echo "read IA32_MCi_CTL register end"
}
mce_log

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/669736.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试之拔河比赛(Java源码)

文章目录 拔河比赛题目描述输入描述输出描述示例代码 拔河比赛 题目描述 公司最近准备进行拔河比赛&#xff0c;需要在全部员工中进行挑选。 选拔的规则如下&#xff1a; 按照身高优先、体重次优先的方式准备比赛阵容&#xff1b;规定参赛的队伍派出10名选手。 请实现一个选…

Imagination如何引领更安全的汽车行业?

如果您想购买一款全新的车辆&#xff0c;它很有可能配备数字显示屏&#xff0c;为用户体验提供丰富的驾驶体验&#xff0c;并可自由设置显示。想要更动感的仪表盘&#xff1f;那也没问题&#xff0c;只需改变驾驶主题。亦或是把音乐放在居中位置&#xff0c;同时在另一个屏幕上…

兼容性测试可否提高用户满意度?

兼容性测试可否提高用户满意度? 在信息化时代&#xff0c;软件应用的兼容性一直是一个重要的问题。由于操作系统版本、硬件设备、浏览器等因素的差异&#xff0c;软件在不同环境下运行的稳定性和表现也会不同。因此&#xff0c;如果对软件在不同的环境下进行兼容性测试&#x…

qt信号槽

目录 自定义信号槽 所谓信号槽&#xff0c;实际就是观察者模式 (发布 - 订阅模式)。当某个事件发生之后&#xff0c;比如&#xff0c;按钮检测到自己被点击了一下&#xff0c;它就会发出一个信号&#xff08;signal&#xff09;。这种发出是没有目的的&#xff0c;类似广播。如…

springboot实验室管理系统-计算机毕设 附源码86757

springboot实验室管理系统 摘 要 验室管理系统是将实验室的分析仪器通过计算机网络连起来&#xff0c;采用科学的管理思想和先进的数据库技术&#xff0c;实现以实验室为核心的整体环境的全方位管理。它集用户管理&#xff0c;实验室信息管理&#xff0c;实验室预约管理&#x…

【历史上的今天】6 月 21 日:第一台存储程序计算机首次运行;XML 之父诞生;IBM 推出 AS/400

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 6 月 21 日&#xff0c;在 23 年前的今天&#xff0c;中国联通公司在香港、纽约成功上市&#xff0c;筹资 56.5 亿美元&#xff0c;进入全球首次股票公开发行史…

LeetCode - #86 分隔链表

文章目录 前言1. 描述2. 示例3. 答案关于我们 前言 我们社区陆续会将顾毅&#xff08;Netflix 增长黑客&#xff0c;《iOS 面试之道》作者&#xff0c;ACE 职业健身教练。&#xff09;的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新…

Cortext-M3系列:M3的底层编程(7)

1、概览 在CM3上编程&#xff0c;既可以使用C也可以使用汇编&#xff0c;keil也支持C&#xff0c;但是大多数人还是会在C与汇编。C与汇编都“尺有所短&#xff0c;寸有所长”&#xff0c;不能互相取代。使用C能开发大型程序&#xff0c;而汇编则用于执行特种任务。 1.1 使用汇…

去中心化金融(DeFi)的发展历史

随着Web3.0的兴起&#xff0c;去中心化金融&#xff08;Decentralized Finance&#xff0c;DeFi&#xff09;正逐渐成为金融领域的热门话题。DeFi旨在通过区块链技术和智能合约&#xff0c;实现无需信任的金融交易和服务&#xff0c;摆脱传统金融中心化的限制。然而&#xff0c…

C# Winform Label 控件

目录 一、概述 二、基本用法 1.控件内容显示 2.控件的外观 3.自定义控件的大小 4.控件的内边距 5.设置文本的固定位置 6.控件的事件 结束 一、概述 Label 控件是 winform 开发中最常用的一个控件&#xff0c;一般用做显示文本&#xff0c;也有时用做打开链接等操作。…

如何解决无法直接启动带有“类库输出类型”的项目

输出类型为类库的项目是编译为 dll 文件的项目&#xff0c;该文件旨在供其他项目使用。它无法直接启动&#xff0c;因为它没有 exe 文件。若要调试此项目&#xff0c;请在此解决方案中添加一个引用库项目的可执行项目。将这个可执行项目设置为启动项目&#xff0c;如下&#xf…

msp430fr2155 在线升级(一)

前言&#xff1a;由于单片机如果不支持USB等方式在线升级&#xff0c;每次升级会设计拆机升级单片机&#xff0c;这对于一个成熟的产品是很鸡肋的。所以记录一下本次研发升级功能的过程以及所需要的问题。 一、升级程序设计 二、内存重新分配 1.芯片原有内存分配 原有内存分…

做电商服务软件(电商ERP),怎么实现与电商平台的数据交互?

电商领域是目前互联网最热门、最活跃的行业之一&#xff0c;随着消费需求的增长和普及化&#xff0c;用户对于商品种类和购物体验的要求也越来越高&#xff0c;精准、高效、快速成为谋求更大商品销量的共同目标。因此&#xff0c;电商服务软件的市场需求正不断增强。 想要开发一…

C++---虚函数(8)

多态 虚函数 虚函数就是在类的成员函数声明前加virtual&#xff0c;该成员函数就变成了虚函数。一旦一个类中有虚函数&#xff0c;编译器就会为该类生成虚函数表。 虚函数表中一个元素记录一个虚函数的地址&#xff0c;使用该类构造对象时&#xff0c;对象前4(8)个字节记录虚…

团队知识库的使用场景有哪些?如何搭建团队知识库?

团队知识库是一种用于共享和管理团队知识和信息的工具。它可以帮助团队成员更好地组织、存储、查找和分享信息&#xff0c;提高工作效率和准确性。以下是团队知识库的使用场景和搭建方法的详细介绍。 一、团队知识库的使用场景 项目管理 团队知识库可以帮助团队成员更好地管…

封神之后,又来超神?南卡OE骨传导开放式耳机有啥新本领

终于到了适合夜跑的温度&#xff0c;我的新跑鞋和专用陪跑运动耳机也都收到了&#xff0c;万事俱备却意外中招“二阳”了。虽然身体情况&#xff0c;短期是不能支持去跑步运动了&#xff0c;但每天戴着新耳机打打王者也还是一样很欢乐的。 反正现在时间很多很闲&#xff0c;我…

pyqt6安装与配置(基于vscode环境)

一、安装pyqt6和pyqt6-tools包 注意&#xff1a;pyqt6-tools目前仅支持python3.9版本&#xff0c;3.9版本后的安装部成功。&#xff08;截止2022.11.20&#xff09; 1.1 安装pyqt6和pyqt6-tools 安装pyqt和pyqt6-tools可以使用conda和pip进行安装 &#xff08;1&#xff09…

基于高通camera-帧率-曝光

前人种树&#xff0c;后人乘凉&#xff1b;创造不易&#xff0c;请勿迁移~ daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主 daisy.skye擅长嵌入式,Qt,Linux,等方面的知识 https://blog.csdn.net/qq_40715266?typelately ———————————————— 版权声明&…

计算机网络(谢希仁-第八版)第四章习题全解

4-01 网络层向上提供的服务有哪两种&#xff1f;试比较其优缺点&#xff1f; 虚电路服务和数据报服务。 虚电路 优点&#xff1a; 1.可以提供可靠的通信服务 2.因为数据是沿着建立的虚电路进行传输的&#xff0c;因此分组的首部不需要携带完整的目的主机 的地址&…

redis 的基本介绍以及 五种 数据类型

一、redis是什么&#xff1f; 一句话&#xff1a;redis 是一个开源的、使用C语言编写的、支持网络交互&#xff0c;基于内存也可持久化的 key-value &#xff08;非关系型&#xff09;数据库 redis作者博客&#xff0c;有兴趣的小伙伴可以去逛一逛&#xff1a;http://github.…