TD-LTE多?;鶐脚_(tái)ARM子系統(tǒng)的運(yùn)行流程控制和異常定位分析
引言
本文引用地址:http://www.ex-cimer.com/article/148157.htm隨著多核產(chǎn)品的日益普及,對(duì)跟蹤調(diào)試系統(tǒng)解決方案的性能要求也愈來(lái)愈高。ARM公司針對(duì)復(fù)雜片上系統(tǒng)(SoC)設(shè)計(jì)推出了高度可配置的跟蹤調(diào)試解決方案ARMCoreSightSoC,它滿(mǎn)足了軟件開(kāi)發(fā)人員在SoC設(shè)計(jì)方面需要更高可視性的要求。在嵌入式應(yīng)用系統(tǒng)復(fù)雜性越來(lái)越高的今天,跟蹤調(diào)試技術(shù)在整個(gè)系統(tǒng)開(kāi)發(fā)過(guò)程中所占的比重也越來(lái)越大。因此,擁有高效、強(qiáng)大的跟蹤調(diào)試技術(shù)可以大大減少整個(gè)系統(tǒng)的開(kāi)發(fā)時(shí)間,縮短產(chǎn)品面市時(shí)間,減輕系統(tǒng)開(kāi)發(fā)的工作量。
在TD-LTE多模基帶平臺(tái)的開(kāi)發(fā)中,既要滿(mǎn)足多種模式(TD-LTE、TD-SCDMA和GSM)下跟蹤技術(shù)的一致性,又要滿(mǎn)足TD-LTE的高效率要求,更要保證跟蹤信息的有序性、正確性和實(shí)時(shí)性,這對(duì)跟蹤技術(shù)提出了更高的要求。通過(guò)對(duì)原始跟蹤技術(shù)方案與新跟蹤方案的性能進(jìn)行對(duì)比分析,來(lái)選擇更加適合TD-LTE多模基帶平臺(tái)的跟蹤軟件技術(shù)。
1 總體概述
在多模終端的開(kāi)發(fā)中,跟蹤技術(shù)對(duì)終端的性能有著至關(guān)重要的作用。由于本項(xiàng)目是多模單帶芯片的開(kāi)發(fā),多種系統(tǒng)的模式切換對(duì)微處理器的要求較高,鑒于A(yíng)RM11系列處理器具有超強(qiáng)的性能,采用ARM新指令架構(gòu)——ARMv6設(shè)計(jì)實(shí)現(xiàn),故本項(xiàng)目采用ARM1176JZ內(nèi)核。
ARMv6架構(gòu)通過(guò)以下幾點(diǎn)來(lái)增強(qiáng)處理器的性能:
①多媒體處理擴(kuò)展,使MPEG4編碼/解碼速度和音頻處理速度加快一倍;
②增強(qiáng)的Cache結(jié)構(gòu),實(shí)地址Cache4減少Cache的刷新和重載,減少上下文切換的開(kāi)銷(xiāo);
③增強(qiáng)的異常和中斷處理,使實(shí)時(shí)任務(wù)的處理更加迅速;
④支持Unaligned和Mixed-endian數(shù)據(jù)訪(fǎng)問(wèn),使數(shù)據(jù)共享、軟件移植更簡(jiǎn)單,也有利于節(jié)省存儲(chǔ)器空間。
在多模芯片的開(kāi)發(fā)中,本項(xiàng)目將跟蹤技術(shù)作為芯片軟件開(kāi)發(fā)中的一個(gè)小模塊來(lái)處理,其系統(tǒng)結(jié)構(gòu)如圖1所示。
當(dāng)其他模塊有跟蹤信息打印時(shí),其他模塊調(diào)用TRACE模塊提供的打印函數(shù)。TRACE模塊接收到打印信息后,通過(guò)設(shè)置打印參數(shù)來(lái)判斷是否需要把這些打印信息發(fā)送到PC機(jī)。如果需要,則通過(guò)UART串口將打印信息傳送到PC機(jī)的TRACE跟蹤軟件,TRACE模塊對(duì)其進(jìn)行解碼之后,通過(guò)解碼軟件顯示出來(lái)。
2 原始跟蹤方案
2.1 緩存管理機(jī)制
原方案中的緩存管理機(jī)制采用備份緩存管理機(jī)制,采用含跟蹤頭和跟蹤信息的跟蹤信息幀格式,將跟蹤信息寫(xiě)入一個(gè)大小為128 KB的全局跟蹤信息緩存中。為避免在任務(wù)切換頻繁時(shí),當(dāng)前任務(wù)被高優(yōu)先級(jí)任務(wù)打斷造成數(shù)據(jù)丟失,申請(qǐng)一個(gè)16 KB的備份緩存用于存放高優(yōu)先級(jí)任務(wù)跟蹤信息。若當(dāng)前跟蹤源在進(jìn)行寫(xiě)人操作,高優(yōu)先級(jí)任務(wù)調(diào)用跟蹤接口,當(dāng)前跟蹤源的任務(wù)就被搶占,則將高級(jí)任務(wù)的跟蹤信息寫(xiě)入備份緩存中,當(dāng)前跟蹤源繼續(xù)進(jìn)行當(dāng)前未完成的寫(xiě)操作。
每次寫(xiě)完當(dāng)前跟蹤信息,檢查備份緩存中是否有數(shù)據(jù),若有,則將備份緩存中的跟蹤信息拷回至全局跟蹤信息緩存中,從而保證全局跟蹤信息緩存中跟蹤信息的連續(xù)性,原始方案跟蹤緩存場(chǎng)景圖如圖2所示。在本方案中,緩存機(jī)制內(nèi)部采用svnsprintf函數(shù)將跟蹤信息寫(xiě)入緩存,該函數(shù)可以滿(mǎn)足跟蹤源打印多個(gè)變量的值,通過(guò)遍歷參數(shù)列表,找出跟蹤源需要打印參數(shù)的類(lèi)型和個(gè)數(shù),這樣跟蹤源在打印動(dòng)態(tài)臨時(shí)字符串時(shí)使用統(tǒng)一的跟蹤接口,使其他模塊的跟蹤源在使用跟蹤接口時(shí)更加方便。
2.2 跟蹤控制機(jī)制
原始方案的跟蹤通過(guò)類(lèi)別和進(jìn)程進(jìn)行控制,進(jìn)程的控制包括變量、主函數(shù)和子函數(shù)。PC端通過(guò)跟蹤控制工具發(fā)送相應(yīng)的AT命令,在終端的內(nèi)存中讀取相應(yīng)的設(shè)置值。若讀取的設(shè)置值與跟蹤源的值相等,則打印出該條跟蹤;若不相等,則丟棄本條跟蹤。在本方案中所有的跟蹤控制都是在跟蹤接口內(nèi)部,這樣對(duì)各種跟蹤信息的控制更加明確和具體,通過(guò)switch…case語(yǔ)句對(duì)跟蹤類(lèi)型進(jìn)行判斷,從而決定屏蔽跟蹤信息還是打印跟蹤信息。原始跟蹤控制圖如圖3所示,每種模式的跟蹤控制都采用同樣的機(jī)制,圖3中以TDS模式下的跟蹤控制為例進(jìn)行介紹。
2.3 傳輸控制機(jī)制
實(shí)時(shí)跟蹤系統(tǒng)通過(guò)串口在PC端和ARM子系統(tǒng)之間進(jìn)行通信,采用DMA總線(xiàn)控制器進(jìn)行跟蹤信息搬移。DMA是一種不經(jīng)過(guò)ARM處理器的CPU,可直接從內(nèi)存中存取數(shù)據(jù)的數(shù)據(jù)交換模式。在DMA模式下,CPU只需向DMA總線(xiàn)控制器下達(dá)指令,就可使其處理數(shù)據(jù)的傳送,接收數(shù)據(jù)傳送完畢的反饋信息,從而大大降低了CPU資源占有率。傳輸控制單元采取DMA同步中斷發(fā)送跟蹤信息,每次以等長(zhǎng)字節(jié)傳輸,將跟蹤信息搬移至串口發(fā)送寄存器中,再通過(guò)配置串口發(fā)送寄存器,將跟蹤信息發(fā)送至PC端解析顯示單元。
3 優(yōu)化后跟蹤方案
3.1 新跟蹤緩存的管理
本設(shè)計(jì)方案采用的緩存機(jī)制是利用所有跟蹤函數(shù)在進(jìn)入跟蹤時(shí),均能夠確切知道當(dāng)前跟蹤信息所需存儲(chǔ)空間長(zhǎng)度的特點(diǎn),為當(dāng)前跟蹤信息預(yù)留出所需要的存儲(chǔ)空間。當(dāng)?shù)蛢?yōu)先級(jí)任務(wù)的跟蹤信息被高優(yōu)先級(jí)任務(wù)跟蹤信息搶占時(shí),內(nèi)存中已經(jīng)為低優(yōu)先級(jí)任務(wù)的跟蹤信息預(yù)留了存儲(chǔ)空間,不會(huì)導(dǎo)致跟蹤信息丟失和錯(cuò)亂的情況,新緩存機(jī)制圖如圖4所示。
通過(guò)維護(hù)兩個(gè)寫(xiě)索引和一個(gè)全局讀索引來(lái)管理緩存,其中兩個(gè)寫(xiě)索引分別為全局寫(xiě)索引和當(dāng)前寫(xiě)索引,全局寫(xiě)索引用來(lái)與全局讀索引進(jìn)行匹配,通過(guò)這兩個(gè)索引來(lái)計(jì)算緩存的剩余空間和已用空間,從而判斷何時(shí)發(fā)送和寫(xiě)入跟蹤信息;而當(dāng)前寫(xiě)索引的作用就是為當(dāng)前的跟蹤信息預(yù)留空間。在本設(shè)計(jì)中摒棄了svnprintf函數(shù),采用memcpy函數(shù)直接將跟蹤信息寫(xiě)入緩存中,并且采用固定參數(shù)的跟蹤接口,跟蹤源根據(jù)跟蹤信息的不同需求,調(diào)用相應(yīng)變量的跟蹤接口。
評(píng)論