BIOS实战之HW monitor

首先看下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,总的硬件监测就先学习到这-_-||

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RX 580 8G 2304 大地之神 BIOS是指AMD的显卡型号RX 580 8G 2304,其中2304代表该显卡有2304个流处理器(即图形计算单元)。而"大地之神"则是该显卡的非官方命名,可能是由于该显卡强大的性能和稳定性而得名。 BIOS是显卡上的一块固态存储芯片,用于存储显卡的基本输入输出系统(BIOS)或固件。显卡的BIOS包含了与显卡硬件相关的信息和设置,如时钟频率、电压、功耗限制等。在显卡硬件初始化过程中,BIOS会加载并操作这些设置,以确保显卡正常运行。 对于RX 580 8G 2304 大地之神 BIOS,可能包含某些专为该型号显卡优化的设置。这些设置可能会通过提高显卡性能、改善功耗管理、优化散热等方面来提供更好的使用体验。在使用显卡时,用户可以通过刷新或更新BIOS来改变显卡的参数和设置,以满足个人需求或适应特定的计算任务。 需要注意的是,更新显卡的BIOS对硬件来说是一个敏感的操作,需要非常小心。若不正确地更新了显卡的BIOS,可能会导致显卡无法启动或出现其他不同寻常的问题。因此,在更新显卡BIOS之前,建议详细阅读相关的更新说明和指南,并确保按照正确的步骤来操作。 总之,RX 580 8G 2304 大地之神 BIOS是指该型号显卡的固件程序,用于存储显卡的硬件设置和参数。更新BIOS可能会提供更好的性能和体验,但在操作之前需要谨慎,并遵循官方的指南。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值