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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Nucleus Plus在嵌入式系統(tǒng)應(yīng)用

          Nucleus Plus在嵌入式系統(tǒng)應(yīng)用

          作者:丁宜棟 海軍計算技術(shù)研究所 北京 時間:2001-03-23 來源:電子產(chǎn)品世界 收藏

              Nucleus Plus是美國源代碼操作系統(tǒng)商ATI公司推出的新一代操作系統(tǒng),屬于搶先式實時多任務(wù)操作系統(tǒng)內(nèi)核, 95%的代碼使用ANSI C編寫,非常便于移植于各種處理器家族。從實現(xiàn)的角度講,不同于傳統(tǒng)開發(fā),Nucleus Plus是以函數(shù)庫的形式鏈接到目標應(yīng)用程序中,形成可執(zhí)行目標代碼,下載到目標板上或燒到ROM/FLASH ROM 中去執(zhí)行。Nucleus Plus內(nèi)核在典型的CISC體系結(jié)構(gòu)上占據(jù)大約20k空間,而在典型的RISC體系結(jié)構(gòu)上占據(jù)空間為40k左右,其內(nèi)核數(shù)據(jù)結(jié)構(gòu)占據(jù)1.5k字節(jié)的空間。Nucleus Plus以其實時響應(yīng)、搶先、多任務(wù)以及源代碼開放特性獲得在通訊、國防、工業(yè)控制、航空/航天、鐵路、網(wǎng)絡(luò)、POS、自動化控制、智能家電等領(lǐng)域的廣泛應(yīng)用。

          本文引用地址:http://www.ex-cimer.com/article/2910.htm

          Nucleus Plus內(nèi)核技術(shù)

              ATI公司使用一種叫做軟件組件的方法。所謂軟件組件,就是具有明確目的或用途的由1個或數(shù)個C語言/匯編源文件的一段非獨立執(zhí)行應(yīng)用程序,且每個組件都提供一個定義好的外部接口,必須通過外部接口來使用組件。訪問組件內(nèi)的全局數(shù)據(jù)結(jié)構(gòu)是被禁止的。使用了組件方法, 軟件組件既易于更新也易于重用。Nucleus Plus軟件組件通常由定義數(shù)據(jù)類型、常量以及外部接口的INCLUDE 頭文件和一個或多個C語言/匯編源文件組成。Nucleus Plus 提供如下組件:任務(wù)控制管理、內(nèi)存管理、 定時器管理、中斷、系統(tǒng)診斷、I/O驅(qū)動管理等共16個組件如下,

          Nucleus Plus Kernel:    Common Service Component(CS)

                   Initialization Component(IN)

                   Tread Control Component(TC)

                   Timer Component(TI)

                   Mailbox Component(MB)

                   Pipe Component(PI)

                   Semaphore Component(SM)

                   Event Flag Component(EV)

                   Partition Component(PM)

                   Queue Component(QM)

                   Dynamic Memory Component(DM)

                   I/O Component(I/O)

                   History Component(HI)

                   Error Component(ER)

                   License Component (LI)

                   Release Component(RL)

           其中:

            * IN:負責(zé)初始化Nucleus Plus 系統(tǒng)

            * TC:負責(zé)管理Nucleus Plus的搶占式實時 任務(wù)和HISR的運行

            * CS:負責(zé)提供具有鏈接列表其它的設(shè)備Nucleus Plus 組件

            * TM:負責(zé)管理所有的Nucleus Plus 定時器設(shè)備。Nucleus Plus 的基本定時單元為一個Tick,它相當(dāng)于一次硬件定時器中斷

            * MB:負責(zé)管理所有的Nucleus Plus 信箱設(shè)備

            * QM:負責(zé)管理所有的Nucleus Plus 隊列設(shè)備

            * PI :負責(zé)管理所有的Nucleus Plus 管道設(shè)備

            * SM:負責(zé)管理所有的Nucleus Plus 信號量設(shè)備

            * EV:負責(zé)管理所有的Nucleus Plus 事件組設(shè)備

            * PM:負責(zé)管理所有的Nucleus Plus 分區(qū)內(nèi)存

            * DM:負責(zé)管理所有的Nucleus Plus 動態(tài)內(nèi)存

            * I/O:負責(zé)管理所有的Nucleus Plus 輸入/輸出

            * HI:負責(zé)Nucleus Plus的歷史設(shè)備管理

            * ER:負責(zé)管理所有的Nucleus Plus 系統(tǒng)錯誤

            * LI:負責(zé)Nucleus Plus的許可證管理

            * RL:負責(zé)Nucleus Plus 的版本管理

          Nucleus Plus 其它功能模塊

              Nucleus Plus 除了其功能強大的內(nèi)核外,還提供了面向INTERNET、TCP/IP、WEB瀏覽器、圖形以及文件系統(tǒng)的軟件包,參閱圖1。

           圖1: Nucleus Plus功能模塊圖

          Nucleus Plus 開發(fā)

          1, Nucleus Plus 定制

              Nucleus Plus 也能根據(jù)目標板的需要進行裁剪和定制,生成適合目標系統(tǒng)的操作系統(tǒng),盡量少占系統(tǒng)內(nèi)存。OS定制完成后,將其鏈接到目標應(yīng)用程序,成為目標應(yīng)用程序的一部分。在典型的CISC體系結(jié)構(gòu)的目標板上,它占用約20K 左右的空間,而在RISC體系結(jié)構(gòu)的目標板上占用約40K左右的空間。一般地,Nucleus Plus 足以滿足絕大多數(shù)的應(yīng)用。ATI公司提供了一個名為BUILD_LI.BAT或PLUS.BAT的批處理文件,用戶可以刪剪其中的模塊,更改相關(guān)的選項或開關(guān),執(zhí)行該文件生成與目標相關(guān)的操作系統(tǒng),也就是根據(jù)系統(tǒng)需要生成定制的操作系統(tǒng)。需要注意的是,該批處理文件的內(nèi)容與開發(fā)工具有關(guān)。

           2,開發(fā)方案

              Nucleus Plus可以結(jié)合Paradigm、SDS以及ATI的多任務(wù)調(diào)試器組成功能強大的集成開發(fā)環(huán)境,配合相應(yīng)的編譯器(Borland c/c++ 編譯器、Turbo c/c++ 編譯器或者Microsoft c/c++編譯器)和動態(tài)鏈接庫以及各類底層驅(qū)動軟件就可以滿足嵌入式應(yīng)用的開發(fā)。

          3,開發(fā)流程

          用Nucleus Plus 開發(fā)嵌入式應(yīng)用程序,一般遵循如下步驟:

            * 如果有必要,應(yīng)對低級系統(tǒng)初始化文件.INT進行修改,使之符合目標板的需要。如中斷向量、I/O地址、時鐘頻率等。

            * 定義Application _Initialize()函數(shù)。該函數(shù)在啟動系統(tǒng)之前先執(zhí)行。注意的是要把NUCLEUS.H頭文件包括在目標應(yīng)用程序中,以便利用Nucleus Plus 的服務(wù)。

            * 定義應(yīng)用程序的任務(wù)。如果調(diào)用Nucleus Plus 的服務(wù),要把NUCLEUS.H包含進去。

            * 編譯/匯編所有的應(yīng)用程序軟件,并且包含系統(tǒng)低級初始化文件.INT。

            * 鏈接.INT和所有的應(yīng)用程序目標文件、Nucleus Plus庫文件以及相關(guān)的開發(fā)工具庫。

            * 把生成的最終目標代碼下載或燒到目標板上執(zhí)行。

          4, Nucleus Plus 初始化

              Nucleus Plus 分三個層次的初始化,即:系統(tǒng)低級初始化Int-Initialize()、系統(tǒng)高級初始化Inc-Initialize()和應(yīng)用程序初始化Application_Initialize(),初始化之后便進入Nucleus Plus 的任務(wù)調(diào)度循環(huán)。各個初始化函數(shù)任務(wù)見表1。

          Int_Initialize()

          Inc_Initialize()

          Application_Initialize()

            * 設(shè)置必要的處理器/系統(tǒng)控制寄存器

            * 初始化中斷向量表

            * 設(shè)置系統(tǒng)堆棧寄存器

            * 計算定時器HISR堆棧和優(yōu)先級

            * 計算系統(tǒng)第一個可用內(nèi)存

            * 將控制交給系統(tǒng)高級初始化例程

            * 初始化Nucleus Plus 組件

            * 將控制交給應(yīng)用程序初始化例程

            * 任務(wù)調(diào)度

            * 執(zhí)行用戶定義的初始化,如創(chuàng)建內(nèi)存池,創(chuàng)建任務(wù)、創(chuàng)建信號量、創(chuàng)建隊列等

                         表1:Nucleus Plus 初始化表

           5, Nucleus MNT

              Nucleus MNT是為軟件開發(fā)者設(shè)計的,在WIN95/NT下構(gòu)筑Nucleus Plus嵌入式應(yīng)用的原型(Prototyping)環(huán)境。它通過兩個庫來實現(xiàn),即針對目標環(huán)境的庫和針對Win95/NT開發(fā)環(huán)境的庫。開發(fā)時,應(yīng)用程序代碼可以不變,僅僅替換掉MNT庫,使用交叉開發(fā)工具包重構(gòu)目標環(huán)境下的可執(zhí)行目標代碼,請看圖2。

               PROTOTYPING           TARGET

                              圖2:Nucleus MNT

           6, 開發(fā)注意事項

              嵌入式開發(fā)在內(nèi)存需求、任務(wù)管理等方面存在著特殊性,因此,開發(fā)中對以下方面要額外加以注意,

            * 任務(wù)饑荒

          任務(wù)優(yōu)先級的分配要合理,否則會導(dǎo)致系統(tǒng)中的一些任務(wù)一直不斷地在運行而另一些任務(wù)永遠得不到運行,引起饑荒。

            * 死鎖

          系統(tǒng)資源的分配要合理,否則會引起兩個或多個任務(wù)為競爭某一系統(tǒng)資源而處于無限掛起現(xiàn)象。

            * 內(nèi)存

            * 內(nèi)存泄露

          內(nèi)存分配過程中要盡量避免碎片并且要注意及時回收。

            * 內(nèi)存節(jié)約

            * 默認情況下,Nucleus Plus, 在高級初始化函數(shù)Inc_Initialize()中。調(diào)用其它函數(shù)初始化它所提供的所有特征的數(shù)據(jù)結(jié)構(gòu)中,有些特征用戶目標應(yīng)用程序可能用不到,為此,要去掉不必要的函數(shù)調(diào)用。

            * 改變Nucleus.H中NU_MAX_LISRS的大小,它定義的是目標處理器的最大中斷向量數(shù)。

            * 改變TC_DEFS.H中TC_PRIORITIES的大小。它定義了任務(wù)的優(yōu)先級數(shù)。Nucleus Plus 能支持256個優(yōu)先級。

            * HISR棧共享。

            * TCD.C中禁止查詢表TCD_LOWEST_SET_BIT的RAM拷貝。

            * 使用一個更小的INT選項。

          結(jié)束語

              由于Nucleus Plus 的模塊化、可靠、重用、開放、易用以及安全等特性使得它成為嵌入式應(yīng)用開發(fā)的理想平臺,尤其是關(guān)系到國計民生的領(lǐng)域,如航空/航天、軍隊、國防等方面。

           



          關(guān)鍵詞: 嵌入式系統(tǒ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); })();