0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TC3xx内部模块框图和各种内部总线及存储器访问方式

832065824 来源:汽车电子嵌入式 作者:汽车电子嵌入式 2022-11-04 14:29 次阅读

前言

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

c77e21ec-5bfc-11ed-a3b6-dac502259ad0.png

1.Architectural Overview

c797935c-5bfc-11ed-a3b6-dac502259ad0.png

图1:TC3xx相比于TC2xx改进部分

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

1.1 Performanc

1)支持Tricore 1.6.2的内核

2)增加了新的指令

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

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

5)

1.2 Memories

1)更大的SRAM

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

1.3 ADC

1)TC2xx有队列模式,自动扫描模式,背景扫描模式,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

c7d1ca72-5bfc-11ed-a3b6-dac502259ad0.png

图2:TC3xx系列资源概况

2.Memory Concept

2.1 Memory architecture

c8089f20-5bfc-11ed-a3b6-dac502259ad0.png

图3:TC3xx内存架构

主要关注PFlash和LMU部分。

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

c8388cb2-5bfc-11ed-a3b6-dac502259ad0.png

图4:TC3xx内存访问速度

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

c87f0ade-5bfc-11ed-a3b6-dac502259ad0.png

图5:内存范围起始地址

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

对于每个CPU内部的PSPR和DSPR都不需要使用cache,CPU等待时间是0ws。

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

2.2 Memory and connectivity

c89ddafe-5bfc-11ed-a3b6-dac502259ad0.png

图6:CPU内部总线连接图

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

2.3 Memory map

c8c4bb9c-5bfc-11ed-a3b6-dac502259ad0.png

c980d71e-5bfc-11ed-a3b6-dac502259ad0.png

c9b24696-5bfc-11ed-a3b6-dac502259ad0.png

图7:内存映射图

3.On-chip Bus Connectivity

ca229662-5bfc-11ed-a3b6-dac502259ad0.png

图8:SRI总线

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

ca521428-5bfc-11ed-a3b6-dac502259ad0.png

图9:SRI总线连接图

ca709e16-5bfc-11ed-a3b6-dac502259ad0.png

图10:SRI总线间最差延迟时间

ca9cfbbe-5bfc-11ed-a3b6-dac502259ad0.png

图11:TC39x内部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

cacc021a-5bfc-11ed-a3b6-dac502259ad0.png

图12:TriCore定义

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

cb520ab8-5bfc-11ed-a3b6-dac502259ad0.png

图13:英飞凌TriCore的发展图

4.2 Address range

cb810cfa-5bfc-11ed-a3b6-dac502259ad0.png

图14:TriCore的寻址空间

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

4.3 Pipeline

cbea91ca-5bfc-11ed-a3b6-dac502259ad0.png

图15:Pipline

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

4.4 Instructions

cc566f26-5bfc-11ed-a3b6-dac502259ad0.png

ccbecf94-5bfc-11ed-a3b6-dac502259ad0.png

图16:指令

支持16位和32位指令格式,op1的bit 0为1则是32位指令,op1的bit 0为0则是16位指令。

支持位操作

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

4.5 Data Types

ccf75af8-5bfc-11ed-a3b6-dac502259ad0.png

图17:支持的数据类型

支持大部分数据类型。

4.6 Addressing Modes

cd265740-5bfc-11ed-a3b6-dac502259ad0.png

图18:寻址方式

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

4.7 Core Registers

cd54f5f0-5bfc-11ed-a3b6-dac502259ad0.png

cd74d0f0-5bfc-11ed-a3b6-dac502259ad0.png

图19:核寄存器

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

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

上下文寄存器:

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

内存保护寄存器:

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

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

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

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

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

4.8 Context Management

cd9f54a6-5bfc-11ed-a3b6-dac502259ad0.png

图20:上下文管理

cdd01c3a-5bfc-11ed-a3b6-dac502259ad0.png

图21:上下文存储区域

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

ce0d2526-5bfc-11ed-a3b6-dac502259ad0.png

图21:上下文事件和指令

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

ce3efe52-5bfc-11ed-a3b6-dac502259ad0.png

图22:CSA存放地址

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

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

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

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

4.8 Interrupt System

ce694518-5bfc-11ed-a3b6-dac502259ad0.png

ce8fdad4-5bfc-11ed-a3b6-dac502259ad0.png

cec9de78-5bfc-11ed-a3b6-dac502259ad0.png

图23:中断系统

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

cef89a7e-5bfc-11ed-a3b6-dac502259ad0.png

图24:中断仲裁

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

cf1d5396-5bfc-11ed-a3b6-dac502259ad0.png

图25:中断保护

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

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

cf442fca-5bfc-11ed-a3b6-dac502259ad0.png

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

cf6304a4-5bfc-11ed-a3b6-dac502259ad0.png

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

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

cf8ed8b8-5bfc-11ed-a3b6-dac502259ad0.png

图28:中断向量表

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

d02a596e-5bfc-11ed-a3b6-dac502259ad0.png

图29:中断处理过程

4.9 DMA service requests

d0c8261c-5bfc-11ed-a3b6-dac502259ad0.png

图30:DMA服务请求

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

4.10 Traps

d0fab8fc-5bfc-11ed-a3b6-dac502259ad0.png

图31:Trap

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

d151b0bc-5bfc-11ed-a3b6-dac502259ad0.png

图32:Trap类型

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

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

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

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

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

d1f8ee90-5bfc-11ed-a3b6-dac502259ad0.png

d257cd98-5bfc-11ed-a3b6-dac502259ad0.png

图33:具体的Trap

d291b6e8-5bfc-11ed-a3b6-dac502259ad0.png

图34:Trap处理过程

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

d2d81b2e-5bfc-11ed-a3b6-dac502259ad0.png

图35:Trap保护机制

4.11 Permission Privilege Levels

d3019e9a-5bfc-11ed-a3b6-dac502259ad0.png

图36:权限设置

d32c1c24-5bfc-11ed-a3b6-dac502259ad0.png

d358e4d4-5bfc-11ed-a3b6-dac502259ad0.png

d3874a86-5bfc-11ed-a3b6-dac502259ad0.png

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

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

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

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

4.12 Memory protection

d3a7324c-5bfc-11ed-a3b6-dac502259ad0.png

d3d632cc-5bfc-11ed-a3b6-dac502259ad0.png

图38:内存保护

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

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

d402f122-5bfc-11ed-a3b6-dac502259ad0.png

d42c199e-5bfc-11ed-a3b6-dac502259ad0.png

图38:增强的内存保护

4.13 Temporal Task Protection

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

d4537318-5bfc-11ed-a3b6-dac502259ad0.png

d4ed8c64-5bfc-11ed-a3b6-dac502259ad0.png

d5099ddc-5bfc-11ed-a3b6-dac502259ad0.png

图39:时间任务保护

5.Summary

d5a32eac-5bfc-11ed-a3b6-dac502259ad0.png

d5d39be6-5bfc-11ed-a3b6-dac502259ad0.png

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 英飞凌
    +关注

    关注

    66

    文章

    2134

    浏览量

    138244
  • 存储器
    +关注

    关注

    38

    文章

    7426

    浏览量

    163506
  • 总线
    +关注

    关注

    10

    文章

    2858

    浏览量

    87893

原文标题:学习笔记 | Aurix TC3xx Architecture

文章出处:【微信号:汽车电子嵌入式,微信公众号:汽车电子嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    内部存储器有哪些

    内部存储器,也称为内存(Memory),是计算机系统中用于暂时存储程序和数据的重要组件。它直接与CPU相连,是CPU处理数据的主要来源。内部存储器
    的头像 发表于 09-05 10:42 1147次阅读

    TC3XX系列IOM模块ECMSELR寄存中的CTS和CES有什么区别?

    我想利用 IOM 模块来监控 PWM 输出,但我有一些问题。 TC3XX 系列 IOM 模块 ECMSELR 寄存中的 CTS 和 CES 有什么区别? 如果将 CES 的相应通道设
    发表于 05-29 07:39

    TSIM是否支持TC3xx系列在没有硬件的情况下调试应用程序?

    你好, TSIM是否支持TC3xx系列在没有硬件的情况下调试应用程序? AURIX TC3xx - Free Entry ToolChain 是否有助于实现上述目的?
    发表于 05-17 07:02

    TC3xx的HSM中有没有单调计数

    你好, 我看到 OPTIGA 有单调计数,但我在 TC3xx 的 HSM 中确实找不到单调计数。 能否确认TC3xx的HSM中没有单调计数
    发表于 03-05 07:56

    深入解析TC3xx芯片中的SMU模块应用

    TC3xx芯片是德国英飞凌半导体公司推出的汽车级处理芯片系列,其中的SMU(System Management Unit)模块是其重要组成部分之一。SMU模块
    的头像 发表于 03-01 18:08 1502次阅读

    GCC和TASKING有什么区别?应该为AURIX™ TC3xx选择什么?

    GCC 和 TASKING 有什么区别? 我应该为 AURIX™ TC3xx 选择什么? 这将如何影响代码的运行?
    发表于 03-01 10:09

    TC3xx系列是否支持RTC功能?

    请教各位,TC3xx系列芯片是否支持RTC功能,目前要记录snapshot的时间点(年月日时分秒)。
    发表于 02-02 07:53

    TC3xx系列怎么禁用trap?

    目前在TC3xx调试flash读写功能,单独运行flash相关功能没有问题,但将flash相关功能集成到工程中。操作pflash就会进入trap中,查看了一些帖子说是要禁掉trap?请问怎么禁用trap?目前没找到相关函数
    发表于 01-31 06:21

    TC3XX寄存读写时间过长怎么解决?

    我目前在做TC3XX底层代码优化,经过之前多次测试目前可以确定该系列芯片对单个寄存地址的读写耗时超过100us。请问对于寄存读写耗时你们官方有没有确切的文件说明?还有就是既然寄存
    发表于 01-25 06:56

    如何通过DAP协议访问内部存储器

    我想使用 DAP 协议对 TC38x 系列 MCU 的 pFlash/DFlash 进行编程。 是否有任何记录了 DAP 协议详细信息的相关文档? 如何通过 DAP 协议访问内部存储器
    发表于 01-23 07:51

    TC3xx SCR功耗应该怎么评估?

    TC3xx SCR处于70kHz active状态,以及CAN WAKE UP也处于active,Tricore都掉电了,这个时候功耗是多少呢?SCR中不同的组件激活状态下,功耗应该怎么评估,有没有
    发表于 01-19 08:28

    tc3xx休眠时mcu pin可以是高阻态吗?如何设置?

    tc3xx,休眠时mcu pin可以是高阻态吗?如何设置?
    发表于 01-19 08:26

    英飞凌TC3xx系列安全管理单元的使用

    本篇文档主要用来介绍英飞凌基于AURIX-2G TriCore 1.6.2架构的 TC3xx系列安全管理单元的使用。
    的头像 发表于 12-07 09:29 1931次阅读
    英飞凌<b class='flag-5'>TC3xx</b>系列安全管理单元的使用

    TC3xx芯片时钟系统的锁相环PLL详解

    的Tick数就是基于模块时钟的)。本系列文章就来详细介绍TC3xx芯片的时钟系统及其具体配置。本文为TC3xx芯片时钟系统的锁相环PLL详解。
    的头像 发表于 12-01 09:37 2274次阅读
    <b class='flag-5'>TC3xx</b>芯片时钟系统的锁相环PLL详解

    TC3xx芯片的Endinit功能详解

    为了提供系统的安全性能,TC3xx上一些重要的寄存都受Endinit保护,不能直接修改。如果想要修改这些重要寄存,就需要先按特定步骤解锁Endinit,然后才能修改这些重要的寄存
    的头像 发表于 11-27 09:23 2000次阅读
    <b class='flag-5'>TC3xx</b>芯片的Endinit功能详解