阅读:1583回复:2
PC中断原理(吐血推荐)
PC中断原理(吐血推荐)
[帝国老手 吐血推荐:好象是一个叫Yu Hwang的大做,题目是我加的,文章我略微 整理了一下。看罢文章真佩服作者的毅力,“厉害”] 现在主题是什么呢? 我就写一些电脑内部中断用法及讲一些 8259 IC 是如何动作及如 何RESET 并说明为何 RESET 会造成 S-ICE OR GAMEBUTER AND GAMETOOLS等软体无法执行 请用心看喔!不然你会渐渐看不懂我的意思了..劝您最好用列表机印出来喔! 图(一) ┌━━━━┬━━━━━━━━┬━━━━━━━━━━━━━━━━━━━━━━━┐ ┃位 址 ┃中 断 编 号 ┃ 中 断 名 称 ┃ ├━━━━┼━━━━━━━━┼━━━━━━━━━━━━━━━━━━━━━━━┤ ┃ 0-3 ┃ INT 0 ┃ 除零中断 ┃ ┃ 4-7 ┃ 1 ┃ 单步中断 ┃ ┃ 8-B ┃ 2 ┃ 不可罩盖中断 ┃ ┃ C-F ┃ 3 ┃ 断点中断 ┃ ┃ 10-13 ┃ 4 ┃ 溢位中断 ┃ ┃ 14-17 ┃ 5 ┃ 萤幕列印中断 ┃ ┃ 18-1B ┃ 6 ┃ 保留 ┃ ┃ 1C-1F ┃ 7 ┃ 保留 ┃ ┃ 20-23 ┃ 8 ┃ 计时中断 (8259 #1 IRQ 0) ┃ ┃ 24-27 ┃ 9 ┃ 键盘介面中断 (8259 #1 IRQ 1) ┃ ┃ 28-2B ┃ A ┃ 保留 (8259 #1 IRQ 2) ┃ ┃ 2C-2F ┃ B ┃ 通讯 1 介面中断 (8259 #1 IRQ 3) ┃ ┃ 30-33 ┃ C ┃ 通讯 2 介面中断 (8259 #1 IRQ 4) ┃ ┃ 34-37 ┃ D ┃ 列表机介面 2 中断 (8259 #1 IRQ 5) ┃ ┃ 38-3B ┃ E ┃ 磁碟机介面中断 (8259 #1 IRQ 6) ┃ ┃ 3C-3F ┃ F ┃ 列表机介面 1 中断 (8259 #1 IRQ 7) ┃ ┃ 40-43 ┃ 10 ┃ 影像中断 ┃ ┃ 44-47 ┃ 11 ┃ 设备检查中断 ┃ ┃ 48-4B ┃ 12 ┃ 记忆体大小中断 ┃ ┃ 4C-4F ┃ 13 ┃ 磁碟 I/O 中断 ┃ ┃ 50-53 ┃ 14 ┃ 通讯 I/O 中断 ┃ ┃ 54-57 ┃ 15 ┃ 卡带 I/O 中断 ┃ ┃ 58-5B ┃ 16 ┃ 键盘 I/O 中断 ┃ ┃ 5C-5F ┃ 17 ┃ 列表机 I/O 中断 ┃ ┃ 60-63 ┃ 18 ┃ Basci 进入中断 ┃ ┃ 64-67 ┃ 19 ┃ 启动程式中断 (Boot strap) ┃ ┃ 68-6B ┃ 1A ┃ 计时中断 ┃ ┃ 6C-6F ┃ 1B ┃ 键盘 Break 中断 ┃ ┃ 70-73 ┃ 1C ┃ 计时器滴声中断 ┃ ┃ 74-77 ┃ 1D ┃ 影像参数中断 ┃ ┃ 78-7B ┃ 1E ┃ 磁片参数中断 ┃ ┃ 7C-7F ┃ 1F ┃ 影像图形字元中断 ┃ ┃ 80-83 ┃ 20 ┃ DOS 程式结束中断 ┃ ┃ 84-87 ┃ 21 ┃ DOS 功能呼叫中断 ┃ ┃ 88-8B ┃ 22 ┃ DOS 结束位址中断 ┃ ┃ 8C-8F ┃ 23 ┃ DOS CTRL+BREAK 出口位址中断 ┃ ┃ 90-93 ┃ 24 ┃ DOS 严重错误出口位址中断 ┃ ┃ 94-97 ┃ 25 ┃ DOS 绝对磁碟读取 ┃ ┃ 98-9B ┃ 26 ┃ DOS 绝对磁碟写入 ┃ ┃ 9C-9F ┃ 27 ┃ DOS 程式结束,但保留在记忆体中断 ┃ ┃ AO-FF ┃ 28-3F ┃ DOS 保留 ┃ ┃100-17F ┃ 40-5F ┃ 保留 ┃ ┃180-19F ┃ 60-67 ┃ 供使用者程式之中断 ┃ ┃1A0-1BF ┃ 68-6F ┃ 不用 ┃ ┃1C0-1C3 ┃ 70 ┃ 即时时脉中断 (8259 #2 IRQ 8) ┃ ┃1C4-1C7 ┃ 71 ┃ 保留未用 (8259 #2 IRQ 9) ┃ ┃1C8-1CB ┃ 72 ┃ 保留未用 (8259 #2 IRQ10) ┃ ┃1CC-1CF ┃ 73 ┃ 保留未用 (8259 #2 IRQ11) ┃ ┃1D0-1D3 ┃ 74 ┃ 保留未用 (8259 #2 IRQ12) ┃ ┃1D4-1D7 ┃ 75 ┃ 80287 错误处理中断 (8259 #2 IRQ13) ┃ ┃1D8-1DB ┃ 76 ┃ 硬式磁碟机控制器 (8259 #2 IRQ14) ┃ ┃1DC-1DF ┃ 77 ┃ 保留未用 (8259 #2 IRQ15) ┃ ┃1E0-1FF ┃ 78-7F ┃ 不用 ┃ ┃200-217 ┃ 80-85 ┃ Basic 保留 ┃ ┃218-3C3 ┃ 86-F0 ┃ 执行 Basic 时 , 供 Basic 解译器使用 ┃ ┃3C4-3FF ┃ F1-FF ┃ 不用 ┃ └━━━━┴━━━━━━━━┴━━━━━━━━━━━━━━━━━━━━━━━┘ 以上是 PC /AT 中断向量表的功能表 再来就是讲 8259 IC 的一些动作方式及设定方法 图(二) ┌━━━━━┐ ┌━━━━━┐ /CS ┃1 └━┘ 28┃VCC /WA ┃2 27┃A0 /RD ┃3 ⒏⒉⒌⒐ A 26┃/INTA ┌ D7 ┃4 25┃IR7 连接到┃ D6 ┃5 24┃IR6 ┃ D5 ┃6 主 I C 23┃IR5 CPU┘ D4 ┃7 22┃IR4 ┐ D3 ┃8 21┃IR3 中 ┃ D2 ┃9 各接脚图说明 20┃IR2 ┃ D1 ┃10 19┃IR1 └ D0 ┃11 18┃IR0 CAS0┃12 17┃INT CAS1┃13 16┃/SP / /EN GND┃14 15┃CAS2 └━━━━━━━━━━━━━┘ VCC 电源 /CS 晶片选取 GND 接地 当此脚信号为『低电位』时,表示 8259被致能;反之,则是禁能 /RD 读取 当此脚为『低电位』时,CPU会要求 8259A 送出 IRR (中断要求到暂存器) ISR (中断服务暂存器),及 IMR (中断罩盖暂存器) 其中之一到 D0-D7上。 /WR 写入 当此脚为『低电位』时,CPU要送控制字组 ( control word) 给 8259A。 D0~D7 资料线 为跟 CPU 连接线 A0 存取线 此信号与/R0,/WR,/CS合起来决定 CPU 要对那一个暂存器(IMR,IRR,ISR...)做读写 动作 INT 中断 此信号是用来通知CPU有周边设备要求中断服务,此线接到 80x86 的/INTA 接脚上 /INTA 中断认知 为CPU认可一个中断请求的认知讯号,此信号须接到 80x86 /INTA 输出线上 IR0~IR7 中断请求 0~7 这八条讯号线是用来连接外部周边设备作为它们的中断要求信号线。 /SP / /EN 主IC规划 及 缓冲致能 此脚具二种功能 一是:若为缓冲型态时,此接脚是用来做为缓冲器的收发 二是:若不是缓冲型态,则是用来指定 8259 IC为主 (SP=1) 或仆 (SP=0) CAS0~CAS2 串接线 这三条是用来接多颗的 8259 IC,最多可以串接 5个喔! 每颗8259 IC可以处 理八个中断请求,所以共可以使用 64 个中断请求。 在PC AT中有 16个中断 请求。 如附图(三) 图(三) 8259 中断控制器方块图 ┌━┐ ┃ ┃ ┌━━━━━━━━┐ ┃内┃ ┌━━━━━━━━━━━━━━━━━┐ D7-D0 <-->┃资料汇流排缓冲器┃┌┤ ├━┤ 控 制 逻 辑 单 元 ┃ └━━━━━━━━┘┃┃ ┃ └━━━━━━━━━━━━━━━━━┘ ┌━━━━━━━━┐┃┃部┃ ┃ ┃ ┃ /RD --->┤读/写 逻辑电路 ┃┃┃ ┃ ┃ ┃ ┃ /WR --->┤ ├┤┃ └━━━━━━━━━━━━━━━━━━┐ A0 --->┤ ┃┃┃汇 ┃ └━━━┬━━━━┘┃┃ ┌━━━━━━━━━━━━━━━━━━┘ ┃ ┃┃ ┃ ┃ ┃ ┃ /CS --->━━━━┘ ┃┃ ┃ ┌━━━┐ ┌━━┐ ┌━━━┬ IR0 ┃┃流┃ ┃中暂 ┃ ┃优 ┃ ┃中暂 ┃ ... ┌━━━━━━━━┐┃┃ ┃ ┃断存 ┃<->┃先 ┃<->┃断存 ┃ ... CAS0 --->┤串联缓冲器 ┃┃┃ ┃ ┃处器 ┃ ┃调器┃ ┃要器 ┃ ... CAS1 --->┤ /比较器 ├┘┃排┃ ┃理 ISR┃ ┃解 ┃ ┃求 IRR┃ ... CAS2 --->┤ ┃ ┃ ┃ └━━━┘ └━━┘ └━━━┴ IR7 └━━━┬━━━━┘ ┃ ┃ ┃ ┃ ┃ /SP / /EN --->━━┘ ┃ ┃┌━━━━━━━━━━━━━━━━━┐ └━┘┃ 中 断 罩 盖 暂 存 器 (IMR) ┃ └━━━━━━━━━━━━━━━━━┘ 中断请求暂存器 ( Interrupt Request Register 简称 IRR) 中断罩盖暂存器 ( Interrupt Mask Register 简称 IMR) 中断处理暂存器 ( Interrupt Service Register 简称 ISR) ------------------------------------------------------------------------------- |
|
沙发#
发布于:2003-05-03 11:41
请问问题:windows下驱动程序的中断是不是也是向Linux下一样通过中断线来 通知的阿?我看看了看
好象是系统映射的中断向量来通知的!是这样吗?他和linux下有什么不同吗?现在我遇到 了一个怪问题!我做好了一个视频压缩卡的驱动程序在pc机上跑一点问题都没有,但是一 到pc104(型号是p5e)上跑有一个槽上的视频卡中断是乱的!即本来是槽2上硬件产生的中 断,但是系统却被告知是槽2产生的中断。而这个pc104如果装windows98,所有的槽上的卡 都能正常工作!为什么了?难道windowns和linux的中断处理机制差别很大吗?望那位高人 指点迷津! |
|
板凳#
发布于:2003-05-03 20:58
这不过是DOS时代的中断!
这种表格到处可以查 |
|