Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18121
  • 博文数量: 8
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-08 19:10
文章分类
文章存档

2013年(5)

2012年(3)

我的朋友

分类: LINUX

2013-02-26 19:18:02

原文地址:linux下 powerpc中断分析 作者:chembedded

中断请求函数

int request_irq(unsigned int irq, irq_handler_t handler, unsigned long irqflags, const  char *devname, void *dev_id)

irq:软件中断号使用软件中断号可以减少linux OS对硬件平台的依赖性,使之更具有灵活性和可配置性。

handler (ExternalInput): 外部中断处理例程

软件中断号Linux下的概念,为了支持多平台的关系,Linux不直接用硬件中断号索引中断描述符表(irq_desc。所以当外部中断发生时,在外部中断处理程序(ExternalInput中会通过读取PIC来获得本次中断的硬件中断号,获得硬件中断号后,会将其映射成对应的软件中断号来索引irq_desc数组,从而获得该软件中断号上的中断处理例程(外部中断处理例程

硬件中断当中断发生时,处理器从外部的PIC上读到的数值,也就是设备树dts文件中传过来的值。

 

三个表:

中断映射表:struct irq_map_entry irq_map[NR_IRQS] ≈ irq_map[virq]=hwirq

反向中断映射表:unsigned int *revmap ≈ int revmap[hwirq]=virq

中断描述符表:struct irq_desc *desc ≈ desc[virq]  

用它来描述中断源,作为连接硬件中断和驱动程序中request_irq函数,注册的中断处理例程之间的桥梁

 

两个过程:

硬中号映射软中号过程 (线性映射)

  外部中断响应处理的过程

 
Linux 中断初始化过程

级联中断

上面是多级中断级联的例子cpu是通过gpio与cpld相连,cpld下又挂了几个设备(网络,pci桥,串口....)

阅读(709) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~