当前位置:  技术问答>linux和unix

在ARM开发平台下linux是怎么响应中断?急!

    来源: 互联网  发布时间:2016-04-29

    本文导语:  在ARM开发平台下linux是怎么响应中断? 大概都用到那些函数!很急!! | up~~~~~~~~~5楼+13楼。 | 给你一个例子,中断号要先确定好adc->irq, 请求中断: if (request_irq(adc->irq, adc_interr...

在ARM开发平台下linux是怎么响应中断?
大概都用到那些函数!很急!!

|
up~~~~~~~~~5楼+13楼。

|
给你一个例子,中断号要先确定好adc->irq,
请求中断:
if (request_irq(adc->irq, adc_interrupt, IRQF_SHARED, DRV_NAME, adc)){
printk(KERN_ERR"%s: request irq failedn", __FILE__);
goto adc_del_channel;
}
中断函数:
static irqreturn_t adc_interrupt(int irq, void *dev_id)
{
struct adc *adc = dev_id;
struct adc_channel *channel;


unsigned int status;

status = adc_readl(adc, AT91_ADC_SR) & adc_readl(adc, AT91_ADC_IMR);
while (status) {
printk(KERN_DEBUG "at91_adc: interrupt status reg 0x%08xn",
       status);

if (status & AT91_ADC_EOC0){
channel = adc->channel[0];
buf_in(channel, adc_readl(adc, AT91_ADC_CDR0));
// adc_sigio(channel);
}
if (status & AT91_ADC_EOC1){
channel = adc->channel[1];
buf_in(channel, adc_readl(adc, AT91_ADC_CDR1));
// adc_sigio(channel);
}
if (status & AT91_ADC_EOC2){
channel = adc->channel[2];
buf_in(channel, adc_readl(adc, AT91_ADC_CDR2));
// adc_sigio(channel);
}
if (status & AT91_ADC_EOC3) {
channel = adc->channel[3];
buf_in(channel, adc_readl(adc, AT91_ADC_CDR3));
// adc_sigio(channel);
}
if (status & AT91_ADC_DRDY)
adc_readl(adc, AT91_ADC_LCDR);

status = adc_readl(adc, AT91_ADC_SR) & adc_readl(adc, AT91_ADC_IMR);
}
return IRQ_HANDLED;
}

|
简单来说就这样啦:
中断源,比如外设,引脚会连接到中断控制器的引脚,这个在系统设计的时候分配好的,哪个脚对应哪个外设,中断号也是在这边分配好的,中断号对应着中断函数,具体linux内核里面的各个体系结构里面。发生中断的时候,中断控制器会把信息传给cpu,然后cpu找到中断控制函数的地址并开始运行。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • arm-elf-gcc 和 arm-linux-gcc有什么区别?arm-elf-gcc里的elf代表什么?
  • 关于买ARM9或ARM11的开发板的问题~~~
  • arm-unknown-linux-gnu-gcc與arm-linux 的compiler有不同嗎
  • make ARCH=arm CROSS_COMPILE=arm-linu-错误
  • 请问哪有 arm-linux-nm, arm-linux-addr2line等等这些工具的使用说明~~~
  • 使用eclipse 加入arm-elf-gcc 或arm-linux-gcc 编译器为什么不好使
  • 现在是ARM9还是ARM11比较流行啊?我想买开发板什么牌子的比较好啊,我是大学生。
  • ARM ping不通虚拟机,虚拟机可以ping通ARM
  • 疑惑softfloat的问题,并求arm-linux-gcc和arm-linux-softfloat-gcc4.1.1
  • 新手请教 移植2.6内核到arm9,芯片:arm926ejs,Flash: NOR
  • 请教:make ARCH=arm CROSS_COMPILE=arm-linu- menuconfig出错
  • 关于ARM内核编译 iis7站长之家
  • 关于arm 2440 选择arm-linux-gcc编译器版本的问题
  • 字节对齐 ARM VS Not ARM,经验人士请指点!!
  • ARM开发怎么实现域名解析呢,ARM板能ping通IP,不能ping通域名?
  • 关于ARM的几个基本概念
  • arm linux 2.6.29 下载初级问题,大家指教
  • 关于ARM内核编译
  • arm-elf-gcc问题
  • ARM linux学习的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3