那曲檬骨新材料有限公司

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

    文章

    11345

    瀏覽量

    210391
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6086

    瀏覽量

    35614
收藏 人收藏

    評論

    相關推薦

    串口中斷是內部中斷還是外部中斷,串口中斷是怎么觸發的

    串口中斷通常被視為外部中斷。雖然串口控制器(如USART、UART等)可能集成在微控制器或處理器的內部,但從中斷的角度來看,串口中斷是由處理
    的頭像 發表于 01-29 15:03 ?118次閱讀

    龍芯中科榮獲2024年度信息技術應用創新工作委員會卓越貢獻成員單位

    近日,中國電子工業標準化技術協會信息技術應用創新工作委員會(以下簡稱“信工委會”)在北京召開2024年度工作總結座談會暨信“大比武”總結大會。中國工程院院士、信
    的頭像 發表于 01-23 10:50 ?165次閱讀

    芯盛智能榮獲2024年信息技術應用創新工作委員會卓越貢獻成員單位

    日前,中國電子工業標準化技術協會信息技術應用創新工作委員會(以下簡稱 “信工委會”)2024 年度總結座談會于北京隆重舉行。此次會議對在信工作中作出突出貢獻的成員單位予以表彰。江蘇
    的頭像 發表于 01-20 09:56 ?157次閱讀

    飛騰助力首屆教育信息技術應用創新大賽圓滿落幕

    近日,由中國教育技術協會主辦,教育部教育管理信息中心教育信實驗室、公安部第三研究所、中國電子工業標準化技術協會信工委會支持,北京航空航天
    的頭像 發表于 12-24 09:57 ?205次閱讀

    有方科技參編的信息技術團體標準發布

    近日,有方科技參編的《信息技術產品供應鏈成熟度 共性指標 第1部分:企業背景評價》《信息技術產品供應鏈成熟度 共性指標 第2部分:技術掌控評價》《信息技術產品供應鏈成熟度 共性指標 第
    的頭像 發表于 12-23 10:44 ?225次閱讀

    龍芯中科助力2024首屆教育信息技術應用創新大賽成功舉辦

    近日,2024首屆教育信息技術應用創新大賽在北京航空航天大學成功舉辦。本次大賽由中國教育技術協會主辦,教育信實驗室、公安部第三研究所、中國電子工業標準化技術協會信
    的頭像 發表于 12-19 17:02 ?282次閱讀

    AM335x和AMIC110 Sitara?處理器技術參考手冊

    電子發燒友網站提供《AM335x和AMIC110 Sitara?處理器技術參考手冊.pdf》資料免費下載
    發表于 11-14 15:07 ?1次下載
    AM<b class='flag-5'>335x</b>和AMIC110 Sitara?處理器<b class='flag-5'>技術</b>參考手冊

    中科達榮獲2024年軟件和信息技術服務優秀企業

    及前百家企業”名單。中科達憑借非凡的技術實力與持續的創新能力,成功入選“2024年度軟件和信息技術服務競爭力百強企業”以及“2024年軟件和信息技術服務優秀企業”。
    的頭像 發表于 10-30 11:44 ?557次閱讀

    在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 ?0次下載
    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 ?492次閱讀

    STM32中斷分組及外部中斷的配置過程分享

    。STM32F103 的中斷控制器支持 19 個外部中斷/事件請求。每個中斷設有狀態位,每個中斷/事件都有獨立的觸發和屏蔽設置。STM32F
    發表于 04-08 08:05

    龍芯中科三項信方案入圍工信部2023年信息技術應用創新應用示范案例名單

    近日,工業和信息化部通報了2023年信息技術應用創新解決方案征集遴選結果,本次共評選出典型解決方案173個、應用示范案例83個、單項創新案例64個。
    的頭像 發表于 03-07 16:45 ?1014次閱讀
    龍芯中科三項信<b class='flag-5'>創</b>方案入圍工信部2023年<b class='flag-5'>信息技術</b>應用創新應用示范案例名單
    天格数16土人格24火地格数19水| 百家乐官网代理每周返佣| 百家乐西园出售| 百家乐官网如何捕捉长龙| 涂山国际娱乐城| 威尼斯人娱乐城代理佣金| 游戏厅百家乐软件| 网络百家乐官网金海岸| 贵族国际娱乐城| 大发888游戏交易平台| 百家乐太阳城球讯网| 百家乐官网免费下| 百家乐官网长路投注法| 盐城棋牌游戏中心| 博彩百家乐字谜总汇二丹东| 百家乐赢的方法| 百家乐官网大天堂| 百家乐官网概率怎么算| 万豪国际| 大发888娱乐场下| 百家乐群号| 个体老板做生意的风水| 百家乐官网程序软件| 百家乐官网高人破解| 皇冠现金网导航| 全讯网365| 百家乐详情| 百家乐赌神| 24山安葬择日| 百家乐官网博弈之赢者理论坛| 江城| 姚记娱乐城安全| 威尼斯人娱乐场cqsscgw88| 百家乐稳赢投注| 做生意店铺风水好吗| 视频百家乐官网试玩| 百家乐官网扑克玩法| 大发888充值平台| 真人百家乐网络游戏信誉怎么样| 百家乐发牌的介绍| 免水百家乐官网的玩法技巧和规则 |