前言
TriCore是英飛凌自主開(kāi)發(fā)的私有內(nèi)核。早在2000年,英飛凌發(fā)布了第一代TriCore單片機(jī)產(chǎn)品。英飛凌為TriCore申請(qǐng)了注冊(cè)商標(biāo),在一個(gè)內(nèi)核架構(gòu)里集成了RISC精簡(jiǎn)指令集單片機(jī),MCU微控制器,DSP數(shù)字信號(hào)處理的功能,是一款計(jì)算能力強(qiáng)大的32位實(shí)時(shí)單片機(jī)內(nèi)核架構(gòu)。TC3xx系列MCU是基于TC1.6P作為其內(nèi)核的。本系列文章將記錄Infineon芯片的學(xué)習(xí)筆記。本文首先介紹TC3xx的內(nèi)部模塊框圖和各種內(nèi)部總線以及存儲(chǔ)器訪問(wèn)方式,接著介紹TC1.6.2的內(nèi)核架構(gòu),這其中主要介紹了尋址方式,通用寄存器,上下文管理,中斷機(jī)制,Trap機(jī)制,MPU機(jī)制等內(nèi)容。
1.Architectural Overview
圖1:TC3xx相比于TC2xx改進(jìn)部分
如圖一所示,TC3xx內(nèi)部最多支持6個(gè)核,這些核間使用SRI總線進(jìn)行通信,每個(gè)核都有自己的Memory。TC3xx在核架構(gòu)上相比于TC2xx做了如下改進(jìn):
1.1 Performanc
1)支持Tricore 1.6.2的內(nèi)核
2)增加了新的指令
3)最多支持6個(gè)核,最大主頻達(dá)到300MHz
4)每個(gè)CPU有自Local的Flash bank,也就是說(shuō)有自己的Local的總線可以訪問(wèn)自己Local的Flash bank,速度更快
5)
1.2 Memories
1)更大的SRAM
2)更強(qiáng)大的內(nèi)存保護(hù)單元MPU。數(shù)據(jù)和代碼保護(hù)的Register的設(shè)置更多。
1.3 ADC
1)TC2xx有隊(duì)列模式,自動(dòng)掃描模式,背景掃描模式,TC3xx只有隊(duì)列掃描模式,更加的靈活。
1.4 Delta-Sigma
1.5 HSM
1)支持非對(duì)稱加密算法
1.6 Standby control unit
專門的低功耗管理單元
1.7 IO Pads
支持5/3.3v兩種硬件系統(tǒng)
1.8 Ethernet
1)支持千M以太網(wǎng),支持一部分TSN/AVB的功能
1.9 Safety
1.10 ADAS
增強(qiáng)的SPU
圖2:TC3xx系列資源概況
2.Memory Concept
2.1 Memory architecture
圖3:TC3xx內(nèi)存架構(gòu)
主要關(guān)注PFlash和LMU部分。
每個(gè)CPU都可以通過(guò)一個(gè)私有的LPB總線訪問(wèn)各自3M的PFlash的bank,訪問(wèn)速度比較快。外部有個(gè)LMU的Ram,分為兩種,一種叫dLMU,另一種叫LMU。每個(gè)cpu可以通過(guò)私有的總線訪問(wèn)dLMU,對(duì)于LMU,CPU只能通過(guò)SRI總線來(lái)訪問(wèn),速度相對(duì)dLMU的訪問(wèn)較慢。
圖4:TC3xx內(nèi)存訪問(wèn)速度
PSPR,DSPR,DLMU都是Local的SRAM,CPU訪問(wèn)自己的Local Ram的熟讀非常的快,例如CPU讀寫local DSPR都是0等待時(shí)間的。CPU也能范圍其他核的Local Ram,但是讀/寫/取指的速度就會(huì)變慢。
圖5:內(nèi)存范圍起始地址
對(duì)于同一款內(nèi)存可以使用cache的訪問(wèn)方式或者非cache的訪問(wèn)方式。例如對(duì)于PFLASH的訪問(wèn)如果使用cache則起始地址是0x80000000,非cache的訪問(wèn)方式的起始地址是0xA0000000。同樣,LMU也存在0x90000000/0xB00000000兩個(gè)起始地址。
對(duì)于每個(gè)CPU內(nèi)部的PSPR和DSPR都不需要使用cache,CPU等待時(shí)間是0ws。
每個(gè)CPU都有3M的local PFLASH的bank,CPU通過(guò)LPB總線訪問(wèn)PFLASH。這個(gè)LPB總線在使能了AB SWAP之后就會(huì)被disable掉,這么做的原因是為了讓code運(yùn)行在A Bank還是B Bank的performence都是一樣的(是能ab swap和disable lpb總線的操作在UCB的一塊區(qū)域操作)。
2.2 Memory and connectivity
圖6:CPU內(nèi)部總線連接圖
CPU通過(guò)SRI Master Interface連接到其他core的SRI Slave Interface來(lái)范圍其他核的memory。
2.3 Memory map
圖7:內(nèi)存映射圖
3.On-chip Bus Connectivity
圖8:SRI總線
Tricore里面,內(nèi)核之間的相互訪問(wèn)和通信都是通過(guò)SRI總線進(jìn)行的。Tricore 1.6.2里面SRI總線有3個(gè)Domain,Domain 1包括CPU0-3,通過(guò)SRI0進(jìn)行相互訪問(wèn)。其他類似。SRI直接通過(guò)S2S Bridge連接。
圖9:SRI總線連接圖
圖10:SRI總線間最差延遲時(shí)間
圖11:TC39x內(nèi)部SRI總線連接圖
每個(gè)SRI總線都有一個(gè)SRI Master Interface和一個(gè)SRI Slave Interface,對(duì)于一個(gè)SRI總線的SRI Slave Interface就存在同一時(shí)間多個(gè)SRI Master Interface訪問(wèn)的問(wèn)題,那么就需要SRI具有仲裁的功能。
4.TC1.6.2 Architecture
4.1 TriCore concept
圖12:TriCore定義
TriCore的含義:既有RISC精簡(jiǎn)指令集的特性,也集成了DSP數(shù)字信號(hào)處理器的性能,同時(shí)也可以實(shí)現(xiàn)實(shí)時(shí)控制。
圖13:英飛凌TriCore的發(fā)展圖
4.2 Address range
圖14:TriCore的尋址空間
4G的尋址空間,16個(gè)Segment,小端系統(tǒng)。
4.3 Pipeline
圖15:Pipline
整型的Pipline主要組數(shù)據(jù)的運(yùn)算,類似數(shù)據(jù)的加減乘除。Load/Store Pipline主要用來(lái)做數(shù)據(jù)的讀取和存儲(chǔ),Loop Pipline主要做數(shù)據(jù)的循環(huán)處理。三個(gè)Pipline可以并行處理。
4.4 Instructions
圖16:指令
支持16位和32位指令格式,op1的bit 0為1則是32位指令,op1的bit 0為0則是16位指令。
支持位操作
支持MAC乘加指令,除法指令,單周期多數(shù)據(jù)處理指令SIMD。
4.5 Data Types
圖17:支持的數(shù)據(jù)類型
支持大部分?jǐn)?shù)據(jù)類型。
4.6 Addressing Modes
圖18:尋址方式
支持絕對(duì)地址尋址,相對(duì)地址尋址,先加減后運(yùn)算尋址,先運(yùn)算后加減尋址。
4.7 Core Registers
圖19:核寄存器
通用寄存器:和ARM核(r0 - r15)不一樣,數(shù)據(jù)寄存器和地址寄存器分開(kāi)。數(shù)據(jù)運(yùn)算和地址運(yùn)算不沖突,這樣可以提高尋址和數(shù)據(jù)處理的效率。
系統(tǒng)寄存器:PC指針,程序狀態(tài)字寄存器,系統(tǒng)控制寄存器(比如設(shè)置系統(tǒng)在Run/Halt/Sleep狀態(tài))
上下文寄存器:
中斷和陷阱控制寄存器:ICR寄存器可以控制全局中斷的開(kāi)關(guān)。BIV是中斷向量表的起始地址,BTV是陷阱向量表的起始地址。
內(nèi)存保護(hù)寄存器:
棧中斷寄存器:通用寄存器里面的A10是user stack pointer,而ISP是interrupt stack pointer,通過(guò)PSW寄存器可以設(shè)置是否使用ISP,如果使用了ISP的話,通常情況下系統(tǒng)使用A10作為棧指針,一旦產(chǎn)生中斷后系統(tǒng)把ISP指向的地址賦值給A10,也就是中斷使用另一塊內(nèi)存作為??臻g。
訪問(wèn)核寄存器只能只用專用的MTCR,MFCR指令。
A11類似ARM核里面的LR寄存器。
所謂Global Address也就是進(jìn)入中斷或者進(jìn)行函數(shù)調(diào)用的時(shí)候是不存這些內(nèi)容的。
數(shù)據(jù)和地址寄存器可以兩個(gè)合起來(lái)作為一個(gè)64位的寄存器(P0/D0)。
4.8 Context Management
圖20:上下文管理
圖21:上下文存儲(chǔ)區(qū)域
TriCore的上下文處理比較特殊。對(duì)于通用MCU(ARM 核)在進(jìn)入中斷或者函數(shù)調(diào)用時(shí)候的上下文內(nèi)容一般存放在棧里面的,但是TriCore的上下文存放在一個(gè)叫CSA的區(qū)域的。Upper Context 的內(nèi)容由硬件自動(dòng)處理,而Lower Context的內(nèi)容需要一些特殊的指令操作。
圖21:上下文事件和指令
對(duì)于絕大部分簡(jiǎn)單的ISR, Trap, 函數(shù)調(diào)用都比較簡(jiǎn)單的話只要保存Upper context就足夠了,也就不會(huì)產(chǎn)生后面的BISR,SVLCX,STLCX,STUCX指令。
圖22:CSA存放地址
CSA可以存放在DSPR(一般存放在這里),DLMU,External Memory里面,通過(guò)修改連接ld文件來(lái)配置。
FCX: 指向空閑的CSA的起始地址。
PCX: 指向已經(jīng)使用的CSA的地址。
LCX: 指向空閑CSA的結(jié)束地址。
4.8 Interrupt System
圖23:中斷系統(tǒng)
TriCore 1.6.2中最多有7個(gè)中斷服務(wù)提供對(duì)象,分別是CPU0-5以及DMA。每一個(gè)Service Provider對(duì)應(yīng)一個(gè)中斷控制單元ICU,中斷服務(wù)請(qǐng)求節(jié)點(diǎn)SRN最多有1024個(gè),8個(gè)GPSR可以用作軟中斷做來(lái)核間通信。
圖24:中斷仲裁
ICU能夠仲裁處理多個(gè)SRN同時(shí)的請(qǐng)求。
圖25:中斷保護(hù)
中斷寄存器也有保護(hù)機(jī)制,SRC有ECC的保護(hù)措施,在寫完SRC寄存器后會(huì)自動(dòng)生產(chǎn)一個(gè)ECC的Code,然后這個(gè)SRC的內(nèi)容在被讀取的時(shí)候就會(huì)做ECC的check。
SRC寄存器的權(quán)限也可以設(shè)置。比如,每個(gè)Bus Master總線都會(huì)有一個(gè)TAG-ID,我們可以設(shè)置SRC寄存器可以被哪些TAG-ID表示的總線訪問(wèn)。
圖26:服務(wù)請(qǐng)求控制寄存器SRC
圖27:中斷控制寄存器ICR和中斷向量表地址寄存器BIV
VSS寄存器設(shè)置中斷向量表是8字節(jié)對(duì)齊還是32字節(jié)對(duì)齊。
圖28:中斷向量表
在TricCore里面,中斷向量表不是固定的,是跟著中斷優(yōu)先級(jí)走的,也就是整個(gè)中斷向量表內(nèi)中斷服務(wù)的排序是會(huì)跟著中斷優(yōu)先級(jí)的變化而變化的(和其他內(nèi)核不一樣)。
圖29:中斷處理過(guò)程
4.9 DMA service requests
圖30:DMA服務(wù)請(qǐng)求
SRN目標(biāo)也可以選擇DMA的,選擇DMA的時(shí)候,TOS要設(shè)置成1。中斷優(yōu)先級(jí)要設(shè)置成和DMA的通道號(hào)一樣,也就是中斷優(yōu)先級(jí)在選擇DMA的時(shí)候就是DMA的通道號(hào),這個(gè)很關(guān)鍵。
4.10 Traps
圖31:Trap
Trap的概念就類似ARM里面的Exception vector異常向量。Trap也有自己的Trap向量表,Trap是為了檢查一些非法的訪問(wèn),例如NMI中斷,內(nèi)存保護(hù)。Trap有自己的類型TCN和ID TIN。
圖32:Trap類型
Trap類型一般有兩種劃分方式,同步或者異步,硬件或者軟件。
同步Trap:CPU在執(zhí)行的過(guò)程中發(fā)生的Trap,比如說(shuō)中斷溢出,取值錯(cuò)誤,內(nèi)存非法訪問(wèn)等。Trap發(fā)生的時(shí)候,CPU會(huì)把Trap發(fā)生的指令的下一條指令作為返回地址保存到A11寄存器當(dāng)中,所以在Trap的handler里面可以讀取A11來(lái)定位Trap發(fā)生的位置。
異步Trap:和中斷類似,一般由外設(shè)或一些協(xié)處理器的錯(cuò)誤造成的。比如說(shuō)FPU上發(fā)生的一些Trap。異步Trap發(fā)生的時(shí)候,A11中的內(nèi)容不具備參考意義的。
硬件Trap:比如說(shuō)CPU執(zhí)行的指令是非法的,內(nèi)存保護(hù)錯(cuò)誤等。
軟件Trap:軟件調(diào)用了一些系統(tǒng)調(diào)用指令,比如assert。
圖33:具體的Trap
圖34:Trap處理過(guò)程
關(guān)鍵點(diǎn),D15保存了Trap的ID號(hào),可以在handler中讀取D15獲取Trap ID。
圖35:Trap保護(hù)機(jī)制
4.11 Permission Privilege Levels
圖36:權(quán)限設(shè)置
圖37:不同模式下的訪問(wèn)權(quán)限
User0模式允許訪問(wèn)外設(shè)寄存器,不允許訪問(wèn)內(nèi)核寄存器,也不允許訪問(wèn)中斷系統(tǒng)寄存器。
User1模式可以訪問(wèn)中斷系統(tǒng)寄存器。
Supervisor模式可以訪問(wèn)核寄存器。
4.12 Memory protection
圖38:內(nèi)存保護(hù)
實(shí)際上就是6組MPU保護(hù),6*18的數(shù)據(jù)保護(hù),6*10的代碼保護(hù)。
Bus MPU: 可以設(shè)置哪些Master Interface可以訪問(wèn)Local SRAM
圖38:增強(qiáng)的內(nèi)存保護(hù)
4.13 Temporal Task Protection
實(shí)時(shí)操作系統(tǒng)對(duì)于內(nèi)存訪問(wèn)錯(cuò)誤可以通過(guò)MPU內(nèi)存保護(hù)來(lái)識(shí)別和定位問(wèn)題,但是對(duì)于任務(wù)超時(shí)該怎么來(lái)監(jiān)控了?-- TriCore提供了時(shí)間任務(wù)保護(hù)機(jī)制來(lái)實(shí)現(xiàn)任務(wù)超時(shí)監(jiān)控。
圖39:時(shí)間任務(wù)保護(hù)
5.Summary
審核編輯:郭婷
-
英飛凌
+關(guān)注
關(guān)注
67文章
2227瀏覽量
139157 -
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7530瀏覽量
164416 -
總線
+關(guān)注
關(guān)注
10文章
2905瀏覽量
88450
原文標(biāo)題:學(xué)習(xí)筆記 | Aurix TC3xx Architecture
文章出處:【微信號(hào):汽車電子嵌入式,微信公眾號(hào):汽車電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
存儲(chǔ)器中訪問(wèn)速度最快的是什么
存儲(chǔ)器芯片的內(nèi)部結(jié)構(gòu)及其引腳類型
外部存儲(chǔ)器有哪些
內(nèi)部存儲(chǔ)器有哪些
請(qǐng)問(wèn)AURIX TC3xx tricore架構(gòu)下浮點(diǎn)運(yùn)算和將浮點(diǎn)數(shù)小數(shù)點(diǎn)去掉變成整數(shù)來(lái)計(jì)算哪種方式更加節(jié)省算力?
微控制器內(nèi)部的存儲(chǔ)器有哪些
TC3XX系列IOM模塊ECMSELR寄存器中的CTS和CES有什么區(qū)別?
TSIM是否支持TC3xx系列在沒(méi)有硬件的情況下調(diào)試應(yīng)用程序?
TC3xx的HSM中有沒(méi)有單調(diào)計(jì)數(shù)器?
TC364微控制器是否支持外部存儲(chǔ)器?
深入解析TC3xx芯片中的SMU模塊應(yīng)用
GCC和TASKING有什么區(qū)別?應(yīng)該為AURIX? TC3xx選擇什么?
TC275 GTM內(nèi)部有單獨(dú)的計(jì)數(shù)模塊嗎?
淺談存儲(chǔ)器層次結(jié)構(gòu)
![淺談<b class='flag-5'>存儲(chǔ)器</b>層次結(jié)構(gòu)](https://file1.elecfans.com/web2/M00/C1/0F/wKgaomXS7quAei_xAAM8PgiHuxg204.png)
ram內(nèi)部存儲(chǔ)器電路組成
![ram<b class='flag-5'>內(nèi)部</b><b class='flag-5'>存儲(chǔ)器</b>電路組成](https://file1.elecfans.com/web2/M00/C0/1E/wKgZomXSyjuANXzEAAAY2J244-I974.jpg)
評(píng)論