`
lobin
  • 浏览: 426000 次
  • 性别: 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,

 

 

分享到:
评论

相关推荐

    嵌入式实时操作系统μC/OS-Ⅱ(第2版)光盘资料

    这个版本可能是μC/OS-Ⅱ的第二版的第五次修订,用户可以通过这个程序获取到最新的内核代码,进行学习和二次开发。在深入研究μC/OS-Ⅱ时,理解并修改源代码是非常重要的一步,这能帮助开发者更好地掌握其实时调度、...

    嵌入式实时操作系统 UC/OS-II 第二版 邵贝贝

    5. **中断处理**:系统支持高效的中断处理机制,可以在发生外部中断时快速响应,并确保中断处理完成后能恢复到正确的任务状态。 6. **任务间通信**:通过消息队列、信号量、互斥量等机制实现任务间的同步与通信。 7....

    嵌入式实时操作系统μC/OS-II(第二版)光盘

    《嵌入式实时操作系统μC/OS-II(第二版)光盘》是针对嵌入式系统开发者的重要参考资料,尤其对于那些想要深入理解并应用实时操作系统(RTOS)的工程师来说,μC/OS-II是一个不可多得的学习平台。该光盘包含μC/OS-II...

    GEEK OS课程设计报告

    4. **I/O子系统**:为设备驱动提供统一的接口,简化了设备驱动程序的开发。 ### 五、测试与评估 在项目实施过程中,我们进行了大量的测试,包括单元测试、集成测试和系统测试,以确保各项功能的正确性和稳定性。...

    嵌入式操作系统 uc/os-ii 任哲 例题源码

    嵌入式操作系统UC/OS-II是专为微处理器和微控制器设计的一款实时操作系统(RTOS),由Jean J. Labrosse创建。这款操作系统以其小巧、高效、可靠而被广泛应用于各种嵌入式系统中,如工业控制、航空电子设备、医疗器械...

    第3章 μCOS-II的中断和时钟

    ### 第3章 μCOS-II的中断和时钟 #### 3.1 μCOS-II的中断 **中断概述** 中断是指在任务运行过程中,由于内部或外部的异步事件触发,导致当前任务暂停,系统转而去处理这些事件的过程。在μCOS-II实时操作系统中...

    电子-STemWin522M4RAWOS.zip

    5. **SYSTEM**:可能包含系统级别的配置和初始化代码,如时钟设置、中断管理等。 6. **Libraries**:第三方库文件,可能包含了除emWin之外的其他功能库。 7. **RAW-OS**:上述提到的实时操作系统源码或相关配置。 ...

    uc/os2.71源代码

    UC/OS,全称MicroC/OS-II,是一款广泛应用的实时操作系统(RTOS),由Jean J. Labrosse在1992年开发。UC/OS-Ⅱ是其第二代产品,具有高度可移植性、可配置性和高效的任务调度机制。在2.71版本中,该系统已经经过了多...

    嵌入式实时操作系统uc/os-ii 原来及应用

    《嵌入式实时操作系统uc/os-ii 原理及应用》是由北京航空航天大学出版社出版,任哲编著的一本专业书籍,主要针对嵌入式系统开发者和爱好者,详细介绍了uc/os-ii这一广泛使用的实时操作系统的核心原理和实际应用。...

    UC/OS iii资料

    3. **中断处理**:UC/OS iii 支持快速中断响应,当发生中断时,内核能够迅速保存当前任务的状态并转至中断服务程序执行。 4. **资源同步**:通过信号量、互斥锁等机制实现资源的同步访问,确保数据的一致性和完整性...

    基于stm32的uC_OS操作系统实验

    7. **系统启动与运行**:最后,通过主函数启动操作系统并启动第一个任务,系统进入多任务运行模式。 在实验中,文件"uC_OS操作系统实验"可能包含了移植过程中的源码、配置文件和实验指导,可以帮助理解每个步骤的...

    OS_CPU_A.rar_51 OS

    标题中的"OS_CPU_A.rar_51 OS"表明这是一个与51单片机相关的操作系统内核移植项目,其中"OS"可能指的是操作系统,而"CPU_A"可能指的是针对51系列单片机特定型号的CPU优化。这个RAR压缩包包含了一个名为"OS_CPU_A.ASM...

    BaseFramework_TC27D_OS_OIL_Demo1.rar

    1. Bootloader:Bootloader是系统启动的第一步,它的主要任务是初始化必要的硬件,如内存、时钟等,并加载OS内核到内存中。在Aurix系统中,Bootloader可能由厂商预置,也可能需要开发者自行编写。Bootloader的编写...

    uC_OS-II v2.rar

    总结来说,"uC_OS-II v2.rar"提供的内容是关于嵌入式实时操作系统的重要资源,对于理解和应用这个系统具有极高的价值。通过学习和实践,开发者可以掌握如何利用uC_OS-II v2来构建高效、可靠的嵌入式解决方案,进一步...

    电子-STemWinM3RAWOS.zip

    【电子-STemWinM3RAWOS.zip】是一个与嵌入式系统相关的压缩包,主要包含了一个基于STM32微控制器的、搭载了emWin图形界面的操作系统解决方案。emWin是Segger公司推出的一款广泛应用于嵌入式系统的GUI库,特别适合...

    神舟STM32开发板 uc/os3模板

    在本文中,我们将深入探讨如何使用神舟STM32开发板与 uc/OS-III(以下简称uc/OS)操作系统相结合,构建高效的嵌入式系统。uc/OS 是一个实时操作系统 (RTOS),它专为微控制器设计,具有轻量级、高效和可移植性的特点...

    os211:操作系统2021-1

    4. **I/O管理**:包括I/O设备分类、中断处理、DMA(直接存储器访问)、缓冲技术以及I/O子系统的层次结构。 5. **设备驱动程序**:讲解设备驱动程序的作用,如何与硬件交互,以及如何设计和实现简单的驱动程序。 6....

Global site tag (gtag.js) - Google Analytics