新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Linux實時化解決方案Xenomai的原理及應用

        Linux實時化解決方案Xenomai的原理及應用

        作者: 時間:2013-10-17 來源:網絡 收藏


        在基于Adeos的系統中,分為多個域。每個域中獨立運行一個操作系統(或者是實現一定功能的程序模塊),每個域可以有獨立的地址空間和類似于進程、虛擬內存等的軟件抽象層。在各個域下層有一個Adeos通過虛擬中斷等方法來調度上面的各個域。在基于Adeos的系統中,存在著A、B、C、D四種類型的交互,如圖1所示。

        A類交互是各個域直接操作硬件設備,包括訪問內存等;B類交互指當Adeos接收到硬件中斷后,會根據中斷來對相應的域進行中斷服務;C類交互指當前域內的操作系統主動向Adeos請求某些服務;D類交互是指Adeos接收硬件產生的中斷和異常,同時也可以直接控制硬件。

        2.2 用戶層實時的實現

        除了在內核層利用Adeos實現了硬實時外,它在用戶空間也有很好的實時性。在S3C2410平臺上,為了實現用戶層的實時,實現了一個硬件計數器--Decrementer.這個硬件計數器可以在用戶空問里很好地模擬TSC(Time Stamp Counter,時間戳計數器)。

        同時,Xenomai在Linux內核中加入了一個全新的數據結構__ipipe_tscinfo,可以通過此數據結構變量存放用戶層需要的數據。該數據結構組成如下:

        用戶層,應用程序通過系統調用可以迅速得到struct_ipipe_tscinfo結構體中的數據。而且為了避免受到緩存的影響,Xenomai將此結構體變量存放在Linux的向量頁中。

        內核通過函數_ipipe_mach_get_tscinfo來填充struct_ipipe_tscinfo結構體變量中的各項內容:

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

        在Xenomai用戶層的實時程序運行時,程序都會通過系統調用得到內核填充好的struct_ipipe_tscinfo結構體變量。具體實現可參考編譯用戶層實時程序時用到的,由Xenomai所提的頭文件/usr/xenomai/include/asm/syscall.h.

        2.3 Xenomai多API構架

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

        linux相關文章:linux教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 桓台县| 遵义县| 永修县| 古浪县| 广南县| 岢岚县| 龙口市| 宣威市| 康保县| 和龙市| 潜山县| 樟树市| 巩义市| 鱼台县| 柘荣县| 穆棱市| 黑河市| 汝城县| 抚松县| 隆化县| 渭源县| 紫阳县| 新宾| 温州市| 涞源县| 玉树县| 梁平县| 法库县| 嵩明县| 滨海县| 台北市| 濮阳市| 浮山县| 弋阳县| 岑溪市| 镇宁| 沧州市| 靖宇县| 连云港市| 栾川县| 大渡口区|