`
lobin
  • 浏览: 383416 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于os的一些整理:第五篇:中断子系统

阅读更多

中断子系统

 

IRQ 

IRQ即中断请求。这里指的是来自硬件的中断请求。

 

IRQ预设

 

IRQ0: 系统计时器

IRQ1: 键盘

IRQ2: 可设置中断控制卡

IRQ3: COM2(串行接口2)

IRQ4: COM1(串行接口1)

IRQ5: 未预先配置

IRQ6: 磁盘机

IRQ7: 并行接口

IRQ8: CMOS/时钟

IRQ9: 未预先配置

IRQ10: 未预先配置

IRQ11: 未预先配置

IRQ12: PS/2鼠标

IRQ13: 算术处理器(Arithmetic Processor)

IRQ14: Primary(主)IDE控制器

IRQ15: Secondary(从)IDE控制器

 

PIC

PIC即可编程中断控制器,主要有两个,即8259/8259A。

 

8259

寄存器

 

中断屏蔽寄存器

通过IMR中断屏蔽寄存器可以屏蔽或打开对应的中断,需要打开对应的中断请求,就将对应的位置0,需要屏蔽的话,就将对应的位置1。

写道
IMR
7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|0|0|
|/|/|/|/|/|/|/|/|
|1|1|1|1|1|1|1|1|
+-+-+-+-+-+-+-+-+
^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | |IRQ0,IRQ8
| | | | | | |IRQ1,IRQ9
| | | | | |IRQ2,IRQ10
| | | | |IRQ3,IRQ11
| | | |IRQ4,IRQ12
| | |IRQ5,IRQ13
| |IRQ6,IRQ14
|IRQ7,IRQ15

 

 

8259A

 

APIC

除了PIC,还有个APIC,即高级可编程中断控制器,它是PIC的改进。

 

初始化

初始化中断的时候,最好屏蔽所有硬件中断请求irq, 在需要的时候随时可以打开。屏蔽所有硬件中断请求irq,只需要向IMR中断屏蔽寄存器写入0xff。

 

void pic_init_32()
{
  byte icw1, icw2, icw3, icw4, ocw1;

  // write icw1
  icw1 = ICW1_IC4 + ICW1_INIT;
  outpb_32(IO_PORT_20, icw1);
  io_wait_32();
  outpb_32(IO_PORT_A0, icw1);
  io_wait_32();

  // write icw2
  icw2 = 0x20;
  outpb_32(IO_PORT_21, icw2);
  io_wait_32();
  icw2 = 0x28;
  outpb_32(IO_PORT_A1, icw2);
  io_wait_32();

  // write icw3
  icw3 = 0x4;
  outpb_32(IO_PORT_21, icw3);
  io_wait_32();
  icw3 = 0x2;
  outpb_32(IO_PORT_A1, icw3);
  io_wait_32();

  // write icw4
  //icw4 = 1;
  icw4 = 3;
  outpb_32(IO_PORT_21, icw4);
  io_wait_32();
  outpb_32(IO_PORT_A1, icw4);
  io_wait_32();

  // And then, 
  // Set IMR to enable/disable IRQs
  // 0xff would disable all IRQs, and 0x00 would enable all 
  // IRQs. to enable specifics IRQs:
  // 
  // 0xff & IRQ0 & IRQ1 & IRQ2 & IRQ3 & IRQ4 & IRQ5 & IRQ6 & IRQ7;
  // 
  // Default to disable all irqs.
  ocw1 = 0xff & IRQ6;
  pic_write_master_imr_32(ocw1);
  ocw1 = 0xff;
  pic_write_slave_imr_32(ocw1);
}

 

 

 

屏蔽中断

 

void pic_enable_master_irq(byte irq)
{
  byte imr = pic_read_master_imr_32();
  pic_write_master_imr_32(imr & irq);
}

  

 

pic_write_slave_imr_32(0x00);

 

 

pic_write_slave_imr_32(0xff);

 

pic_enable_master_irq(IRQ6);

 

pic_enable_master_irq(IRQ0 & IRQ1 & IRQ6);

 

 

打开中断

	sti

 

 

EOI

EOI即End of Interrupt,

 

 

分享到:
评论

相关推荐

    Windows 内核情景分析--采用开源代码ReactOS (上册) part01

    上册共分为10部分,这是第1部分 Windows内核情景分析(上册).part01.rar ...14.2 Windows子系统的服务进程Csrss 1408 14.3 服务管理进程Services 1424 14.4 服务进程Svchost 1449 跋 1464 参考文献... 1466

    Android驱动开发权威指南

    第5章Linux文件系统 5.1 Linux文件系统概述 5.1.1 Linux文件系统的目录结构 5.1.2设备驱动与Linux文件系统的关联 5.2 Linux设备文件系统 5.2.1 devfs设备文件系统 5.2.2 udev设备文件系统 5.2.3 sysfs文件系统与...

    自己动手写操作系统(含源代码).part2

    第三,实践类的操作系统书籍还是太少了,以至于你要想看看别人是怎么做的,除了读以《操作系统:设计与实现》为代表的极少数书籍之外,就是一头扎进源代码中,而结果有时相当令人气馁。我自己也气馁过,所以我在第二...

    自己动手写操作系统(含源代码).part1

    第三,实践类的操作系统书籍还是太少了,以至于你要想看看别人是怎么做的,除了读以《操作系统:设计与实现》为代表的极少数书籍之外,就是一头扎进源代码中,而结果有时相当令人气馁。我自己也气馁过,所以我在第二...

    《计算机操作系统》期末复习指导

    第五章文件管理 1、文件管理任务与功能 任务:把存储、检索、共享和保护文件的手段,提供给操作系统本身和用户,以达到方便用户和提高资源利用率的目的。 功能: ---分配与管理外存 ---提供合适...

    OS/400 CL程序设计文档

    第五章 在CL程序和过程中处理目标 5.1 在CL程序中访问目标 5.2 在CL过程中处理文件 第六章 先进的程序设计 6.1 使用QCAPCMD程序 6.2 使用QCMDEXC程序 6.3 使用QCMDCHK程序 6.4 在CL程序或过程中使用信息子文件 6.5 ...

    操作系统(内存管理)

    free:该函数获得指向由 malloc 分配的内存片段的指针,并将其释放,以便以后的程序或操作系统使用(实际上,一些 malloc 实现只能将内存归还给程序,而无法将内存归还给操作系统)。 物理内存和虚拟内存 要理解...

    计算机应用技术(实用手册)

    第五章 系统常用命令及格式转换 30 1.Msconfig 系统的关闭起动项命 30 2.Dxdiag系统信息查看命令 30 3.Gpedit.msc计算机管理命令 31 4.格式之间的转换,使用winavi进行转换 32 5.常用的快捷键,使用快捷可以...

    ARM 实验指导书第一册UCOS-II.doc

    这个实时内核包含了许多传统操作系统的特征,包括任务管理,任务间通信,同步与互相排斥,中断支持,内存管理等功能,此后一些公司也纷纷推出了自己的嵌入式操作系统。这些系统均具有嵌入式的典型特点:它们都采用占...

    uboott移植实验手册及技术文档

    arm920t: CPU的类型(CPU),其对应于 cpu/arm920t子目录。 fs2410: 开发板的型号(BOARD),对应于 board/fs2410目录。 NULL: 开发者/或经销商(vender),本例为空 s3c24x0: 片上系统(SOC) (5)编译 #make fs2410_...

    c语言编写单片机技巧

    虽然C语言是最普遍的一种高级语言,但不同的MCU厂家其C语言编译系统是有所差别的,特别是在一些特殊功能模块的操作上。如果对这些特性不了解,那调试起来就有的烦了,到头来可能还不如用汇编来的快。 5. 在教学中...

    cmd操作命令和linux命令大全收集

    CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) 命令大全 1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS...

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

    学ARM和学单片机一样简单2

    五、USB D12从设备(108分钟)(第五讲) 1、USB协议介绍 2、下位机代码简要分析 3、DRIVER STUDIO软件的安装 4、上位机驱动sys、inf文件生成概述 5、上位机应用程序的实现 (1)、工程的建立 (2)、代码...

    汇编语言程序教程(.chm格式)

    第5章 微机CPU的指令系统  5.1 汇编语言指令格式  1 指令格式  2 了解指令的几个方面  5.2 指令系统  1 数据传送指令  2 标志位操作指令  3 算术运算指令  4 逻辑运算指令  5 移位操作指令  6 位操作...

    家用产品、信息类产品国家标准.rar

    GB 4208-2008 外壳防护等级(IP代码).pdf GB 4343.2-2009 家用电器、电动工具和类似器具的电磁兼容要求 第2...YD1169.1-2001 800MHz CDMA数字蜂窝移动通信系统电磁兼容性要求和测量方法 第一部分 移动台及其辅助设备.pdf

    AS-400 CL编程汇总

    第五章 在CL程序和过程中处理目标 5.1 在CL程序中访问目标 5.2 在CL过程中处理文件 第六章 先进的程序设计 6.1 使用QCAPCMD程序 6.2 使用QCMDEXC程序 6.3 使用QCMDCHK程序 6.4 在CL程序或过程中使用信息子文件 6.5 ...

    华为编程开发规范与案例

    1、变量/指针在使用前就必须初始化 第5页 【案例1.1.1】 第5页 2、防止指针/数组操作越界 第5页 【案例1.2.1】 第5页 【案例1.2.2】 第6页 【案例1.2.3】 第7页 【案例1.2.4】 第8页 3、避免指针的非法引用 第9页 ...

    WinRAR_4.0.exe

    系统,固实标志和老版本标记)被显示。变量 'b' 强制 RAR 只输出单纯 的文件名,而没有其他任何的附加信息。 m[f] 移动到压缩文件中[只用于文件]。移动文件和目录会使压缩操作完成后它 们被删除。如果使用变量'...

Global site tag (gtag.js) - Google Analytics