首先看下HW monitor,也就是硬件监控,什么温度,电压,系统风扇,CPU风扇啥的。在IT8738芯片文档9.5节中,我们可以看到,这些是在芯片内置的EC逻辑设备中进行的,也就是环境控制(不是嵌入式控制):

环境控制器(EC)内置于IT8738中,包括七个电压输入、三个温度传感器输入、四个风扇转速计输入和四套高级风扇控制器。IT8738包含一个8位ADC(模数转换器),负责监控电压和温度。ADC将0V至2.8V(VREF)的模拟输入转换为8位数字字节。通过额外的外部组件,模拟输入可以监控不同的电压范围,除了监测0伏到2.8伏的固定输入范围。通过外部热敏电阻或热敏电阻二极管,温度传感器输入可转换为8位数字字节,使传感器输入监控各种部件的温度。还提供了一个内置ROM来调整非线性热敏电阻的特性。

怎么操作的之前在smart fan基础介绍中讲到过,我就直接copy到下面来了

就拿LDN 4 EC这个设备来说,我们要访问他的IO Space,首先得知道它的地址是多少,从IT8625的SPEC可以知道,地址就是0x60,0x61中的值。

这里的两个值是不能直接用的,按照说明,需要分别给他们加上05h和06h,再用index/data的IO方式访问就可以了。假如0x60的值是02h,0x61的值是90h(这两个值可以用RW看到),则:

index port address = 290h + 05h = 295h
data port address = 290h + 06h = 296h

理解上面的我们就可以写出逻辑了(PNP mode就不写了)

我估计上面这个也得设置enable才行,所以总的代码应该是如下:

unsigned int GetEcAddress()
{unsigned int addr1,addr2,baseaddr;EnterPnPMode();IoWrite8(0x2E,0x07);IoWrite8(0x2F,0x04);IoWrite8(0x2E,0x30);IoWrite8(0x2F,0x01);IoWrite8(0x2E,0x60);addr1=IoRead8(0x2F);IoWrite8(0x2E,0x61);addr2=IoRead8(0x2F);ExitPnPMode();baseaddr=(addr1<<8&0xFF00) | addr2;return baseaddr;}

ok,这样我们就获得了基地址,有了这个我们就可以读写EC里面的IO space了:

unsigned int ReadEcSpace(unsigned int index){unsigned int data,Addr=0;unsigned int INDEX_PORT,DATA_PORT;Addr=GetEcAddress();INDEX_PORT = Addr+5;DATA_PORT = Addr+6;IoWrite8(INDEX_PORT,index);data=IoRead8(DATA_PORT);return data;
}void WriteEcSpace(unsigned int index,unsigned int data){unsigned int Addr=0;unsigned int INDEX_PORT,DATA_PORT;Addr=GetEcAddress();INDEX_PORT = Addr+5;DATA_PORT = Addr+6;IoWrite8(INDEX_PORT,index);IoWrite8(DATA_PORT,data);return;
}

读写函数写完了,接下来依然看9.5节,这一节中介绍了这里面space的值具体是干什么用的,代表什么:

总之有一连串,我们看下:

前文中有说道,该芯片有三个温度传感器输入,那么我们就取前面三个的值,就是温度的大小了:

void TempRead()
{unsigned int temp0,temp1,temp2;temp0=ReadEcSpace(0x29);temp1=ReadEcSpace(0x2A);temp2=ReadEcSpace(0x2B);printf("Temperature0=%d",temp0);printf("Temperature1=%d",temp1);printf("Temperature2=%d",temp2);//这里只简单写下,温度肯定有范围,如果值为FF,那温度真是这样不得爆炸,所以要排除
}

风扇主要是如下的寄存器:

注意对应组合,比如读取18h的值后,这个值左移8位,然后加上0Dh处的值,然后根据风扇转速公式,算得该风扇转速。

同理电压监控的为20h---28h,读取这些寄存器的值,估计还要计算,可能需要硬件参与(猜测),ok,总的硬件监测就先学习到这-_-||

BIOS实战之HW monitor相关推荐

  1. BIOS实战之Power Sequence

    What is Power Sequence? Power Sequence是指电的开关时序.包含Power On Sequence(上电时序) 和 Power Off Sequence(关电时序). ...

  2. BIOS实战之Memory配置

    目前有SPD和SMIP两种,现在主要配置SMIP,soft:BMP:需要修改的相关文件smip.c BGA:贴片式,Dimm:插槽,MemoryDown:贴片必须要用到的: ch0 RankEnabl ...

  3. BIOS实战之读写逻辑设备(SIO)

    前几天提到了SIO有关的,之前略有研究,不过确实实际只研究过小部分功能,也就做龙芯BIOS的时候参与过SIO的有关编程,因为这个东西笔记本是肯定不会用的,笔记本用EC,这个SIO也就相当于PC板上的E ...

  4. BIOS实战之读取文件

    在UEFI shell下,BIOS的更新.EC的更新等都需要用到读取文件,从UEFI原理与编程中初步了解怎么读写,那么接下来就进入实践环节 先把后面需要的变量先定义好(便于理解): EFI_STATU ...

  5. BIOS实战之PCI设备枚举二

    上次说到了除了IO枚举PCI设备,还有另一种方式枚举PCI设备,那就是通过pciio,这也是UEFI代码中的常规操作(当然还有MMIO,不过不写了) UEFI BIOS 提供了两个主要的模块来支持PC ...

  6. BIOS实战之MIPI屏的配置

    想到啥写啥,仅个人笔记用,说不定哪天就关了 MIPI屏的配置需要用到几个工具: 1.Intel的BMP工具,2.MIPseq工具,最好是最新的,3.DTD 计算工具 BMP工具用来配置GOP driv ...

  7. BIOS实战之PCI设备枚举一

    PCI设备枚举主要通过两种不同方式进行表现,一种就是IO了,那么另一种就是UEFI中的pciio协议,首先看下第一种 IO方式进行PCI设备枚举 先写一个读PCI配置空间的函数,这是通过汇编写,很好理 ...

  8. BIOS实战之VBIOS配置

    EDP屏的配置: 使用BMP.exe进行相关配置 UEFI GOP Driver Configuration选项中有一个Hot Plug Support:热插拔支持 LFP Configuration ...

  9. AWARD BIOS设置(INTEL芯片组)

    计算机加电后,系统将会开始POST(加电自检)过程,当屏幕上出现以下信息时,按delelte键 控制键位 功能 <↑> 向前移一项 <↓> 向后移一项 <←> 向左 ...

  10. 计算机bios设置论文,玩转电脑必看知识——各种BIOS设置详解 的更多相关文章

    7.IDE Primary Master UDMA(第一个IDE主控制器下的UDMA模式) 8.IDE Primary Slave UDMA(第一个IDE从控制器下的UDMA模式) 9.IDE Sec ...

最新文章

  1. WinCE6.0 修改开机Logo方法集锦(二)
  2. (双引号)与 ' '(单引号)的区别
  3. jQuery ajax的traditional参数的作用
  4. 《北妹》:中国七零后作家的一次火山喷发(答记者问)
  5. java 常量 内存分配_Java内存分配之堆、栈和常量池
  6. 关于使用代理解决跨域问题的原理
  7. 在XNA 3.0 项目添加声音——通过Xact播放简单的.wav文件
  8. Python判断字符类型
  9. Leetcode 刷题笔记(十一) —— 栈与队列篇之 top-K 问题
  10. 羽毛球:东南大学vs南京大学
  11. 【线性代数】线性代数的几何意义
  12. Named Route ‘layout‘ has a default child route. When navigating to this named route (:to=“{name: ‘l
  13. Python最优化算法学习笔记(Gurobi)
  14. [转贴]当杀毒软件无能为力时,手动杀毒也许是我的最后救命稻草!
  15. js获取当前服务器的ip
  16. bmp、jpg转换为icon图像
  17. JavaSE02-JVM、JRE、JDK
  18. CAN接口电路的 EMC设计方案(工业)
  19. vcu整车simulink模型
  20. Xshell计算-五个文件的准备

热门文章

  1. 电脑清灰你要知道的那些事(二)
  2. 迪文屏DMT12800K070_A2WTC踩坑实录(二)
  3. 解决小米手机无法安装证书问题
  4. 智课雅思词汇---十二、vent是什么意思
  5. 什么是视频监控平台的平台对接
  6. CoderHelper 是怎样实现添加模块信息以及函数说明信息的?
  7. AtCoder Beginner Contest 043题解(ABCD)
  8. 树莓派4B系统搭建(超详细版)
  9. HTML5 之 Link 标签
  10. JM8.5中的高精度象素运动估计 1