学习笔记 | Aurix TC3xx Architecture

汽车安全 1年前 (2022) admin
1,440 0 0

前言

TriCore™是英飞凌自主开发的私有内核。早在2000年,英飞凌发布了第一代TriCore™单片机产品。英飞凌为TriCore™申请了注册商标,在一个内核架构里集成了RISC精简指令集单片机,MCU微控制器,DSP数字信号处理的功能,是一款计算能力强大的32位实时单片机内核架构。TC3xx系列MCU是基于TC1.6P作为其内核的。本系列文章将记录Infineon芯片的学习笔记。首先介绍TC3xx的内部模块框图和各种内部总线以及存储器访问方式,接着介绍TC1.6.2的内核架构,这其中主要介绍了寻址方式,通用寄存器,上下文管理,中断机制,Trap机制,MPU机制等内容。

学习笔记 | Aurix TC3xx Architecture

参考资料:

[1] https://videos.infineon-autoeco.com/pc/page/index?keyword=AURIX

[2] TriCore TM TC1.6.2 core architecture manual

[3 ]Infineon-AURIX_TC3xx_Part1-UserManual-v02_00-EN

正文


1.Architectural Overview

学习笔记 | Aurix TC3xx Architecture


1TC3xx相比于TC2xx改进部分


如图一所示,TC3xx内部最多支持6个核,这些核间使用SRI总线进行通信,每个核都有自己的MemoryTC3xx在核架构上相比于TC2xx做了如下改进:

1.1 Performanc

1)支持Tricore 1.6.2的内核

2)增加了新的指令

3)最多支持6个核,最大主频达到300MHz

4)每个CPU有自LocalFlash bank,也就是说有自己的Local的总线可以访问自己LocalFlash bank,速度更快

5)

1.2 Memories

1)更大的SRAM

2)更强大的内存保护单元MPU。数据和代码保护的Register的设置更多。

1.3 ADC

1TC2xx有队列模式,自动扫描模式,背景扫描模式,TC3xx只有队列扫描模式,更加的灵活。

1.4 Delta-Sigma

1.5 HSM

1)支持非对称加密算法

1.6 Standby control unit

专门的低功耗管理单元

1.7 IO Pads

支持5/3.3v两种硬件系统

1.8 Ethernet

1)支持千M以太网,支持一部分TSN/AVB的功能

1.9 Safety

1.10 ADAS

增强的SPU

学习笔记 | Aurix TC3xx Architecture


2TC3xx系列资源概况

2.Memory Concept

2.1 Memory architecture

学习笔记 | Aurix TC3xx Architecture


3TC3xx内存架构


主要关注PFlashLMU部分。

每个CPU都可以通过一个私有的LPB总线访问各自3MPFlashbank,访问速度比较快。外部有个LMURam,分为两种,一种叫dLMU,另一种叫LMU。每个cpu可以通过私有的总线访问dLMU,对于LMUCPU只能通过SRI总线来访问,速度相对dLMU的访问较慢。


学习笔记 | Aurix TC3xx Architecture


4TC3xx内存访问速度


PSPR,DSPR,DLMU都是LocalSRAMCPU访问自己的Local Ram的熟读非常的快,例如CPU读写local DSPR都是0等待时间的。CPU也能范围其他核的Local Ram,但是读//取指的速度就会变慢。

学习笔记 | Aurix TC3xx Architecture


5:内存范围起始地址


对于同一款内存可以使用cache的访问方式或者非cache的访问方式。例如对于PFLASH的访问如果使用cache则起始地址是0x80000000,非cache的访问方式的起始地址是0xA0000000。同样,LMU也存在0x90000000/0xB00000000两个起始地址。

对于每个CPU内部的PSPRDSPR都不需要使用cacheCPU等待时间是0ws

每个CPU都有3Mlocal PFLASHbankCPU通过LPB总线访问PFLASH。这个LPB总线在使能了AB SWAP之后就会被disable掉,这么做的原因是为了让code运行在A Bank还是B Bankperformence都是一样的(是能ab swapdisable lpb总线的操作在UCB的一块区域操作)。

2.2 Memory and connectivity

学习笔记 | Aurix TC3xx Architecture


6CPU内部总线连接图


CPU通过SRI Master Interface连接到其他coreSRI Slave Interface来范围其他核的memory

2.3 Memory map

学习笔记 | Aurix TC3xx Architecture

学习笔记 | Aurix TC3xx Architecture

学习笔记 | Aurix TC3xx Architecture


7:内存映射图

3.On-chip Bus Connectivity

学习笔记 | Aurix TC3xx Architecture


8SRI总线


Tricore里面,内核之间的相互访问和通信都是通过SRI总线进行的。Tricore 1.6.2里面SRI总线有3DomainDomain 1包括CPU0-3,通过SRI0进行相互访问。其他类似。SRI直接通过S2S Bridge连接。

学习笔记 | Aurix TC3xx Architecture


9SRI总线连接图


学习笔记 | Aurix TC3xx Architecture


10SRI总线间最差延迟时间


学习笔记 | Aurix TC3xx Architecture


11TC39x内部SRI总线连接图


每个SRI总线都有一个SRI Master Interface和一个SRI Slave Interface,对于一个SRI总线的SRI Slave Interface就存在同一时间多个SRI Master Interface访问的问题,那么就需要SRI具有仲裁的功能。

4.TC1.6.2 Architecture

4.1 TriCore concept

学习笔记 | Aurix TC3xx Architecture


12TriCore定义


TriCore的含义:既有RISC精简指令集的特性,也集成了DSP数字信号处理器的性能,同时也可以实现实时控制。

学习笔记 | Aurix TC3xx Architecture


13:英飞凌TriCore的发展图

4.2 Address range

学习笔记 | Aurix TC3xx Architecture


14TriCore的寻址空间

4G的寻址空间,16Segment,小端系统。

4.3 Pipeline

学习笔记 | Aurix TC3xx Architecture

15Pipline


整型的Pipline主要组数据的运算,类似数据的加减乘除。Load/Store Pipline主要用来做数据的读取和存储,Loop Pipline主要做数据的循环处理。三个Pipline可以并行处理。

4.4 Instructions

学习笔记 | Aurix TC3xx Architecture

学习笔记 | Aurix TC3xx Architecture


16:指令


支持16位和32位指令格式,op1bit 01则是32位指令,op1bit 00则是16位指令。

支持位操作

支持MAC乘加指令,除法指令,单周期多数据处理指令SIMD

4.5 Data Types

学习笔记 | Aurix TC3xx Architecture


17:支持的数据类型

支持大部分数据类型。

4.6 Addressing Modes

学习笔记 | Aurix TC3xx Architecture


18:寻址方式

支持绝对地址寻址,相对地址寻址,先加减后运算寻址,先运算后加减寻址。

4.7 Core Registers

学习笔记 | Aurix TC3xx Architecture

学习笔记 | Aurix TC3xx Architecture


19:核寄存器


通用寄存器:和ARM核(r0 – r15)不一样,数据寄存器和地址寄存器分开。数据运算和地址运算不冲突,这样可以提高寻址和数据处理的效率。

系统寄存器:PC指针,程序状态字寄存器,系统控制寄存器(比如设置系统在Run/Halt/Sleep状态)

上下文寄存器

中断和陷阱控制寄存器:ICR寄存器可以控制全局中断的开关。BIV是中断向量表的起始地址,BTV是陷阱向量表的起始地址。

内存保护寄存器

栈中断寄存器:通用寄存器里面的A10user stack pointer,而ISPinterrupt stack pointer,通过PSW寄存器可以设置是否使用ISP,如果使用了ISP的话,通常情况下系统使用A10作为栈指针,一旦产生中断后系统把ISP指向的地址赋值给A10,也就是中断使用另一块内存作为栈空间。

访问核寄存器只能只用专用的MTCR,MFCR指令。

A11类似ARM核里面的LR寄存器。

所谓Global Address也就是进入中断或者进行函数调用的时候是不存这些内容的。

数据和地址寄存器可以两个合起来作为一个64位的寄存器(P0/D0)。

4.8 Context Management

学习笔记 | Aurix TC3xx Architecture

20:上下文管理


学习笔记 | Aurix TC3xx Architecture


21:上下文存储区域


TriCore的上下文处理比较特殊。对于通用MCUARM 核)在进入中断或者函数调用时候的上下文内容一般存放在栈里面的,但是TriCore的上下文存放在一个叫CSA的区域的。Upper Context 的内容由硬件自动处理,而Lower Context的内容需要一些特殊的指令操作。


学习笔记 | Aurix TC3xx Architecture

21:上下文事件和指令


对于绝大部分简单的ISR, Trap, 函数调用都比较简单的话只要保存Upper context就足够了,也就不会产生后面的BISR,SVLCX,STLCX,STUCX指令。


学习笔记 | Aurix TC3xx Architecture


22CSA存放地址


CSA可以存放在DSPR(一般存放在这里),DLMU,External Memory里面,通过修改连接ld文件来配置。

FCX: 指向空闲的CSA的起始地址。

PCX: 指向已经使用的CSA的地址。

LCX: 指向空闲CSA的结束地址。

4.8 Interrupt System

学习笔记 | Aurix TC3xx Architecture

学习笔记 | Aurix TC3xx Architecture

学习笔记 | Aurix TC3xx Architecture

23:中断系统


TriCore 1.6.2中最多有7个中断服务提供对象,分别是CPU0-5以及DMA。每一个Service Provider对应一个中断控制单元ICU,中断服务请求节点SRN最多有1024个,8GPSR可以用作软中断做来核间通信。


学习笔记 | Aurix TC3xx Architecture


24:中断仲裁

ICU能够仲裁处理多个SRN同时的请求。


学习笔记 | Aurix TC3xx Architecture


25:中断保护


中断寄存器也有保护机制,SRCECC的保护措施,在写完SRC寄存器后会自动生产一个ECCCode,然后这个SRC的内容在被读取的时候就会做ECCcheck

SRC寄存器的权限也可以设置。比如,每个Bus Master总线都会有一个TAG-ID,我们可以设置SRC寄存器可以被哪些TAG-ID表示的总线访问。


学习笔记 | Aurix TC3xx Architecture


26:服务请求控制寄存器SRC


学习笔记 | Aurix TC3xx Architecture


27:中断控制寄存器ICR和中断向量表地址寄存器BIV

VSS寄存器设置中断向量表是8字节对齐还是32字节对齐。


学习笔记 | Aurix TC3xx Architecture


28:中断向量表


TricCore里面,中断向量表不是固定的,是跟着中断优先级走的,也就是整个中断向量表内中断服务的排序是会跟着中断优先级的变化而变化的(和其他内核不一样)。

学习笔记 | Aurix TC3xx Architecture


29:中断处理过程

4.9 DMA service requests

学习笔记 | Aurix TC3xx Architecture


30DMA服务请求

SRN目标也可以选择DMA的,选择DMA的时候,TOS要设置成1中断优先级要设置成和DMA的通道号一样,也就是中断优先级在选择DMA的时候就是DMA的通道号,这个很关键。

4.10 Traps

学习笔记 | Aurix TC3xx Architecture


31Trap

Trap的概念就类似ARM里面的Exception vector异常向量。Trap也有自己的Trap向量表,Trap是为了检查一些非法的访问,例如NMI中断,内存保护。Trap有自己的类型TCNID TIN

学习笔记 | Aurix TC3xx Architecture


32Trap类型

Trap类型一般有两种划分方式,同步或者异步,硬件或者软件。

同步TrapCPU在执行的过程中发生的Trap,比如说中断溢出,取值错误,内存非法访问等。Trap发生的时候,CPU会把Trap发生的指令的下一条指令作为返回地址保存到A11寄存器当中,所以在Traphandler里面可以读取A11来定位Trap发生的位置。

异步Trap:和中断类似,一般由外设或一些协处理器的错误造成的。比如说FPU上发生的一些Trap。异步Trap发生的时候,A11中的内容不具备参考意义的。

硬件Trap:比如说CPU执行的指令是非法的,内存保护错误等。

软件Trap:软件调用了一些系统调用指令,比如assert

学习笔记 | Aurix TC3xx Architecture

学习笔记 | Aurix TC3xx Architecture


33:具体的Trap


学习笔记 | Aurix TC3xx Architecture


34Trap处理过程


关键点,D15保存了TrapID号,可以在handler中读取D15获取Trap ID


学习笔记 | Aurix TC3xx Architecture


35Trap保护机制

4.11 Permission Privilege Levels

学习笔记 | Aurix TC3xx Architecture


36:权限设置


学习笔记 | Aurix TC3xx Architecture

学习笔记 | Aurix TC3xx Architecture

学习笔记 | Aurix TC3xx Architecture


37:不同模式下的访问权限


User0模式允许访问外设寄存器,不允许访问内核寄存器,也不允许访问中断系统寄存器。

User1模式可以访问中断系统寄存器。

Supervisor模式可以访问核寄存器。

4.12 Memory protection

学习笔记 | Aurix TC3xx Architecture

学习笔记 | Aurix TC3xx Architecture


38:内存保护


实际上就是6MPU保护,6*18的数据保护,6*10的代码保护。

Bus MPU: 可以设置哪些Master Interface可以访问Local SRAM

学习笔记 | Aurix TC3xx Architecture

学习笔记 | Aurix TC3xx Architecture


38:增强的内存保护

4.13 Temporal Task Protection

实时操作系统对于内存访问错误可以通过MPU内存保护来识别和定位问题,但是对于任务超时该怎么来监控了?— TriCore提供了时间任务保护机制来实现任务超时监控。

学习笔记 | Aurix TC3xx Architecture

学习笔记 | Aurix TC3xx Architecture

学习笔记 | Aurix TC3xx Architecture


39:时间任务保护

5.Summary

学习笔记 | Aurix TC3xx Architecture

学习笔记 | Aurix TC3xx Architecture


推荐阅读

Autosar架构下的模块详细设计及代码实现–基于配置的编程方法

AUTOSAR 通信服务-CanSM概念详解

AUTOSAR 通信服务-PDU Router

AUTOSAR CAN通信协议栈分析(2)-CanIf

C语言编程技巧(1)-表驱动法

CANoe工具使用(1)-实现CAN通道的收、发、录、回放报文

S32K平台学习(1)-S32K144启动流程分析

详解芯片Rese Vector和Interrupt Vector-以S32K和RH850为例

Can通信协议栈分析(1)-Can Driver

AUTOSAR 通信服务 – NM概念详解

AUTOSAR模式管理-EcuM Sleep and UP详解

AUTOSAR 诊断服务-DEM功能概述

基于AUTOSAR与Matlab开发应用层(三)应用层总体功能开发和集成

AUTOSAR-MCAL–SPI模块详解(三)

AUTOSAR-MCAL–MCU模块详解

RH850-U2A16芯片–RAM and Flash介绍

AUTOSAR 通信服务-Dcm实例应用

AUTOSAR存储协议栈– EEPROM Driver模块介绍

AUTOSAR模式管理-BSW模块和其他模块的交互(一)

AUTOSAR-MCAL–SPI模块详解(三)

详解芯片Rese Vector和Interrupt Vector-以S32K和RH850为例

End




欢迎点赞,关注,转发,在看,您的每一次鼓励,都是我最大的动力!

汽车电子嵌入式

微信扫描二维码,关注我的公众号


原文始发于微信公众号(汽车电子嵌入式):学习笔记 | Aurix TC3xx Architecture

版权声明:admin 发表于 2022年11月4日 下午12:15。
转载请注明:学习笔记 | Aurix TC3xx Architecture | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...