<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 頻譜儀多種內(nèi)核通信機(jī)制的方案設(shè)計(jì)

          頻譜儀多種內(nèi)核通信機(jī)制的方案設(shè)計(jì)

          作者: 時(shí)間:2012-04-12 來源:網(wǎng)絡(luò) 收藏
          troke-width: 0px">  Linux操作系統(tǒng)將所有的設(shè)備(而不僅是存儲(chǔ)器里的文件)都看成文件,以操作文件的方式訪問設(shè)備。應(yīng)用程序不能直接操作硬件,而是使用統(tǒng)一的接口函數(shù)調(diào)用硬件驅(qū)動(dòng)程序。在設(shè)計(jì)的驅(qū)動(dòng)程序中,首先要根據(jù)驅(qū)動(dòng)程序的功能完成file_operations結(jié)構(gòu)中的函數(shù)實(shí)現(xiàn),不需要的函數(shù)接口可以直接在file_operations結(jié)構(gòu)中初始化為NULL。而file_operations結(jié)構(gòu)變量會(huì)在驅(qū)動(dòng)程序初始化時(shí)注冊(cè)到系統(tǒng)內(nèi)部。當(dāng)操作系統(tǒng)對(duì)設(shè)備操作時(shí),就會(huì)調(diào)用驅(qū)動(dòng)程序注冊(cè)的file_operations結(jié)構(gòu)中相應(yīng)的函數(shù)指針。

            對(duì)于Linux驅(qū)動(dòng)的注冊(cè)有兩種方式:一種是直接編譯到內(nèi)核中,在系統(tǒng)啟動(dòng)時(shí)即對(duì)設(shè)備進(jìn)行注冊(cè);另一種是以模塊的方式注冊(cè)設(shè)備,需要在系統(tǒng)啟動(dòng)后用命令對(duì)設(shè)備進(jìn)行注冊(cè)。后一種方式在系統(tǒng)開發(fā)期使用比較方便,不用在每次修改驅(qū)動(dòng)程序后和內(nèi)核一起進(jìn)行編譯,只需要將模塊編譯成后綴為,ko的模塊文件,就可下載到開發(fā)板中直接使用。在本課題中,使用的是模塊注冊(cè)的方式,在項(xiàng)目開發(fā)期間可大大縮短開發(fā)時(shí)間。

            4 Linux設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn)

            對(duì)于編寫一個(gè)Linux設(shè)備的驅(qū)動(dòng)程序,大致的流程如下:

           ?、俨榭丛韴D、數(shù)據(jù)手冊(cè),了解設(shè)備的操作方法。

           ?、趯?shí)現(xiàn)驅(qū)動(dòng)程序的初始化,比如向內(nèi)核注冊(cè)這個(gè)驅(qū)動(dòng)程序,這樣應(yīng)用程序傳入文件名時(shí),內(nèi)核才能找到相應(yīng)的驅(qū)動(dòng)程序。

           ?、墼O(shè)計(jì)所要實(shí)現(xiàn)的操作,比如open、close、read、write等函數(shù)。

           ?、軐?shí)現(xiàn)中斷服務(wù)(不是必須的)。

           ?、菥幾g該驅(qū)動(dòng)程序到內(nèi)核中,或者用insmod命令加載。



          關(guān)鍵詞: 頻譜儀 內(nèi)核通信

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();