BIOS工程师手边事—中断

如果你以前没接触过中断,也许你会认为中断是一件特容易的事。但一旦你接触中断,并且想弄明白前因后果时,你就会改变观点,并且大发感慨:这是什么鬼东西?

是的,X86的中断就是这么麻烦。在操作系统下,一个中断从产生到中断服务程序的确定要经历N个步骤。首先,你要知道中断源。有了中断源,就要确定中断号。有了中断号,还要对应一个中断向量。有了中断向量,还需要注册中断服务程序和设定这个中断的优先等级。现在的架构都是支持中断共享的,所以如果牵涉到中断共享,还会有几个中断服务程序对应一个中断向量的事情。

 

1. 中断源触发类型

对于外部设备触发的中断,可以通过中断控制器设为电平触发模式或者边沿触发模式。

 

2. 中断号

对于BIOS工程师来讲,做中断这一块的重点在于中断号的确定。在这一点,ISA中断和PCI中断的确定是不同的。

ISA中断:ISA时代已经成为历史,但现在的计算机平台还保留着对ISA设备的兼容,LPC总线就是干这种事的。要想使能ISA的某个中断,要完成两个事情。首先,要在逻辑设备的SIO配置空间中填写中断号。然后还要在ASL中设置好_CRS,将其中断号宣告出来和设置MP表的IO Interrupt Entry供操作系统使用。要想修改ISA中断,我们不仅要修改SIO配置空间的中断号,还要修改_CRS里宣告的中断号。

PCI中断:设置PCI内部Device的中断时,我们要完成成三部分的事情。首先要设置DXXIP和DXXIR寄存器,即选择IRQ Routing中的一条路径作为中断连线。其次,我们要在LPC配置空间的PIRQ[A..H]_ROUT寄存器中设置IRQEN为1,代表使用APIC作为中断控制器。并且据此设

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值