專利名稱:對(duì)嵌入式系統(tǒng)進(jìn)行在線監(jiān)測(cè)的方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式系統(tǒng)的監(jiān)測(cè)技術(shù),特別涉及嵌入式系統(tǒng)中軟件的監(jiān)測(cè)技術(shù)。
背景技術(shù):
嵌入式系統(tǒng)作為具有良好的應(yīng)用前景的一項(xiàng)技術(shù),在越來(lái)越多的領(lǐng)域得到了廣泛的應(yīng)用。據(jù)統(tǒng)計(jì),每年只有10%-20%的計(jì)算機(jī)芯片用于臺(tái)式機(jī)或筆記本電腦等,這就意味著每年有10億~20億塊中央處理器(Central ProcessingUnit,簡(jiǎn)稱“CPU”)是為嵌入式系統(tǒng)設(shè)計(jì)和制造的;每年有超過(guò)1萬(wàn)個(gè)新的嵌入式系統(tǒng)計(jì)劃產(chǎn)生,它們被廣泛應(yīng)用到工業(yè)控制系統(tǒng)、仿真系統(tǒng)、醫(yī)療儀器、信息家電、通信設(shè)備等眾多領(lǐng)域中,而且科技的不斷更新將進(jìn)一步促進(jìn)嵌入式系統(tǒng)的發(fā)展。
嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),并且軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)和一般的個(gè)人計(jì)算機(jī)(Personal Computer,簡(jiǎn)稱“PC”)的系統(tǒng)不同,嵌入式系統(tǒng)和具體應(yīng)用有機(jī)地結(jié)合在一起,它的升級(jí)換代也是和具體產(chǎn)品同步進(jìn)行,因此嵌入式系統(tǒng)產(chǎn)品一旦進(jìn)入市場(chǎng),具有較長(zhǎng)的生命周期。同時(shí),為了提高執(zhí)行速度和系統(tǒng)可靠性,嵌入式系統(tǒng)中的軟件存儲(chǔ)在非揮發(fā)性只讀存儲(chǔ)器中,以固化態(tài)出現(xiàn),也稱為固件(firmware),固件一旦設(shè)計(jì)完成就很難更改和升級(jí),維護(hù)成本較高。
按照完成的功能,嵌入式系統(tǒng)一般是由下面幾個(gè)模塊組成的計(jì)算機(jī)系統(tǒng)或者單片微處理器,字長(zhǎng)可以是4位、8位、16位、32位等;用以保存固件的非揮發(fā)性只讀存儲(chǔ)器;用以存程序數(shù)據(jù)的揮發(fā)性的隨機(jī)訪問(wèn)存儲(chǔ)器;連接微控制器和用戶接口器件,如開(kāi)關(guān)、按鈕、傳感器、模數(shù)轉(zhuǎn)化器、控制器、發(fā)光二極管和顯示器端口等;嵌入式操作系統(tǒng),用于管理資源、協(xié)調(diào)整個(gè)系統(tǒng)的運(yùn)行。
嵌入式系統(tǒng)開(kāi)機(jī)時(shí),系統(tǒng)將存儲(chǔ)在非揮發(fā)性只讀存儲(chǔ)器中的固件加載到系統(tǒng)的隨機(jī)訪問(wèn)存儲(chǔ)器,如同步動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(Synchronous DynamicRandom Access Memory,簡(jiǎn)稱“SDRAM”)上運(yùn)行,運(yùn)行時(shí)可以快速的隨機(jī)的存取修改程序數(shù)據(jù)。例如,在嵌入式系統(tǒng)軟件中的一個(gè)消息分發(fā)處理流程中,處理流程如圖1所示。系統(tǒng)判定消息是否為系統(tǒng)定義消息,如果是則按照系統(tǒng)的定義進(jìn)行處理,否則進(jìn)行缺省處理。需要說(shuō)明的是,通常消息分發(fā)處理流程是一個(gè)循環(huán),在此為了說(shuō)明方便僅說(shuō)明了一個(gè)循環(huán)周期內(nèi)的處理。
嵌入式系統(tǒng)按形態(tài)可分為設(shè)備級(jí)、板級(jí)和芯片級(jí)。設(shè)備級(jí)的嵌入式系統(tǒng)通常用于工程控制;板級(jí)的嵌入式系統(tǒng)的應(yīng)用主要集中在航空航天、電話電訊等設(shè)備上;芯片級(jí)的嵌入式系統(tǒng),即通常所說(shuō)的片上系統(tǒng)(System on Chip,簡(jiǎn)稱“SoC”),主要應(yīng)用在消費(fèi)電子、互聯(lián)網(wǎng)絡(luò)和手持設(shè)備等產(chǎn)品上。其中,板級(jí)的嵌入式系統(tǒng)又稱為單板,是嵌入式系統(tǒng)的主要市場(chǎng)。
為了保證嵌入式系統(tǒng)運(yùn)行的可靠性,需要對(duì)嵌入式系統(tǒng)軟件進(jìn)行測(cè)試,尤其在嵌入式系統(tǒng)加載固件后,運(yùn)行時(shí)所進(jìn)行的在線測(cè)試就是測(cè)試的一個(gè)重要步驟?,F(xiàn)有技術(shù)中,嵌入式系統(tǒng)軟件在線測(cè)試的監(jiān)測(cè)軟件運(yùn)行的手段和在線測(cè)試技術(shù)比較缺乏,例如在對(duì)單板進(jìn)行測(cè)試的時(shí)候,通常只是在單板硬件運(yùn)行中通過(guò)示波器的探針測(cè)試單板中預(yù)設(shè)的測(cè)試點(diǎn),檢驗(yàn)測(cè)試點(diǎn)的輸出波形,來(lái)完成單板的在線測(cè)試。
在實(shí)際應(yīng)用中,上述方案存在以下問(wèn)題現(xiàn)有的技術(shù)在嵌入式系統(tǒng)軟件的在線測(cè)試時(shí)比較難以實(shí)現(xiàn)嵌入式系統(tǒng)軟件的運(yùn)行情況的監(jiān)測(cè)和故障的定位,并且無(wú)法為嵌入式系統(tǒng)軟件增加補(bǔ)丁。
造成這種情況的主要原因在于,現(xiàn)有技術(shù)在固件加載后,不支持嵌入式系統(tǒng)軟件在線運(yùn)行時(shí)進(jìn)行補(bǔ)丁和測(cè)試程序升級(jí),無(wú)法對(duì)嵌入式系統(tǒng)軟件在線運(yùn)行時(shí)的情況進(jìn)行監(jiān)測(cè);其次,現(xiàn)有技術(shù)在軟件原因或者硬件原因?qū)е虑度胧竭\(yùn)行故障時(shí),故障定位比較困難,而且由于很多故障在系統(tǒng)軟復(fù)位或者硬復(fù)位后無(wú)法重現(xiàn),更加增加了故障定位的難度;而且,嵌入式系統(tǒng)軟件由于是預(yù)先定制的關(guān)系,當(dāng)需要升級(jí)的通常是軟件全面升級(jí),一般不能進(jìn)行補(bǔ)丁。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種對(duì)嵌入式系統(tǒng)進(jìn)行在線監(jiān)測(cè)的方法及其系統(tǒng),使得嵌入式系統(tǒng)軟件的運(yùn)行狀態(tài)得到監(jiān)測(cè),解決嵌入式系統(tǒng)運(yùn)行中的故障定位困難以及無(wú)法在線進(jìn)行補(bǔ)丁和測(cè)試程序升級(jí)運(yùn)行的問(wèn)題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種對(duì)嵌入式系統(tǒng)進(jìn)行在線監(jiān)測(cè)的方法,包含以下步驟A在所述嵌入式系統(tǒng)的軟件中增加接口函數(shù)定義,開(kāi)發(fā)用于在線監(jiān)測(cè)的實(shí)現(xiàn)所述接口函數(shù)的補(bǔ)丁程序;B在線下載所述補(bǔ)丁程序,存儲(chǔ)于和所述嵌入式系統(tǒng)軟件處于不同內(nèi)存代碼段的內(nèi)存空間;C根據(jù)預(yù)先約定的存儲(chǔ)補(bǔ)丁有效標(biāo)志和補(bǔ)丁接口定義的內(nèi)存空間地址,在線下載所述補(bǔ)丁程序時(shí)更新所述補(bǔ)丁有效標(biāo)志和所述補(bǔ)丁接口定義;D在線運(yùn)行所述嵌入式系統(tǒng)軟件,當(dāng)所述補(bǔ)丁有效標(biāo)志為有效時(shí),調(diào)用所述接口函數(shù)。
其中,所述補(bǔ)丁程序包含所述補(bǔ)丁有效標(biāo)志和所述補(bǔ)丁接口定義的更新信息,在線下載時(shí)在所述補(bǔ)丁接口定義中提供所述補(bǔ)丁程序中所述接口函數(shù)的指針。
使用編譯器提供的為函數(shù)和變量指定代碼段和運(yùn)行段的方式實(shí)現(xiàn)所述補(bǔ)丁程序使用的代碼段和數(shù)據(jù)段在內(nèi)存空間上與所述單板軟件完全獨(dú)立。
所述方法還包含以下步驟將實(shí)現(xiàn)所述接口函數(shù)的補(bǔ)丁程序源代碼和所述嵌入式系統(tǒng)軟件源代碼共同編譯生成可以分離下載的補(bǔ)丁程序,所述補(bǔ)丁程序共享所述嵌入式系統(tǒng)軟件的資源。
在所述嵌入式系統(tǒng)軟件中可以增加多個(gè)不同的接口函數(shù)的定義,在所述補(bǔ)丁有效標(biāo)志和所述補(bǔ)丁接口定義內(nèi)存儲(chǔ)所述多個(gè)接口函數(shù)的有效標(biāo)志和指針。
本發(fā)明還提供了一種對(duì)嵌入式系統(tǒng)進(jìn)行在線監(jiān)測(cè)的系統(tǒng),包含用于實(shí)現(xiàn)所述嵌入式系統(tǒng)基本軟件功能的嵌入式系統(tǒng)軟件,用于實(shí)現(xiàn)監(jiān)測(cè)功能的可以在線下載的補(bǔ)丁程序,用于標(biāo)志所述補(bǔ)丁程序是否有效的補(bǔ)丁有效標(biāo)志,用于提供訪問(wèn)所述補(bǔ)丁程序的指針的補(bǔ)丁接口定義;所述嵌入式系統(tǒng)軟件在所述補(bǔ)丁有效標(biāo)志為有效時(shí),通過(guò)所述補(bǔ)丁接口定義中的所述指針調(diào)用所述補(bǔ)丁程序;其中,所述各個(gè)模塊各自存儲(chǔ)在獨(dú)立的內(nèi)存代碼段內(nèi),所述補(bǔ)丁有效標(biāo)志和所述補(bǔ)丁接口定義的存儲(chǔ)地址由所述嵌入式系統(tǒng)軟件和所述補(bǔ)丁程序共同約定。
其中,所述補(bǔ)丁程序在線下載時(shí)更新所述補(bǔ)丁有效標(biāo)志和所述補(bǔ)丁接口定義。
所述補(bǔ)丁程序和所述嵌入式系統(tǒng)軟件共同編譯,在生成的目標(biāo)代碼中分離出補(bǔ)丁程序用于單獨(dú)在線下載執(zhí)行,所述補(bǔ)丁程序可以訪問(wèn)所述嵌入式系統(tǒng)軟件中的各個(gè)變量和函數(shù)。
通過(guò)比較可以發(fā)現(xiàn),本發(fā)明的技術(shù)方案與現(xiàn)有技術(shù)的區(qū)別在于,本發(fā)明方案在嵌入式系統(tǒng)軟件中預(yù)先定義接口函數(shù),在線下載用于實(shí)現(xiàn)接口函數(shù)以監(jiān)測(cè)和測(cè)試的各種補(bǔ)丁程序,同時(shí)由補(bǔ)丁程序?yàn)榍度胧较到y(tǒng)軟件在約定的內(nèi)存空間內(nèi)提供接口函數(shù)是否有效的標(biāo)志和函數(shù)指針,通過(guò)在嵌入式系統(tǒng)軟件中需要進(jìn)行監(jiān)測(cè)和測(cè)試的地方增加依據(jù)標(biāo)志是否有效調(diào)用接口函數(shù)的代碼,運(yùn)行接口函數(shù)實(shí)現(xiàn)嵌入式系統(tǒng)軟件運(yùn)行情況的監(jiān)測(cè)和測(cè)試。
這種技術(shù)方案上的區(qū)別,帶來(lái)了較為明顯的有益效果,即首先,本發(fā)明對(duì)嵌入式系統(tǒng)軟件在線測(cè)試和補(bǔ)丁的方案可以通過(guò)在線下載各種不同的補(bǔ)丁程序進(jìn)行相應(yīng)的測(cè)試,測(cè)試程序的更新非常方便,大大簡(jiǎn)化對(duì)嵌入式系統(tǒng)軟件的測(cè)試,提高了測(cè)試的可靠性。
其次,本發(fā)明提供了一種在線進(jìn)行嵌入式系統(tǒng)軟件的運(yùn)行狀態(tài)監(jiān)測(cè)和測(cè)試的新方法,解決了嵌入式系統(tǒng)軟件運(yùn)行時(shí)的不中斷正常功能執(zhí)行下的運(yùn)行狀態(tài)監(jiān)測(cè)和測(cè)試的問(wèn)題。
最后,由于不需要中斷嵌入式系統(tǒng)軟件的運(yùn)行,可以運(yùn)行補(bǔ)丁程序隨時(shí)監(jiān)測(cè)嵌入式系統(tǒng)軟件的運(yùn)行情況,并且在出現(xiàn)故障時(shí),依據(jù)補(bǔ)丁程序的運(yùn)行結(jié)果很容易進(jìn)行故障定位。
圖1為現(xiàn)有嵌入式系統(tǒng)軟件中的消息分發(fā)處理流程的示意圖;圖2為根據(jù)本發(fā)明的一個(gè)較佳實(shí)施例的對(duì)嵌入式系統(tǒng)軟件進(jìn)行在線測(cè)試和補(bǔ)丁的軟件系統(tǒng)中各個(gè)軟件模塊在內(nèi)存中存儲(chǔ)分配的示意圖;圖3為根據(jù)本發(fā)明的一個(gè)較佳實(shí)施例的對(duì)嵌入式系統(tǒng)軟件進(jìn)行在線測(cè)試和補(bǔ)丁的方法的流程圖;圖4為根據(jù)本發(fā)明的一個(gè)較佳實(shí)施例的嵌入式系統(tǒng)軟件的消息分發(fā)處理流程中增加接口定義和調(diào)用的流程圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步地詳細(xì)描述。
首先說(shuō)明本發(fā)明的基本原理。本發(fā)明方案在嵌入式系統(tǒng)軟件設(shè)計(jì)時(shí)在軟件中預(yù)定義接口函數(shù),在接口函數(shù)有效時(shí)進(jìn)行接口函數(shù)調(diào)用,在線加載實(shí)現(xiàn)接口函數(shù)的補(bǔ)丁程序,通過(guò)運(yùn)行補(bǔ)丁程序?qū)崿F(xiàn)新增特殊測(cè)試功能或者新增業(yè)務(wù)功能。熟悉本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明方案的構(gòu)思類似于單板硬件運(yùn)行中通過(guò)示波器的探針測(cè)試單板中預(yù)設(shè)的測(cè)試點(diǎn)的狀態(tài),預(yù)設(shè)“軟探針”即預(yù)定的接口函數(shù),通過(guò)“軟示波器”即執(zhí)行接口函數(shù)運(yùn)行在線下載的補(bǔ)丁程序,實(shí)現(xiàn)對(duì)嵌入式系統(tǒng)軟件的測(cè)試,并可以在出現(xiàn)故障時(shí)根據(jù)輸出的測(cè)試結(jié)果進(jìn)行故障定位。
本發(fā)明的有以下幾個(gè)關(guān)鍵點(diǎn)1.在嵌入式系統(tǒng)軟件中增加接口函數(shù)定義并在接口函數(shù)有效時(shí)調(diào)用接口函數(shù);2.實(shí)現(xiàn)接口函數(shù)的補(bǔ)丁程序和嵌入式系統(tǒng)軟件分別存儲(chǔ)在內(nèi)存的不同代碼段,補(bǔ)丁程序可以單獨(dú)在線下載;3.嵌入式系統(tǒng)軟件和補(bǔ)丁程序約定補(bǔ)丁有效標(biāo)志和補(bǔ)丁接口定義的存儲(chǔ)地址,更新補(bǔ)丁程序的同時(shí)更新補(bǔ)丁有效標(biāo)志和補(bǔ)丁接口定義。
下面結(jié)合本發(fā)明的一個(gè)具體實(shí)施例來(lái)說(shuō)明本發(fā)明方案。
根據(jù)本發(fā)明的一個(gè)較佳實(shí)施例的對(duì)嵌入式系統(tǒng)軟件進(jìn)行在線測(cè)試和補(bǔ)丁的系統(tǒng)中各個(gè)軟件模塊在內(nèi)存中存儲(chǔ)分配的示意圖如圖2所示。其中,該較佳實(shí)施例中,嵌入式系統(tǒng)為一個(gè)單板系統(tǒng),單板使用的CPU是MPC860,同時(shí)使用了16M SDRAM內(nèi)存,開(kāi)發(fā)工具使用PSOS。
對(duì)嵌入式系統(tǒng)軟件進(jìn)行在線測(cè)試和補(bǔ)丁的軟件系統(tǒng)包含以下幾個(gè)軟件模塊嵌入式系統(tǒng)軟件,補(bǔ)丁有效標(biāo)志,補(bǔ)丁接口定義和補(bǔ)丁程序。其中,這些軟件模塊各自獨(dú)立存儲(chǔ)在內(nèi)存的不同區(qū)域。
嵌入式系統(tǒng)軟件在嵌入式系統(tǒng)運(yùn)行前加載,在被執(zhí)行時(shí)運(yùn)行嵌入式系統(tǒng)的各種處理程序,在運(yùn)行過(guò)程中訪問(wèn)補(bǔ)丁有效標(biāo)志,在補(bǔ)丁有效時(shí)根據(jù)補(bǔ)丁接口定義提供的接口函數(shù)入口訪問(wèn)外部的函數(shù)運(yùn)行補(bǔ)丁程序。熟悉本領(lǐng)域的技術(shù)人員可以理解,這需要對(duì)現(xiàn)有的嵌入式系統(tǒng)軟件進(jìn)行少許改動(dòng),增加接口函數(shù)的定義和調(diào)用的代碼。
補(bǔ)丁有效標(biāo)志用于標(biāo)識(shí)補(bǔ)丁程序中的接口函數(shù)是否有效,在線下載補(bǔ)丁運(yùn)行程序時(shí)可以被改變。在本發(fā)明的一個(gè)較佳實(shí)施例中,當(dāng)需要進(jìn)行一項(xiàng)新的測(cè)試時(shí),在線下載新的補(bǔ)丁程序,此時(shí)將該補(bǔ)丁程序中的接口函數(shù)對(duì)應(yīng)的補(bǔ)丁有效標(biāo)志修改為有效。
補(bǔ)丁接口定義用于向嵌入式系統(tǒng)軟件提供接口函數(shù)的指針,指示補(bǔ)丁程序中接口函數(shù)的入口地址,每次在線下載補(bǔ)丁運(yùn)行程序時(shí),補(bǔ)丁接口定義被重新設(shè)定。在本發(fā)明的一個(gè)較佳實(shí)施例中,在補(bǔ)丁程序編譯時(shí)已經(jīng)預(yù)先設(shè)定了補(bǔ)丁程序在內(nèi)存中的存儲(chǔ)地址,當(dāng)需要在線增加一項(xiàng)新的系統(tǒng)功能時(shí),在線下載新的補(bǔ)丁程序時(shí)將補(bǔ)丁接口定義中的接口函數(shù)的指針設(shè)定為指向補(bǔ)丁程序中對(duì)應(yīng)接口函數(shù)的入口地址。
補(bǔ)丁程序用于為嵌入式系統(tǒng)軟件提供接口函數(shù)實(shí)現(xiàn),在線下載到內(nèi)存時(shí)修改補(bǔ)丁有效標(biāo)志和補(bǔ)丁接口定義,在被執(zhí)行時(shí)可以訪問(wèn)嵌入式系統(tǒng)軟件的資源,包括嵌入式系統(tǒng)軟件中的各個(gè)變量和函數(shù),實(shí)現(xiàn)測(cè)試功能或新增系統(tǒng)功能。其中,補(bǔ)丁程序可以是測(cè)試程序也可以是用于增加系統(tǒng)功能的程序。
需要說(shuō)明的是,補(bǔ)丁有效標(biāo)志和補(bǔ)丁接口定義的形式和存儲(chǔ)地址由嵌入式系統(tǒng)軟件和補(bǔ)丁程序共同約定。
熟悉本領(lǐng)域的技術(shù)人員可以理解,補(bǔ)丁有效標(biāo)志可以標(biāo)識(shí)多個(gè)補(bǔ)丁是否有效。其中,這些補(bǔ)丁中的接口函數(shù)在嵌入式系統(tǒng)軟件的不同程序段被調(diào)用,其對(duì)應(yīng)的接口函數(shù)的定義和指針存儲(chǔ)在補(bǔ)丁接口定義中。需要說(shuō)明的是,多個(gè)接口函數(shù)的可以在一個(gè)補(bǔ)丁程序內(nèi)實(shí)現(xiàn)。
根據(jù)本發(fā)明的一個(gè)較佳實(shí)施例的對(duì)嵌入式系統(tǒng)軟件進(jìn)行在線測(cè)試和補(bǔ)丁的方法的流程圖如圖3所示。
首先進(jìn)入步驟100,根據(jù)需要在嵌入式系統(tǒng)軟件中增加接口函數(shù)定義和調(diào)用。需要說(shuō)明的是,在該步驟中,增加的接口函數(shù)定義和調(diào)用可以為多個(gè),例如在本發(fā)明的一個(gè)較佳實(shí)施例中,在嵌入式系統(tǒng)軟件的一個(gè)消息分發(fā)處理流程中,就增加了兩個(gè)接口函數(shù)的調(diào)用,一個(gè)在消息分發(fā)處理流程開(kāi)始之前進(jìn)行調(diào)用,一個(gè)在消息分發(fā)處理流程進(jìn)行缺省處理之前進(jìn)行。需要說(shuō)明的,增加的接口函數(shù)需要在嵌入式系統(tǒng)軟件中進(jìn)行預(yù)先的聲明。關(guān)于依據(jù)本發(fā)明的一個(gè)較佳實(shí)施例的在嵌入式系統(tǒng)軟件的一個(gè)消息分發(fā)處理中增加接口函數(shù)調(diào)用的流程,將在下文詳細(xì)說(shuō)明。熟悉本領(lǐng)域的技術(shù)人員可以理解,通過(guò)在嵌入式系統(tǒng)軟件需要監(jiān)測(cè)的位置增加相應(yīng)接口函數(shù)的調(diào)用,在接口函數(shù)調(diào)用中執(zhí)行一定的代碼,就可以監(jiān)測(cè)嵌入式系統(tǒng)軟件的運(yùn)行狀態(tài),并在出現(xiàn)故障時(shí)為技術(shù)人員提供參考信息以便于進(jìn)行故障定位。
接著進(jìn)入步驟200,編寫(xiě)補(bǔ)丁程序完成接口函數(shù)的實(shí)現(xiàn),并編譯生成可以在線下載的存儲(chǔ)上獨(dú)立于嵌入式系統(tǒng)軟件的補(bǔ)丁程序。在本發(fā)明的一個(gè)較佳實(shí)施例中,補(bǔ)丁程序通過(guò)和嵌入式系統(tǒng)軟件約定的存儲(chǔ)在固定內(nèi)存空間處的補(bǔ)丁有效標(biāo)志,提供補(bǔ)丁程序校驗(yàn)標(biāo)志供嵌入式系統(tǒng)軟件判斷補(bǔ)丁程序中的接口函數(shù)是否有效,以實(shí)現(xiàn)在線加載后嵌入式系統(tǒng)軟件根據(jù)標(biāo)志調(diào)用相應(yīng)接口函數(shù);同時(shí),補(bǔ)丁程序通過(guò)和嵌入式系統(tǒng)軟件約定的存儲(chǔ)在固定內(nèi)存地址處的補(bǔ)丁接口定義,為補(bǔ)丁程序提供接口函數(shù)的指針作為各接口的訪問(wèn)地址。需要說(shuō)明的是,補(bǔ)丁程序在原有嵌入式系統(tǒng)軟件基礎(chǔ)上開(kāi)發(fā),與嵌入式系統(tǒng)軟件的原始代碼同時(shí)編譯,在生成的目標(biāo)代碼中分離出補(bǔ)丁程序用于單獨(dú)在線下載執(zhí)行,補(bǔ)丁程序使用的代碼段和數(shù)據(jù)段在內(nèi)存空間上與嵌入式系統(tǒng)軟件完全獨(dú)立。熟悉本領(lǐng)域的技術(shù)人員可以理解,補(bǔ)丁程序的獨(dú)立內(nèi)存空間的實(shí)現(xiàn)可以使用編譯器提供的為函數(shù)和變量指定代碼段和運(yùn)行段的方法進(jìn)行實(shí)現(xiàn),例如在單板CPU為MPC860,開(kāi)發(fā)工具為PSOS的嵌入式系統(tǒng)的環(huán)境下,可以通過(guò)#pragma SECTION編譯開(kāi)關(guān)來(lái)實(shí)現(xiàn)補(bǔ)丁程序中的函數(shù)和變量使用特定代碼段和數(shù)據(jù)段進(jìn)行存放,并通過(guò)LNK文件將這些段存放到指定的內(nèi)存位置。
接著進(jìn)入步驟300,在線下載補(bǔ)丁程序。其中,可供嵌入式系統(tǒng)軟件運(yùn)行時(shí)調(diào)用的補(bǔ)丁程序有多種,在線下載何種補(bǔ)丁程序由測(cè)試的需要決定。例如,在本發(fā)明的一個(gè)較佳實(shí)施例中,需要測(cè)試嵌入式系統(tǒng)軟件中的消息分發(fā)處理流程,則下載測(cè)試分發(fā)處理流程中調(diào)用的接口函數(shù)對(duì)應(yīng)的補(bǔ)丁程序。需要說(shuō)明的是,在下載補(bǔ)丁程序的時(shí)候,在補(bǔ)丁程序和嵌入式系統(tǒng)軟件約定好的固定內(nèi)存空間內(nèi)的補(bǔ)丁有效標(biāo)志和補(bǔ)丁接口定義也同時(shí)被更新。
接著進(jìn)入步驟400,執(zhí)行嵌入式系統(tǒng)軟件。其中,嵌入式系統(tǒng)軟件中包含查詢補(bǔ)丁有效標(biāo)志,并依據(jù)查詢結(jié)果調(diào)用相應(yīng)接口函數(shù)的指令。
接著進(jìn)入步驟500,嵌入式系統(tǒng)軟件調(diào)用接口函數(shù),運(yùn)行補(bǔ)丁程序。其中,調(diào)用接口函數(shù)時(shí),通過(guò)補(bǔ)丁接口定義得到接口函數(shù)的入口地址。
至此,完成對(duì)嵌入式系統(tǒng)軟件在線測(cè)試和補(bǔ)丁的處理流程。
其中,根據(jù)本發(fā)明的一個(gè)較佳實(shí)施例的對(duì)嵌入式系統(tǒng)軟件的消息分發(fā)處理流程中增加接口函數(shù)調(diào)用的流程如圖4所示。
首先進(jìn)入步驟110,判斷補(bǔ)丁1是否有效,如果是則進(jìn)入步驟120,否則進(jìn)入步驟130。該步驟中,補(bǔ)丁1是否有效通過(guò)檢查嵌入式系統(tǒng)軟件和補(bǔ)丁程序共同約定的存儲(chǔ)在固定內(nèi)存空間內(nèi)的補(bǔ)丁有效標(biāo)志確定。
在步驟120中,執(zhí)行接口函數(shù)1,接著進(jìn)入步驟130。其中,接口函數(shù)1的由補(bǔ)丁1對(duì)應(yīng)的補(bǔ)丁程序?qū)崿F(xiàn),嵌入式系統(tǒng)軟件通過(guò)補(bǔ)丁接口定義中的接口函數(shù)1的指針調(diào)用接口函數(shù)1。
在步驟130中,判斷消息類型。其中,嵌入式系統(tǒng)的消息類型由系統(tǒng)的嵌入式系統(tǒng)軟件定義。
接著進(jìn)入步驟140,判斷消息是否為系統(tǒng)定義的消息,如果是則進(jìn)入步驟160,否則進(jìn)入步驟150。熟悉本領(lǐng)域的技術(shù)人員理解,在現(xiàn)有的技術(shù)中,如果是系統(tǒng)定義的消息,則在嵌入式系統(tǒng)軟件中會(huì)有對(duì)應(yīng)的處理代碼;如果不是則通常進(jìn)行缺省處理。
在步驟150中,判斷補(bǔ)丁2是否有效,如果是則進(jìn)入步驟170,否則進(jìn)入步驟180。該步驟中,補(bǔ)丁2是否有效通過(guò)檢查嵌入式系統(tǒng)軟件和補(bǔ)丁程序共同約定的存儲(chǔ)在固定內(nèi)存空間內(nèi)的補(bǔ)丁有效標(biāo)志確定。
在步驟160中,執(zhí)行嵌入式系統(tǒng)軟件中處理該消息的代碼后結(jié)束。其中,該消息處理的代碼和原有的嵌入式系統(tǒng)軟件中的代碼完全相同。
在步驟170中,執(zhí)行接口函數(shù)2后結(jié)束。其中,接口函數(shù)2的由補(bǔ)丁2對(duì)應(yīng)的補(bǔ)丁程序?qū)崿F(xiàn),嵌入式系統(tǒng)軟件通過(guò)補(bǔ)丁接口定義中的接口函數(shù)2的指針調(diào)用接口函數(shù)2。在本發(fā)明的一個(gè)較佳實(shí)施例中,補(bǔ)丁1和補(bǔ)丁2在同一個(gè)補(bǔ)丁程序里實(shí)現(xiàn),它們對(duì)應(yīng)的接口函數(shù)的指針存儲(chǔ)在嵌入式系統(tǒng)軟件和補(bǔ)丁程序共同約定的固定地址的內(nèi)存中,即存儲(chǔ)在上文所述補(bǔ)丁接口定義中。
在步驟180中,進(jìn)行缺省處理后結(jié)束。其中,缺省處理由嵌入式系統(tǒng)軟件實(shí)現(xiàn)。
雖然通過(guò)參照本發(fā)明的某些優(yōu)選實(shí)施例,已經(jīng)對(duì)本發(fā)明進(jìn)行了圖示和描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,可以在形式上和細(xì)節(jié)上對(duì)其作各種各樣的改變,而不偏離所附權(quán)利要求書(shū)所限定的本發(fā)明的精神和范圍。
權(quán)利要求
1.一種對(duì)嵌入式系統(tǒng)進(jìn)行在線監(jiān)測(cè)的方法,其特征在于,包含以下步驟A在所述嵌入式系統(tǒng)的軟件中增加接口函數(shù)定義,開(kāi)發(fā)用于在線監(jiān)測(cè)的實(shí)現(xiàn)所述接口函數(shù)的補(bǔ)丁程序;B在線下載所述補(bǔ)丁程序,存儲(chǔ)于和所述嵌入式系統(tǒng)軟件處于不同內(nèi)存代碼段的內(nèi)存空間;C根據(jù)預(yù)先約定的存儲(chǔ)補(bǔ)丁有效標(biāo)志和補(bǔ)丁接口定義的內(nèi)存空間地址,在線下載所述補(bǔ)丁程序時(shí)更新所述補(bǔ)丁有效標(biāo)志和所述補(bǔ)丁接口定義;D在線運(yùn)行所述嵌入式系統(tǒng)軟件,當(dāng)所述補(bǔ)丁有效標(biāo)志為有效時(shí),調(diào)用所述接口函數(shù)。
2.根據(jù)權(quán)利要求1所述的對(duì)嵌入式系統(tǒng)進(jìn)行在線監(jiān)測(cè)的方法,其特征在于,所述補(bǔ)丁程序包含所述補(bǔ)丁有效標(biāo)志和所述補(bǔ)丁接口定義的更新信息,在線下載時(shí)在所述補(bǔ)丁接口定義中提供所述補(bǔ)丁程序中所述接口函數(shù)的指針。
3.根據(jù)權(quán)利要求1所述的對(duì)嵌入式系統(tǒng)進(jìn)行在線監(jiān)測(cè)的方法,其特征在于,使用編譯器提供的為函數(shù)和變量指定代碼段和運(yùn)行段的方式實(shí)現(xiàn)所述補(bǔ)丁程序使用的代碼段和數(shù)據(jù)段在內(nèi)存空間上與所述單板軟件完全獨(dú)立。
4.根據(jù)權(quán)利要求1所述的對(duì)嵌入式系統(tǒng)進(jìn)行在線監(jiān)測(cè)的方法,其特征在于,所述方法還包含以下步驟將實(shí)現(xiàn)所述接口函數(shù)的補(bǔ)丁程序源代碼和所述嵌入式系統(tǒng)軟件源代碼共同編譯生成可以分離下載的補(bǔ)丁程序,所述補(bǔ)丁程序共享所述嵌入式系統(tǒng)軟件的資源。
5.根據(jù)權(quán)利要求1所述的對(duì)嵌入式系統(tǒng)進(jìn)行在線監(jiān)測(cè)的方法,其特征在于,在所述嵌入式系統(tǒng)軟件中可以增加多個(gè)不同的接口函數(shù)的定義,在所述補(bǔ)丁有效標(biāo)志和所述補(bǔ)丁接口定義內(nèi)存儲(chǔ)所述多個(gè)接口函數(shù)的有效標(biāo)志和指針。
6.一種對(duì)嵌入式系統(tǒng)進(jìn)行在線監(jiān)測(cè)的系統(tǒng),其特征在于,包含用于實(shí)現(xiàn)所述嵌入式系統(tǒng)基本軟件功能的嵌入式系統(tǒng)軟件,用于實(shí)現(xiàn)監(jiān)測(cè)功能的可以在線下載的補(bǔ)丁程序,用于標(biāo)志所述補(bǔ)丁程序是否有效的補(bǔ)丁有效標(biāo)志,用于提供訪問(wèn)所述補(bǔ)丁程序的指針的補(bǔ)丁接口定義;所述嵌入式系統(tǒng)軟件在所述補(bǔ)丁有效標(biāo)志為有效時(shí),通過(guò)所述補(bǔ)丁接口定義中的所述指針調(diào)用所述補(bǔ)丁程序;其中,所述各個(gè)模塊各自存儲(chǔ)在獨(dú)立的內(nèi)存代碼段內(nèi),所述補(bǔ)丁有效標(biāo)志和所述補(bǔ)丁接口定義的存儲(chǔ)地址由所述嵌入式系統(tǒng)軟件和所述補(bǔ)丁程序共同約定。
7.根據(jù)權(quán)利要求6所述的對(duì)嵌入式系統(tǒng)進(jìn)行在線監(jiān)測(cè)的系統(tǒng),其特征在于,所述補(bǔ)丁程序在線下載時(shí)更新所述補(bǔ)丁有效標(biāo)志和所述補(bǔ)丁接口定義。
8.根據(jù)權(quán)利要求6所述的對(duì)嵌入式系統(tǒng)進(jìn)行在線監(jiān)測(cè)的系統(tǒng),其特征在于,所述補(bǔ)丁程序和所述嵌入式系統(tǒng)軟件共同編譯,在生成的目標(biāo)代碼中分離出補(bǔ)丁程序用于單獨(dú)在線下載執(zhí)行,所述補(bǔ)丁程序可以訪問(wèn)所述嵌入式系統(tǒng)軟件中的各個(gè)變量和函數(shù)。
全文摘要
本發(fā)明涉及嵌入式系統(tǒng)的監(jiān)測(cè)技術(shù),公開(kāi)了一種對(duì)嵌入式系統(tǒng)進(jìn)行在線監(jiān)測(cè)的方法及其系統(tǒng),使得嵌入式系統(tǒng)軟件的運(yùn)行狀態(tài)得到監(jiān)測(cè),解決嵌入式系統(tǒng)運(yùn)行中的故障定位困難以及無(wú)法在線進(jìn)行補(bǔ)丁和測(cè)試程序升級(jí)運(yùn)行的問(wèn)題。這種對(duì)嵌入式系統(tǒng)進(jìn)行在線監(jiān)測(cè)的方法及其系統(tǒng)在嵌入式系統(tǒng)的軟件中預(yù)先定義接口函數(shù),在線下載用于實(shí)現(xiàn)接口函數(shù)以監(jiān)測(cè)和測(cè)試的各種補(bǔ)丁程序,同時(shí)由補(bǔ)丁程序?yàn)榍度胧较到y(tǒng)軟件在約定的內(nèi)存空間內(nèi)提供接口函數(shù)是否有效的標(biāo)志和函數(shù)指針,通過(guò)在嵌入式系統(tǒng)軟件中需要進(jìn)行監(jiān)測(cè)和測(cè)試的地方增加依據(jù)標(biāo)志是否有效調(diào)用接口函數(shù)的代碼,運(yùn)行接口函數(shù)實(shí)現(xiàn)嵌入式系統(tǒng)軟件運(yùn)行情況的監(jiān)測(cè)和測(cè)試。
文檔編號(hào)G06F11/36GK1737773SQ200410053779
公開(kāi)日2006年2月22日 申請(qǐng)日期2004年8月16日 優(yōu)先權(quán)日2004年8月16日
發(fā)明者沈同林, 李旭 申請(qǐng)人:上海華為技術(shù)有限公司