最近接觸到了一些產(chǎn)線的Test的東西,然后發(fā)現(xiàn)這里面有一些DFX的相關(guān)東西。
之前在梳理整個(gè)安全領(lǐng)域全景圖的時(shí)候,也提到了調(diào)試安全。
林林種種原因讓我打算來學(xué)習(xí)一下DFX相關(guān)的內(nèi)容,那自然就繞不開Coresight。
今天就一起來看看Coresight吧,最近喜歡上了畫圖來整理自己的思路。
縮略詞
CoreSight Soc-400一個(gè)完整的調(diào)試和跟蹤解決方案,包括如下組件:
?控制和接入組件:
?DAP(Debug Access Port):用來連接外部硬件調(diào)試工具的物理接口,允許外部調(diào)試工具訪問芯片上CPU、CoreSight、DDR等。
?ECT(Embedded Cross Trigger)
?跟蹤數(shù)據(jù)源:跟蹤源是CoreSight中用于產(chǎn)生跟蹤信息的組件。每個(gè)跟蹤源組件都會(huì)產(chǎn)生一種格式的信息,最終可以組合在一起并且通過跟蹤鏈接到輸出端口。
? PTM(Program Trace Macrocell):監(jiān)控處理器運(yùn)行狀況,將處理器執(zhí)行過的指令信息進(jìn)行壓縮傳輸。
? STM(System Trace Macrocell):捕捉系統(tǒng)的事件信息并以獲取數(shù)據(jù)跟蹤形式傳輸?shù)礁櫬┒坊蚋欇敵鼋M件。
?ETM(Embedded Trace Macrocell):監(jiān)控處理器運(yùn)行狀況,將處理器執(zhí)行過的指令信息進(jìn)行壓縮傳輸。跟蹤指令執(zhí)行、數(shù)據(jù)搬運(yùn)、PE(Processing Element)事件。
?連接:
? Synchronous 1:1 ATB bridge:
? Replicator:可以把單個(gè)輸入復(fù)用到兩個(gè)分支輸出,可以使得CoreSight系統(tǒng)跟蹤信息同時(shí)傳輸?shù)絻蓚€(gè)或多個(gè)輸出。
? Trace Funnel:把CoreSight系統(tǒng)中多個(gè)跟蹤源產(chǎn)生的信息組合在一起并以單個(gè)流輸出到高級(jí)跟蹤總線ATB。Funnel之間可以級(jí)聯(lián),一個(gè)Funnel最多可以支持6個(gè)跟蹤源信息輸入。
?跟蹤輸出節(jié)點(diǎn):
? ETR(Embedded Trace Router):把跟蹤數(shù)據(jù)存儲(chǔ)到調(diào)試目標(biāo)平臺(tái)的系統(tǒng)內(nèi)存上,存儲(chǔ)系統(tǒng)內(nèi)存空間是可配置的。
?ETF(Embedded Trace FIFO):主要是緩沖數(shù)據(jù)的輸出,尤其當(dāng)當(dāng)量數(shù)據(jù)在瞬間產(chǎn)生式,通過ETF可以平滑數(shù)據(jù)的輸出速率。緩存可以被配置為FIFO或Circular Buffer;FIFO滿了之后就會(huì)反壓,源頭停止輸出跟蹤數(shù)據(jù);Circular Buffer滿了后則會(huì)覆蓋。
? TPIU(Trace Port Interface Unit):把捕捉到的數(shù)據(jù)導(dǎo)出到外部調(diào)試適配器,如DSTREAM。
? ETB(Embedded Trace Buffer):是芯片內(nèi)一塊RAM,用來存儲(chǔ)捕捉到的跟蹤信息??梢酝ㄟ^DAP訪問存儲(chǔ)在ETB中的數(shù)據(jù)。
? TMC(Trace Memory Controller):在芯片設(shè)計(jì)時(shí)可配置,配置成ETB時(shí)跟上面介紹的ETB功能一致。還可以配置成ETR和ETF。
時(shí)間戳組件:產(chǎn)生CoreSight或處理器所需的時(shí)間戳。通過Narrow timestamp replicator分發(fā)到多個(gè)目的設(shè)備。路徑:時(shí)間戳發(fā)生器->時(shí)間戳編碼器->Narrow timestamp replicator->時(shí)間戳解碼器->CPU/CTI等。
?時(shí)間戳發(fā)生器
?時(shí)間戳編碼器
?時(shí)間戳解碼器
?AMBA AHB跟蹤宏單元(HTM)
?調(diào)試訪問接口(DAP),
?嵌入式交叉觸發(fā)器(ECT),
?AMBA跟蹤總線(ATB),
?橋和復(fù)制器(replicator),
?跟蹤聚合器(funnel),
?跟蹤端口接口單元(TPIU),
?嵌入式跟蹤緩沖器(ETB),
?測(cè)量跟蹤宏單元(ITM/STM)
更詳細(xì)的可以閱讀【ARM:CoreSight、ETM、PTM、ITM、HTM、ETB等常用術(shù)語解析】
一、coresight
coresight是ARM公司提出的,用于對(duì)復(fù)雜的SOC,實(shí)現(xiàn)debug和trace的架構(gòu)。該架構(gòu),包含了多個(gè)coresight組件。眾多的coresight組件,構(gòu)成了一個(gè)coresight系統(tǒng)。
我們也可以根據(jù)coresight架構(gòu),實(shí)現(xiàn)自己的coresight組件。
每個(gè)coresight的組件(component),都要遵循coresight架構(gòu)的要求。
1、 典型的一個(gè)coresight的環(huán)境
以下是一個(gè)典型的coresight環(huán)境,包含了兩個(gè)ARM core,一個(gè)DSP,和眾多的coresight組件。
這個(gè)coresight組件,實(shí)現(xiàn)對(duì)core,DSP的debug和trace功能。
環(huán)境中,總共包括3個(gè)通路
? trace通路:將core和DSP內(nèi)部信息輸出到外部
? debug通路:對(duì)core和DSP實(shí)現(xiàn)debug
? trigger通路:用于core和core之間,core和DSP之間,傳輸trigger信號(hào)
1.1、trace通路
trace通路,實(shí)現(xiàn)對(duì)master組件的數(shù)據(jù)追蹤功能,使用ETM來追蹤。
?ETM負(fù)責(zé)追蹤處理器和DSP的信息,將信息打包,通過ATB總線發(fā)送到trace bus上。
? trace bus上有trace funnel,funnel接收多個(gè)ATB總線數(shù)據(jù),然后合并成一個(gè)ATB總線數(shù)據(jù),發(fā)送給replicator。
? replicator接收到ATB數(shù)據(jù),根據(jù)配置,將ATB數(shù)據(jù)發(fā)送給ETB和TPIU。
1.2、debug的通路
debug通路,用于外部的debugger,對(duì)ARM core和DSP進(jìn)行調(diào)試功能。
上圖中,只考慮了JTAG的port。其實(shí)還有SW的port。
DAP接收外部端口的JTAG數(shù)據(jù),然后轉(zhuǎn)化成對(duì)DAP內(nèi)部的AP的訪問,然后AP再轉(zhuǎn)化為memory-mapped的總線訪問,去訪問soc內(nèi)部的資源。
上圖中,DAP輸出兩個(gè)memory-mapped總線,
?一個(gè)是debug apb總線,連接到debug APB互聯(lián)上,用于訪問debug組件的寄存器,
?一個(gè)是system bus,連接到bus matrix,用于訪問soc的內(nèi)部的資源。
debug APB互聯(lián),連接了有CTI,ETM,HTM,ITM,ETB,TPIU等coresight組件,因此外部的debugger可以通過JTAG port,對(duì)這些coresight組件進(jìn)行訪問。
bus matrix一般是連接soc的一些外設(shè),如memory,串口等,因此外部的debugger可以通過JTAG port對(duì)這些外設(shè)設(shè)備進(jìn)行訪問。
1.3、trigger通路
trigger通路,用于給指定的組件發(fā)送trigger信號(hào),或者接收指定的組件的trigger信號(hào)。
這個(gè)功能由CTI和CTM來實(shí)現(xiàn)。
CoreSight交叉觸發(fā)接口(CTI)是一種硬件設(shè)備,它將被稱為觸發(fā)器的單個(gè)輸入和輸出硬件信號(hào)帶到設(shè)備和從設(shè)備輸出,并通過交叉觸發(fā)矩陣(CTM)將它們通過編號(hào)信道互連到其他設(shè)備,以便在設(shè)備之間傳播事件。
每個(gè)core和DSP都有一個(gè)CTI組件相連,CTI可以給處理器(DSP)發(fā)送trigger信號(hào),也可以接收處理器(DSP)的trigger信號(hào)。
所有的CTI和CTM相連,因此可以實(shí)現(xiàn)多個(gè)CTI之間的trigger信號(hào)的相互發(fā)送與接收。
2、coresight組件的種類
2.1、control component
trigger的coresight組件
?ECT(embedded cross trigger)
? CTI(cross trigger interface):接收和發(fā)送trigger信號(hào)
? CTM(cross trigger matrix):CTI之間的trigger信號(hào)傳遞
2.2、trace sources
trace的coresight組件:
? ETM(embedded trace macrocells):追蹤指定設(shè)備(處理器,DSP)的trace信息,每個(gè)設(shè)備(處理器,DSP)均有自己的ETM。
? AMBA trace macrocells:追蹤AMBA總線的trace信息。
? PTM(program flow trace macrocells):
? STM(system trace macrocells):追蹤總線互聯(lián)上的trace信息
2.3、trace links
trace信息傳遞過程中所需要的中間coresight組件:
?trace funnel : 將接收的多個(gè)ATB總線數(shù)據(jù)合并成一個(gè)ATB總線數(shù)據(jù)
?replicator: 將一個(gè)ATB總線數(shù)據(jù),分發(fā)成多個(gè)ATB總線數(shù)據(jù)發(fā)送
?ATB bridge: ATB 橋,用于兩個(gè)不同的ATB域之間數(shù)據(jù)傳輸
2.4、trace sinks
最終接收trace信息的coresight組件
? TPIU(trace port interface units):將ATB數(shù)據(jù)通過trace port發(fā)送給外界
? ETB(embedded trace buffers):存儲(chǔ)ATB數(shù)據(jù)的buffer
? TMC(trace memory controller):
每個(gè)trace sink可以有一個(gè)trace formatter。
2.5、debug access port
DAP不屬于coresight的組件,但是我們會(huì)通過DAP來對(duì)coresight的組件進(jìn)行訪問。DAP包括以下:
?APB access port(APB-AP)
?AHB access port(AHB-AP)
?AXI access port(AXI-AP)
?JTAG access port(JTAG-AP)
?serial wire JTAG debug port(SWJ-DP)
?JTAG debug port(JTAG-DP)
?ROM table
DAP主要是由DP和AP組件。DP負(fù)責(zé)接收外部的JTAG或SW數(shù)據(jù),然后轉(zhuǎn)化為對(duì)AP的訪問,而對(duì)AP的訪問,是可以發(fā)起memory-mapped的訪問。因此就可以對(duì)內(nèi)部的資源進(jìn)行訪問。
如上圖:DAP包括了三個(gè)AP
? APB-AP:對(duì)掛接到debug APB總線上的內(nèi)部調(diào)試設(shè)備的訪問
? AHB-AP:對(duì)掛載在AHB系統(tǒng)總線上的設(shè)備的訪問
? JTAG-AP:對(duì)JTAG設(shè)備的訪問。這個(gè)是兼容以前較早的ARM處理器,如ARM9。這些較早的處理器內(nèi)部是用JTAG來調(diào)試的。但是現(xiàn)在的ARM處理器,已經(jīng)不用這種方式,統(tǒng)一用memory-mapped方式進(jìn)行調(diào)試。
目前的ARM soc中,一般至少會(huì)包括一個(gè)DAP。而一個(gè)DAP可以包括1-256個(gè)AP(access port),AP受DP的控制。
只有對(duì)AP的訪問,才可以轉(zhuǎn)化成memory-mapped總線,對(duì)soc的內(nèi)部資源進(jìn)行訪問。
memory-mapped bus通常指的是將設(shè)備的寄存器映射到內(nèi)存地址空間中,使得CPU可以通過讀取和寫入這些內(nèi)存地址來訪問和操作這些設(shè)備。這種方式使得CPU可以像訪問內(nèi)存一樣訪問這些設(shè)備,簡(jiǎn)化了設(shè)備的訪問和控制方式。
DP中有一個(gè)SELECT寄存器,該寄存器用來選擇,DP對(duì)AP的訪問,是針對(duì)于哪一個(gè)AP進(jìn)行訪問。
DAP中,是可以有多個(gè)AP的,而每次,只能對(duì)一個(gè)AP進(jìn)行訪問。因?yàn)樾枰獙?duì)AP進(jìn)行編號(hào),編號(hào)的值就在APSEL位域中。因?yàn)檫@個(gè)位域有8位,因此DAP中可以最多有256個(gè)AP。
DAP的內(nèi)部結(jié)構(gòu)如下圖:
包括了一個(gè)DP,和3個(gè)AP,依次是AHB-AP,APB-AP,JTAG-AP。
DP通過JTAG或者SW管腳,連接外部的debugger,和外部debugger進(jìn)行通信。
DP接收到外部debugger發(fā)送的JTAG或SW數(shù)據(jù),轉(zhuǎn)化為對(duì)內(nèi)部AP的訪問。經(jīng)過decoder模塊,判斷是對(duì)哪一個(gè)AP進(jìn)行訪問,然后將訪問信息發(fā)送給對(duì)應(yīng)的AP。
AP接收到DP的訪問后,轉(zhuǎn)化為對(duì)應(yīng)的總線訪問,去訪問內(nèi)部資源。
然后將訪問的信息,才回送給DP,DP再通過JTAG或SW,將訪問信息返回給外部的debugger。
以上就是本文全部?jī)?nèi)容,希望看完能對(duì)coresight有一個(gè)宏觀了解。
文章來源:TrustZone
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
19313瀏覽量
230052 -
芯片
+關(guān)注
關(guān)注
456文章
50889瀏覽量
424237 -
編碼器
+關(guān)注
關(guān)注
45文章
3646瀏覽量
134657 -
cpu
+關(guān)注
關(guān)注
68文章
10873瀏覽量
212020
原文標(biāo)題:2、coresight組件的種類
文章出處:【微信號(hào):談思實(shí)驗(yàn)室,微信公眾號(hào):談思實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論