TD-LTE多模基帶平臺ARM子系統的運行流程控制和異常定位分析
引言
本文引用地址:http://www.104case.com/article/148157.htm隨著多核產品的日益普及,對跟蹤調試系統解決方案的性能要求也愈來愈高。ARM公司針對復雜片上系統(SoC)設計推出了高度可配置的跟蹤調試解決方案ARMCoreSightSoC,它滿足了軟件開發人員在SoC設計方面需要更高可視性的要求。在嵌入式應用系統復雜性越來越高的今天,跟蹤調試技術在整個系統開發過程中所占的比重也越來越大。因此,擁有高效、強大的跟蹤調試技術可以大大減少整個系統的開發時間,縮短產品面市時間,減輕系統開發的工作量。
在TD-LTE多模基帶平臺的開發中,既要滿足多種模式(TD-LTE、TD-SCDMA和GSM)下跟蹤技術的一致性,又要滿足TD-LTE的高效率要求,更要保證跟蹤信息的有序性、正確性和實時性,這對跟蹤技術提出了更高的要求。通過對原始跟蹤技術方案與新跟蹤方案的性能進行對比分析,來選擇更加適合TD-LTE多模基帶平臺的跟蹤軟件技術。
1 總體概述
在多模終端的開發中,跟蹤技術對終端的性能有著至關重要的作用。由于本項目是多模單帶芯片的開發,多種系統的模式切換對微處理器的要求較高,鑒于ARM11系列處理器具有超強的性能,采用ARM新指令架構——ARMv6設計實現,故本項目采用ARM1176JZ內核。
ARMv6架構通過以下幾點來增強處理器的性能:
①多媒體處理擴展,使MPEG4編碼/解碼速度和音頻處理速度加快一倍;
②增強的Cache結構,實地址Cache4減少Cache的刷新和重載,減少上下文切換的開銷;
③增強的異常和中斷處理,使實時任務的處理更加迅速;
④支持Unaligned和Mixed-endian數據訪問,使數據共享、軟件移植更簡單,也有利于節省存儲器空間。
在多模芯片的開發中,本項目將跟蹤技術作為芯片軟件開發中的一個小模塊來處理,其系統結構如圖1所示。

當其他模塊有跟蹤信息打印時,其他模塊調用TRACE模塊提供的打印函數。TRACE模塊接收到打印信息后,通過設置打印參數來判斷是否需要把這些打印信息發送到PC機。如果需要,則通過UART串口將打印信息傳送到PC機的TRACE跟蹤軟件,TRACE模塊對其進行解碼之后,通過解碼軟件顯示出來。
2 原始跟蹤方案
2.1 緩存管理機制
原方案中的緩存管理機制采用備份緩存管理機制,采用含跟蹤頭和跟蹤信息的跟蹤信息幀格式,將跟蹤信息寫入一個大小為128 KB的全局跟蹤信息緩存中。為避免在任務切換頻繁時,當前任務被高優先級任務打斷造成數據丟失,申請一個16 KB的備份緩存用于存放高優先級任務跟蹤信息。若當前跟蹤源在進行寫人操作,高優先級任務調用跟蹤接口,當前跟蹤源的任務就被搶占,則將高級任務的跟蹤信息寫入備份緩存中,當前跟蹤源繼續進行當前未完成的寫操作。
每次寫完當前跟蹤信息,檢查備份緩存中是否有數據,若有,則將備份緩存中的跟蹤信息拷回至全局跟蹤信息緩存中,從而保證全局跟蹤信息緩存中跟蹤信息的連續性,原始方案跟蹤緩存場景圖如圖2所示。在本方案中,緩存機制內部采用svnsprintf函數將跟蹤信息寫入緩存,該函數可以滿足跟蹤源打印多個變量的值,通過遍歷參數列表,找出跟蹤源需要打印參數的類型和個數,這樣跟蹤源在打印動態臨時字符串時使用統一的跟蹤接口,使其他模塊的跟蹤源在使用跟蹤接口時更加方便。

2.2 跟蹤控制機制
原始方案的跟蹤通過類別和進程進行控制,進程的控制包括變量、主函數和子函數。PC端通過跟蹤控制工具發送相應的AT命令,在終端的內存中讀取相應的設置值。若讀取的設置值與跟蹤源的值相等,則打印出該條跟蹤;若不相等,則丟棄本條跟蹤。在本方案中所有的跟蹤控制都是在跟蹤接口內部,這樣對各種跟蹤信息的控制更加明確和具體,通過switch…case語句對跟蹤類型進行判斷,從而決定屏蔽跟蹤信息還是打印跟蹤信息。原始跟蹤控制圖如圖3所示,每種模式的跟蹤控制都采用同樣的機制,圖3中以TDS模式下的跟蹤控制為例進行介紹。

2.3 傳輸控制機制
實時跟蹤系統通過串口在PC端和ARM子系統之間進行通信,采用DMA總線控制器進行跟蹤信息搬移。DMA是一種不經過ARM處理器的CPU,可直接從內存中存取數據的數據交換模式。在DMA模式下,CPU只需向DMA總線控制器下達指令,就可使其處理數據的傳送,接收數據傳送完畢的反饋信息,從而大大降低了CPU資源占有率。傳輸控制單元采取DMA同步中斷發送跟蹤信息,每次以等長字節傳輸,將跟蹤信息搬移至串口發送寄存器中,再通過配置串口發送寄存器,將跟蹤信息發送至PC端解析顯示單元。
3 優化后跟蹤方案
3.1 新跟蹤緩存的管理
本設計方案采用的緩存機制是利用所有跟蹤函數在進入跟蹤時,均能夠確切知道當前跟蹤信息所需存儲空間長度的特點,為當前跟蹤信息預留出所需要的存儲空間。當低優先級任務的跟蹤信息被高優先級任務跟蹤信息搶占時,內存中已經為低優先級任務的跟蹤信息預留了存儲空間,不會導致跟蹤信息丟失和錯亂的情況,新緩存機制圖如圖4所示。

通過維護兩個寫索引和一個全局讀索引來管理緩存,其中兩個寫索引分別為全局寫索引和當前寫索引,全局寫索引用來與全局讀索引進行匹配,通過這兩個索引來計算緩存的剩余空間和已用空間,從而判斷何時發送和寫入跟蹤信息;而當前寫索引的作用就是為當前的跟蹤信息預留空間。在本設計中摒棄了svnprintf函數,采用memcpy函數直接將跟蹤信息寫入緩存中,并且采用固定參數的跟蹤接口,跟蹤源根據跟蹤信息的不同需求,調用相應變量的跟蹤接口。
評論