WindowsXP下的裸核APIC异常,AMP模式
随鑫所欲 2014-02-12 05:40:59 我公司最近写了一套系统,采用AMP模式,在一个双核的处理器上,一个核跑WindowsXP,另一个核跑我们的系统(简称裸核程序)。
现在的问题是,当在裸核中注册APIC定时中断后,定时中断可以正常进入,但跑一段时间后就会死机(时间在3个小时以内,一般在2个小时左右,十几分钟的情况也有),死机时整个电脑静止了,没有任何反应,只能通过长按电源键关机。但如果是跑Win7-32,裸核起APIC定时器就没问题。
APIC定时中断的时间间隔是500us,中断函数中,除了置一下EIO,什么也没干。如果不起APIC就没问题。
BIOS启动后先进入的WindowsXP,然后在XP下我写了一个驱动,通过INIT-SIPI-SIPI启动裸核程序,这些都是正常的,没有什么问题。
请各位大神帮忙看看是什么原因。
我尝试过很多实验:
(1)重装XP系统,重装驱动,还是死机;
(2)更换内存,2G和4G内存条,还是死机;
(3)精简了裸核程序,就剩下几项内容:启动APIC、注册中断与陷阱、注册APIC定时中断,还是死机,如果不注册APIC定时中断就不死了;
(4)我注册了APIC的Error中断,中断是好用的(尝试进过),但是APIC定时中断一开就死机;
(5)通用保护异常中断也注册了,所有31号之前的中断都注册了,还是死机,整个系统停止工作。
我怀疑是不是XP下的某些驱动做了什么导致了,但也没法挨个驱动卸载吧!
由于每次都得等2个小时左右,非常痛苦,还请各位大侠看看有没有什么点子。