探秘:TriCore处理器中断机制
1. TriCore与中断的简介
TriCore是德国英飞凌科技公司旗下的第一个为实时嵌入式系统而优化的统一的、32位的微控制器-DSP(Digital Signal Processing)处理器架构。TriCore的ISA(Instruction Set Architecture),即指令集体系结构,将微控制器的实时能力、DSP的计算能力以及RISC(Reduced Instruction Set Computing)负载 / 存储体系结构的高性能 / 价格特性,结合在了一个紧凑的可重编程核心中。
中断(Interrupt),指在计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行的过程。中断存在于计算机世界的各个角落,几乎所有的工作都离不开中断,可以说中断驱动了整个计算机系统。
2. TriCore处理器中断机制
2.1.TriCore中断系统介绍
TriCore中断系统支持多个中断源(如外设或外部输入源)通过向CPU生成中断信号以请求服务。中断系统还支持处理中断请求的附加单元的实现,例如第二CPU、标准DMA(Direct Memory Access)单元或PCP(Peripheral Control Processor)。
在本文中,这些附加单元被称为“服务提供者”,而中断请求被称为“服务请求”。除了主CPU外,一个服务请求节点SRN(Service Request Node)还可以选择3个“服务提供者”中的其中一个来提供服务。在一个给定的设备中实现的附加服务提供者的实际数量取决于实现数量。
来自各个模块的每个独立的中断或服务请求都会连接到一个服务请求节点,每个服务请求节点,都包含一个服务请求控制寄存器SRC(Request Control Register)。中断仲裁总线连接SRN与服务提供商的中断控制单元。
典型TriCore中断系统图如图1所示。

图 1 典型TriCore中断系统框图
2.2.TriCore中断系统重要组成部分介绍
2.2.1 SRN(Service Request Node)
每个服务请求节点SRN都包含一个服务请求控制寄存器SRC,以及与请求源模块和中断仲裁总线进行通信的必要逻辑。外设模块或其他模块可以有几个服务请求线,每个请求线都连接到相对应的SRN。
为了支持RTOS(Real-Time Operation System)代码中断的软件发布,TriCore架构定义了特殊的四个没有连接到外设或芯片上的任何其他模块上的CPU服务请求节点,这些SRN的中断请求位只能由软件来设置。
2.2.2 ICU(Interrupt Control Unit)
中断控制单元ICU负责管理中断系统,并仲裁传入的中断请求,以找到优先级最高的中断请求,并确定是否将该中断请求传递给“服务提供者”。中断控制单元的数量取决于在TriCore中实现的服务提供者的数量。每个ICU控制其相关的中断仲裁总线,并管理与其“服务提供者”的通信。
2.2.3 中断向量表(Interrupt Vector Table)
中断向量表IVT是一个包含中断服务例程ISR(Interrupt Service Routine)入口地址的数组。中断向量表存储在代码内存中。CPU接受中断时后,首先会在中断向量表中计算与中断优先级(ICR.PIPN位字段, ICR: Interrupt Control Register, 中断控制寄存器;PIPN: Pending Interrupt Priority Number)对应的地址。计算完成后的地址将会加载到程序计数器中,CPU随即开始执行相应指令。
中断向量表的基础寄存器BIV(Base of Interrupt Vector Table Register)存储中断向量表的基本地址。中断向量随着中断优先级的增加而增加。在中断启用前,可以在系统的初始化阶段中使用MTCR(Move To Condition Register)指令修改BIV寄存器。完成这项设置,即可拥有多个中断向量表,并通过改变BIV寄存器的内容在它们之间进行切换。
当中断产生时,CPU会从PIPN和BIV寄存器的内容中计算适当的中断服务例程作为入口点。如下图2所示,中断向量入口地址为 = 基地址(BIV)+ 中断优先级(PIPN)<< 5,中断服务例程从该地址开始执行。

图2 中断向量表入口地址计算
2.3.TriCore中断处理流程
TriCore中的中断是由ICU来控制的,当外设或软件模块向CPU请求中断后,该请求对应的中断优先级会先经过仲裁,然后被推至ICR.PIPN中。在完成中断向量(Interrupt Vector)入口地址的计算后,CPU跳转至改地址并开始执行ISR(中断服务例程)函数。
3. SkyEye——TriCore中断仿真模型
由迪捷软件自主研发的SkyEye全数字实时仿真软件,是基于可视化建模的硬件行为级仿真平台,用户可以利用拖拽的方式快速搭建任意的虚拟硬件平台,保证虚拟嵌入式系统的可靠性和实时性,进行嵌入式软件的开发和调试。SkyEye目前支持主流的嵌入式硬件平台,可以运行主流的操作系统,还能适配国内自主研发的操作系统天脉。通过利用基于LLVM的动态二进制翻译技术,SkyEye可以使虚拟处理器在典型的桌面计算机上的运行速度达到2000MIPS以上。其对标产品为美国风河公司的Simics。
SkyEye 实时仿真软件实现了TriCore 中断相关BIV寄存器和ICR寄存器的数据结构的仿真,并实现了这些寄存器每一位的功能逻辑。同时,SkyEye也仿真了ICU中断控制单元与SRN节点,可执行与真实TriCore硬件中完全一致的中断处理流程。
下图3为中断源为系统定时器STM(System Timer)的中断模型仿真图。

引用:
英飞凌官方TriCore参考手册 tc1_6__architecture_vol1.pdf
原文链接:https://blog.csdn.net/digi2020/article/details/123269862
探秘:TriCore处理器中断机制的更多相关文章
- Java并发编程之多线程
线程 进程/线程/协程/管程 进程:操作系统会以进程为单位,分配系统资源(CPU时间片.内存等资源),是资源分配的最小单位 进程间通信(IPC): 管道(Pipe) 命名管道(FIFO) 消息队列(M ...
- 探秘Tomcat——启动篇
tomcat作为一款web服务器本身很复杂,代码量也很大,但是模块化很强,最核心的模块还是连接器Connector和容器Container.具体请看下图: 从图中可以看出 a. 高亮的两块是Conne ...
- linux0.11下的中断机制分析
http://orbt.blog.163.com/ 异常就是控制流中的突变,用来响应处理器状态中的某些变化.当处理器检测到有事件发生时,它就会通过一张叫做异常表的跳转表,进行一个间接过程调用, ...
- elf 文件格式探秘——程序运行背后的故事
摘要:本文主要讲解elf文件格式,通过readelf命令结合底层的相关数据结构,讲解相关内容,分析程序运行的基本原理. 本文来源:elf 文件格式探秘——程序运行背后的故事 http://blog.c ...
- 第6章 MSI和MSI-X中断机制
在PCI总线中,所有需要提交中断请求的设备,必须能够通过INTx引脚提交中断请求,而MSI机制是一个可选机制.而在PCIe总线中,PCIe设备必须支持MSI或者MSI-X中断请求机制,而可以不支持IN ...
- 6.3 x86处理器如何处理MSI-X中断请求
PCIe设备发出MSI-X中断请求的方法与发出MSI中断请求的方法类似,都是向Message Address所在的地址写Message Data字段包含的数据.只是MSI-X中断机制为了支持更多的中断 ...
- 6.2 PowerPC处理器如何处理MSI中断请求
PowerPC处理器使用OpenPIC中断控制器或者MPIC中断控制器,处理外部中断请求.其中MPIC中断控制器基于OpenPIC中断控制器,但是作出了许多增强,目前Freescale新推出的Powe ...
- 1.4 PCI总线的中断机制
PCI总线使用INTA#.INTB#.INTC#和INTD#信号向处理器发出中断请求.这些中断请求信号为低电平有效,并与处理器的中断控制器连接.在PCI体系结构中,这些中断信号属于边带信号(Sideb ...
- SpringMvc请求处理流程与源码探秘
流程梳理 dispatcherServlet作为前端控制器的主要作用就是接受请求与处理响应. 不过它不是传统意义上的servlet,它在接受到请求后采用转发的方式,将具体工作交给专业人士去做. 参与角 ...
随机推荐
- Linux离线包管理器RPM
Linux离线包管理器RPM RPM 是RedHat Package Manager(RedHat软件包管理工具). 1.rpm常用参数介绍 查看rpm是否安装 rpm -q rpm包名 [root@ ...
- 【题解】Codeforces Round #798 (Div. 2)
本篇为 Codeforces Round #798 (Div. 2) 也就是 CF1689 的题解,因本人水平比较菜,所以只有前四题 A.Lex String 题目描述 原题面 给定两个字符串 \(a ...
- 技术分享 | app测试中常用的Android模拟器
原文链接 Emulator Emualor 是 Android Studio 自带的模拟器,是官方提供的工具,Android 开发最常使用的就是这一款. 它功能非常齐全,电话本.通话等功能都可正常使用 ...
- C语言学习之我见-malloc和free内存申请及释放函数
malloc函数负责向计算机申请确定大小的内存空间. free函数负责释放malloc的申请空间. (1)函数原型 void free(void *_Memory); void * malloc(si ...
- 南京大学 静态软件分析(static program analyzes)-- introduction 学习笔记
一.Programming Languages体系 静态程序分析是编程语言中应用层面下的一个细分领域,它是一个非常重要的核心内容. 在理论部分,考虑的是如何设计一个语言的语法和语义,如何设计语言的类型 ...
- 设计模式-策略模式前端应用校验vue写法
1.定义:定义一系列算法,把它们一个个封装起来,并且它们可以相互替换 2.实际应用:减少if else的使用,在有多种算法相似的情况下,使用 if-else 所带来的复杂和难以维护,提高维护和可读性, ...
- JQuery实现图片轮播无缝滚动
图片轮播无缝滚动实例 实现效果展示预览: 思路: 1.设置当前索引curIndex,和前一张索引prevIndex.(curIndex为下一次要显示的图片索引,prevIndex为现在看见的图片) 2 ...
- python简单处理验证码,三分钟,不能再多了
序言 大家好鸭, 又是我小熊猫啦 我们在做采集数据的时候,过快或者访问频繁,或者一访问就给弹出验证码,然后就蚌珠了~今天就给大家来一个简单处理验证码的方法 环境模块 Python和pycharm如果还 ...
- C4C中更方便的消息管理
- SSRS筛选器的IN运算(即包含于)用法
筛选器的IN运算,在Microsoft的官网上没像样儿的例子,不好设置,很容易错 Microsoft上的文档:https://docs.microsoft.com/zh-cn/sql/reportin ...