当前位置: 首页 > news >正文

【UEFI系列】Super IO

文章目录

  • 一、什么是Super IO
  • 二、Super IO的作用
    • 常见厂商
  • 三、逻辑设备控制
    • 如何访问SIO逻辑设备的配置寄存器
    • 具体配置数值
  • 四、硬件监控(hardware monitor)


一、什么是Super IO

Super Input/Output超级输入输出控制器。
通过LPC(low pin count)总线与南桥进行通信。
LPC:基于intel标准的33MHz 4bit并行总线协议,代替以前的ISA总线协议。用于串口、并口、键盘/鼠标、软盘驱动器等低速设备的连接。

本身是个单片机,可以独立控制输入输出设备。

二、Super IO的作用

负责提供串行、并行、软盘驱动器和键盘鼠标(不是USB型)等的控制接口。
因为南桥这样的较高速设备和串行、并行接口以及键盘鼠标等大量低速设备之间必定存在资源的不匹配,而需要经过转换和管理,而SIO则完成了这个功能。
SIO芯片在板子上比较偏的位置,毕竟高速的基本都挨CHIP芯片组比较近。
(在intel平台上,LPC总线有一个PCI地址,BUS0,Device:31,Function:0。)

SIO牵出来很多logical device逻辑设备,例如(不是每个SIO都有这些):
FDC软盘控制器,UART串口,鼠标/键盘,GPIO,HWM硬件监控,CIR红外接口,ACPI电源管理。

常见厂商

Fintek精拓
ITE联阳
Winbond华邦
Nuvoton新唐
SMSC史恩希

三、逻辑设备控制

Logical Device:逻辑设备,SIO内部的非真实存在的设备。
Global control register(offset 0h~2Fh):逻辑设备的全局控制寄存器,在SIO内部,可以通过某种方式访问到这个寄存器。这是通用的。
Every logical device config register:每个逻辑设备的寄存器。
logical device number:每个逻辑设备的编号。
LDN select register(0x07):选择寄存器,比如在0x07这里写1,every logical device config register就会是1号的设备配置寄存器。
如下图:
(0x07这里是这一字节写逻辑设备编号,填上之后,就会选中到对应的配置空间)
在这里插入图片描述

0x30-0x3F是逻辑设备的控制,主要是控制开关。
0x40-0xFE是逻辑设备的配置,分配资源和进行管理。

如何访问SIO逻辑设备的配置寄存器

1.进入配置模式;
2.选中逻辑设备;
3.激活;
4.配置逻辑设备的控制寄存器和配置寄存器;
5.退出配置模式。

不同平台设计不一样,要看SIO芯片规范。
拿比较常见的一种举例(index:2E,data:2F):
怎么进入extended function mode:成功写两次0x87到2E IO porting口。
怎么退出extended function mode:成功写一次0xAA到2E IO porting口。

选中逻辑设备:写0x07到2E IO porting口(指向逻辑设备的number寄存器),再把设备号写到2F(下图选的是1号设备)。
配置:写要配置的寄存器到2E(下图是写F0),再把数据写到2F(下图是写3C)。
退出:写0x2E到AA IO porting口。

完成了写1号设备的F0寄存器为2F

汇编代码(用C语言效率更改,厂商都会提供封装好的函数供使用,直接用对应函数填内容就行):

在这里插入图片描述

具体配置数值

0x30: bit0置为1,即为激活设备,设成0即为不工作。
0x60-63:IO base address。(比如0x60到0x63为:00 60 00 64代表这个设备使用的io资源是0x060和0x064)
0x70:bit0-3 IRQ,代表使用的中断。
F0:clock频率,port92,gate A20,功能的一些开关和配置,详情见规范。

四、硬件监控(hardware monitor)

温度、风扇转速/风扇控制、电压。
如果温度超过多少、电压超过多少,会采取措施,具体请参考SIO的规范手册,在page几、多少位都会有详细说明。

比如新唐某SIO的硬件monitor:01 page的index 40H,它的bit7代表开关。
风扇配置:01 page的C0-C7H。
风扇转速:01 page的C8-CFH。

再说SIO的硬件monitor的base address,page是根据不同的硬件手册规定的,新唐某SIO的就是0B,而offset(CR)偏移地址是之前我们提到的具体配置数值的0x60 0x61那里,范围在100-FF8H且没有被使用过,都可以填写。

比如显示0X60和0X61显示:0A00,那么这就是硬件monitor的base address。
用RU工具输入访问命令:
往0A00写FF,往0A00写01。
(o a00 ff
o a00 01)

就会port口变成A01,A02(之前是4E,4F)。

然后就可以看到配置空间,具体对应信息可以参考硬件手册。

http://www.dtcms.com/a/328435.html

相关文章:

  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-语音评测
  • 嵌入式学习(day25)文件IO:open read/write close
  • VGG改进(2):基于Local Attention的模型优化
  • 书籍数组中未出现的最小正整数(8)0812
  • 《飞算JavaAI:新一代智能编码引擎,革新Java研发范式》
  • 跑腿平台开发实战:同城O2O系统源码的模块化与可扩展性方案
  • 每日一练:将一个数字表示成幂的和的方案数;动态规划、深度优先搜索
  • 【Altium designer】快速建立原理图工程的步骤
  • 2025开放计算技术大会|开源开放推动系统创新 加速AIDC全球协作
  • 过拟合、欠拟合与方差/偏差的关系
  • Langchain结合deepseek:框架+模型的AI测试实践
  • 小白学习pid环控制-实现篇
  • 杰里平台7083G 如何支持4M flash
  • 【oracle闪回查询】记录字段短时间被修改的记录
  • MyBatis-Plus核心内容
  • AAC音频编码器技术详解:原理、应用与发展
  • Java数组排序
  • 嵌入式系统分层开发:架构模式与工程实践(四)(状态机的应用和面向对象的编程)
  • redis认识缓存击穿
  • 特征工程--机器学习
  • [ 数据结构 ] 时间和空间复杂度
  • Linux中Apache与Web之虚拟主机配置指南
  • 栈和队列:数据结构中的基础与应用​
  • GaussDB 数据库架构师修炼(十三)安全管理(2)-数据库权限管理
  • 专题:2025城市NOA智能驾驶研究报告|附70+份报告PDF 汇总下载
  • Spring MVC 处理请求的完整流程详解
  • Kubernetes1.28-单Master集群部署
  • 【Vue中key属性的技术分析】
  • 智能装配线cad【8张】三维图+设计说明书
  • 安卓Fragmnet的生命周期