中断控制器类型:
interrupts 属性的第一个参数指定了中断控制器的类型。常见的类型包括 GIC (Generic
Interrupt Controller)、IRQ (Basic Interrupt Handling) 等。例如,在给定的代码片段中,GIC_SPI 表
示中断控制器的类型为 GIC SPI 中断。
中断控制器是硬件系统中管理中断请求(IRQ)的核心组件,其类型决定了中断的分配、优先级和触发方式。以下是关键中断控制器类型的解析及使用场景:
1. GIC (Generic Interrupt Controller)
- 定义:ARM架构中广泛使用的中断控制器,支持多核处理器和复杂中断管理。
- 子类型:
	- GIC_SPI (Shared Peripheral Interrupt)
		- 用途:外部设备共享的中断(如网卡、USB控制器)。
- 特点:全局唯一中断号,可路由到任意CPU核心。
- 示例:interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>
 表示使用GIC的SPI中断34,电平触发高电平有效。
 
- GIC_PPI (Private Peripheral Interrupt)
		- 用途:处理器内部私有中断(如定时器、软件中断)。
- 特点:每个CPU核心有独立的中断号,不可共享。
- 示例:interrupts = <GIC_PPI 15 IRQ_TYPE_EDGE_RISING>
 表示使用GIC的PPI中断15,边沿触发上升沿有效。
 
 
- GIC_SPI (Shared Peripheral Interrupt)
		
2. IRQ (Basic Interrupt Handling)
- 定义:传统中断控制器,常见于简单系统或兼容旧架构的场景。
- 典型实现:
	- 8259 PIC:早期x86系统使用的可编程中断控制器。
- OpenPIC:多核系统的扩展中断控制器。
 
- 特点:
	- 中断号直接对应硬件线路(如IRQ0对应定时器)。
- 配置简单,但缺乏优先级和动态分配功能。
 
- 示例:interrupts = <IRQ 10 IRQ_TYPE_EDGE_RISING>
 表示使用IRQ控制器(如8259)的中断10,边沿触发。
3. 其他中断控制器类型
- MSI (Message Signaled Interrupts)
	- 用途:PCIe设备通过内存写操作触发中断,避免共享IRQ线路。
- 示例:msi-parent = <&gic>;(与GIC结合使用)。
 
- APIC (Advanced Programmable Interrupt Controller)
	- 用途:x86架构的高级中断控制器,支持多核和高级特性(如中断亲和性)。
- 示例:interrupts = <APIC 15 IRQ_TYPE_LEVEL_LOW>。
 
设备树中的配置
在设备树(Device Tree)中,interrupts属性的第一个参数指定中断控制器类型,后续参数定义中断号和触发方式:
// 使用GIC_SPI中断34,电平触发高电平
ethernet@10000000 {
    interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
};
// 使用IRQ控制器中断10,边沿触发
uart@9000000 {
    interrupts = <IRQ 10 IRQ_TYPE_EDGE_RISING>;
};
选择中断类型的依据
- 架构兼容性:
	- ARM系统优先使用GIC(SPI/PPI)。
- x86系统使用APIC或8259。
 
- 中断共享需求:
	- 外部设备共享中断选GIC_SPI。
- 私有中断(如定时器)选GIC_PPI。
 
- 触发方式:
	- 电平触发(Level)适用于持续信号(如DMA完成)。
- 边沿触发(Edge)适用于脉冲信号(如按键按下)。
 
通过合理选择中断控制器类型和参数,可确保系统高效、稳定地处理硬件中断。
 
                   
                   
                   
                   
                             
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   4306
					4306
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            