中断子系统
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
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-Ⅱ的第二版的第五次修订,用户可以通过这个程序获取到最新的内核代码,进行学习和二次开发。在深入研究μC/OS-Ⅱ时,理解并修改源代码是非常重要的一步,这能帮助开发者更好地掌握其实时调度、...
5. **中断处理**:系统支持高效的中断处理机制,可以在发生外部中断时快速响应,并确保中断处理完成后能恢复到正确的任务状态。 6. **任务间通信**:通过消息队列、信号量、互斥量等机制实现任务间的同步与通信。 7....
《嵌入式实时操作系统μC/OS-II(第二版)光盘》是针对嵌入式系统开发者的重要参考资料,尤其对于那些想要深入理解并应用实时操作系统(RTOS)的工程师来说,μC/OS-II是一个不可多得的学习平台。该光盘包含μC/OS-II...
4. **I/O子系统**:为设备驱动提供统一的接口,简化了设备驱动程序的开发。 ### 五、测试与评估 在项目实施过程中,我们进行了大量的测试,包括单元测试、集成测试和系统测试,以确保各项功能的正确性和稳定性。...
嵌入式操作系统UC/OS-II是专为微处理器和微控制器设计的一款实时操作系统(RTOS),由Jean J. Labrosse创建。这款操作系统以其小巧、高效、可靠而被广泛应用于各种嵌入式系统中,如工业控制、航空电子设备、医疗器械...
### 第3章 μCOS-II的中断和时钟 #### 3.1 μCOS-II的中断 **中断概述** 中断是指在任务运行过程中,由于内部或外部的异步事件触发,导致当前任务暂停,系统转而去处理这些事件的过程。在μCOS-II实时操作系统中...
5. **SYSTEM**:可能包含系统级别的配置和初始化代码,如时钟设置、中断管理等。 6. **Libraries**:第三方库文件,可能包含了除emWin之外的其他功能库。 7. **RAW-OS**:上述提到的实时操作系统源码或相关配置。 ...
UC/OS,全称MicroC/OS-II,是一款广泛应用的实时操作系统(RTOS),由Jean J. Labrosse在1992年开发。UC/OS-Ⅱ是其第二代产品,具有高度可移植性、可配置性和高效的任务调度机制。在2.71版本中,该系统已经经过了多...
《嵌入式实时操作系统uc/os-ii 原理及应用》是由北京航空航天大学出版社出版,任哲编著的一本专业书籍,主要针对嵌入式系统开发者和爱好者,详细介绍了uc/os-ii这一广泛使用的实时操作系统的核心原理和实际应用。...
3. **中断处理**:UC/OS iii 支持快速中断响应,当发生中断时,内核能够迅速保存当前任务的状态并转至中断服务程序执行。 4. **资源同步**:通过信号量、互斥锁等机制实现资源的同步访问,确保数据的一致性和完整性...
7. **系统启动与运行**:最后,通过主函数启动操作系统并启动第一个任务,系统进入多任务运行模式。 在实验中,文件"uC_OS操作系统实验"可能包含了移植过程中的源码、配置文件和实验指导,可以帮助理解每个步骤的...
标题中的"OS_CPU_A.rar_51 OS"表明这是一个与51单片机相关的操作系统内核移植项目,其中"OS"可能指的是操作系统,而"CPU_A"可能指的是针对51系列单片机特定型号的CPU优化。这个RAR压缩包包含了一个名为"OS_CPU_A.ASM...
1. Bootloader:Bootloader是系统启动的第一步,它的主要任务是初始化必要的硬件,如内存、时钟等,并加载OS内核到内存中。在Aurix系统中,Bootloader可能由厂商预置,也可能需要开发者自行编写。Bootloader的编写...
总结来说,"uC_OS-II v2.rar"提供的内容是关于嵌入式实时操作系统的重要资源,对于理解和应用这个系统具有极高的价值。通过学习和实践,开发者可以掌握如何利用uC_OS-II v2来构建高效、可靠的嵌入式解决方案,进一步...
【电子-STemWinM3RAWOS.zip】是一个与嵌入式系统相关的压缩包,主要包含了一个基于STM32微控制器的、搭载了emWin图形界面的操作系统解决方案。emWin是Segger公司推出的一款广泛应用于嵌入式系统的GUI库,特别适合...
在本文中,我们将深入探讨如何使用神舟STM32开发板与 uc/OS-III(以下简称uc/OS)操作系统相结合,构建高效的嵌入式系统。uc/OS 是一个实时操作系统 (RTOS),它专为微控制器设计,具有轻量级、高效和可移植性的特点...
4. **I/O管理**:包括I/O设备分类、中断处理、DMA(直接存储器访问)、缓冲技术以及I/O子系统的层次结构。 5. **设备驱动程序**:讲解设备驱动程序的作用,如何与硬件交互,以及如何设计和实现简单的驱动程序。 6....