中断响应模块目前使用了8259A PIC芯片进行中断处理。使用两块8259A芯片级联,并采用AEOI、FNM全嵌套、无缓冲模式进行处理。

端口:

主芯片的IO端口号为0x20、0x21, 从芯片的IO端口号为0xa0、0xa1.

级联结构:

中断引脚与外部设备对照表

8259APIN中断请求源
主芯片IR0timer时钟
 IR1键盘
 IR2级联从8259A芯片
 IR3串口2
 IR4串口1
 IR5并口2
 IR6软驱
 IR7并口1
从芯片IR0CMOS RTC实时时钟
 IR1重定向到主芯片的IR2引脚
 IR2保留
 IR3保留
 IR4PS/2鼠标
 IR5协处理器
 IR6SATA主硬盘
 IR7SATA从硬盘

初始化中断处理模块

  1. 定义了保存寄存器的宏定义
  2. 使用Build_IRQ宏,创建每个中断号的中断入口函数。
  3. 初始化中断门(使用ist=2)
  4. 设置主、从芯片的ICW1-4以及OCW1.

中断处理流程

  1. 在中断入口处,保存寄存器
  2. 将返回地址压入堆栈
  3. 跳转到do_IRQ()函数
  4. 发送EOI到PIC,结束中断。

返回,恢复寄存器

转载请注明来源:https://longjin666.cn/?p=1338

欢迎关注我的公众号“灯珑”,让我们一起了解更多的事物~

你也可能喜欢

发表评论