【我所認知的BIOS】—Super IO

news/2024/7/10 22:05:07 标签: function, keyboard, 互联网, 语言, x86, io

【我所認知的BIOS—>Super IO

By LightSeed

2009-9-2  

1Superio概述

Super I/O芯片也叫I/O芯片。在486以上档次的主板上都有I/O控制电路。因为在南桥这样的高速设备和串行、并行接口、软盘驱动器及键盘鼠标等大量低速设备之间必定存在资源的不匹配,而需要经过转换和管理。而Super I/O芯片则完成了该功能。

通常在硬件监控芯片硬件监控芯片中会整合超级I/O功能,可用于监控受监控对象的电压、温度、转速等。主板在附件中会提供某种软件,它和主板上的硬件配合使用就能实现对电压、温度、风扇转速等的监控,一旦检测到这些参数超出设定的指标时,它会自动作出调整,以保护元件的安全。常见的温度控制芯片有ADT7463等等;通用的通用硬件监控芯片有WinbondW83697HFW83627HFSMSCLPC47M172ITEIT8705FIT8703FASUSAS99172F等等,这些芯片通常还整合了对于温度的监控需与温度传感元件配合;对风扇电机转速的监控,则需与CPU的散热风扇配合使用。

(以上是从互联网copy的,^^,我太懒了呵呵,本可以翻译一下datasheet里的文字的。不过上面的文字到是把大概的东西都说到了。)

2SuperIO的样子

文字说了那么多,感到晦涩又不爽。还是先一睹他们的风采哈,(笔者:这篇文章主要还是介绍Winbond83627HG这块芯片,(笔者:这里有下载芯片的datasheet 网址:

http://pdf1.alldatasheet.com/datasheet-pdf/view/203869/WINBOND/W83627HG-AW.html)其他芯片其实也是触类旁通了。)图1Winbond83627HG在实际主板上的样子。图2ITEsuperio在主板上的图片。

 

1 Winbond83627HG在实际主板上的样子

 

2 ITEsuperio图片

383627传输IRQ的方式

83627HG是采用SERIAL IRQ的方式来传输IRQ,至于SERIAL IRQ的介绍在之前的文章中我有详细的探讨,如果您对这个有兴趣再返回去看看。连接是这个。

ion: none; text-underline: none;">http://blog.csdn.net/lightseed/archive/2009/06/16/4274206.aspx

4Winbond 83627上的设备

4.1设备列表

让我们来罗列一下Winbond 83627上的设备,共13个设备,他们分别是:FDClogical device 0, PRTlogical device 1,UART1 logical device 2, UART2logical device 3, KBClogical device 5, CIRConsumerIR, logical device 6, GPIO1logical device 7, GPIO2logical device 8, GPIO3logical device9, ACPI logical device A, and hardware monitor logical device B. 3是他们的抽象示意图。

 

3 逻辑设备示意图

4.2各个设备的寄存器

如果您以前没有玩过X86的东东可能有点一下子反应不过来我后面要说的。(因为以前一开始我学习的时候就是死活转不过脑筋来。不过再回头看两次就应该OK了。)

每一个逻辑设备它们都有自己的配置寄存器,不过要记住哦,这些寄存器都是offset30h以上的哦。为什么呢?因为offset 0h~30h都是叫做global的寄存器。从C语言的风格上讲就叫做全局变量,而30h以后的寄存器则是局部变量。

那么您第一个会问,这么多个设备在同一个芯片中,我在配置的时候怎么才能选中它们呢?(当时看datasheet我是迷惑了半天),原来在datasheet第九章第一段的最后一句有详细的说明:

logical device number into logical device select register at CR7.真想大白于天下,那么我们去操作offset 7h这个寄存器就可以直接选中我们需要配置的寄存器了。

5、配置空间

配置空间在Winbond 83627里,大致被分成了两类。一类是global的,一类是属于各个设备的。对于每个设备而言,当我们访问到的0~255个寄存器中,0~30h都是属于global的。图4是它们的示意图

 

4配置空间的架构示意图

6、配置实例

介绍了ion>function,背景这么多,其实我最关心的还是怎么去配置各个设备。Winbond 83627要配置它的话比较特殊,必须要先输入entry key。大致分为三个步骤:

1 Enter the extended ion>function mode

2 Configure the configuration registers

3 Exit the extended ion>function mode

外孙打灯笼,我们来看看详细的配置代码吧,加上详细的注释。

;----------------------------------------------------------------------

; Enter the extended ion>function mode ,interruptible double-write |

;----------------------------------------------------------------------

MOV DX,2EH     ;选择index端口,这个2E也是有原因的,详细看看datasheet page78

MOV AL,87H      ;entry key

OUT DX,AL

OUT DX,AL        ;连续两次输出到index端口,这个是芯片的规定

;----------------------------------------------------------------------

; Configurate logical device 1, configuration register CRF0 |

;----------------------------------------------------------------------

MOV DX,2EH

MOV AL,07H      ;选择global寄存器中的offset 07h,准备选择device

OUT DX,AL       ; point to Logical Device Number Reg.

MOV DX,2FH      ;选择data端口

MOV AL,01H      ;准备选择01h设备

OUT DX,AL       ; select logical device 1,到这里已经选中了device 1

;

MOV DX,2EH

MOV AL,F0H      ;准备修改寄存器F0H

OUT DX,AL       ; select CRF0

MOV DX,2FH

MOV AL,3CH      ;准备把control register F0H的值改为3CH

OUT DX,AL       ; update CRF0 with value 3CH

;------------------------------------------

; Exit extended ion>function mode |

;------------------------------------------

MOV DX,2EH

MOV AL,AAH      ;退出配置模式的key

OUT DX,AL        ;退出

当然有些device是需要从superio里面读取寄存器的值出来,而且频率还挺高的。方法与写入的过程类似,我们BIOSinitial superior的过程中均是用的datasheet里提供的方法。(就是上面的方法)

7、结束

Superio这部分的东西其实还是比较简单的,但是。。。但是。。。很多时候出问题就在superio上面,比如说串口呀,KBCkeyboard controller)呀什么的,经常会有这样那样的bug。所以也要引起足够的重视呢。至于找bug的技巧嘛,呵呵。。。我也还在学习中。希望大家相互探讨哦,实践方面晚辈掌握的实在是太少了。


http://www.niftyadmin.cn/n/959386.html

相关文章

【我所認知的BIOS】—IDE detect

【我所認知的BIOS】—>IDE detect By LightSeed 2009-9-3 1、什么是 IDE? IDE是Integrated Device Electronics的简称,是一种硬盘的传输接口,它有另一个名称叫做ATA(AT Attachment),这两个名词都…

关于RAID

一:什么是RAIDa: RAID:Redundant Arrays of Inexpensive(Independent) Disksb: 1988年由加利福尼亚大学伯克利分校(University of California-Berkeley) “A Case for Redundant Arrays of Inexpensive Disks”c: 多个…

【我所認知的BIOS】--MTRR (MEMORY TYPE RANGE REGISTERS)

【我所認知的BIOS】-->MTRR (MEMORY TYPE RANGE REGISTERS) By LightSeed 2009-9-27 1、MTRR的概念 内存类型范围寄存器(MTRRs,翻译过来真别扭,后面都以MTRR直接来说了)提供了一种机制,这…

转载Linux下开启MySQL日志

转载https://blog.csdn.net/weixin_38187469/article/details/79273962 开启mysql日志1、查看日志是否启用mysql> show variables like log_bin;出现off就代表没有开启。2、编辑my.cnf退出mysqlLinux下输入[rootizuf60sguf4gh3h771pjx6z etc]# vim my.cnf 新增两句话server-…

家庭局域网_如何用电视盒子局域网共享电脑资源,赶紧Mark!

海美迪盒子解码强画质好,播放稳定,是我们观看影视内容的最佳伴侣。——广告结束进入正题——好多海粉们买了咱家海美迪盒子后,只知道看芒果/腾讯等在线视频,这,很浪费!很浪费!其实它还可以看你本…

【我所認知的BIOS】—SMM (SYSTEM MANAGEMENT INTERRUPT )

【我所認知的BIOS】—>SMM (System management mode 学习笔记) By LightSeed 2009-9-11 1、System management mode综述 这篇文章里面我主要是谈谈对IA32的了解,而且也纯粹是笔记而已,没有太多的组织语言。 1.1 什么是…

程序员必看!2019 年招聘排名 TOP 10 的技能!

在当今竞争激烈的环境中,程序员必须不断学习和持续更新硬技能。那么成为一名企业急需的程序员需要学习什么呢?本文,小千列出了 IT 专业人员在人才竞争中必须具备的十大关键技能,这也是 2019 年技术人员需要掌握的关键核心。1、Pyt…

一次访问优化

2019独角兽企业重金招聘Python工程师标准>>> 公司一个业务要用用户的所有保单号访问数据库,获取用户的精彩服务,如图: 问题:先不要说街客,内部的测试都过不了,因为测试账号有200几张保单&#x…