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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Linux實(shí)時(shí)化解決方案Xenomai的原理及應(yīng)用

          Linux實(shí)時(shí)化解決方案Xenomai的原理及應(yīng)用

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


          在基于Adeos的系統(tǒng)中,分為多個(gè)域。每個(gè)域中獨(dú)立運(yùn)行一個(gè)操作系統(tǒng)(或者是實(shí)現(xiàn)一定功能的程序模塊),每個(gè)域可以有獨(dú)立的地址空間和類似于進(jìn)程、虛擬內(nèi)存等的軟件抽象層。在各個(gè)域下層有一個(gè)Adeos通過(guò)虛擬中斷等方法來(lái)調(diào)度上面的各個(gè)域。在基于Adeos的系統(tǒng)中,存在著A、B、C、D四種類型的交互,如圖1所示。

          A類交互是各個(gè)域直接操作硬件設(shè)備,包括訪問(wèn)內(nèi)存等;B類交互指當(dāng)Adeos接收到硬件中斷后,會(huì)根據(jù)中斷來(lái)對(duì)相應(yīng)的域進(jìn)行中斷服務(wù);C類交互指當(dāng)前域內(nèi)的操作系統(tǒng)主動(dòng)向Adeos請(qǐng)求某些服務(wù);D類交互是指Adeos接收硬件產(chǎn)生的中斷和異常,同時(shí)也可以直接控制硬件。

          2.2 用戶層實(shí)時(shí)的實(shí)現(xiàn)

          除了在內(nèi)核層利用Adeos實(shí)現(xiàn)了硬實(shí)時(shí)外,它在用戶空間也有很好的實(shí)時(shí)性。在S3C2410平臺(tái)上,為了實(shí)現(xiàn)用戶層的實(shí)時(shí),實(shí)現(xiàn)了一個(gè)硬件計(jì)數(shù)器--Decrementer.這個(gè)硬件計(jì)數(shù)器可以在用戶空問(wèn)里很好地模擬TSC(Time Stamp Counter,時(shí)間戳計(jì)數(shù)器)。

          同時(shí),Xenomai在Linux內(nèi)核中加入了一個(gè)全新的數(shù)據(jù)結(jié)構(gòu)__ipipe_tscinfo,可以通過(guò)此數(shù)據(jù)結(jié)構(gòu)變量存放用戶層需要的數(shù)據(jù)。該數(shù)據(jù)結(jié)構(gòu)組成如下:

          用戶層,應(yīng)用程序通過(guò)系統(tǒng)調(diào)用可以迅速得到struct_ipipe_tscinfo結(jié)構(gòu)體中的數(shù)據(jù)。而且為了避免受到緩存的影響,Xenomai將此結(jié)構(gòu)體變量存放在Linux的向量頁(yè)中。

          內(nèi)核通過(guò)函數(shù)_ipipe_mach_get_tscinfo來(lái)填充struct_ipipe_tscinfo結(jié)構(gòu)體變量中的各項(xiàng)內(nèi)容:

          其中,info一>typte說(shuō)明在S3C2410平臺(tái)上TSC是基于Decrementer硬件計(jì)數(shù)方式的;info一>u.dec.counter用來(lái)將Decrementer計(jì)數(shù)器的物理地址設(shè)定為0x51000038;info一>u.dec.mask掩碼用來(lái)注明使用Dec-rementet.計(jì)數(shù)器中的特定位;info一>u.dec.tsc指向存放64位TSC值的區(qū)域。

          在Xenomai用戶層的實(shí)時(shí)程序運(yùn)行時(shí),程序都會(huì)通過(guò)系統(tǒng)調(diào)用得到內(nèi)核填充好的struct_ipipe_tscinfo結(jié)構(gòu)體變量。具體實(shí)現(xiàn)可參考編譯用戶層實(shí)時(shí)程序時(shí)用到的,由Xenomai所提的頭文件/usr/xenomai/include/asm/syscall.h.

          2.3 Xenomai多API構(gòu)架

          除了提供Linux硬實(shí)時(shí),Xenomai的另一個(gè)目的是使基于Linux的能提供與傳統(tǒng)的工業(yè)級(jí)(包括VxWorks、pSOS+、VRTX或者uITRON)功能相同的API.這樣,可以讓這些操作系統(tǒng)下的應(yīng)用程序能夠很容易地移植到GNU/Linux環(huán)境中,同時(shí)保持很好的實(shí)時(shí)性。

          linux相關(guān)文章:linux教程




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