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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式OSEK配置器的設(shè)計(jì)與實(shí)現(xiàn)

          嵌入式OSEK配置器的設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2012-11-16 來源:網(wǎng)絡(luò) 收藏

          3.2 利用XML技術(shù)OIL對象

          基于XML的器,將OIL文件定義的屬性存放在初始化的XML模板文件中,并指定其默認(rèn)值。當(dāng)用戶添加、刪除OIL對象或者修改對象的屬性和參數(shù)時(shí),可通過KML解析器用戶界面與XML文件的同步。其過程如圖3中虛線部分所示。

          例如,用戶在配置一個(gè)OIL對象ALarm時(shí),需要指定其3個(gè)屬性,分別是警報(bào)依附計(jì)時(shí)器COUNTER、警報(bào)動作ACTION以及是否自動啟動AU-TOSTART。其中,ACTION和AU-TOSTART又包含各自的子屬性,使用XML技術(shù)可以很方便地管理和修改這些數(shù)據(jù)。

          通過GUI配置一個(gè)報(bào)警器的屬性如下:警報(bào)依附計(jì)時(shí)器counterA,采用自動啟動方式,且其初次響應(yīng)時(shí)間和周期響應(yīng)時(shí)間分別為30ms和20 ms。OS-EK配置器通過XML解析器將這些屬性值讀取出來,并保存在XML源文件alarm.xml中。以下是此XML文件的源代碼;


          3.3 利用XSLT技術(shù)生成OIL文件

          用戶配置的OIL信息通過GUI保存為XML文件后,利用XSLT技術(shù)生成符合規(guī)范的OIL配置文件。XSLT文檔本身是一個(gè)良掏的XML文檔,它被鏈接到需要轉(zhuǎn)換的XML文檔上,通過XSLT處理器對XML文檔的解析和轉(zhuǎn)換過程。XSLT轉(zhuǎn)換的過程如圖4中虛線部分所示。

          例如3.2節(jié)中保存ALARM配置信息的文件alarm.xml,通過定義XSL樣式表文件xml20il.xsl將其轉(zhuǎn)換為標(biāo)準(zhǔn)的OIL文件。為了保證XSL文件的通用性,對輸入XML文檔每個(gè)層次的節(jié)點(diǎn)都一個(gè)框架模板tem-plate,即為OIL對象的每個(gè)屬性和部分子屬性定義框架模板。這樣,當(dāng)OIL對象增加和刪除時(shí),XSL文件都可以快速地完成轉(zhuǎn)換而不需要做任何修改。使用Microsoftmsxml 4.o作為:XSLT處理器,xsl:output method=”text”indent=”no”/>定義轉(zhuǎn)換的輸出方式為文本格式。
          轉(zhuǎn)換3.2節(jié)中。KML文件的部分關(guān)鍵源代碼如下:


          3.4 讀取OIL配置文件和生成代碼

          為了OIL文件的可移植性和可重用性,配置器還需要實(shí)現(xiàn)從外部直接讀取OIL文件(可由用戶手動編寫或其他OSEK實(shí)現(xiàn)生成),并通過GUI顯示和修改屬性配置的功能。這個(gè)過程需要一個(gè)OIL語言解析器,通過解析器將OIL文件轉(zhuǎn)換成XML文件提供給GUI,并且生成與操作系統(tǒng)相關(guān)的C代碼和頭文件。本組件通過LEX和YACC語言開發(fā)OIL語言解析器。

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


          評論


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