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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > VxWorks組件技術(shù)的研究

          VxWorks組件技術(shù)的研究

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

          1.組件概述

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

          VxWorks的配置和裁剪是以組件為基本單位。組件是VxWorks相對(duì)獨(dú)立和完整的一個(gè)功能模塊,也是系統(tǒng)中最小的、可升級(jí)的單元,它通常不再包含子節(jié)點(diǎn)。

          VxWorks用CDF文件來(lái)描述系統(tǒng)中的組件。CDF(Common Data Format)稱作通用數(shù)據(jù)格式文件,是一種用于存儲(chǔ)數(shù)據(jù)、訪問(wèn)多維數(shù)據(jù)集的文件格式。CDF文件的后綴為.cdf,用戶可以使用CDF文件非常方便地定義系統(tǒng)的特征參數(shù),描述一個(gè)組件,并將其配置到不同的系統(tǒng)中。

          使用組件技術(shù),使用用戶在開(kāi)發(fā)過(guò)程中能夠高效構(gòu)建VxWorks系統(tǒng),避免傳統(tǒng)構(gòu)造頭文件帶來(lái)的低效、復(fù)雜、易出錯(cuò)等缺點(diǎn)。而且,Tornado 2.x的圖形配置工具和工程管理工具增強(qiáng)了組件相互依賴的可視性。

          2.組件構(gòu)成

          組件實(shí)際上是一個(gè)功能部件具體實(shí)現(xiàn)部分的描述信息,它定義了與組件相關(guān)的源代碼或目標(biāo)代碼、集成信息以及與組件相關(guān)的參數(shù)。組件包含以下元素:

          (1)NAME:一個(gè)可讀的名稱,在工程組件管理器中出現(xiàn)在組件圖標(biāo)旁邊。

          (2)SYNOPSIS:對(duì)組件的簡(jiǎn)潔的描述。

          (3)MODULES:與組件關(guān)聯(lián)的目標(biāo)文件。

          (4)HDR_FILES:使用該組件時(shí)需要用到的相關(guān)頭文件。

          (5)CFG_PARAMS:與組件相關(guān)的一些配置參數(shù),通常為一系列的宏。

          3.組件描述文件的讀取順序

          組件描述文件必須有.cdf后綴。所有的CDF文件名稱以兩個(gè)十進(jìn)制數(shù)字開(kāi)始(即00xxxx.cdf),開(kāi)始的這兩個(gè)數(shù)字控制一個(gè)目錄中CDF文件讀取順序。

          組件描述文件通常在工程創(chuàng)建時(shí)被讀取,如果兩個(gè)文件描述同一組件的同樣特征,則它將讀取后一個(gè)而不考慮以前的。優(yōu)先權(quán)通常以兩種約定方式建立:

          (1)CDF文件存放在確定目錄下。這些目錄以如下順序讀?。?/p>

          1>$(WIND_BASE)targetconfigcompsVxWorks:包含一些通用組件;

          2>$(WIND_BASE)targetconfigcompsVxWorksarcharch:包含特定體系結(jié)構(gòu)的組件;

          3>$(WIND_BASE)targetconfigbsp:包含特定BSP的組件;

          4>工程目錄:包含該工程的一些特定組件。

          (2)在同一目錄下,文件頭部的兩個(gè)數(shù)字決定讀取順序。

          4.組件的封裝規(guī)則

          Wind River公司將部分組件安裝在其傳統(tǒng)位置上。

          (1)源碼模塊可在target/src或target/config目錄下找到。

          (2)標(biāo)題頭至于target/h中;目標(biāo)模塊在target/lib/objARCH中。

          (3)組件描述文件在target/config/comps/VxWorks中。

          (4)組件配置文件(源碼片段)位于target/config/copms/src。

          第三方受限于這些規(guī)定,組件元素在組件描述文件中完全給出。建議第三方把組件源和目標(biāo)元素置于一個(gè)特定目錄下,如target/config/vendor_name。組件描述文件(CDF)的位置取決于組件集成在系統(tǒng)中的位置。

          若要在一個(gè)完整系統(tǒng)中集成新的組件,CDF應(yīng)該置于target/config/comps/VxWorks目錄下。凡是在該文件夾下的說(shuō)明這些配置通用于各種BSP。

          若它是一個(gè)BSP特定組件,則應(yīng)該放在BSP目錄下,表示它是針對(duì)當(dāng)前BSP的特殊配置。若其特別服務(wù)一個(gè)單一工程,則它放在工程目錄(target/proj/project_name)下。

          第三方組件不允許覆蓋WindRiver支持的文件,但可在其自身組件描述文件中忽略Wind River的組件描述。

          5.組件的可視化

          Vxworks通過(guò)CDF文件為T(mén)ornado配置工具提供了BSP的配置信息。Tornado集成開(kāi)發(fā)環(huán)境使用CDF文件把文件夾、組件、參數(shù)、選項(xiàng)文件夾等配置項(xiàng)構(gòu)建成VxWorks系統(tǒng)的配置樹(shù),通過(guò)VxWorks組件管理器界面供用戶查看和修改。

          一旦我們創(chuàng)建了一個(gè)新的組件,那么在Tornado的VxWorks組件管理器中可以展開(kāi)組件樹(shù),找到新定義的組件,然后選擇配置或裁減。

          (1)通過(guò)選擇include/exclude實(shí)現(xiàn)裁剪。在開(kāi)發(fā)一個(gè)BSP的初期,往往需要裁減掉一些高級(jí)功能支持,先構(gòu)建一個(gè)支持時(shí)鐘中斷的最小內(nèi)核。調(diào)試通過(guò)后,逐步增加高級(jí)功能模塊組件支持,最后開(kāi)發(fā)出一個(gè)功能相對(duì)完整的VxWorks操作系統(tǒng)。

          (2)通過(guò)修改屬性參數(shù)(選項(xiàng))實(shí)現(xiàn)配置。例如我們可能要到“VxWorks->hardware->memory->BSPMemory Configuration”中去修改一些內(nèi)存配置相關(guān)的宏。

          當(dāng)然,一切都是代碼或腳本描述的,IDE只是一種可視化交互編輯環(huán)境。在Tornado運(yùn)行期間,試圖去修改腳本或代碼可能不會(huì)實(shí)時(shí)同步體現(xiàn)到Tornado中,此時(shí)先關(guān)閉Tornado,修改完源文件再開(kāi)啟Tornado重新加載,即可看到修改后的結(jié)果。在Tornado IDE中配置或裁減組件,在合適的時(shí)候(dependency or build)會(huì)反饋到源文件代碼中。

          Tornado工程配置工具把收集到的用戶配置信息反饋體現(xiàn)到工程的相關(guān)源文件中,從而實(shí)現(xiàn)了VxWorks的自動(dòng)配置和裁剪。組件包含開(kāi)關(guān)宏(COMPONENTS INCLUDED)和宏參數(shù)(PARAMETERS)將體現(xiàn)在動(dòng)態(tài)生成的prjParams.h和prjComps.h文件中。prjParams.h通常被config.h包含,prjComps.h將被targetconfigcompssrcconfigAll.h包含。



          關(guān)鍵詞:

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