EC资料有个很好的CSDN博客推荐去看看:zhao_longwei的专栏

EC固件代码架构:https://blog.csdn.net/zhao_longwei/article/details/51010544

PCI/PCIE MSI#中断:https://blog.csdn.net/pwl999/article/details/78208151

Linux内核推荐:https://blog.csdn.net/pwl999/article/details/78817899#comments

关于SMI、MSI、SCI、INTx各种中断小结:https://blog.csdn.net/huangkangying/article/details/11178425

http://www.aiuxian.com/article/p-1103653.html

推荐博客:我所知道的EC====>KBSMI&KBSCI:http://www.aiuxian.com/article/p-1090092.html

小弟是学硬件的,苦苦修行中,

SCI VS SMI

SCI:System Control Interrupt, 系统控制中断。专门用于ACPI电源管理的一个IRQ,需要OS支持。

SMI:System Management Interrupt, 系统管理中断,使用系统进入SMM的特殊中断。

两者区别:

SMI是CPU级别的,ACPI和非ACPI模式下都可以使用,而SCI是OS级别的,只有在ACPI support的OS中才能见到。比如说DOS下触发的中断肯定不是SCI,但有可能是SMI。

两者联系:

两者可以用于电源管理,但SMI不限于电源管理。

触发过程:

SMI:  (硬件方式)

SMI Pinassert -> CPU SMM mode -> BIOS SMI handler

SMI:(软件方式)

WriteIO(B2h) -> CPU SMM mode->BIOS SMI handler

SCI:

SCI Pinassert->IDT->OS ACPI driver->ASL code(Q Evnent)->?

http://www.aiuxian.com/relative/p-1103656.html

http://bbs.javaee.cc/post/289740_1_1.html

https://www.cnblogs.com/jyaray/p/7127316.html

http://www.chinafix.com/thread-1035371-1-4.html

https://blog.csdn.net/huangkangying/article/details/7918179

中断信号。也可以走LPC。但是有些对时效性有要求的,就走SCI/SMI了。SMI极少用到。主要是SCI比较多。 system management interrupt 系统管理中断 在繁忙中 请求停下来 先处理某个请求 中断有优先权 某个级别比较高的中断

管理信息结构SMI(structure of management information) 
  它是简单网络管理协议(SNMP)的一部分,指定了在 SNMP 的 MIB 中用于定义管理目标的规则。 
SMI: 系统管理中断 System Management Interrupt 

SMI#:System Management Interrupt,系统管理中断
An OS-transparent interrupt generated by interrupt events on legacy systems. By
contrast, on ACPI systems, interrupt events generate an OS-visible interrupt that is
shareable (edge-style interrupts will not work). Hardware platforms that want to
support both legacy operating systems and ACPI systems must support a way of remapping
the interrupt events between SMIs and SCIs when switching between ACPI
and legacy models.

SCI:beyond compare,系统控制中断
A system interrupt used by hardware to notify the OS of ACPI events. The SCI is an
active, low, shareable, level interrupt.

大师说:SCI主要是在进入ACPI后,ACPI用的中断信号。SMI一般在ACPI状态之前使用的用来做后台中断的东西。在ACPI后 ,SMI就自动关闭,切换到SCI的方式。
SMI少量的会在ACPI的状态下还可以正常工作。主要是用来执行 一些超脱操作系统的特殊的代码。
联想当年的被美国禁用的主要原因就是SMI的问题。他的权限超过操作系统。超脱在操作系统之外

总之,功能一切正常,就是不能正常关机的。刷了BIOS换了桥还不好,查查这些吧。

PME:PCI Express Native Power Management Events control
The firmware sets this bit to 1 to grant control over control over PCI Express native power
management event interrupts (PMEs). If firmware allows the OS control of this feature, then
in the context of the _OSC method it must ensure that all PMEs are routed to root port
interrupts as described in the PCI Express Base Specification. Additionally, after control is
transferred to the OS, firmware must not update the PME Status field in the Root Status
register or the PME Interrupt Enable field in the Root Control register. If control of this
feature was requested and denied or was not requested, firmware returns this bit set to 0.

电源管理的中断。因为在休眠状态下,设备的其他中断是关闭的,只能通过这个通知系统来唤醒设备用的。设备休眠了,没有这个信号,系统就不知道什么时候要唤醒他。就一直睡下去了。可能会整个系统都停了。

SCI与SMI的区别与联系

SMI: System Management Interrupt,系统管理中断,进入SMM的方法,包含(但不限于)电源管理功能,对OS透明的;

SMI pin触发后,CPU进入SMM Mode,转去执行BIOS中的SMI Handler。

SMI pin--> CPU SMM Mode --> BIOS routine

SCI: System Control Interrupt,系统控制中断,是ACPI定义的,专用于ACPI电源管理的一个IRQ,需要OS支持的。

SCI pin触发后,CPU去执行某个放在中断描述表(IDT)中的程式,一般都是指向某个驱动程式(ACPI.sys),ACPI driver会通知相关的驱动程式(ACPI EC Driver),然后跟EC BIOS取得一个代码,而这个代码就是ASL code中的Qxx Number,接着OS会去执行相应的ASL Code,一般都是Method(Qxx)。

SCI pin --> OS Acpi Driver --> ASL Code (Q event) --> ? (看BIOS Spec需求)

联系:都可以用于电源管理功能
区别:SMI是CPU级别的,ACPI和非ACPI模式下都可以用;SCI是OS级别的,只有在ACPI模式才可以用。

SCI只能在ACPI的OS下发出来,如果在DOS下能触发的中断,那肯定不是SCI,那可能是SMI。SMI同样可以在OS下发出来。在进入ACPI的OS后,Bios把CPU的控制权交给OS,SMI还是可以发出来的。SMI大部分由硬件来issue,也可以发soft SMI,一般是在port 0B2h下command,然后在SMI Handle中加入对cmd的动作即可。

SCI_INT

FADT的Offset46为SCI_INT field。

它记录了在PIC Mode下,SCI连接到8259的哪个pin(通常都是IRQ9);在APIC Mode下,它记录了SCI interrupt的Global System interrupt number。

如果在PIC Mode下SCI连接到IRQ9,而在APIC Mode下IRQ9连接到INTIN11,则在FADT中SCI_INT为9, MADT中interrupt resource override entry mapping 将IRQ9 mapping到INTIN11。

如何把SCI_INT从IRQ9改成IRQ11?

三个地方要改:

1. SCI IRQ Select(D31:F0:R44h bit[2:0])由000h(IRQ9)改成010h(IRQ11)

2. FADT中SCI_INT 由9改成11

3. MADT中interrupt resource override entry, Source 0x09; GSI:由0x09改成0x0B

SMI#、SCI#信号在OS、BIOS、EC中的中断方式(Linux)的更多相关文章

  1. 18 os/os.path模块中关于文件/目录常用的函数使用方法 (转)

    os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名('. ...

  2. os、os.path模块中关于文件、目录常用的函数使用方法

    os模块中关于文件/目录常用的函数使用方法 函数名 使用方法   getcwd()   返回当前工作目录   chdir(path)   改变工作目录   listdir(path='.')   列举 ...

  3. python编程os、os.path 模块中关于文件、目录常用的函数使用方法

    os模块中关于文件/目录常用的函数使用方法   函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名( ...

  4. python—— 文件的打开模式和文件对象方法 & os、os.path 模块中关于文件、目录常用的函数使用方法

    引用自“鱼c工作室”     文件的打开模式和文件对象方法  : https://fishc.com.cn/forum.php?mod=viewthread&tid=45279&ext ...

  5. Mac OS X中,有三种方式来实现启动项的配置

    Mac OS x 启动项设置 Mac OS X的启动原理: 1,mac固件激活,初始化硬件,加载BootX引导器. 2,BootX加载内核与内核扩展(kext). 3,内核启动launchd进程. 4 ...

  6. VxWorks中的中断应用设计要点

    硬件中断处理是实时系统设计中的关键性问题,设计人员有必要对其作深入研究,以更好地满足开发工作需要.文中以VxWorks操作系统为软件平台,讨论了在实时系统中进行中断应用设计时要注意的一些问题.由于软硬 ...

  7. 如何在CentOS 5.x 中安装Windows Azure Linux Agent (WALA)

    Qing Liu  Tue, Mar 10 2015 3:06 AM 在今天的这一个章节中,我们主要讨论在CentOs 5.x 中如何安装Windows Azure Linux Agent 2.11 ...

  8. python中pygame模块的Linux下安装过程

    一.使用pip安装Python包 大多数较新的Python版本都自带pip,因此首先可检查系统是否已经安装了pip.在Python3中,pip有时被称为pip3. 1.在Linux和OS X系统中检查 ...

  9. 数据在内存中的存储方式( Big Endian和Little Endian的区别 )(x86系列则采用little endian方式存储数据)

    https://www.cnblogs.com/renyuan/archive/2013/05/26/3099766.html 1.故事的起源 “endian”这个词出自<格列佛游记>.小 ...

随机推荐

  1. iOS-----openGL--openGL ES iOS 入门篇2--->绘制一个多边形

    在上一篇我们学习了如何搭建IOS下openGL的开发环境,接下来我们来学习如何绘制一个多边形. 在2.0之前,es的渲染采用的是固定管线,何为固定管线,就是一套固定的模板流程,局部坐标变换 -> ...

  2. UVa11762 Race to 1

    期望DP 一个数只能分解成不大于它的数,那么转移构成拓扑关系. 试了一下预处理出不大于x的质数个数,然而程序并没有变快 /*by SilverN*/ #include<algorithm> ...

  3. C#.net制作验证码(英文与数字组成的4位随机数),以及MD5值的使用

    原文发布时间为:2008-09-22 -- 来源于本人的百度文章 [由搬家工具导入] 参考资料:http://www.cnblogs.com/gwazy/articles/139510.html 三个 ...

  4. es6总结(三)--数组

  5. svg格式矢量图引入方法

    引入方法: span { background: url('1.svg') no-repeat; background-size: 20px 20px; background-position: 0 ...

  6. Java 基础【04】数组内存分配

    可能Java 数组大家都很熟悉,最近我遇到了一个关于Java 数组内存分配的问题. 突然发现许多书上“基本数据类型存储在栈内存当中,对象则保存在堆内存”这句话完全是错误的.下面是个简单的例子代码: p ...

  7. (1)Unity3d界面、入门

    项目视图 层级视图 属性视图 场景视图 游戏视图 调整u3d整体界面布局 1.查看和移动视图 快捷键Q 2.沿轴方向位移 快捷键W 3.沿轴向旋转 快捷键E 4.沿轴向缩放 快捷键R 5.自由调节小大 ...

  8. java正则过虑字符

    public static void main(String[] args) { String testrString = "{\"abc\" : \"[123 ...

  9. Android Glide源码分析

    1. 功能介绍 图片加载框架,相对于UniversalImageLoader,Picasso,它还支持video,Gif,SVG格式,支持缩略图请求,旨在打造更好的列表图片滑动体验.Glide有生命周 ...

  10. weblogic运维时经常遇到的问题和常用的配置

      希望这篇能把weblogic运维时经常遇到的问题.常用的配置汇总到一起. 1.配置jvm参数: 一般在domain启动过程中会看到以下启动的日志信息,如下图所示: 图中红色方框部分为启动weblo ...