一種嵌入式系統(tǒng)日志收集裝置、記錄系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種嵌入式系統(tǒng)日志收集裝置、記錄系統(tǒng)及方法。
【背景技術(shù)】
[0002]對于嵌入式系統(tǒng)來講,日志不僅是一種必要、常見且高效的調(diào)試開發(fā)手段,也是一種重要的產(chǎn)品維護(hù)手段。與其它通用CPU系統(tǒng)相比,嵌入式系統(tǒng)的資源有限。其日志系統(tǒng)的實(shí)現(xiàn)往往會受到多方面因素的制約,如制造成本、功耗等。其日志系統(tǒng)的要求是在有限的資源下,盡可能保證功能豐富強(qiáng)大、高效且代價小。日志功能越豐富、越強(qiáng)大,在產(chǎn)品、開發(fā)、調(diào)試、維護(hù)過程中所起的作用越大;日志效率越高、實(shí)現(xiàn)代價越小,對嵌入式系統(tǒng)資源要求就越低,產(chǎn)品更具競爭力。
[0003]嵌入式系統(tǒng)主要由軟件完成日志功能,CPU需要參與日志運(yùn)行的所有環(huán)節(jié):生成、記錄、管理、輸出與保存。常見的日志運(yùn)行流程如圖1所示。
[0004]需要記錄日志時,首先由軟件按照自定義的格式生成日志數(shù)據(jù)(包括插入時間戳),再將日志數(shù)據(jù)按需要做如下的處理:直接將日志數(shù)據(jù)輸出到外設(shè)接口,如UART ;直接將日志數(shù)據(jù)保存到非易失性介質(zhì),如NAND Flash ;先將日志數(shù)據(jù)寫到緩存buffer,記錄日志流程結(jié)束。日志的輸出與保存由專門的軟件模塊或CPU來負(fù)責(zé)。在多CPU嵌入式系統(tǒng)中,常見的日志記錄方法是:每個CPU負(fù)責(zé)各自日志的生成,包括加入時間戳;為每個CPU分配獨(dú)立的緩存buffer,生成的日志首先被保存到本地的緩存buffer中;每個CPU需要管理屬于自己的緩存buffer ;—定條件滿足時,由系統(tǒng)中負(fù)載最小的CPU負(fù)責(zé)將其它CPU緩存buffer里的日志數(shù)據(jù)保存到另外一塊大的緩存buffer中,再統(tǒng)一將其輸出到外設(shè)接口或保存到非易失性介質(zhì)中。
[0005]在上述方案中,日志運(yùn)行的每個環(huán)節(jié)均需要軟件參與完成,需要占用嵌入式系統(tǒng)中緊張的CPU資源。設(shè)計(jì)時,為了保證日志功能,會在保證系統(tǒng)所需業(yè)務(wù)的基礎(chǔ)上提高CPU的規(guī)格(如時鐘、RAM空間等),這會增加系統(tǒng)成本與功耗;日志的輸出與保存由軟件控制實(shí)現(xiàn),這通常是一個耗時的流程,與系統(tǒng)內(nèi)其它業(yè)務(wù),尤其是關(guān)鍵業(yè)務(wù)搶奪資源,降低了日志整體運(yùn)行效率,也大大降低了整個系統(tǒng)的工作效率;多CPU情形下,各個CPU單獨(dú)管理自己日志的時間戳。這直接導(dǎo)致了日志數(shù)據(jù)時間先后及關(guān)聯(lián)性不易確認(rèn)的問題,加大了日志解析的難度。
【發(fā)明內(nèi)容】
[0006]本發(fā)明所要解決的技術(shù)問題是,針對現(xiàn)有技術(shù)不足,提供一種嵌入式系統(tǒng)日志收集裝置、記錄系統(tǒng)及方法。
[0007]為解決上述技術(shù)問題,本發(fā)明所采用的技術(shù)方案是:一種嵌入式系統(tǒng)日志收集裝置,包括:
預(yù)處理模塊:負(fù)責(zé)收集CPU的日志數(shù)據(jù)并在每條日志數(shù)據(jù)后添加時間戳信息;
后處理模塊:負(fù)責(zé)將預(yù)處理模塊處理后的日志數(shù)據(jù)保存到外置緩存buffer、或者直接輸出到外設(shè)輸出接口、或者保存到NVM中。
[0008]優(yōu)選地,本發(fā)明的裝置還包括內(nèi)部緩存空間:用于暫存由預(yù)處理模塊處理后的日志數(shù)據(jù)。
[0009]優(yōu)選地,所述預(yù)處理模塊包括:
仲裁器:用于為收集控制器從哪一組FIFO中取數(shù)據(jù)提供仲裁;
FIFO:用于緩存CPU發(fā)送的日志數(shù)據(jù);
收集控制器:用于從FIFO里取日志數(shù)據(jù);根據(jù)記錄了不同屬性日志處理策略的屬性表確定是否丟棄日志數(shù)據(jù);向待處理的日志數(shù)據(jù)中插入時間戳,并將插入時間戳后的日志數(shù)據(jù)寫到對應(yīng)的內(nèi)部緩存空間中,同時管理內(nèi)部緩存空間的各子空間和FIFO的狀態(tài)。
[0010]優(yōu)選地,所述后處理模塊包括BE控制器和SRAM控制器,所述BE控制器通過SRAM控制器將內(nèi)部緩存空間的日志數(shù)據(jù)寫到外置buffer中,通過SRAM控制器將外置Buffer的日志數(shù)據(jù)讀出并送給外設(shè)輸出接口,同時所述BE控制器負(fù)責(zé)外置緩存buffer空間的管理。
[0011 ] 優(yōu)選地,所述日志收集裝置還包括:
屬性表:用于記錄不同屬性日志數(shù)據(jù)的處理策略,所述屬性表包括多個大小、格式相同的元素,每個元素對應(yīng)一種日志數(shù)據(jù)類別;
映射表:用于記錄每個類別的日志數(shù)據(jù)寫到內(nèi)部緩存空間與外置buffer的哪個子空間。
[0012]優(yōu)選地,所述內(nèi)部緩存空間按照日志數(shù)據(jù)的類別劃分為多個子空間;所述收集控制器管理每個子空間的寫指針,所述BE控制器管理每個子空間的讀指針。
[0013]所述外置緩存buffer按照日志數(shù)據(jù)的類別劃分為多個子空間,方便記錄不同類別的日志;所述BE控制器管理每個子空間的讀指針與寫指針。
[0014]
本發(fā)明還提供了一種嵌入式系統(tǒng)日志記錄系統(tǒng),包括多個CPU、NVM和日志緩沖buffer ;所述NVM與所述日志緩沖buffer連接;所述日志緩沖buffer與其中一個用于管理日志緩沖buffer、輸出與保存日志的CPU連接;其還包括上述的日志收集裝置;所述日志收集裝置接收來自各CPU發(fā)送的日志數(shù)據(jù),在每條日志數(shù)據(jù)后添加時間戳信息,并將添加了時間戳信息的日志數(shù)據(jù)輸出至所述日志緩沖buffer,所述日志緩沖buffer將所述添加了時間戳信息的日志數(shù)據(jù)保存到所述NVM中;所述NVM與所述日志收集裝置雙向通信。
[0015]優(yōu)選地,本發(fā)明的日志記錄系統(tǒng)還包括外設(shè)輸出接口 ;所述日志緩沖buffer與所述外設(shè)輸出接口連接;所述外設(shè)輸出接口與所述日志收集裝置、用于管理日志緩沖buffer、輸出與保存日志的CPU雙向通信。
[0016]本發(fā)明還提供了一種利用上述日志記錄系統(tǒng)實(shí)現(xiàn)日志記錄的方法,包括以下步驟:
1)各CPU構(gòu)造日志數(shù)據(jù);
2)日志收集裝置的預(yù)處理模塊按照CPU配置的順序從各CPU獲取日志數(shù)據(jù);
3)對于單一屬性的日志數(shù)據(jù),將當(dāng)前系統(tǒng)時間戳信息插入到所獲取的日志數(shù)據(jù)后;對于多屬性的日志數(shù)據(jù),直接丟棄CPU配置的待丟棄的日志數(shù)據(jù),并將當(dāng)前系統(tǒng)時間戳信息插入到留下的日志數(shù)據(jù)后;或者忽略CPU的配置信息,將當(dāng)前系統(tǒng)時間戳信息插入到日志數(shù)據(jù)后;
4)預(yù)處理模塊將經(jīng)步驟3)處理后的數(shù)據(jù)寫到內(nèi)部緩存空間;
5)判斷是否丟棄內(nèi)部緩存空間內(nèi)的數(shù)據(jù),若是,返回步驟3);否則,進(jìn)入步驟6);
6)采用下列方式中的一種保存日志數(shù)據(jù):將內(nèi)部緩存空間的日志數(shù)據(jù)保存到外置buffer中,進(jìn)入步驟7);后處理模塊完成日志數(shù)據(jù)的輸出,CPU將輸出的日志數(shù)據(jù)的保存到NVM中,進(jìn)入步驟8);內(nèi)部緩存空間完成日志數(shù)據(jù)的保存,CPU完成日志數(shù)據(jù)的輸出,進(jìn)入步驟8);后處理模塊直接將內(nèi)部緩存空間中的日志數(shù)據(jù)發(fā)送給外設(shè)輸出接口及寫到NVM中,進(jìn)入步驟7);后處理模塊先將內(nèi)部緩存空間中的日志數(shù)據(jù)寫到外置buffer,然后在合適的時間,后處理模塊從外置buffer空間中讀取日志數(shù)據(jù)并將其輸出到外設(shè)輸出接口及NVM中,進(jìn)入步驟7);
7)判斷是否丟棄日志數(shù)據(jù),若是,進(jìn)入步驟8);否則,將日志數(shù)據(jù)輸出到外設(shè)輸出接口,或者將日志數(shù)據(jù)寫到NVM中;
8)結(jié)束。
[0017]與現(xiàn)有技術(shù)相比,本發(fā)明所具有的有益效果為:本發(fā)明將日志功能從軟件剝離出來,交由日志收集裝置實(shí)現(xiàn),提高了日志運(yùn)行效率和整個嵌入式系統(tǒng)的工作效率,降低了整個嵌入式系統(tǒng),尤其是多CPU的ASIC的制造成本;由LGM(日志收集裝置)統(tǒng)一管理時間戳,降低了日志解析的難度;LGM的主要工作方式、每個關(guān)鍵環(huán)節(jié)的運(yùn)行策略均由CPU配置,提高了裝置本身及整個日志記錄系統(tǒng)的靈活性,提高了本發(fā)明的適用性。
【附圖說明】
[0018]圖1為現(xiàn)有的日