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)的中断模型仿真图。

图 3 中断模型仿真图

引用:

英飞凌官方TriCore参考手册 tc1_6__architecture_vol1.pdf

原文链接:https://blog.csdn.net/digi2020/article/details/123269862

探秘:TriCore处理器中断机制的更多相关文章

  1. Java并发编程之多线程

    线程 进程/线程/协程/管程 进程:操作系统会以进程为单位,分配系统资源(CPU时间片.内存等资源),是资源分配的最小单位 进程间通信(IPC): 管道(Pipe) 命名管道(FIFO) 消息队列(M ...

  2. 探秘Tomcat——启动篇

    tomcat作为一款web服务器本身很复杂,代码量也很大,但是模块化很强,最核心的模块还是连接器Connector和容器Container.具体请看下图: 从图中可以看出 a. 高亮的两块是Conne ...

  3. linux0.11下的中断机制分析

    http://orbt.blog.163.com/     异常就是控制流中的突变,用来响应处理器状态中的某些变化.当处理器检测到有事件发生时,它就会通过一张叫做异常表的跳转表,进行一个间接过程调用, ...

  4. elf 文件格式探秘——程序运行背后的故事

    摘要:本文主要讲解elf文件格式,通过readelf命令结合底层的相关数据结构,讲解相关内容,分析程序运行的基本原理. 本文来源:elf 文件格式探秘——程序运行背后的故事 http://blog.c ...

  5. 第6章 MSI和MSI-X中断机制

    在PCI总线中,所有需要提交中断请求的设备,必须能够通过INTx引脚提交中断请求,而MSI机制是一个可选机制.而在PCIe总线中,PCIe设备必须支持MSI或者MSI-X中断请求机制,而可以不支持IN ...

  6. 6.3 x86处理器如何处理MSI-X中断请求

    PCIe设备发出MSI-X中断请求的方法与发出MSI中断请求的方法类似,都是向Message Address所在的地址写Message Data字段包含的数据.只是MSI-X中断机制为了支持更多的中断 ...

  7. 6.2 PowerPC处理器如何处理MSI中断请求

    PowerPC处理器使用OpenPIC中断控制器或者MPIC中断控制器,处理外部中断请求.其中MPIC中断控制器基于OpenPIC中断控制器,但是作出了许多增强,目前Freescale新推出的Powe ...

  8. 1.4 PCI总线的中断机制

    PCI总线使用INTA#.INTB#.INTC#和INTD#信号向处理器发出中断请求.这些中断请求信号为低电平有效,并与处理器的中断控制器连接.在PCI体系结构中,这些中断信号属于边带信号(Sideb ...

  9. SpringMvc请求处理流程与源码探秘

    流程梳理 dispatcherServlet作为前端控制器的主要作用就是接受请求与处理响应. 不过它不是传统意义上的servlet,它在接受到请求后采用转发的方式,将具体工作交给专业人士去做. 参与角 ...

随机推荐

  1. 无鼠标打开Windows设备管理

    转载:https://blog.csdn.net/weixin_39946767/article/details/118644619

  2. 物联网无线数传应用中的Modbus通信网关协议到底是什么?

    什么是物联网 通信Modbus网关 Modbus协议无线通信网关就是将一种Modbus协议帧转换为其他物联网无线数传协议帧. 比如将Modbus RTU的数据与Modbus TCP数据进行相互转换:也 ...

  3. Java 多线程共享模型之管程(下)

    共享模型之管程 wait.notify wait.notify 原理 Owner 线程发现条件不满足,调用 wait 方法,即可进入 WaitSet 变为 WAITING 状态 BLOCKED 和 W ...

  4. 开源流程引擎osworkflow、jbpm、activiti、flowable、camunda哪个好?

    市场上比较有名的开源流程引擎有osworkflow.jbpm.activiti.flowable.camunda.其中:Jbpm4.Activiti.Flowable.camunda四个框架同宗同源, ...

  5. 攻防世界pwn题:实时数据检测

    0x00:查看文件 一个32位的文件,canary.NX.PIE保护机制均关闭. 0x01:用IDA进行静态分析 程序很简单,输入一串字符(个数限制:512),然后再输出.最后根据key变量进行条件语 ...

  6. 【2022-06-16】Pycharm的下载与安装使用

    一.Pycharm软件简介 产品简介 PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Pyt ...

  7. numpy中的np.round()取整的功能和注意

    numpy中的np.round()取整的功能和注意 功能 np.round() 是对浮点数取整的一个函数,一般的形式为 np.round(a, b),其中a为待取整的浮点数,b为保留的小数点的位数 注 ...

  8. markdown常用到的语法

    一.标题 后加文字,几个#代表几级标题,最高为6 ,标准语法一般在#后跟个空格再写文字. 二.分割线 三个或者三个以上的 - 或者 * 三.图片 格式: ![A](B "C") A ...

  9. SQL server设置连接数

    SQLServer查看及设置最大连接数   很多时候自己本地开发会遇到 ,打开几个连接正常访问 之后就报错误,这时候需要调整sqlserver 最大连接数. 1. 查询最大连接数 SELECT val ...

  10. Spring Security认证器实现

    目录 拦截请求 验证过程 返回完整的Authentication 收尾工作 结论 一些权限框架一般都包含认证器和决策器,前者处理登陆验证,后者处理访问资源的控制 Spring Security的登陆请 ...