第十六篇 -- SuperIO学习
一、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 的,这次就是对于其中的一种进行学习。
第十六篇 -- SuperIO学习的更多相关文章
- 第二十六篇 jQuery 学习8 遍历-父亲兄弟子孙元素
jQuery 学习8 遍历-父亲兄弟子孙元素 jQuery遍历,可以理解为“移动”,使用“移动”还获取其他的元素. 什么意思呢?老师举一个例子: 班上30位同学,我是新来负责教这个班学生的老师 ...
- 第二十六篇 -- wifi学习
参考网址:https://blog.csdn.net/zwl1584671413/article/details/77936950 https://blog.csdn.net/Righthek/art ...
- Egret入门学习日记 --- 第十六篇(书中 6.10~7.3节 内容)
第十六篇(书中 6.10~7.3节 内容) 昨天搞定了6.9节,今天就从6.10节开始. 其实这个蛮简单的. 这是程序员模式. 这是设计师模式. 至此,6.10节 完毕. 开始 6.11节. 有点没营 ...
- 解剖SQLSERVER 第十六篇 OrcaMDF RawDatabase --MDF文件的瑞士军刀(译)
解剖SQLSERVER 第十六篇 OrcaMDF RawDatabase --MDF文件的瑞士军刀(译) http://improve.dk/orcamdf-rawdatabase-a-swiss-a ...
- Python之路【第十六篇】:Django【基础篇】
Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了O ...
- 跟我学SpringCloud | 第十六篇:微服务利剑之APM平台(二)Pinpoint
目录 SpringCloud系列教程 | 第十六篇:微服务利剑之APM平台(二)Pinpoint 1. Pinpoint概述 2. Pinpoint主要特性 3. Pinpoint优势 4. Pinp ...
- Vue学习之路第十六篇:车型列表的添加、删除与检索项目
又到了大家最喜欢的项目练习阶段,学以致用,今天我们要用前几篇的学习内容实现列表的添加与删除. 学前准备: ①:JavaScript中的splice(index,i)方法:从已知数组的index下标开始 ...
- 马凯军201771010116《面向对象与程序设计Java》第十六周知识学习总结
一:理论知识部分 1.线程的概念: 程序是一段静态的代码,它是应用程序执行的蓝 本. ‐进程是程序的一次动态执行,它对应了从代码加 载.执行至执行完毕的一个完整过程. 多线程是进程执行过程中产生的多条 ...
- Python自动化 【第十六篇】:JavaScript作用域和Dom收尾
本节内容: javascript作用域 DOM收尾 JavaScript作用域 JavaScript的作用域一直以来是前端开发中比较难以理解的知识点,对于JavaScript的作用域主要记住几句话,走 ...
随机推荐
- 【NX二次开发】Block UI 操作按钮
属性说明 常规 类型 描述 BlockID String 控件ID Enable Logical 是否可操作 Group Logical ...
- 【VBA】日期时间
当前日期: Sub 测试() Debug.Print Date End Sub 当前时间: Sub 测试() Debug.Print Date End Sub 几月: Sub 测试() Debug.P ...
- 我用段子讲.NET之依赖注入其一
<我用段子讲.NET之依赖注入其一> 1) 西城的某个人工湖畔,湖水清澈见底,湖畔柳树成荫.人工湖往北,坐落着两幢写字楼,水晶大厦靠近地铁站,由于为了与湖面天际线保持一致,楼层只有26层高 ...
- 佛祖保佑永无BUG 神兽护体 代码注释(各种版本)
佛祖保佑 永无BUG /* _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. ...
- Redis之缓存设计
缓存能够有效地加速应用的读写速度,同时也可以降低后端负载,对日常应用的开发至关重要.但是将缓存加入应用架构后也会带来一些问题,本章将针对这些问题介绍缓存使用技巧和设计方案,包含如下内容: □ 缓存的收 ...
- 关于基于Nexus3和Docker搭建私有Nuget服务的探索
背景简介 NuGet是Microsoft开发平台的程序集包管理器,它由客户端工具和服务端站点组成,客户端工具提供给用户管理和安装/卸载软件程序包,以及打包和发布程序包到NuGet服务端站点等功能,服务 ...
- 8、ITSM基本概念(1)
ITSM即是信息技术服务管理: 8.1.什么是服务: 8.2.RACI模型: 谁负责(R =n Resposible),即负责执行任务的角色,他/她具体负责操控项目.解决问题. 谁批准(A = Acc ...
- 35、mysql数据库(ddl)
35.1.数据库之库操作: 1.创建数据库(在磁盘上创建一个对应的文件夹): create database [if not exists] db_name [character set xxx]; ...
- Spring:Spring事务手动回滚方式
方法1: 在service层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句 ...
- <mvc:default-servlet-handler/>导致controller失效,报404错误
最近在做ssm框架整合的一个小项目时,页面跳转一直有404错误,也没有报错提示.然后一步一步去找,终于发现是<mvc:default-servlet-handler/>的原因.如下图所示, ...