嵌入式OSEK配置器的設(shè)計(jì)與實(shí)現(xiàn)
3.2 利用XML技術(shù)配置OIL對(duì)象
基于XML的OSEK配置器,將OIL文件定義的屬性存放在初始化的XML模板文件中,并指定其默認(rèn)值。當(dāng)用戶添加、刪除OIL對(duì)象或者修改對(duì)象的屬性和參數(shù)時(shí),可通過KML解析器實(shí)現(xiàn)用戶配置界面與XML文件的同步。其過程如圖3中虛線部分所示。
例如,用戶在配置一個(gè)OIL對(duì)象ALarm時(shí),需要指定其3個(gè)屬性,分別是警報(bào)依附計(jì)時(shí)器COUNTER、警報(bào)動(dòng)作ACTION以及是否自動(dòng)啟動(dòng)AU-TOSTART。其中,ACTION和AU-TOSTART又包含各自的子屬性,使用XML技術(shù)可以很方便地管理和修改這些數(shù)據(jù)。
通過GUI配置一個(gè)報(bào)警器的屬性如下:警報(bào)依附計(jì)時(shí)器counterA,采用自動(dòng)啟動(dòng)方式,且其初次響應(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ù)生成符合OSEK規(guī)范的OIL配置文件。XSLT文檔本身是一個(gè)良掏的XML文檔,它被鏈接到需要轉(zhuǎn)換的XML文檔上,通過XSLT處理器實(shí)現(xiàn)對(duì)XML文檔的解析和轉(zhuǎn)換過程。XSLT轉(zhuǎn)換的過程如圖4中虛線部分所示。
例如3.2節(jié)中保存ALARM配置信息的文件alarm.xml,通過定義XSL樣式表文件xml20il.xsl將其轉(zhuǎn)換為標(biāo)準(zhǔn)的OIL文件。為了保證XSL文件的通用性,對(duì)輸入XML文檔每個(gè)層次的節(jié)點(diǎn)都設(shè)計(jì)一個(gè)框架模板tem-plate,即為OIL對(duì)象的每個(gè)屬性和部分子屬性定義框架模板。這樣,當(dāng)OIL對(duì)象增加和刪除時(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配置文件和生成代碼
為了實(shí)現(xiàn)OIL文件的可移植性和可重用性,OSEK配置器還需要實(shí)現(xiàn)從外部直接讀取OIL文件(可由用戶手動(dòng)編寫或其他OSEK實(shí)現(xiàn)生成),并通過GUI顯示和修改屬性配置的功能。這個(gè)過程需要一個(gè)OIL語言解析器,通過解析器將OIL文件轉(zhuǎn)換成XML文件提供給GUI,并且生成與操作系統(tǒng)相關(guān)的C代碼和頭文件。本組件通過LEX和YACC語言開發(fā)OIL語言解析器。
評(píng)論