Perface
coresight的寄存器
coresight對于每個coresight組件,規(guī)定了一些寄存器,這些寄存器的偏移是固定的,這些寄存器,是必須存在的。但是有的,可以不實現(xiàn)該寄存器功能。
1、寄存器一覽
coresight架構(gòu),對于coresight的組件,定義了若干個固定的寄存器。第一個寄存器的偏移從0xf00開始,直到0xffc。以下是寄存器列表:
以上的寄存器的地址,在coresight的組件中,是不能當(dāng)作其他功能使用的。如果該寄存器,在該組件沒有實現(xiàn),那么該寄存器地址要保留,讀取要返回0,寫被忽略(read must return zero, and writes must be ignored),而不能當(dāng)作其他功能使用。
對于coresight的組件,占用1個4k或者整數(shù)倍的4k空間的memory空間。
而coresight的寄存器,處于組件占用空間的最后一個4K空間的最后一部分。
以下是一個coresight組件占用的memory空間。占用一個4k空間。
寄存器分為兩部分:
- device-specific registers:組件自定義寄存器,從0x000-0xeff。 coresight組件利用這些寄存器,實現(xiàn)該組件的功能 。
- coresight management registers:coresight固定的寄存器,從0xf00-0xfff。這部分寄存器的功能是固定的。
以下是包含了多個coresight組件memory分布,每個組件,占用4K空間的整數(shù)倍空間。
對于第2個組件,占用了16k的空間,但是coresight寄存器,是在最后一個空間的最后位置。
而其他3個組件,都只占用了1個4K空間。因此coresight寄存器,在這一個空間的最后位置。
2、ITCTRL,integration mode control register 工作模式寄存器。
對于每個coresight組件,可以工作在兩種模式下:
- functional mode
- integration mode
兩種模式的區(qū)別,在于對coresight組件的寄存器的訪問,是否會引發(fā)寄存器相應(yīng)的功能。
integration mode是用來topology detection的。當(dāng)一個debugger連接到一個soc后,此時debugger是不知道soc內(nèi)部有哪些coresight組件的。因此就需要通過查詢,來得知soc中有哪些coresight組件的。
而查詢,就是通過訪問coresight組件的寄存器來實現(xiàn)的。此時soc還不知道組件是什么組件,因此也就不知道組件的寄存器是有什么功能。因此此時是不能隨意對組件的寄存器進行訪問的。
為了使訪問的過程中,不影響組件的功能,就可以讓組件工作在integration mode下,此時訪問組件的寄存器,不會引發(fā)寄存器相應(yīng)的功能。
待debugger查詢完畢后,獲取到soc中各個coresight組件的信息后,再將組件的模式切換為functional mode。
復(fù)位后,組件必須工作在functional mode下。因此外部debugger對組件查詢完畢后,可以直接對組件進行復(fù)位,這樣所有的組件就恢復(fù)到了function mode了。
3、CLAIM寄存器
這個寄存器是一個32位的不可見寄存器。只能通過訪問CLAIMCLR和CLAIMSET這兩個寄存器,來設(shè)置或者獲取該寄存器的值。
該寄存器,可以用來表示該組件的狀態(tài)。這個是由實現(xiàn)來定義的 ,比如可以規(guī)定,該寄存器的最低位,表示最近該寄存器被讀取過,第1位,表示最近該寄存器被寫過。
CLAIMCLR寄存器:
CLAIMSET寄存器
4、DEVAFF
device affinity register 組件關(guān)聯(lián)功能寄存器 。有時候,組件需要和其他組件,聯(lián)合起來工作,這樣,就需要指示該組件是和另外的什么組件進行關(guān)聯(lián),就可以用這寄存器。
比如一個ETM,追蹤一個core的trace信息,那么這個寄存器,就保存core的MPIDR寄存器信息, 這樣debugger就可以通過DEVAFF寄存器,得知這個ETM是關(guān)聯(lián)的哪一個core 。
我還以為是和別的CIT組件這些配合
DEVAFF0寄存器:
DEVAFF1寄存器:
5、lock 寄存器
對于coresight組件的寄存器,ARM定義了如下的一些訪問方式:
可以分為兩類訪問:
- 系統(tǒng)寄存器訪問:通過MSR,MRS指令(aarch64),MCR,MRC指令(aarch32)
- external debug接口訪問:DAP訪問,或者是memory-mapped訪問,也就是軟件通過load store訪問
對coresight組件寄存器的訪問,是有權(quán)限要求的 。
對于系統(tǒng)寄存器訪問和memory-mapped訪問,ARM 定義了software lock這個權(quán)限限制 。當(dāng)software lock有效的時候,軟件是不能訪問coresight組件寄存器的。
software lock的目的, 是為了防止軟件意外的修改coresight組件的寄存器 ,從而修改當(dāng)前系統(tǒng)狀態(tài),或者獲取一些不該獲取的信息??梢杂脕矸?a href="http://www.wenjunhu.com/v/tag/10353/" target="_blank">黑客。
software lock提供了兩個寄存器,一個是LAR,一個是LSR。
- LAR是用來設(shè)置software lock狀態(tài),
- 而LSR是保存當(dāng)前的software lock的狀態(tài)。
往LAR寫入0xc5acce55,software lock狀態(tài)切換為unlock, software可以正常訪問coresight組件的寄存器,寫入其他值,software lock狀態(tài)切換為lock,software不可以正常訪問coresight組件的寄存器(實現(xiàn)自定義)。
對于DAP訪問,software lock是沒有用的。因為要通過DAP訪問,是必須要debugger連接芯片的。所以coresight組件要能夠區(qū)分,當(dāng)前的訪問是DAP訪問,還是非DAP訪問。
在DAP訪問中,需要使用debugger工具來連接芯片,并執(zhí)行一些特定的操作,例如讀取或者修改芯片的寄存器或者內(nèi)存。在這個過程中,軟件鎖(software lock)是沒有用的,因為軟件鎖主要用于防止未經(jīng)授權(quán)的軟件訪問coresight組件的寄存器,而在DAP訪問中,debugger工具需要獲得特定的授權(quán)才能進行訪問。
另一方面,非DAP訪問通常是由軟件直接進行的,例如通過串口或者USB接口進行數(shù)據(jù)傳輸。在這個過程中,就需要使用軟件鎖來防止未經(jīng)授權(quán)的軟件訪問coresight組件的寄存器,以保護系統(tǒng)的安全和穩(wěn)定。
非DAP訪問場景:
- 開發(fā)人員使用IDE(集成開發(fā)環(huán)境)編寫代碼,并通過編譯器將其編譯為可執(zhí)行文件。
- 開發(fā)人員使用串口或者USB接口將可執(zhí)行文件下載到目標(biāo)嵌入式系統(tǒng)中。
- 開發(fā)人員使用串口調(diào)試器或者類似的工具來連接到目標(biāo)嵌入式系統(tǒng),并通過發(fā)送特定的命令來執(zhí)行調(diào)試操作,例如設(shè)置斷點、單步執(zhí)行等。
- 在這個過程中,開發(fā)人員不需要獲得特定的授權(quán)才能進行訪問,但是需要+ 對目標(biāo)嵌入式系統(tǒng)的硬件和軟件有一定的了解,以便正確地發(fā)送命令和解析調(diào)試信息。
DAP訪問場景:
- 開發(fā)人員使用專門的調(diào)試工具(例如GDB)來連接目標(biāo)嵌入式系統(tǒng)。
- 開發(fā)人員使用調(diào)試工具來設(shè)置斷點、單步執(zhí)行等操作,并通過調(diào)試器來查看和修改目標(biāo)嵌入式系統(tǒng)的寄存器和內(nèi)存。
- 在這個過程中,開發(fā)人員需要獲得特定的授權(quán)才能進行訪問,因為調(diào)試工具需要連接到目標(biāo)嵌入式系統(tǒng)的核心寄存器或者內(nèi)存中。
- DAP訪問通常需要更高的技術(shù)要求和更復(fù)雜的設(shè)置,但是它可以提供更高級別的調(diào)試功能和更靈活的控制方式。例如,開發(fā)人員可以在不重新編譯代碼的情況下對目標(biāo)嵌入式系統(tǒng)進行實時調(diào)試,查看和修改寄存器和內(nèi)存的值,以及進行多線程和多進程的調(diào)試等操作。
關(guān)鍵在于想訪問的一個是程序本身,還有一個是系統(tǒng)平臺更底層的東西
6、AUTHSTATUS
authentication status register debug功能的認證接口。
debug可以分為non-invasive和invasive。
- non-invasive就是self-hosted
- invasive就是external debug。
non-invasive debug(非侵入性調(diào)試): 非侵入性調(diào)試通常指的是self-hosted(自托管)調(diào)試。在這種方法中,開發(fā)人員使用同一臺計算機來執(zhí)行程序和監(jiān)視程序的執(zhí)行過程。這通常是通過在開發(fā)人員機器上運行一個模擬器或虛擬機來模擬目標(biāo)系統(tǒng)或設(shè)備的行為。非侵入性調(diào)試不需要直接訪問目標(biāo)系統(tǒng)的硬件或底層資源,因此它不會干擾目標(biāo)系統(tǒng)的正常操作。這種方法的優(yōu)點是簡單、安全且易于使用。然而,它可能無法提供與實際硬件完全一致的仿真體驗,因此可能會遺漏一些特定于硬件的錯誤或問題。
invasive debug(侵入性調(diào)試): 侵入性調(diào)試通常指的是external debug(外部調(diào)試)。在這種方法中,開發(fā)人員需要將調(diào)試器連接到目標(biāo)系統(tǒng)或設(shè)備的硬件上,以便直接監(jiān)視和控制其執(zhí)行過程。這種方法需要侵入目標(biāo)系統(tǒng),可能會對目標(biāo)系統(tǒng)的正常操作產(chǎn)生干擾或影響。因此,在進行外部調(diào)試之前,通常需要先備份目標(biāo)系統(tǒng)的狀態(tài)或創(chuàng)建一個測試版本來保護原始數(shù)據(jù)。外部調(diào)試的優(yōu)點是可以提供更準確和詳細的調(diào)試信息,特別是在處理硬件相關(guān)的問題時。然而,它需要更高的技術(shù)要求和更復(fù)雜的設(shè)置,并且可能會對目標(biāo)系統(tǒng)的穩(wěn)定性或性能產(chǎn)生負面影響。
實際中,可以根據(jù)不同的應(yīng)用需求,可能會需要支持debug,但是也可能需要支持debug中的一種,也有可能不需要支持debug功能。
因此考慮到這些需求,ARM定義了認證接口。認證接口總共包括4個。這4個接口是每個ARM的core要實現(xiàn)的。這些接口是debug功能的總開關(guān)。
- DBGEN:invasive debug enable
- SPIDEN: secure invasive debug enable
- SPNIDEN:secure non-invasive debug enable
- NIDEN: non-invasive debug enable
DBGEN:這是invasive debug enable(調(diào)試使能)的縮寫,這個接口可能用于開啟或關(guān)閉侵入性的調(diào)試功能。在調(diào)試過程中,通過這個接口,可以控制調(diào)試器的接入和運行,從而實現(xiàn)對ARM核心的調(diào)試。
SPIDEN:這是secure invasive debug enable(安全侵入性調(diào)試使能)的縮寫,這個接口可能用于在安全環(huán)境下啟動侵入性的調(diào)試功能。在需要保證安全性的情況下,例如在處理敏感數(shù)據(jù)或在進行關(guān)鍵任務(wù)的操作時,這個接口可以控制調(diào)試器的安全接入和運行。
SPNIDEN:這是secure non-invasive debug enable(安全非侵入性調(diào)試使能)的縮寫,這個接口可能用于在安全環(huán)境下啟動非侵入性的調(diào)試功能。與SPIDEN類似,這個接口可以控制調(diào)試器的安全接入和運行,但是不會對目標(biāo)系統(tǒng)或數(shù)據(jù)產(chǎn)生干擾或損害。
NIDEN:這是non-invasive debug enable(非侵入性調(diào)試使能)的縮寫,這個接口可能用于開啟或關(guān)閉非侵入性的調(diào)試功能。與DBGEN類似,這個接口可以控制調(diào)試器的接入和運行,但是不會對目標(biāo)系統(tǒng)或數(shù)據(jù)產(chǎn)生干擾或損害。
而這個authentication status寄存器,就是保存了這4個接口信號的狀態(tài)。DBGEN使能的時候,NIDEN被忽略,即NIDEN被認為是使能。SPIDEN使能的時候,SPNIDEN被忽略,即SPNIDEN被認為是使能。
7、DEVARCH
device architecture register 這個寄存器,標(biāo)識了coresight組件的架構(gòu)信息。
這里主要關(guān)心ARCHID這個位域。
8、DEVID
device configuration register 這個寄存器的功能,由實現(xiàn)進行定義,總共包括3個寄存器,DEVID,DEVID1,DEVID2,每個寄存器32位,只讀。
DEVID寄存器:
DEVID1寄存器:
DEVID2寄存器:
9、DEVTYPE
device type identifier register 組件的具體類型信息。依靠MAJOR位域和SUB位域來表示。
以下是組合情況:
可以看出,arm對組件分成了7大類:
- miscellaneous: 雜散類,
- trace sink: 最終接收trace信息的組件,包括有TPIU,ETB,router。
- trace link:trace信息傳遞過程中需要的中間組件,包括有router, filter, FIFO
- trace source: 產(chǎn)生trace信息的master
- debug control:debug的控制器
- debug logic:具有debug功能的master
- performance monitor:性能的檢測器檢測的master
舉一個例子,假設(shè)有一個基于Cortex-A處理器的嵌入式系統(tǒng),該系統(tǒng)使用Coresight進行調(diào)試和跟蹤。在Coresight中,可能存在一個Trace Sink組件,用于收集和處理跟蹤數(shù)據(jù)。該組件的MAJOR位域可能被設(shè)置為0x1,以表示它屬于Trace Sink類別。而它的SUB位域可能被設(shè)置為0x100,以表示它是該類別中的一個特定組件。
通過讀取該組件的DEVTYPE寄存器值,可以確定它的類型和身份。如果DEVTYPE的值為0x101(即MAJOR位域為0x1,SUB位域為0x100),則可以知道該組件是一個Trace Sink,并且它是該類別中的一個特定組件。
通過DEVTYPE寄存器的值,開發(fā)人員可以更好地理解系統(tǒng)的運行狀況并進行適當(dāng)?shù)恼{(diào)試操作。例如,如果開發(fā)人員知道該組件的功能和行為,則可以通過修改該組件的代碼或配置來改善系統(tǒng)的性能或穩(wěn)定性。
總之,DEVTYPE寄存器的作用是提供組件的類型信息,以便在Coresight中進行調(diào)試和跟蹤。它是開發(fā)人員了解系統(tǒng)運行狀況和進行適當(dāng)調(diào)試操作的重要工具之一。
10、PIDR0-PIDR7
peripheral identification registers 外設(shè)識別寄存器。
這里面,我們關(guān)心的是SIZE,和Part number。因為其他的值在一個soc中,所有的組件的值是固定的。
- SIZE:表示這個組件,占用4k空間的塊數(shù)。如果只占用一個塊,那么值是0,如果占用兩個塊,值是1。占用的塊數(shù)為 2^SIZE。以下是SIZE對應(yīng)的組件占用的大小。以及需要訪問這個組件需要的地址寬度。
part number:組件的唯一編號。soc中有多個coresight的組件,為了較好方便的管理這些組件,給每個組件分配了唯一的編號。這個編號就保存在part number中。
對于JEP106,這個是JEDEC標(biāo)準,可以查閱以下網(wǎng)站; www.jedec.org
Coresight寄存器PIDR0-PIDR7以及peripheral identification registers外設(shè)識別寄存器的作用是識別和分類不同的外設(shè)組件。這些寄存器提供了關(guān)于ARM核心上組件的詳細信息,例如組件的名稱、類型、大小以及它們在ARM核心上的位置。通過讀取這些寄存器的值,可以識別和區(qū)分不同的組件,以便進行調(diào)試、性能監(jiān)控等操作。
11、CIDR0-CIDR3
component identification registers 這四個寄存器,每個寄存器只有最低8位有效。 這四個寄存器的組合,用來標(biāo)識組件的類型 。
對于ARM的組件,CIDR寄存器的有些位是固定的。比如對于CIDR0,CIDR1[3:0],CIDR2,CIDR3,是有固定值的。
CIDR1寄存器中有一個CLASS位域,用來表示組件屬于哪一個類 。ARM對自己的組件,也劃分了若個的類。
CIDR0-CIDR3寄存器是ARM核心上的一部分,每個寄存器只有最低8位有效。這些寄存器的組合被用來標(biāo)識組件的類型,以便進行調(diào)試和優(yōu)化。
這里,我們關(guān)心如下的class:
- 0x1:rom table
- 0x9:coresight組件。
- 0xf: corelink組件
讀取組件的CIDR寄存器,即可知道這個組件是屬于哪一類。
- 對于rom table, 固定為 0xb105_100d 對于
- coresight組件,固定為 0xb105_900d 對于
- corelink組件, 固定為 0xb105_f00d
假設(shè)我們有一個ARM核心,我們想要識別其上的所有組件。首先,我們可以使用Coresight寄存器PIDR0-PIDR7以及外設(shè)識別寄存器來讀取每個組件的標(biāo)識信息。這些寄存器的值將提供關(guān)于組件的名稱、類型、大小以及它們在ARM核心上的位置等信息。
然后,我們可以使用CIDR0-CIDR3寄存器來進一步確定每個組件的類型。通過讀取這些寄存器的值,我們可以確定哪些類型的組件存在于ARM核心上。例如,如果CIDR0-CIDR3寄存器的值組合表示某個組件是一個內(nèi)存管理單元(MMU),那么我們就可以將該組件歸類為MMU類型。
ARM核心就像是一本書的章節(jié),每個章節(jié)都是一個組件。Coresight的寄存器PIDR0-PIDR7以及外設(shè)識別寄存器就像是一本目錄,告訴我們每個章節(jié)的名稱和頁碼。而CIDR0-CIDR3寄存器就像是每個章節(jié)里面的標(biāo)題,通過它們我們可以知道每個章節(jié)的標(biāo)題是什么。
通過查看目錄(Coresight的寄存器),我們可以知道這本書有哪些章節(jié),它們分別在哪些頁碼(頁數(shù))。然后,通過閱讀每個章節(jié)的標(biāo)題(CIDR0-CIDR3寄存器),我們可以了解每個章節(jié)的內(nèi)容大致是什么。
這樣,我們就能夠更好地了解這本書的結(jié)構(gòu)和內(nèi)容,以便進行閱讀、理解或參考。同樣的,通過使用Coresight的寄存器,我們可以更好地了解ARM核心的組件結(jié)構(gòu)和功能,以便進行調(diào)試和優(yōu)化等操作。
rom table, coresight組件,corelink組件
ROM TABLE
ROM TABLE是ARM系列SOC(System on a Chip)必須有的一個組件,它主要用于識別和調(diào)試組件。
ROM TABLE包含了用于調(diào)試的多種信息,例如調(diào)試寄存器的基地址、調(diào)試指令、版本信息等。 這些信息被存儲在芯片出廠前,并在系統(tǒng)啟動時被加載到芯片中。
- Debug ROM表:它包含了在調(diào)試過程中用到的指令,比如讀取寄存器的指令、設(shè)置斷點的指令等。這些指令在系統(tǒng)啟動時會被加載到芯片中。
- Vector Table:它包含了異常向量表,即當(dāng)系統(tǒng)發(fā)生異常時,程序會跳轉(zhuǎn)到這個表中對應(yīng)的異常處理程序。
- Breakpoint Table:它包含了斷點地址表,即可以設(shè)置斷點的地址列表。在調(diào)試過程中,當(dāng)程序執(zhí)行到斷點地址時,程序會被暫停,從而幫助開發(fā)人員檢查程序狀態(tài)。
- Symbol Table:它包含了程序中定義的全局變量和函數(shù)地址列表。這些信息對于調(diào)試過程中進行變量訪問和函數(shù)調(diào)用非常有用。
- Other Debug Information:除了上述提到的信息,ROM TABLE還可能包含其他調(diào)試信息,例如版本信息、調(diào)試寄存器的基地址等。
Coresight組件
Coresight組件是一種用于調(diào)試和追蹤SOC芯片的工具,它可以幫助開發(fā)人員檢查程序運行時的狀態(tài)和數(shù)據(jù),例如查看寄存器的值、設(shè)置斷點、跟蹤程序的執(zhí)行路徑等。通過Coresight組件,開發(fā)人員可以更好地了解程序運行時的情況,找到并解決問題。
CoreLink組件
CoreLink組件是ARM公司提供的一套IP核,用于實現(xiàn)片上通信和共享資源管理。它提供了一組通信和同步機制,以及一個統(tǒng)一的接口,使得多個處理核心可以相互通信并共享系統(tǒng)資源,從而形成一個完整的片上系統(tǒng)。CoreLink還包含了一系列用于調(diào)試和跟蹤的組件,例如ETM(Embedded Trace Macrocell)和STIM(Serial Trace Injector),這些組件可以用于收集和分析系統(tǒng)運行時的數(shù)據(jù),幫助開發(fā)人員調(diào)試和優(yōu)化系統(tǒng)性能。
Coresight組件和CoreLink組件是不同的技術(shù),它們的功能和用途也不同。Coresight主要用于實現(xiàn)SOC的調(diào)試和追蹤功能,而CoreLink主要用于實現(xiàn)片上通信和共享資源管理。
-
寄存器
+關(guān)注
關(guān)注
31文章
5425瀏覽量
123648 -
ARM芯片
+關(guān)注
關(guān)注
1文章
128瀏覽量
21982 -
調(diào)試器
+關(guān)注
關(guān)注
1文章
312瀏覽量
24210 -
CoreSight
+關(guān)注
關(guān)注
0文章
6瀏覽量
8080 -
DFx
+關(guān)注
關(guān)注
0文章
35瀏覽量
10814
發(fā)布評論請先 登錄
DMA通道一覽
EXTI寄存器外部中斷
安川伺服輔助功能參數(shù)一覽表
51單片機寄存器功能一覽表

單片機怎么通過按鍵控制計時器的開始和停止_超詳細!51單片機寄存器功能一覽表...

為調(diào)試寄存器 DBGDRAR 設(shè)置的值錯誤
車載芯片安全寄存器的布局設(shè)計

評論