0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术ESM335x外部中断输入应用介绍

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-04 10:37 次阅读

ESM335x嵌入式主板引出了2路外部中断输入,IRQ1和IRQ2。中断上升沿有效,分别与GPIO24和GPIO25复用管脚。Linux-4.1.6之前采用了异步IO的方式通过SIGIO通知应用程序有中断发生,我们在Linux-4.1.6 IRQ驱动中增加了对select函数的支持,select函数使用户在应用程序中可以更方便的获取中断状态。

Linux系统IRQ外部中断的应用

IRQ1和IRQ2对应的设备文件分别是:/dev/em335x_irq1和/dev/em335x-irq2.应用程序使用IRQ外部中断功能需要先打开相应的设备文件:

intirq_no = 1;

sprintf( device, "/dev/em335x_irq%d", irq_no );

irq_fd = open(device, O_RDWR, S_IRUSR | S_IWUSR);

if(irq_fd < 0)

{

printf("can not open /dev/em335x_irq1 device file!\n");

return-1;

}

之后设置使用异步IO或者使用select函数获取中断状态,异步IO方式可参考技术手册,不再建议用户使用。

select函数

由于外部中断输入的时间是不确定的,需要在循环中不停的调用select函数以检查设备文件的读状态,所以一般会创建一个线程来调用select函数,主程序继续执行其他的操作。线程函数如下:

intIRQSelectThreadFunc(void* lparam)

{

intfd = * (int*)lparam;

fd_set fdRead;

structtimeval aTime;

intret,exitflag=1; //exitflag在程序其他线程中改变

while(1)

{

FD_ZERO(&fdRead);

FD_SET(fd,&fdRead);

aTime.tv_sec = 2; //s

aTime.tv_usec = 0; //us

ret = select ( fd+1, &fdRead, NULL, NULL, &aTime );

if( ret<0 )

printf( "select, something wrong!\n " );

if( ret>0 )

{

if( FD_ISSET(fd, &fdRead) )

{

//用户可以在此加入中断发生后的处理操作

nIrqCounter++;

printf( "there is a IRQ!!!\n" );

}

}

if( exitflag==0 )

break;

//判断程序运行状态,跳出循环

}

pthread_exit( NULL );

return0;

}

创建线程:

pthread_attr_t attr;

pthread_t m_thread;

int res;

// 创建select线程

res = pthread_attr_init(&attr);

if( res!=0 )

{

printf("Create attribute failed\n" );

}

// 设置线程绑定属性

res = pthread_attr_setscope( &attr, PTHREAD_SCOPE_SYSTEM );

// 设置线程分离属性

res += pthread_attr_setdetachstate( &attr, PTHREAD_CREATE_DETACHED );

if( res!=0 )

{

printf( "Setting attribute failed\n" );

}

res = pthread_create( &m_thread, &attr, (void*(*) (void*))&IRQSelectThreadFunc, &irq_fd );

if( res!=0 )

{

return-1;

}

pthread_attr_destroy( &attr );

用户在应用程序中创建新的线程使用select函数查询中断设备文件的状态,如果有中断发生select函数将会返回大于0的数值,用户进一步判断是哪一个设备文件有中断发生,然后执行相应的中断处理操作。

异步IO和select函数的比较

异步IO和select函数的功能都是相同的,即通知用户有中断发生,从而执行用户在应用程序中设置的中断处理操作;两者由于在内核中使用的事件通知机制不同,在应用程序中的设置方法差别很大,执行的方式也不同(见程序),select函数采用阻塞的方式获取读状态,不占用CPU资源,可以提高程序运行效率。两者最大的差异在于当用户需要在一个应用程序中检查多个中断输入设备文件的状态时(同时使用IRQ1和IRQ2),只能使用select函数才能确定具体是哪个中断设备文件有中断发生,使用异步IO不能确定。因此我们建议用户在程序中使用select函数来管理IRQ外部中断输入。

如有疑问请随时与我们联系。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11373

    浏览量

    211290
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6092

    浏览量

    35836
收藏 人收藏

    评论

    相关推荐

    串口中断是内部中断还是外部中断,串口中断是怎么触发的

    串口中断通常被视为外部中断。虽然串口控制器(如USART、UART等)可能集成在微控制器或处理器的内部,但从中断的角度来看,串口中断是由处理
    的头像 发表于 01-29 15:03 473次阅读

    龙芯中科荣获2024年度信息技术应用创新工作委员会卓越贡献成员单位

    近日,中国电子工业标准化技术协会信息技术应用创新工作委员会(以下简称“信工委会”)在北京召开2024年度工作总结座谈会暨信“大比武”总结大会。中国工程院院士、信
    的头像 发表于 01-23 10:50 284次阅读

    芯盛智能荣获2024年信息技术应用创新工作委员会卓越贡献成员单位

    日前,中国电子工业标准化技术协会信息技术应用创新工作委员会(以下简称 “信工委会”)2024 年度总结座谈会于北京隆重举行。此次会议对在信工作中作出突出贡献的成员单位予以表彰。江苏
    的头像 发表于 01-20 09:56 281次阅读

    飞腾助力首届教育信息技术应用创新大赛圆满落幕

    近日,由中国教育技术协会主办,教育部教育管理信息中心教育信实验室、公安部第三研究所、中国电子工业标准化技术协会信工委会支持,北京航空航天
    的头像 发表于 12-24 09:57 275次阅读

    有方科技参编的信息技术团体标准发布

    近日,有方科技参编的《信息技术产品供应链成熟度 共性指标 第1部分:企业背景评价》《信息技术产品供应链成熟度 共性指标 第2部分:技术掌控评价》《信息技术产品供应链成熟度 共性指标 第
    的头像 发表于 12-23 10:44 357次阅读

    龙芯中科助力2024首届教育信息技术应用创新大赛成功举办

    近日,2024首届教育信息技术应用创新大赛在北京航空航天大学成功举办。本次大赛由中国教育技术协会主办,教育信实验室、公安部第三研究所、中国电子工业标准化技术协会信
    的头像 发表于 12-19 17:02 336次阅读

    AM335x和AMIC110 Sitara™处理器技术参考手册

    电子发烧友网站提供《AM335x和AMIC110 Sitara™处理器技术参考手册.pdf》资料免费下载
    发表于 11-14 15:07 5次下载
    AM<b class='flag-5'>335x</b>和AMIC110 Sitara™处理器<b class='flag-5'>技术</b>参考手册

    中科达荣获2024年软件和信息技术服务优秀企业

    及前百家企业”名单。中科达凭借非凡的技术实力与持续的创新能力,成功入选“2024年度软件和信息技术服务竞争力百强企业”以及“2024年软件和信息技术服务优秀企业”。
    的头像 发表于 10-30 11:44 622次阅读

    在TMS320C672x器件上配置外部中断

    电子发烧友网站提供《在TMS320C672x器件上配置外部中断.pdf》资料免费下载
    发表于 10-15 09:58 0次下载
    在TMS320C672<b class='flag-5'>x</b>器件上配置<b class='flag-5'>外部</b><b class='flag-5'>中断</b>

    AM335x功耗估算工具

    电子发烧友网站提供《AM335x功耗估算工具.pdf》资料免费下载
    发表于 10-12 11:46 0次下载
    AM<b class='flag-5'>335x</b>功耗估算工具

    AM335x硬件设计指南

    电子发烧友网站提供《AM335x硬件设计指南.pdf》资料免费下载
    发表于 09-19 11:05 1次下载
    AM<b class='flag-5'>335x</b>硬件设计指南

    AM335x原理图核对表

    电子发烧友网站提供《AM335x原理图核对表.pdf》资料免费下载
    发表于 09-19 11:03 0次下载
    AM<b class='flag-5'>335x</b>原理图核对表

    梯度科技入选2023年信息技术应用创新解决方案名单

    日前,工业和信息化部网络安全产业发展中心(工业和信息化部信息中心)在天津举办2024信息技术应用创新发展大会暨解决方案应用推广大会。会上正式公布了2023年
    的头像 发表于 09-09 16:29 536次阅读

    龙芯中科突破“卡脖子”难题,构建新型信息技术体系

    胡伟武强调,在Wintel和AA体系主导全球电子产业的环境下,中国需建立独立于X86和ARM的第三套信息技术体系和产业生态,解决关键技术被封锁的困境,加速形成新质生产力,从而创造新的竞争优势。
    的头像 发表于 05-20 16:12 703次阅读

    STM32中断分组及外部中断的配置过程分享

    。STM32F103 的中断控制器支持 19 个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F
    发表于 04-08 08:05