小弟请问,如何在OS的层面触发一个SMI,让CPU进入SMM呢?好象ACPI是可以的,不知道使用的是什么方法,是直接写端口呢,还是使用什么别的方式?在有就是进入了SMM怎么确定调用哪个Handler呢,CPU是根据什么分辨不同的SMI的呢?研究了好长时间了,资料太少,希望高手指点...
全文
回复(8) 2007-08-06 14:01 来自版块 - FirmWare
表情
buaawr至于说在ACPI里面触发SMI,那是用ASL code向SW SMI寄存器写数据来实现的,换句话说,只要能访问到SW SMI寄存器,谁都可以触发,并不是ASL CODE的专利,你也可以用WINIO来做啊,前提是,你知道那个寄存器在哪里。(2008-09-26 14:44)
buaawr在接到SMI以后,CPU进入SMM,自动调用SMRAM里面的BIOS代码,这些代码会poling那些状态源寄存器,然后调用不同的handler. SMI和OS没有关系,完全由BIOS来处理 后来出了ACPI SPEC,它定义了一个SCI来试图取代SMI,可惜目前的状况是两者...(2008-09-26 14:41)
keronzyacpi下面一般是sci。0xb2端口是soft smi的地址,你可以在b2里面写一个数据,就可以进入软件的smi。具体看intel的任何一个ich的datasheet,(2007-12-25 10:48)
bini用刀罗.... 不过象楼上说的用APM控制端口B2h就可以产生SMI了.一般平台都支持的.往B2h口随便写一个数,就产生了SMI. 如不能产生,看桥的Spec,就是设置APM端口是否产生SMI的bit位.(2007-12-19 21:17)
chunbee Bini,你用什么东西挖的?我也一直想整两根线出来(2007-12-19 08:55)
biniCPU引脚上有一个SMI Pin,你看在板子上挖个洞接出来,做个开关(拉高拉低)就行了. SMI基本上是以TABLE判断查询的方式执行. 你在做BIOS吗?恭喜你,你可以找那个SMI入口的代码了.(2007-12-18 09:40)
xtdumpling建议先看看如下资料,spec Intel网站上可以下载 Intel? 64 and IA-32 Architectures Software Developer’s Manual Volume 3B: System Programming Guide, Part 2 Chapt...(2007-12-08 11:09)
deedbox向B2写数就可以进入SMI了 B2中的数会保持可以通过B2中的数来判断是哪个SMI同时, SMI在发生时会记录所以寄存器值,所以也可以使用寄存器来选SMI 还有ACPI进入的哪个好象叫SCI,不过这部分我不十分清楚!(2007-08-06 15:34)

返回顶部