`
insertyou
  • 浏览: 868372 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

【我所认知的BIOS】->深入理解IRQ7

DOS 
阅读更多

【我所认知的BIOS】->深入理解IRQ7

by lightseed

12/13/2010

这篇文章的线索是因为偶然间发现自爱DOS下面,IRQ7对应的中断服务程序(ISR)只有一个Iret.那我不经会问,这是为什么呢?因为在BIOS下面IRQ7是有对应的ISR的。

这个问题归根结底是由于8259的中断产生机制造成。

简单回顾一下8259中断的产生过程。共分了6步:

1. 一个或者多个中断请求产生的时候,8259把对应的IRRinterrupt request register)置起来。

2. 8259评估这些中断请求,如果是可以的话,发送INT信号给CPU

3. CPU收到INT后,回发INTA#8259

4. 在接收从CPU发来的INTA#的过程中优先级最高的IRR会被填入到ISR中去。同时IRR的对应位被8259清掉。(不过这这个INTA#的过程汇总,8259并不会把数据放到DATA bus上去。)

5. CPU触发第二个INTA#,在这个过程中,8259把数据放到data bus上去,CPU同时从bus上读取数据。

6. 数据传输完成,CPU解析数据并进入到对应的interrupt service routing处理,最后发EOIend of interrupt)给82598259于是清掉ISR

整个中断过程结束。

根据8259 datasheet的说明,有这样一种可能性。在第③步发生了一种特殊情况,从第③到第④步的时候,并没有interrupt request了。(比如说中断请求太短),这样的话两片8259均会把中断7填到data bus上去。看上去就想是触发了IRQ 7了一样。

我想也正是这个原因,BIOSDOS都对IRQ 7对应的ISR做了特殊的处理。比如说,BIOS的里面的IRQ7对应的ISR什么动作都没做。DOSIRQ7对应的ISR被直接替换成了IRET.

不过上面都只是我对8259 datasheet的研究的时候发现的,也纯粹是理论上的理解。真实原因也许不是这样个原因。

以上整个过程在后续的ICH和最新的南桥spec沿用了同样的规则。

分享到:
评论

相关推荐

    STM32F407RFID-RC522门禁控制系统.zip

    stm32f407单片机RFID—RC522门禁控制系统,本程序适用于所有的stm32f407开发板,管脚连线如下:3.3->3.3,RST->PF4,GND->GND,NC(IRQ)->悬空,MISO->PF3,MISI->PF2,SCK->PF1,NSS(SDA)->PF0。打开串口助手把...

    虚拟网卡驱动源代码(原版)

    dev->irq = map->irq; /* request_irq() is delayed to open-time */ } /* ignore other fields */ return 0; } /* * Receive a packet: retrieve, encapsulate and pass over to upper levels */ void ...

    双极电机文件及驱动.zip

    NVIC->ISER[NVIC_InitStruct->NVIC_IRQChannel >> 0x05] = (uint32_t)0x01 (NVIC_InitStruct->NVIC_IRQChannel & (uint8_t)0x1F); } else { /* Disable the Selected IRQ Channels --------------------------...

    STM32F103RCT6使用SPI通讯NRF24L01无线模块

    库函数版本,运行后通过按键选择收发模式,通过串口通讯发送收发信息至电脑,波特率9600,本工程引脚对应MOSI->PA7 MISO->PA6 SCK->PA5 CE->PA4 CSN->PA3 IRQ->PA2,CE、CSN、IRQ引脚可自行在头文件更改。...

    调制解调器和传真板 — 如何检测并纠正I-O地址和IRQ冲突

    调制解调器和传真板 — 如何检测并纠正I-O地址和IRQ冲突

    C8T6核心板NRF.rar

    C8T6核心板的NRF代码,可接收可发送,接收到的结果会通过串口打印出来。 引脚设置是CE ->PA4、 SCK-> PA5、MISO-> PA6、MOSI-> PA7、 CS->PB12、IRQ-> PA1、

    STM32_NRF24L01+

    PA7 -> MOSI PC5 <- CE PB0 <- IRQ *********************************************/ 开发环境:MDK4.22+固体库V3.5+J-Link仿真器+自行设计开发板 主处理器:STM32FVET6 ,使用硬件SPI1,如果需要用到SPI2或SPI3,...

    Classic Alphas and Betas:PC 经典的 alpha 和 beta 版本-开源

    为了让 ALPHA 工作:在 DOSBox 中,您必须首先运行 SETUP.EXE 并更改这些设置:声音设置 -> SoundBlaster -> 16 位 -> 立体声 -> 32 -> 44 KHz -> 220h(默认) - > Sound Blaster 16 or AWE32 -> IRQ 7 -> Channel...

    c674x-irq-events.c

    这是c674x-irq-events.ko的源文件,对于想了解其中断详细实现的人可以仔细分析该文件。

    unix分析关于UNIX的一些浅析

    s3c2410_platform_i2c结构体原型如下,根据英文注释即可大致理解其意思 /** * struct s3c2410_platform_i2c - Platform data for s3c I2C. * @bus_num: The bus number to use (if possible). * @flags: Any ...

    c674x-irq-events.ko

    omapl138双核通信开发驱动组件,如果在insmod c67x-irq-events.ko发现没有这个组件的话,可以直接把这个组件放在指定目录下

    pt7c4307 驱动

    //printk("set_time Date(y/m/d):%d/%d/%d Time(h/m/s):%d/%d/%d\n",tm->tm_year,tm->tm_mon,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec); regs[REG_SC] = BIN2BCD(tm->tm_sec); regs[REG_MN] = BIN2BCD(tm...

    FTDI_nRF24L01:nRF24L01 配置工具

    对于开发,我正在使用这样的模块,任何其他模块也应该工作。 特征 接收数据包 发送数据包 保存和加载配置 可变引脚配置 如何使用 将您的 FTDI 模块/适配器与 nRF24l01 或 nRF24l01+ 连接 CE <-> DTR# SCK <-...

    set_irq_affinity

    通过把sudo service irqbalance stop; 然后执行该脚本 使用方法: /sbin/set_irq_affinity eth1 可以进行中断绑定指定的cpu,提高网卡收包效率 把下面“eth1” 修改成对应的网卡名称 irq=$(cat /proc/interrupts | ...

    gpio-irq-handler:GPIO IRQ 支持 AR9331 SoC 和 OpenWRT

    gpio-irq-handler GPIO IRQ 支持 AR9331 SoC 和 OpenWRT OpenWRT 内核模块为 GPIO 中断提供用户空间支持。 需要内核补丁 irq.patch 才能运行。 欲了解更多信息,请访问

    ti-keystone-irq.rar_keystone

    Keystone 2 IRQ controller IP.

    毕业设计(C语言),智能学习桌

    - IRQ----悬空 - MISO---PB14 - MOSI---PB15 - SCK----PB13 - SDA----PN12 震动传感器 - VCC---3.3V - D0-----PA3 - GND----GND MPU6050 - VCC---3.3V - SCL----PB6 - SDA----PB7 - GND---GND - 其余悬空

    Linux IRQ 内核代码详解

    Linux IRQ 内核代码详解-Linux IRQ 内核代码详解-Linux IRQ 内核代码详解

    嵌入式系统/ARM技术中的linux-2.6.26内核中ARM中断实现详解(3)

     中断处理模型如下图所示,  其中NR_IRQS表示最大的中断号,在include/asm/arch/irq.h中定义。  irq_desc[]是一个指向irq_desc_t结构的数组, irq_desc_t结构是各个设备中断服务例程的描述符。Irq_desc_t...

    IRQ外部中断模块

    IRQ外部中断模块

Global site tag (gtag.js) - Google Analytics