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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于嵌入式操作系統(tǒng)的控制系統(tǒng)平臺(tái)設(shè)計(jì)

          基于嵌入式操作系統(tǒng)的控制系統(tǒng)平臺(tái)設(shè)計(jì)

          作者: 時(shí)間:2010-11-15 來(lái)源:網(wǎng)絡(luò) 收藏

            3.1.4基于RTAI-Linux的應(yīng)用程序開發(fā)

            在編寫基于RTAI-Linux的應(yīng)用程序時(shí),根據(jù)實(shí)時(shí)系統(tǒng)的具體要求,將應(yīng)用程序分為實(shí)時(shí)任務(wù)和非實(shí)時(shí)任務(wù)。實(shí)時(shí)任務(wù)是實(shí)時(shí)模塊,作為L(zhǎng)inux核心可加載模塊運(yùn)行在核心態(tài)。一般地,定義init_module()函數(shù),它在執(zhí)行insmod命令裝載模塊時(shí)被調(diào)用,在該函數(shù)中一般是作一些初試化工作,并且啟動(dòng)實(shí)時(shí)任務(wù)。同樣的,還需要定義cleanup_module()函數(shù),它在執(zhí)行rmmod卸載模塊時(shí)被調(diào)用,在該函數(shù)中一般是做一些資源釋放工作。實(shí)時(shí)任務(wù)的設(shè)計(jì)應(yīng)該盡可能簡(jiǎn)單,僅包含那些有強(qiáng)實(shí)時(shí)要求的處理模塊,如實(shí)時(shí)數(shù)據(jù)采集、外部設(shè)備控制等。

            非實(shí)時(shí)任務(wù)是普通的Linux進(jìn)程,它在用戶態(tài)運(yùn)行,運(yùn)行那些對(duì)實(shí)時(shí)要求不高的任務(wù),如數(shù)據(jù)處理、圖形顯示等。

            實(shí)時(shí)任務(wù)(RTAI核心態(tài))并不能直接調(diào)用系統(tǒng)調(diào)用,它必須通過(guò)特定的方法和非實(shí)時(shí)任務(wù)(Linux進(jìn)程)進(jìn)行通信。它們可以通過(guò)共享內(nèi)存和FIFO等方法通信。

            基于RTAI應(yīng)用程序的結(jié)構(gòu)圖如圖2所示。


            圖2 RTAI應(yīng)用程序結(jié)構(gòu)圖

            3.2實(shí)時(shí)數(shù)據(jù)庫(kù)管理與通信

            本系統(tǒng)的實(shí)時(shí)數(shù)據(jù)庫(kù)管理著全局。通過(guò)硬件驅(qū)動(dòng)程序,將數(shù)據(jù)采集,并放入到實(shí)時(shí)數(shù)據(jù)庫(kù)中,同時(shí),上層軟件從實(shí)時(shí)數(shù)據(jù)庫(kù)中獲得數(shù)據(jù)。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          關(guān)鍵詞: I/O數(shù)據(jù) 嵌入式

          評(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); })();