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. pycharm相关介绍

    一.settings设置   1.搜font 设置字体 2.Keymap------快捷键 二.常用快捷键 1.Ctrl + Enter:在下方新建行但不移动光标: 2.Shift + Enter:在 ...

  3. C语言学习之我见-strncat()可调整的字符串拼接函数

    strncat()函数,用于两个字符串的拼接. (1)函数原型 char * strncat(char * Dest,const char * Source,size_t _Count)` (2)头文 ...

  4. OpenCloudOS使用snap安装.NET 6

    开源操作系统社区 OpenCloudOS 由腾讯与合作伙伴共同倡议发起,是完全中立.全面开放.安全稳定.高性能的操作系统及生态.OpenCloudOS 沉淀了多家厂商在软件和开源生态的优势,继承了腾讯 ...

  5. bat-命令行安装软件

    批处理 执行的两种方式 1.直接右键以管理员身份运行 2.在管理员身份的cmd窗口中 .\xxx.bat 执行 区别 第一种方式 当前cmd默认路径为 C:\windows\system32 第二种方 ...

  6. MYSQL的事务和索引

    事务 什么是事务 事务就是将一组SQL语句放在同一批次内去执行 如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行 MySQL事务处理只支持InnoDB和BDB数据表类型 事务的ACID原则 ...

  7. Redis 笔记 01:入门篇

    Redis 笔记 01:入门篇 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...

  8. 【Python爬虫技巧】快速格式化请求头Request Headers

    你好,我是 @马哥python说 . 我们在写爬虫时,经常遇到这种问题,从目标网站把请求头复制下来,粘贴到爬虫代码里,需要一点一点修改格式,因为复制的是字符串string格式,请求头需要用字典dict ...

  9. Vue 监视数据总结 && 表单控件使用总结

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 & ...

  10. 6.1 NOI 模拟

    \(T1\ pocky\) 要求式子 \[\sum_{i=2}^n a_i\times \gcd(a_i,a_{i-1}) \] 考虑可以枚举\(a_i,a_{i-1}\)的值,然后插板法,枚举每个位 ...