嵌入式OSEK配置器的設計與實(shí)現
3.2 利用XML技術(shù)配置OIL對象
基于XML的OSEK配置器,將OIL文件定義的屬性存放在初始化的XML模板文件中,并指定其默認值。當用戶(hù)添加、刪除OIL對象或者修改對象的屬性和參數時(shí),可通過(guò)KML解析器實(shí)現用戶(hù)配置界面與XML文件的同步。其過(guò)程如圖3中虛線(xiàn)部分所示。
例如,用戶(hù)在配置一個(gè)OIL對象ALarm時(shí),需要指定其3個(gè)屬性,分別是警報依附計時(shí)器COUNTER、警報動(dòng)作ACTION以及是否自動(dòng)啟動(dòng)AU-TOSTART。其中,ACTION和AU-TOSTART又包含各自的子屬性,使用XML技術(shù)可以很方便地管理和修改這些數據。
通過(guò)GUI配置一個(gè)報警器的屬性如下:警報依附計時(shí)器counterA,采用自動(dòng)啟動(dòng)方式,且其初次響應時(shí)間和周期響應時(shí)間分別為30ms和20 ms。OS-EK配置器通過(guò)XML解析器將這些屬性值讀取出來(lái),并保存在XML源文件alarm.xml中。以下是此XML文件的源代碼;
3.3 利用XSLT技術(shù)生成OIL文件
用戶(hù)配置的OIL信息通過(guò)GUI保存為XML文件后,利用XSLT技術(shù)生成符合OSEK規范的OIL配置文件。XSLT文檔本身是一個(gè)良掏的XML文檔,它被鏈接到需要轉換的XML文檔上,通過(guò)XSLT處理器實(shí)現對XML文檔的解析和轉換過(guò)程。XSLT轉換的過(guò)程如圖4中虛線(xiàn)部分所示。
例如3.2節中保存ALARM配置信息的文件alarm.xml,通過(guò)定義XSL樣式表文件xml20il.xsl將其轉換為標準的OIL文件。為了保證XSL文件的通用性,對輸入XML文檔每個(gè)層次的節點(diǎn)都設計一個(gè)框架模板tem-plate,即為OIL對象的每個(gè)屬性和部分子屬性定義框架模板。這樣,當OIL對象增加和刪除時(shí),XSL文件都可以快速地完成轉換而不需要做任何修改。使用Microsoftmsxml 4.o作為:XSLT處理器,xsl:output method=”text”indent=”no”/>定義轉換的輸出方式為文本格式。
轉換3.2節中。KML文件的部分關(guān)鍵源代碼如下:
3.4 讀取OIL配置文件和生成代碼
為了實(shí)現OIL文件的可移植性和可重用性,OSEK配置器還需要實(shí)現從外部直接讀取OIL文件(可由用戶(hù)手動(dòng)編寫(xiě)或其他OSEK實(shí)現生成),并通過(guò)GUI顯示和修改屬性配置的功能。這個(gè)過(guò)程需要一個(gè)OIL語(yǔ)言解析器,通過(guò)解析器將OIL文件轉換成XML文件提供給GUI,并且生成與操作系統相關(guān)的C代碼和頭文件。本組件通過(guò)LEX和YACC語(yǔ)言開(kāi)發(fā)OIL語(yǔ)言解析器。
評論