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
    +关注

    关注

    88

    文章

    11631

    浏览量

    218054
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6107

    浏览量

    36954
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    龙芯中科成功举办2025信息技术应用创新产教融合交流会

    11月30日,在教育部教育管理信息中心、山东省电化教育馆的支持和指导下,龙芯中科联合浪潮集团、济南幼儿师范高等专科学校(以下简称“济南幼高专”),成功举办信息技术应用创新产教融合交流会,并同步举行信息技术应用创新实践基地启用仪式
    的头像 发表于 12-08 14:53 389次阅读

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

    2025年11月13日-15日,由中国教育技术协会主办、浙江大学与中国教育技术协会网络安全专业委员会联合承办,中国电子工业标准化技术协会信息技术应用创新工作委员会、浙江高校信
    的头像 发表于 11-21 16:23 617次阅读

    宝马南京信息技术有限公司开业

    今日,宝马(南京)信息技术有限公司在南京正式“挂牌运行”。这家华晨宝马全资子公司由领悦数字信息技术有限公司南京分公司“迭代”而来,代表着一次里程碑式的“进化”。这次升级不仅加速了宝马在华数字化转型进程,更通过深化本土创新,为“未来智慧出行”的发展谱写了核心“代码”。
    的头像 发表于 10-29 15:17 434次阅读

    瑞萨RA系列MCU的外部引脚中断详解

    上一章节我们已经详细介绍了NVIC、ICU、ELC、NMI并对RA系列MCU的中断管理系统有个全局的了解,我们这一章节的内容是如何控制外部中断,也是内核里的NVIC的实例应用,这也是R
    的头像 发表于 09-23 09:38 1240次阅读
    瑞萨RA系列MCU的<b class='flag-5'>外部</b>引脚<b class='flag-5'>中断</b>详解

    佛瑞亚如何通过信息技术推动业务增长

    在数字化、信息化的浪潮下,信息技术已经不仅是后台工具,更成为驱动企业发展的关键力量。本期Women Inspiring Mobility,我们采访了佛瑞亚中国区信息技术总监马瑛,了解她和团队如何将
    的头像 发表于 07-29 14:00 739次阅读

    飞腾主板为信产业发展提高硬实力

    信息技术飞速发展的当下,信产业已成为我国实现科技自立自强、保障国家信息安全的关键领域。信,即信息技术应用创新,其核心目标是实现
    的头像 发表于 07-22 18:20 563次阅读

    DEKRA德凯成为沙特通信和信息技术设备技术法规认证机构

    近日,DEKRA德凯成功获得沙特标准、计量和质量组织(SASO)认可,正式成为沙特通信和信息技术设备技术法规(Technical Regulation for Communications
    的头像 发表于 07-15 14:27 744次阅读

    科普|信是什么?一文读懂“信息技术应用创新”战略

    什么是信?信,即“信息技术应用创新”,是国家推动IT系统自主可控、安全可控的重要战略工程。它不仅是技术层面的创新,更承载着保障国家网络安全、推动产业升级和实现数字主权的重任。简单来
    的头像 发表于 06-13 10:06 6489次阅读
    科普|信<b class='flag-5'>创</b>是什么?一文读懂“<b class='flag-5'>信息技术</b>应用创新”战略

    第六章 外部中断

    本章介绍W55MH32的IO口作为外部中断输入的使用。先阐述了NVIC(嵌套向量中断控制器) 的结构、寄存器、优先级及相关函数,再说明EX
    的头像 发表于 05-26 16:27 1015次阅读
    第六章 <b class='flag-5'>外部</b><b class='flag-5'>中断</b>

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

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

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

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

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

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

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

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

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

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

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

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