一、SuperIO

这次主要研究SuperIO读取以及控制风扇转速的问题。

参考文章:https://huchanghui123.github.io/Linux/Linux-Superio-CPU-FAN/

https://wenku.baidu.com/view/dae90497a26925c52dc5bf44.html

首先需要了解的一点是,CPU风扇属于环境控制器(EC)

内置在IT8786E-I中,包括五个电压输入,三个温度传感器输入,五个FAN转速计输入和五组先进的风扇控制器。 EC监控硬件环境,实现个人电脑的环境控制,我们需要找到IT8786E-I芯片的SPEC

流程如下:

  1. 可以在Spec里面搜PnP Mode找到基地址,Address Port一般是2E,Data Port 一般是2F,如果有RW工具的话,可以进入IO Space,输入地址2E,然后在0x00位置依次输入(87h, 01h, 55h, 55h),进入MB PnP 模式。可能你发现你每输一个,它会自动变为0xff,不要以为没生效,其实它已经进入PnP Mode了。比如你输玩87h,确定后,马上变回00,不要慌,继续输入01h确定。

  2. 使能 EC(LDN=04h, Index 30h=01)通过看SPEC,可以发现逻辑设备选择寄存器是07h,它的逻辑设备号是04h,这时候,进入IO Space,输入2E,在控制寄存器2E地址即0x00位置输入07h,然后在数据寄存器2F地址即0x01位置输入04h,在控制寄存器2E地址即0x00位置输入30h,在数据寄存器2F地址即0x01位置输入01h,使EC生效

另外,备注一下,IO Space这个里面是实际上操作的入口,里面可以设置,可以操作,不过会很快还原,所以只能在很短的时间内看到数据,那么就需要用到查看数据,RW还会有IO Index/Data,这个里面可以查看数据,比如你在Index Port输入2E,Data Port会自动变为2F,点击确定,可以查看里面的数据。而且可以进行操作,会比IO Space来得简单。比如之前在IO Space的操作是先在控制寄存器2E位置输入07h来选择逻辑设备号,之后在2F位置输入04h选择逻辑设备号04h。那么,现在在IO Index/Data里面的操作就是直接找到07h的位置,在里面输入04h就是了。至于怎么找位置,方法是:纵向是00h-F0h,横向是00h-0fh,如果你想找07h的位置就是纵向为00h,横向为07h,合起来就是07h。再举一个例子,如果你要找18h的位置,那么纵向就是10h,横向就是08h,合起来就是18h。还有一个更简便的查看数据的方法,就是进入Super IO,里面的逻辑设备号也不需要向之前的在)7h位置输入04h,可以直接选择Logical Device 04会来得更加直接。

综上所述,如果是为了写程序,那么操作步骤要按照IO Space来一步一步严格操作2E,2F端口,如果是为了手动查看修改数据,那么就用Super IO会比较方便直观一点。为了更易显示,下面就是用的Super IO使用。

  3. 得到EC Base Address,可以从SPEC中看出,基地址是需要从60h,61h寄存器读出来的,60h是高八位,61h是低八位,合起来就是基地址base。然后我们的EC控制器的地址端口地址就是base+05h,数据端口就是base+06h。

基地址由逻辑设备寄存器确定(index=60h, 61h)

地址端口(Base+05h);数据端口(Base+06h)

  4. 配置风扇转速寄存器(index=0Ch,default=00h)我们找到Fan PWM Control Register,找到控制风扇的寄存器地址,选择手动模式,即(Software Operation),然后根据SPEC,一般选择模式的地址部分会有控制风扇转速的地址说明,我们就可以设置00h-ffh控制风扇的转速。注意一点的是,00h不代表风扇停止,因为风扇会有一个最低转速,ffh是满转。

  5. 计算出风扇转速(index=0Dh,18h)风扇转速会有一个公式,可以在SPEC里面直接搜RPM找到类似

这种就是风扇转速的计算公式,其中Count是你通过18h,0Dh读取出来的值换算成十进制的值,比如说18h读的是02h,0Dh读的是90h,那么合起来就是0290h,十进制为656,带入公式即可。

  6. 退出MB PnP 模式(index=02h,default=02h)这个也可以在SPEC里面看到,这个退出PnP Mode在2E/2F端口里面的02h部分设置为01h。

至此,风扇控制就完毕了。

  以前的机器大部分的流程就是这样就可以完成了。但是新机器经过实验控制不了,可能需要BIOS那边提供相应的寄存器来修改值进入手动模式才可以。还有这种讲的是ITE芯片的,如果不是用ITE芯片控制的话,流程可能就不是这样的了。有的风扇控制是不需要进入PnP Mode 的,这次就是对于其中的一种进行学习。

CPU风扇调速原理

4pin风扇PWM

PWM如何控制三极管的通断

三极管工作原理

4pin风扇控速原理

第十六篇 -- SuperIO学习的更多相关文章

  1. 第二十六篇 jQuery 学习8 遍历-父亲兄弟子孙元素

    jQuery 学习8 遍历-父亲兄弟子孙元素   jQuery遍历,可以理解为“移动”,使用“移动”还获取其他的元素.   什么意思呢?老师举一个例子: 班上30位同学,我是新来负责教这个班学生的老师 ...

  2. 第二十六篇 -- wifi学习

    参考网址:https://blog.csdn.net/zwl1584671413/article/details/77936950 https://blog.csdn.net/Righthek/art ...

  3. Egret入门学习日记 --- 第十六篇(书中 6.10~7.3节 内容)

    第十六篇(书中 6.10~7.3节 内容) 昨天搞定了6.9节,今天就从6.10节开始. 其实这个蛮简单的. 这是程序员模式. 这是设计师模式. 至此,6.10节 完毕. 开始 6.11节. 有点没营 ...

  4. 解剖SQLSERVER 第十六篇 OrcaMDF RawDatabase --MDF文件的瑞士军刀(译)

    解剖SQLSERVER 第十六篇 OrcaMDF RawDatabase --MDF文件的瑞士军刀(译) http://improve.dk/orcamdf-rawdatabase-a-swiss-a ...

  5. Python之路【第十六篇】:Django【基础篇】

    Python之路[第十六篇]:Django[基础篇]   Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了O ...

  6. 跟我学SpringCloud | 第十六篇:微服务利剑之APM平台(二)Pinpoint

    目录 SpringCloud系列教程 | 第十六篇:微服务利剑之APM平台(二)Pinpoint 1. Pinpoint概述 2. Pinpoint主要特性 3. Pinpoint优势 4. Pinp ...

  7. Vue学习之路第十六篇:车型列表的添加、删除与检索项目

    又到了大家最喜欢的项目练习阶段,学以致用,今天我们要用前几篇的学习内容实现列表的添加与删除. 学前准备: ①:JavaScript中的splice(index,i)方法:从已知数组的index下标开始 ...

  8. 马凯军201771010116《面向对象与程序设计Java》第十六周知识学习总结

    一:理论知识部分 1.线程的概念: 程序是一段静态的代码,它是应用程序执行的蓝 本. ‐进程是程序的一次动态执行,它对应了从代码加 载.执行至执行完毕的一个完整过程. 多线程是进程执行过程中产生的多条 ...

  9. Python自动化 【第十六篇】:JavaScript作用域和Dom收尾

    本节内容: javascript作用域 DOM收尾 JavaScript作用域 JavaScript的作用域一直以来是前端开发中比较难以理解的知识点,对于JavaScript的作用域主要记住几句话,走 ...

随机推荐

  1. 【模板】Linux下输出文件的对比

    命令格式: diff+[参数]+[文件1或目录1]+[文件2或目录2] 命令参数: 指定要显示多少行的文本.此参数必须与-c或-u参数一并使用. -a或--text diff预设只会逐行比较文本文件. ...

  2. 解析 Nebula Graph 子图设计及实践

    本文首发于 Nebula Graph 公众号 NebulaGraphCommunity,Follow 看大厂图数据库技术实践. 前言 在先前的 Query Engine 源码解析中,我们介绍了 2.0 ...

  3. [源码解析] 深度学习分布式训练框架 horovod (7) --- DistributedOptimizer

    [源码解析] 深度学习分布式训练框架 horovod (7) --- DistributedOptimizer 目录 [源码解析] 深度学习分布式训练框架 horovod (7) --- Distri ...

  4. .NET Core/.NET5/.NET6 开源项目汇总8:Blazor项目

    系列目录     [已更新最新开发文章,点击查看详细] Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 U ...

  5. 在vs中调试关闭之后不关闭页面

    在vs中调试api时会自动打开一个新的浏览器窗口,在关闭这个浏览器窗口时,会关闭调试.关闭调试时也会关闭浏览器窗口. 设置成调试时在已有的浏览器中打开调试页面,关闭调试也不会关掉浏览器窗口,反之亦然 ...

  6. Java操作SQL数据库(JDBC)

    0.引入驱动jar包 使用jdbc进行具体操作前,需要引入相关数据库的jar包, 或者使用mave管理依赖 <!-- https://mvnrepository.com/artifact/mys ...

  7. CosId 1.1.0 发布,通用、灵活、高性能的分布式 ID 生成器

    CosId 通用.灵活.高性能的分布式 ID 生成器 介绍 CosId 旨在提供通用.灵活.高性能的分布式系统 ID 生成器. 目前提供了俩大类 ID 生成器:SnowflakeId (单机 TPS ...

  8. CMD命令进入某个目录

    1.开始->运行->CMD 2.进入某个磁盘,直接盘符代号:如D:,不用CD 命令切换 3.进入除根录以下的文件夹 cd 文件夹路径 例如我要进入 E:/Program Files/PHP ...

  9. python自定义异常,使用raise引发异常

    1.自定义异常类,自定义的异常类必须是Exception或者Error的子类! 1 #!/usr/bin/env python 2 # encoding: utf-8 3 4 class Illega ...

  10. MVC 与 三层架构

    https://www.bilibili.com/video/av29086718/?p=24 MVC: MVC与三层架构进行比较: