一種嵌入式系統日誌收集裝置、記錄系統及方法

一種嵌入式系統日誌收集裝置、記錄系統及方法

《一種嵌入式系統日誌收集裝置、記錄系統及方法》是湖南國科微電子股份有限公司於2015年10月22日申請的專利,該專利的公布號為CN105183628A,授權公布日為2015年12月23日,發明人是姚明生、鄒茂紅、游毓、向平、周士兵、姜黎、馬翼、田達海、彭鵬。

《一種嵌入式系統日誌收集裝置、記錄系統及方法》公開了一種嵌入式系統日誌收集裝置、記錄系統及方法,日誌收集裝置包括:預處理模組:負責收集CPU的日誌數據並在每條日誌數據後添加時間戳信息;後處理模組:負責將預處理模組處理後的日誌數據保存到外置快取buffer、直接輸出到外設輸出接口、保存到NVM中。該發明將日誌功能從軟體剝離出來,交由日誌收集裝置實現,提高了日誌運行效率和整個嵌入式系統的工作效率,降低了整個嵌入式系統,尤其是多CPU的ASIC的製造成本;由LGM統一管理時間戳,降低了日誌解析的難度;LGM的主要工作方式、每個關鍵環節的運行策略均由CPU配置,提高了模組本身及整個系統的靈活性,提高了該發明的適用性。

2020年7月14日,《一種嵌入式系統日誌收集裝置、記錄系統及方法》獲得第二十一屆中國專利獎優秀獎。

(概述圖為《一種嵌入式系統日誌收集裝置、記錄系統及方法》摘要附圖)

基本介紹

  • 中文名:一種嵌入式系統日誌收集裝置、記錄系統及方法
  • 申請人:湖南國科微電子股份有限公司
  • 申請日:2015年10月22日
  • 申請號:201510690375X
  • 公布號:CN105183628A
  • 公布日:2015年12月23日
  • 發明人:姚明生、鄒茂紅、游毓、向平、周士兵、姜黎、馬翼、田達海、彭鵬
  • 地址:湖南省長沙市經濟技術開發區東十路南10號
  • Int. Cl.:G06F11/34(2006.01)I
  • 代理機構:長沙正奇專利事務所有限責任公司
  • 代理人:盧宏、王娟
  • 類別:發明專利
專利背景,發明內容,專利目的,技術方案,有益效果,附圖說明,技術領域,權利要求,實施方式,榮譽表彰,

專利背景

對於嵌入式系統來講,日誌不僅是一種必要、常見且高效的調試開發手段,也是一種重要的產品維護手段。與其它通用CPU系統相比,嵌入式系統的資源有限。其日誌系統的實現往往會受到多方面因素的制約,如製造成本、功耗等。其日誌系統的要求是在有限的資源下,儘可能保證功能豐富強大、高效且代價小。日誌功能越豐富、越強大,在產品、開發、調試、維護過程中所起的作用越大;日誌效率越高、實現代價越小,對嵌入式系統資源要求就越低,產品更具競爭力。
嵌入式系統主要由軟體完成日誌功能,CPU需要參與日誌運行的所有環節:生成、記錄、管理、輸出與保存。常見的日誌運行流程如圖1所示。
需要記錄日誌時,首先由軟體按照自定義的格式生成日誌數據(包括插入時間戳),再將日誌數據按需要做如下的處理:直接將日誌數據輸出到外設接口,如UART;直接將日誌數據保存到非易失性介質,如NANDFlash;先將日誌數據寫到快取buffer,記錄日誌流程結束。日誌的輸出與保存由專門的軟體模組或CPU來負責。在多CPU嵌入式系統中,常見的日誌記錄方法是:每個CPU負責各自日誌的生成,包括加入時間戳;為每個CPU分配獨立的快取buffer,生成的日誌首先被保存到本地的快取buffer中;每個CPU需要管理屬於自己的快取buffer;一定條件滿足時,由系統中負載最小的CPU負責將其它CPU快取buffer里的日誌數據保存到另外一塊大的快取buffer中,再統一將其輸出到外設接口或保存到非易失性介質中。
在上述方案中,日誌運行的每個環節均需要軟體參與完成,需要占用嵌入式系統中緊張的CPU資源。設計時,為了保證日誌功能,會在保證系統所需業務的基礎上提高CPU的規格(如時鐘、RAM空間等),這會增加系統成本與功耗;日誌的輸出與保存由軟體控制實現,這通常是一個耗時的流程,與系統內其它業務,尤其是關鍵業務搶奪資源,降低了日誌整體運行效率,也大大降低了整個系統的工作效率;多CPU情形下,各個CPU單獨管理自己日誌的時間戳。這直接導致了日誌數據時間先後及關聯性不易確認的問題,加大了日誌解析的難度。

發明內容

專利目的

《一種嵌入式系統日誌收集裝置、記錄系統及方法》所要解決的技術問題是,針對2015年之前的技術不足,提供一種嵌入式系統日誌收集裝置、記錄系統及方法。

技術方案

《一種嵌入式系統日誌收集裝置、記錄系統及方法》所採用的技術方案是:一種嵌入式系統日誌收集裝置,包括:
預處理模組:負責收集CPU的日誌數據並在每條日誌數據後添加時間戳信息;
後處理模組:負責將預處理模組處理後的日誌數據保存到外置快取buffer、或者直接輸出到外設輸出接口、或者保存到NVM中。
優選地,《一種嵌入式系統日誌收集裝置、記錄系統及方法》的裝置還包括內部快取空間:用於暫存由預處理模組處理後的日誌數據。
優選地,所述預處理模組包括:仲裁器:用於為收集控制器從哪一組FIFO中取數據提供仲裁;
FIFO:用於快取CPU傳送的日誌數據;
收集控制器:用於從FIFO里取日誌數據;根據記錄了不同屬性日誌處理策略的屬性表確定是否丟棄日誌數據;向待處理的日誌數據中插入時間戳,並將插入時間戳後的日誌數據寫到對應的內部快取空間中,同時管理內部快取空間的各子空間和FIFO的狀態。
優選地,所述後處理模組包括BE控制器和SRAM控制器,所述BE控制器通過SRAM控制器將內部快取空間的日誌數據寫到外置buffer中,通過SRAM控制器將外置Buffer的日誌數據讀出並送給外設輸出接口,同時所述BE控制器負責外置快取buffer空間的管理。
優選地,所述日誌收集裝置還包括:
屬性表:用於記錄不同屬性日誌數據的處理策略,所述屬性表包括多個大小、格式相同的元素,每個元素對應一種日誌數據類別;
映射表:用於記錄每個類別的日誌數據寫到內部快取空間與外置buffer的哪個子空間。
優選地,所述內部快取空間按照日誌數據的類別劃分為多個子空間;所述收集控制器管理每個子空間的寫指針,所述BE控制器管理每個子空間的讀指針。
所述外置快取buffer按照日誌數據的類別劃分為多個子空間,方便記錄不同類別的日誌;所述BE控制器管理每個子空間的讀指針與寫指針。
《一種嵌入式系統日誌收集裝置、記錄系統及方法》還提供了一種嵌入式系統日誌記錄系統,包括多個CPU、NVM和日誌緩衝buffer;所述NVM與所述日誌緩衝buffer連線;所述日誌緩衝buffer與其中一個用於管理日誌緩衝buffer、輸出與保存日誌的CPU連線;其還包括上述的日誌收集裝置;所述日誌收集裝置接收來自各CPU傳送的日誌數據,在每條日誌數據後添加時間戳信息,並將添加了時間戳信息的日誌數據輸出至所述日誌緩衝buffer,所述日誌緩衝buffer將所述添加了時間戳信息的日誌數據保存到所述NVM中;所述NVM與所述日誌收集裝置雙向通信。
優選地,《一種嵌入式系統日誌收集裝置、記錄系統及方法》的日誌記錄系統還包括外設輸出接口;所述日誌緩衝buffer與所述外設輸出接口連線;所述外設輸出接口與所述日誌收集裝置、用於管理日誌緩衝buffer、輸出與保存日誌的CPU雙向通信。
《一種嵌入式系統日誌收集裝置、記錄系統及方法》還提供了一種利用上述日誌記錄系統實現日誌記錄的方法,包括以下步驟:
1)各CPU構造日誌數據;
2)日誌收集裝置的預處理模組按照CPU配置的順序從各CPU獲取日誌數據;
3)對於單一屬性的日誌數據,將當前系統時間戳信息插入到所獲取的日誌數據後;對於多屬性的日誌數據,直接丟棄CPU配置的待丟棄的日誌數據,並將當前系統時間戳信息插入到留下的日誌數據後;或者忽略CPU的配置信息,將當前系統時間戳信息插入到日誌數據後;
4)預處理模組將經步驟3)處理後的數據寫到內部快取空間;
5)判斷是否丟棄內部快取空間內的數據,若是,返回步驟3);否則,進入步驟6);
6)採用下列方式中的一種保存日誌數據:將內部快取空間的日誌數據保存到外置buffer中,進入步驟7);後處理模組完成日誌數據的輸出,CPU將輸出的日誌數據的保存到NVM中,進入步驟8);內部快取空間完成日誌數據的保存,CPU完成日誌數據的輸出,進入步驟8);後處理模組直接將內部快取空間中的日誌數據傳送給外設輸出接口及寫到NVM中,進入步驟7);後處理模組先將內部快取空間中的日誌數據寫到外置buffer,然後在合適的時間,後處理模組從外置buffer空間中讀取日誌數據並將其輸出到外設輸出接口及NVM中,進入步驟7);
7)判斷是否丟棄日誌數據,若是,進入步驟8);否則,將日誌數據輸出到外設輸出接口,或者將日誌數據寫到NVM中;
8)結束。

有益效果

與2015年之前的技術相比,《一種嵌入式系統日誌收集裝置、記錄系統及方法》所具有的有益效果為:該發明將日誌功能從軟體剝離出來,交由日誌收集裝置實現,提高了日誌運行效率和整個嵌入式系統的工作效率,降低了整個嵌入式系統,尤其是多CPU的ASIC的製造成本;由LGM(日誌收集裝置)統一管理時間戳,降低了日誌解析的難度;LGM的主要工作方式、每個關鍵環節的運行策略均由CPU配置,提高了裝置本身及整個日誌記錄系統的靈活性,提高了該發明的適用性。

附圖說明

圖1為2015年之前的日誌運行流程圖;
圖2為《一種嵌入式系統日誌收集裝置、記錄系統及方法》日誌記錄系統框圖;
圖3為《一種嵌入式系統日誌收集裝置、記錄系統及方法》日誌運行方法流程圖;
圖4為《一種嵌入式系統日誌收集裝置、記錄系統及方法》實施例日誌記錄系統實現框圖;
圖5為《一種嵌入式系統日誌收集裝置、記錄系統及方法》實施例日誌訊息格式;
圖6為《一種嵌入式系統日誌收集裝置、記錄系統及方法》實施例ARB運行流程圖;
圖7為《一種嵌入式系統日誌收集裝置、記錄系統及方法》實施例GatherController運行流程圖;
圖8為《一種嵌入式系統日誌收集裝置、記錄系統及方法》實施例添加完時間戳後的日誌訊息格式示意圖;
圖9為圖9(a)和圖9(b)為《一種嵌入式系統日誌收集裝置、記錄系統及方法》實施例BEController運行流程示意圖。

技術領域

《一種嵌入式系統日誌收集裝置、記錄系統及方法》涉及一種嵌入式系統日誌收集裝置、記錄系統及方法。

權利要求

1.一種嵌入式系統日誌收集裝置,其特徵在於,包括:預處理模組:負責收集CPU的日誌數據並在每條日誌數據後添加時間戳信息;後處理模組:負責將預處理模組處理後的日誌數據保存到外置快取buffer、或者直接輸出到外設輸出接口、或者保存到NVM中。
2.根據權利要求1所述的嵌入式系統日誌收集裝置,其特徵在於,還包括:內部快取空間:用於暫存由預處理模組處理後的日誌數據。
3.根據權利要求2所述的嵌入式系統日誌收集裝置,其特徵在於,所述預處理模組包括:仲裁器:用於為收集控制器從哪一組FIFO中取數據提供仲裁;FIFO:用於快取CPU傳送的日誌數據;收集控制器:用於從FIFO里取日誌數據;根據記錄了不同屬性日誌處理策略的屬性表確定是否丟棄日誌數據;向待處理的日誌數據中插入時間戳,並將插入時間戳後的日誌數據寫到對應的內部快取空間中,同時管理內部快取空間的各子空間和FIFO的狀態。
4.根據權利要求3所述的嵌入式系統日誌收集裝置,其特徵在於,所述後處理模組包括BE控制器和SRAM控制器,所述BE控制器通過SRAM控制器將內部快取空間的日誌數據寫到外置buffer中,通過SRAM控制器將外置Buffer的日誌數據讀出並送給外設輸出接口,同時所述BE控制器負責外置快取buffer空間的管理。
5.根據權利要求4所述的嵌入式系統日誌收集裝置,其特徵在於,所述日誌收集裝置還包括:屬性表:用於記錄不同屬性日誌數據的處理策略,所述屬性表包括多個大小、格式相同的元素,每個元素對應一種日誌數據類別;映射表:用於記錄每個類別的日誌數據寫到內部快取空間與外置buffer的哪個子空間。
6.根據權利要求5所述的嵌入式系統日誌收集裝置,其特徵在於,所述內部快取空間按照日誌數據的類別劃分為多個子空間;所述收集控制器管理每個子空間的寫指針,所述BE控制器管理每個子空間的讀指針。
7.根據權利要求6所述的嵌入式系統日誌收集裝置,其特徵在於,所述外置快取buffer按照日誌數據的類別劃分為多個子空間;所述BE控制器管理每個子空間的讀指針與寫指針。
8.一種嵌入式系統日誌記錄系統,包括多個CPU、NVM和日誌緩衝buffer;所述NVM與所述日誌緩衝buffer連線;所述日誌緩衝buffer與其中一個用於管理日誌緩衝buffer、輸出與保存日誌的CPU連線;其特徵在於,還包括權利要求1~7之一所述的日誌收集裝置;所述日誌收集裝置接收來自各CPU傳送的日誌數據,在每條日誌數據後添加時間戳信息,並將添加了時間戳信息的日誌數據輸出至所述日誌緩衝buffer,所述日誌緩衝buffer將所述添加了時間戳信息的日誌數據保存到所述NVM中;所述NVM與所述日誌收集裝置雙向通信。
9.根據權利要求8所述的嵌入式系統日誌記錄系統,其特徵在於,還包括外設輸出接口;所述日誌緩衝buffer與所述外設輸出接口連線;所述外設輸出接口與所述日誌收集裝置、用於管理日誌緩衝buffer、輸出與保存日誌的CPU雙向通信。
10.根據權利要求9所述的嵌入式系統日誌記錄系統,其特徵在於,所述外設輸出接口為串口、並口、網口中的一種。
11.根據權利要求10所述的嵌入式系統日誌記錄系統,其特徵在於,所述NVM為NORFlash或NANDFlash。
12.一種利用權利要求8~11之一所述的裝置實現日誌記錄的方法,其特徵在於,包括以下步驟:
1)各CPU構造日誌數據;
2)日誌收集裝置的預處理模組按照CPU配置的順序從各CPU獲取日誌數據;
3)對於單一屬性的日誌數據,將當前系統時間戳信息插入到所獲取的日誌數據後;對於多屬性的日誌數據,直接丟棄CPU配置的待丟棄的日誌數據,並將當前系統時間戳信息插入到留下的日誌數據後;或者忽略CPU的配置信息,將當前系統時間戳信息插入到日誌數據後;
4)預處理模組將經步驟3)處理後的數據寫到內部快取空間;
5)判斷是否丟棄內部快取空間內的數據,若是,返回步驟3);否則,進入步驟6);
6)採用下列方式中的一種保存日誌數據:將內部快取空間的日誌數據保存到外置buffer中,進入步驟7);後處理模組完成日誌數據的輸出,CPU將輸出的日誌數據的保存到NVM中,進入步驟8);內部快取空間完成日誌數據的保存,CPU完成日誌數據的輸出,進入步驟8);後處理模組直接將內部快取空間中的日誌數據傳送給外設輸出接口及寫到NVM中,進入步驟7);後處理模組先將內部快取空間中的日誌數據寫到外置buffer,然後在合適的時間,後處理模組從外置buffer空間中讀取日誌數據並將其輸出到外設輸出接口及NVM中,進入步驟7);
7)判斷是否丟棄日誌數據,若是,進入步驟8);否則,將日誌數據輸出到外設輸出接口,或者將日誌數據寫到NVM中;
8)結束。

實施方式

如圖2所示,《一種嵌入式系統日誌收集裝置、記錄系統及方法》一實施例包括多個CPU、NVM和日誌緩衝buffer、日誌收集裝置;所述NVM與所述日誌緩衝buffer連線;所述日誌緩衝buffer與其中一個用於管理日誌緩衝buffer、輸出與保存日誌的CPU連線;所述日誌收集裝置接收來自各CPU傳送的日誌數據,在每條日誌數據後添加時間戳信息,並將添加了時間戳信息的日誌數據輸出至所述日誌緩衝buffer,所述日誌緩衝buffer將所述添加了時間戳信息的日誌數據保存到所述NVM中;所述NVM與所述日誌收集裝置雙向通信。
LGM:LogGatheringModule,日誌收集裝置,接收來自各CPU傳送的日誌數據,記錄、管理、輸出與保存這些日誌數據;
CPU_x:系統內的各CPU;CPU_1負責配置、管理LGM,還可承擔日誌緩衝buffer管理、日誌輸出與保存的功能;
Buffer:快取日誌用空間,LGM將處理後來自各CPU的日誌數據保存到該模組中;
NVM:非易失性介質,用於保存最終的日誌數據,包括但不限於NORFlash、NANDFlash;
IF:用於輸出日誌數據的外設輸出接口,包括但不限於串口、並口與網口。
LGM包括以下部分:
預處理模組:負責收集各個CPU的日誌數據並在每條日誌數據後添加時間戳信息;將需要處理的日誌數據保存到內部快取子空間;
內部快取空間:暫存由預處理模組處理後的日誌數據;儘量保證LGM內部處理的高並行性;
後處理模組:負責將內部快取空間中的日誌數據保存到外置快取buffer中、直接輸出到外設輸出接口、保存到NVM中。
實際運行中,不同業務場景下,整個系統的日誌實際上具備不同的屬性。包括但不限於以下幾種:優先權:不同CPU間以及不同軟體模組間日誌重要程度是不一樣的;所屬模組:嵌入式系統的軟體,通常會被劃分成多個模組;各自模組的日誌往往需要添加自身所屬模組的信息。
在嵌入式系統開發、調試過程中,不同屬性的日誌,通常會有不同的處理要求。如對於優先權高,即關鍵日誌,需要保證它的完整性。當資源不足或系統負載過重時,可以僅處理優先權高的日誌,而丟棄優先權低的日誌。在實際開發調試中,各模組的開發往往是分階段的。在某個階段,關注的是一個或某幾個模組的日誌。此時,可以集中資源保證所要關注模組的日誌,而丟棄其它不需要關注的日誌。
CPU記錄日誌的過程主要包括如下步驟:
1)產生日誌記錄需求時,構造所需日誌數據;CPU不需要插入時間戳;構造的日誌數據包含日誌的屬性信息。
2)將上一步得到的日誌數據傳送給LGM。
3)日誌記錄過程結束,各CPU可執行其它任務。
LGM中的預處理模組按照CPU配置的順序從各CPU獲取日誌數據。獲取日誌數據後,LGM將當前系統時間戳信息插入到獲取的日誌數據後面,並將日誌數據保存到LGM內部緩衝空間中。LGM支持按照CPU配置的策略來處理不同屬性的日誌。LGM的工作模式分為兩種:
單一屬性:忽略日誌數據的屬性信息。LGM不加區分的按照處理的順序將日誌數據保存到內部快取空間中。
多屬性:根據日誌屬性處理日誌數據。這種模式下,LGM內部緩衝空間按照屬性分為多個緩衝子空間。具體的處理方式可分為兩種。第一種,CPU配置LGM哪些日誌數據需要丟棄;對於需要丟棄的日誌數據,直接丟棄;對於需要後續處理的日誌數據,由CPU配置LGM將一種或幾種屬性的日誌保存到某個唯一的快取子空間中。第二種,忽略CPU配置信息(丟棄還是保留),同第一種方式中需要保留日誌數據的處理一樣,將日誌數據保存到對應的內部快取子空間中。
對於日誌數據管理、輸出與保存,由LGM中的後處理模組完成。《一種嵌入式系統日誌收集裝置、記錄系統及方法》支持兩種如下所示的方式。
非託管方式:由CPU(如圖2中的CPU_1)負責日誌數據的輸出、保存與相應的管理。LGM的後處理模組僅需將內部快取空間的日誌數據保存到外置buffer中。日誌數據的輸出與保存由CPU完成。後處理模組需要輔助CPU完成外置buffer空間的管理。外置Buffer可用空間低於某個閾值(由CPU配置)時,後處理模組產生專門的中斷給CPU,依據CPU配置繼續還是暫停向外置buffer中寫日誌數據。CPU收到該中斷後,需要立即將外置buffer中日誌數據輸出到外設輸出接口,保存到NVM中。CPU還可在其空閒時處理外置buffer的數據,還可以通過定時器,周期性的處理外置buffer的數據。
半託管方式:分為兩種。一種是LGM完成日誌數據的輸出,CPU完成日誌數據的保存(保存到NVM);另一種是LGM完成日誌數據的保存,CPU完成日誌數據的輸出。LGM的後處理模組將內部快取空間中的日誌數據寫到外置buffer中,同時直接輸出或將日誌保存到NVM。
全託管方式:由LGM獨自完成日誌數據的輸出、保存及相應的管理。CPU不參與。具體實現方式又可分為兩種。一種是無外置buffer。LGM的後處理模組直接將內部快取空間中的日誌數據直接傳送給外設輸出接口及寫到NVM中。另一種是有外置buffer。LGM的後處理模組先將內部快取空間中的日誌數據寫到外置buffer。然後在合適的時間,後處理模組從外置buffer空間中讀取日誌數據並將其輸出到外設輸出接口及NVM。
多屬性模式下,在有外置buffer的情況下,外置buffer將會按照日誌屬性被分成不同的buffer子空間。這些子空間與內部快取子空間一一對應。後處理模組將某個內部快取子空間的日誌數據寫到與之對應的外置buffer子空間中。
無論哪種方式,LGM的後處理模組按照CPU配置的策略來處理內部快取模組中不同屬性的日誌數據。對於需要丟棄的日誌,則直接丟棄;對於非丟棄的日誌,後處理模組才從內部快取中讀取出來,送往後續處理模組。
在有外置buffer情況下,對於半託管方式及全託管方式,後處理模組按照CPU配置的策略從外置buffer讀取數據。對於需要丟棄的日誌數據,直接丟棄;對於需要非丟棄的日誌數據,才從外置buffer里讀取數據。
在《一種嵌入式系統日誌收集裝置、記錄系統及方法》中,日誌運行的流程如圖3所示。
以下結合圖4進一步闡述《一種嵌入式系統日誌收集裝置、記錄系統及方法》的具體實現過程:《一種嵌入式系統日誌收集裝置、記錄系統及方法》不需要將日誌數據保存到NVM中;日誌數據通過UART輸出;每條日誌具有兩種屬性。一種是產生該日誌的CPUID,另一種是優先權,共兩級;整個系統中僅有2個CPU;使用上述方案說明中的全委託方式,需要外置buffer。這樣做的好處是提高整個系統的工作效率。
圖4中,LGM主要模組位於粗虛線框內。CPU_1、CPU_2為系統內的兩個CPU。由CPU_1負責LGM與UART模組的配置與初始化。RTC模組為LGM提供時間戳信息。LogDataRAM為LGM快取日誌數據的內部快取空間。Buffer為保存日誌數據外置buffer。
AtributeTable,屬性表,記錄了不同屬性日誌的處理策略,由CPU_1配置(運行過程中可動態改變)。屬性表由多個相同大小、格式的元素組成。每個元素與一種日誌類別一一對應。每個元素大小為1Byte,2015年前其值有兩種,0或1。為0,表示繼續處理對應的日誌,為1,表示直接丟棄對應的日誌。元素的個數為日誌類別的個數。對於當前實施例,兩種屬性,共4種類別。為每種類別的日誌編號,分別為1、2、3與4。
MapTable,映射表,記錄了每個類別的日誌需要寫到內部快取空間與外置buffer的哪個子空間。當前實施例中,每個子空間僅保存一種類別的日誌。則內部快取空間與外置buffer被劃分別被分成4個子空間(子空間依次編號為1、2、3、4)。映射表由多個元素組成。每個元素與一種類別的日誌(一個日誌類別編號)一一對應。每個元素的取值為某個子空間的編號。
LGM的預處理模組主要由圖中的ARB(仲裁器)、FIFO及GatherController(收集控制器)組成。FIFO用於快取CPU向LGM傳送的日誌數據。共兩組FIFO,每個CPU使用一種FIFO。為每一組FIFO分配一個FIFOID。預處理模組使用FIFOID來管理每一組FIFO。ARB為GatherController從哪一組FIFO里取數據提供仲裁。仲裁策略由CPU_1配置。可使用最簡單的round-robin策略,即GatherController循環輪流的從FIFO里取數據。
GatherController為整個預處理模組的核心模組,其主要功能為:從FIFO里獲取日誌數據;對於不同屬性日誌,根據屬性表的值來確定是否丟棄;對於需要處理的日誌,向日誌中插入時間戳;將插入時間戳後的日誌數據寫到對應的LogDataRAM的子空間中;負責LogDataRAM各子空間的管理;負責FIFO狀態(空或滿)的管理;
LGM的後處理模組主要由上圖中的BEController、SRAMController組成。SRAMController負責外置Buffer(用SRAM實現)數據的讀寫控制。BEController為後處理模組的核心模組。其主要功能為:通過SRAMController將LogDataRAM的日誌數據寫到外置buffer中;通過SRAMController將外置Buffer的日誌數據讀出並送到給UART輸出;負責外置Buffer空間的管理。
LogDataRAM,用於快取日誌數據。按照日誌的類別被劃分成多個子空間。這些子空間被循環使用,其起始地址、大小信息由CPU_1配給LGM。GatherController管理每個子空間的寫指針,BEController管理每個子空間的讀指針。
Buffer,用於保存日誌數據。按照日誌的類別被劃分成多個子空間。這些子空間被循環使用,其起始地址、大小信息由CPU_1配給LGM。BEController管理每個子空間的讀指針與寫指針。
具體實施時,產生日誌的CPU需要按照一定的格式構造日誌數據。《一種嵌入式系統日誌收集裝置、記錄系統及方法》將構造後的日誌數據稱為日誌訊息。日誌訊息的格式如圖5所示。
圖5顯示了一條日誌訊息的內容。包含多個Dword,分為兩部分:MessageHead與MessageData。MessageHead包含了如下欄位:
Tag:為一條日誌訊息的唯一標記,方便調試。
Cnt:指示MessageData總共有多少Dword的數據。
CPUID:系統為每個CPU分配了唯一的ID。為日誌的一種屬性,用於表示一條日誌訊息屬於哪個CPU。每個CPUID對應一組LGM預處理模組的FIFO。一個CPUID對應一個FIFOID。
Priority:表示日誌的優先權。為日誌的另一種屬性。共有兩種取值:0表示高優先權;1表示低優先權。具體取值以產生日誌的需求定。
MessageData:為CPU真正需要保存或輸出的日誌信息,由多個Dword組成。
具體實施時,ARB採用Round-Robin的方式,為GatherController輸出這次要處理的FIFOID。其運行可使用圖6所示的流程說明。
復位(包括上電復位、硬復位與軟體復位)時,整個ARB模組進入初始狀態,模組內各暫存器值被賦成默認值。GatherController需要去處理FIFO中的日誌訊息時,會發獲取此次要處理的FIFOID的請求給ARB。ARB收到該請求後,計算所需的FIFOID。模組內使用暫存器REG_FIFO_ID保存上一次返回給GatherController的FIFOID。計算FIFOID的公式為FIFOID=(REG_FIFO_ID+1)%M。其中M為系統內CPU的個數(等於2)。接著,ARB將計算後得到的FIFOID返回給GatherController,進入初始狀態等待回響下一次GatherController的請求。
具體實施時,FIFO可用現成的IP實現。LGM使用的專門的暫存器來保存FIFO的狀態,以供CPU查詢。
具體實施時,RTC為LGM提供時間戳信息。可直接復用嵌入式系統內的timer模組。
具體實施時,GatherController可使用FSM實現圖7所示流程的功能。
在整個模組開始工作時,CPU_1需要完成屬性表與映射表,LogDataRAM各子空間的配置(包括大小、起始地址)。復位時,整個模組進入初始狀態。該模組首先向ARB傳送請求以獲得本次需要處理的FIFOID。得到FIFOID後,判斷對應的FIFO是否有日誌訊息。若無,則回到初始狀態,開始下一次處理。若有,則讀取日誌訊息的Head,根據MessageHead中Cnt欄位的值從FIFO讀完整個日誌訊息。根據MessageHead中的屬性欄位,訪問屬性表得到該日誌訊息的處理策略。假設屬性欄位值為2,則訪問屬性表的第二個元素的值。若值為1,即需要丟棄,則回到初始狀態開始下一次處理。若值為0,需繼續處理,根據RTC的值在日誌訊息後面添加時間戳(8Bytes),如圖8所示。
再根據屬性,訪問映射表獲得與該條日誌數據對應的LogDataRAM子空間的編號,進而或取對應子空間的狀態。若空間不足(不能保存整條日誌數據),則等待有足夠的空間可用。若足夠,則將日誌數據寫到子空間,同時更新子空間的寫指針。至此,預處理模組完成了一條日誌訊息的處理,進入初始狀態,開始下一次處理。
對於後處理模組,具體實施時,SRAMController可使用2015年之前的IP。
具體實施時,BEController使用FSM實現圖9(a)和圖9(b)所示流程的功能。
對於BEController,主要功能是完成日誌數據的保存(將LogDataRAM的日誌寫到外置Buffer)與將日誌數據輸出到UART。對應的有兩個流程,如圖9(a)和圖9(b)所示。在BEController內部,這兩個流程是並發執行的。
BEController按照一定的順序(可以是按照子空間編號的順序)處理各子空間的日誌數據。對於當前處理的子空間,根據子空間與屬性的一一映射關係得到該子空間的日誌的屬性。根據屬性訪問屬性表,獲得處理策略。若是丟棄,則處理下一個子空間的數據。若需要處理,則根據子空間編號獲取對應外置Buffer子空間的狀態。若子空間有可用空間,則將日誌數據寫到外置Buffer中,同時更新LogDataRAM子空間的讀指針與外置Buffer子空間的寫指針。當LogDataRAM子空間的數據處理完後,則處理下一個LogDataRAM子空間的數據。
日誌的輸出流程與日誌保存流程大致相同。以一個外置Buffer子空間為單位,依次輸出外置Buffer子空間的日誌數據。若需要輸出日誌數據,首先判斷UART是否可以接收數據。若不能,則等待UART可以接受數據。若可以,則從外置Buffer里讀取數據並將其傳送給UART。傳送時,忽略MessageHead的值。每輸出一個Dword的日誌數據後,更新外置Buffer子空間的讀指針。
具體實施時,需要的其它必要模組,如時鐘模組、暫存器接口、匯流排通信模組等,都能以通用技術實現。這些模組對於《一種嵌入式系統日誌收集裝置、記錄系統及方法》的實施無特殊之處,因此這裡不做贅述。
具體實施時,各資源的配置,如FIFO深度、LogDataRAM及外置Buffer的大小由具體實施的需求與資源總體情況來定。

榮譽表彰

2020年7月14日,《一種嵌入式系統日誌收集裝置、記錄系統及方法》獲得第二十一屆中國專利獎優秀獎。

相關詞條

熱門詞條

聯絡我們