• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      信號(hào)量在LINUX系統(tǒng)I2C驅(qū)動(dòng)程序的應(yīng)用

      2017-05-02 13:43劉新
      中國(guó)新通信 2017年6期
      關(guān)鍵詞:驅(qū)動(dòng)程序

      劉新

      【摘要】 在LINUX中,設(shè)備驅(qū)動(dòng)程序與磁盤文件相同,都是經(jīng)過打開、讀寫數(shù)據(jù)、關(guān)閉等一系列過程,當(dāng)硬件有數(shù)據(jù)時(shí)直接讀取,無數(shù)據(jù)時(shí)等待,驅(qū)動(dòng)程序不斷查詢。在LINUX中有信號(hào)量機(jī)制,本文討論信號(hào)量在驅(qū)動(dòng)程序中的應(yīng)用。

      【關(guān)鍵詞】 嵌入式LINUX 信號(hào)量 驅(qū)動(dòng)程序 I2C

      一、引言

      筆者在開發(fā)嵌入式LINUX系統(tǒng)I2C驅(qū)動(dòng),通過實(shí)驗(yàn)將信號(hào)機(jī)制運(yùn)用到驅(qū)動(dòng)程序中,實(shí)現(xiàn)了硬件中斷請(qǐng)求的消息傳遞,從而提高軟件運(yùn)行效率。

      二、異步通知技術(shù)

      筆者查閱書籍,發(fā)現(xiàn)LINUX可以使用信號(hào)來處理事件,在設(shè)備驅(qū)動(dòng)中也有異步通知SIGIO信號(hào),當(dāng)新數(shù)據(jù)到達(dá)時(shí)發(fā)送SIGIO信號(hào)通知上層程序讀數(shù)據(jù)。異步通知只有一個(gè)SIGIO信號(hào),當(dāng)多個(gè)設(shè)備都發(fā)送該信號(hào),用戶進(jìn)程無法區(qū)分,必須用poll或select函數(shù)來確定數(shù)據(jù)來源。筆者研究發(fā)現(xiàn)信號(hào)機(jī)制經(jīng)過POSIX擴(kuò)展后,用sigaction()可以傳遞文件句柄,用戶進(jìn)程就可區(qū)分信號(hào)來源了。

      三、信號(hào)在I2C驅(qū)動(dòng)的應(yīng)用

      3.1 I2C驅(qū)動(dòng)信號(hào)接口

      用戶進(jìn)程使用fcntl執(zhí)行F_SETOWN,進(jìn)程ID號(hào)就保存在file->f_owner中,執(zhí)行F_SETFL在設(shè)備中置FASYNC標(biāo)志,設(shè)備有新數(shù)據(jù)時(shí)發(fā)送一個(gè)SIGIO信號(hào),該信號(hào)被存放在file->f_owner中。

      3.2信號(hào)的安裝

      使用sigaction()安裝信號(hào)函數(shù)。該函數(shù)有三個(gè)參數(shù),第一個(gè)為信號(hào)值,第二個(gè)是結(jié)構(gòu)sigaction指針,第三個(gè)未用。

      在結(jié)構(gòu)sigaction中sa_sigaction是信號(hào)函數(shù)。該信號(hào)函數(shù)有三個(gè)參數(shù),第一個(gè)為信號(hào)值,第二個(gè)是siginfo_t結(jié)構(gòu)指針,第三個(gè)未用。在siginfo_t結(jié)構(gòu)中,si_fd就是文件句柄。

      結(jié)構(gòu)sigaction的sa_flags中SA_SIGINFO標(biāo)志位被設(shè)定表示附帶的參數(shù)可以被傳遞到信號(hào)函數(shù)中。

      四、測(cè)試

      下面用兩個(gè)I2C設(shè)備fd、fd1來測(cè)試信號(hào)在驅(qū)動(dòng)程序的應(yīng)用。

      經(jīng)測(cè)試,I2C驅(qū)動(dòng)程序達(dá)到了實(shí)時(shí)中斷的要求,互不干擾。

      結(jié)語:筆者以I2C驅(qū)動(dòng)程序?yàn)槔?,拋磚引玉,推廣到其他驅(qū)動(dòng)程序的編寫上來,會(huì)使嵌入式LINUX代碼更短,方法更簡(jiǎn)單,效率更高。

      參 考 文 獻(xiàn)

      [1]LINU設(shè)備驅(qū)動(dòng)程序.第二版.魏永明,駱剛,姜君譯.北京:中國(guó)電力出版社.2002.11.

      [2]Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn).第一版.陳莉君譯.北京:機(jī)械工出版社.2006.5.

      [3]Linux程序設(shè)計(jì).第一版.楊曉云,王建橋,楊濤等譯.北京:機(jī)械工業(yè)出版社.2002.1.

      猜你喜歡
      驅(qū)動(dòng)程序
      用活兼容模式安裝不兼容的打印機(jī)驅(qū)動(dòng)程序
      驅(qū)動(dòng)升級(jí)管理維護(hù)一條龍
      避免Windows系統(tǒng)更新反復(fù)安裝顯示驅(qū)動(dòng)
      方便直觀改善Windows驅(qū)動(dòng)程序管理
      設(shè)備升級(jí)問題回退驅(qū)動(dòng)解決
      阻止Windows Update更新驅(qū)動(dòng)程序
      驅(qū)動(dòng)光盤丟了不用愁 打印一體機(jī)驅(qū)動(dòng)程序下載安裝實(shí)戰(zhàn)體驗(yàn)
      重裝系統(tǒng),驅(qū)動(dòng)程序的事別操心等
      基于DSP的PCI驅(qū)動(dòng)程序開發(fā)
      妙用鼠標(biāo)驅(qū)動(dòng)
      泰宁县| 科技| 威信县| 白玉县| 平南县| 新昌县| 承德县| 隆回县| 株洲市| 兰西县| 沙湾县| 工布江达县| 宁德市| 邵武市| 库尔勒市| 泸溪县| 彰化县| 广昌县| 永昌县| 肃宁县| 武陟县| 锦屏县| 西城区| 莱西市| 浦县| 香格里拉县| 阿拉善左旗| 来凤县| 扶风县| 汝州市| 张家界市| 邯郸市| 阳高县| 阜阳市| 封丘县| 南召县| 南溪县| 阿坝县| 嘉禾县| 胶南市| 天门市|