TriCore:Interrupt

2024-05-13 10:52
文章标签 tricore interrupt

本文主要是介绍TriCore:Interrupt,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天简单总结下 TriCore 的中断路由模块。

名词缩写

缩写全称说明
IRInterrupt Router

SRService Request

包括:

1. External Resource

2. Internal Resource

3.SW(Software)

SPService Privoder

包括:

1. CPU

2. DMA

SRNService Request Node
SRCService Request Control Register
GPSRGeneral Purpose Service Request
SRBService Request Broadcast Register
ICUInterrupt Control Units
TOSTypes of Service

中断路由器

IR框架

如上图所示,每一个可以产生 SR(Service Request)的模块分别连接到 IR(Interrupt Router)中的一个或多个 SRN(Service Request Node)上,每一个SRN 内都有一个 SRC(Service Request Control Register)。每一路 SRN 都会连接到某一个 ICU(Interrupt Control Unit)上,一个 ICU 对应一个 SP(Service Privoder)。

比如TC39X系列,有 6 个CPU Core 和 1个 DMA,则 6 CPU + 1 DMA = 7SP 。上图中可以看到 CPU0 之后就是DMA,而不是CPU1,应该是对应 TriCore 家族的设计语言,不同子系列虽然资源不同,但是编址一致,因此不同芯片子系列的程序语言可以保持一致。

TC3XX系列最多支持 1024 个SR,不同的家族系列个数不一样,一般来说,Core 越多,支持的 SR 越多。

每一个 Core 中断向量表有256个入口,即最多支持 256 路 SR。

SRC 寄存器

FieldBitsTypeDescription
SRPN7:0rw

设置中断优先级,数字越大,优先级越高。取值范围:[0~255]

其中 优先级 0 专为 DMA使用,因此,用作 CPU的有效中断优先级范围是 [1, 255]

SRN10rw

0:禁用中断

1:使能中断

TOS13:11rw

设置SP的类型,包括 CPU 和 DMA

0: CPU0

1: DMA 

2: CPU1

3: CPU2

4: CPU3

5: CPU4

6: CPU5

ECC20:16rwhECC检测,进行写操作时更新
SRRrh

中断请求标志位(呈现结果,不可写入)

0: 无中断请求,not pending

1: 有中断请求  is pending

CLRRw

清除中断请求

0: No action

1: 清除 SRR; (读取到的值都是0,因此不建议读。如果和 SETR 并行写入,则无效果).

SETRw

发出中断请求

0: No action

1: 写 SRR 和 SWS; (读取到的值都是0,因此不建议读。如果和 CLRR 并行写入,则无效果)

IOVrh

中断触发溢出标志位

0: 无溢出

1: 有溢出

IOVCLRw

清除中断触发溢出标志位

0: No action

1: 清除 IOV; (读取到的值都是0,因此不建议读)

SWSrh

软件粘滞标志位

0: 中断未通过 SETR 触发

1: 中断通过 SETR 触发

SWSCLRw

清除软件粘滞标志位

0: No action

1: 清除 SWS; (读取到的值都是0,因此不建议读)

Otherrreserved

中断初始化

一般来说,中断初始化要进行的操作包括:

SRC.SRPN : 设置该路中断优先级,有效范围是 [1, 255]

SRC.SRN   : 设置该路中断是否使能

SRC.TOS   : 设置该路中断的 SP. 即进行相应的绑核操作

软中断

TriCore 的中断设计允许每一路中断都可以采用软件触发的方式触发,只需要另 SRC.SETR = 1 就可以触发该路中断。

写SRC.SETR = 1 后,会同时有:

1. SRC.SRR ==1,表明该路中断已经被成功触发,处于 Pending 状态;

2. SRC.SWS ==1,表明该路中断是由软件触发;

要清除软件触发,则需要写:

1. SRC.CLRR =1,清除该路中断的 Pending 状态;

2. SRC.SWSCLR =1,清除该路中断的软件触发粘滞标志位;

笔者认为,相对ARM架构来说,TriCore 的中断设计对软件开发人员来说更友好一些,只需要操作一个寄存器即可完成对该路中断的使能/禁用,触发/清除 等操作,定位问题的时候也相对友好一些。

参考资料:

AURIX TC3xx Family User's Manual Part 1 (infineon.com)

这篇关于TriCore:Interrupt的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/985495

相关文章

sqlite3的db.interrupt方法深入解析

在Node.js环境中,sqlite3库是一个广受欢迎的轻量级数据库库,它为开发者提供了一个简洁的API来与SQLite数据库进行交互。在处理长时间运行或复杂的数据库查询时,有时可能需要中断这些查询。sqlite3库提供了db.interrupt方法来实现这一功能。本文将深入解析db.interrupt方法,包括其API函数定义和相应的代码示例解释。 一、db.interrupt方法简介 db

理解interrupt()方法

java interrupt()方法只是设置线程的中断标记,当对处于阻塞状态的线程调用interrupt方法时(处于阻塞状态的线程是调用sleep, wait, join 的线程),会抛出InterruptException异常,而这个异常会清除中断标记。因此,根据这两个思路,不同的run()方法设计,会导致不同的结果,下面是示例,并说明了运行了结果和原因 package com.concurr

MPC5748G之spi polling interrupt

开发环境: 硬件:MPC5748G软件:S32 Design Studio for Power Architecture Version 2017.R1外设:W25Q64 spi引脚: PI[6] CS0_2 xxxPE[15] SCLK_2 819PG[15] SOUT_2 xxxPG[14] SIN_2 818 步骤及注意事项: 1.配置好外设及系统时钟2.初始化sp

MPC5748G之can polling interrupt

开发环境: 硬件:MPC5748G软件:S32 Design Studio for Power Architecture Version 2017.R1外设:TPS43331 I2CTJA1043 CAN can引脚: PB0PB1 步骤及注意事项: 1.配置好外设及系统时钟2.初始化can设置1)轮询模式2)中断模式a.需要在中断向量表中配置中断函数b.初始化中断寄存器P

MPC5748G之adc polling interrupt

开发环境: 硬件:MPC5748G软件:S32 Design Studio for Power Architecture Version 2017.R1 adc引脚: PB5 步骤及注意事项: 1.配置好外设及系统时钟2.初始化adc设置1)轮询模式2)中断模式a.需要在中断向量表中配置中断函数b.初始化中断寄存器PSRc.使能adc转换中断 遇到的问题: EOC与ECH在

MPC5748G之i2c polling interrupt

开发环境: 硬件:MPC5748G软件:S32 Design Studio for Power Architecture Version 2017.R1外设:24LC256 I2C引脚: PE8PE9 步骤及注意事项: 1.配置好外设及系统时钟2.初始化I2C设置1)轮询模式2)中断模式a.需要在中断向量表中配置中断函数b.初始化中断寄存器PSRc.使能I2C接收发送中断

MPC5748G之uart polling interrupt

开发环境: 硬件:MPC5748G软件:S32 Design Studio for Power Architecture Version 2017.R1 串口引脚: PC8PC9 步骤及注意事项: 1.配置好外设及系统时钟2.初始化串口设置1)轮询模式2)中断模式a.需要在中断向量表中配置中断函数b.初始化中断寄存器PSRc.使能串口接收发送中断3.然后就可以愉快的开启串口终

imx6ull Enhanced Periodic Interrupt Timer (EPIT)

一、overview EPIT是一个32位的计时器,能够在处理器很少干预的情况下以固定的时间间隔提供精确的中断。软件使能后,EPIT就开始计数。IMX6ULL有2个EPIT定时器。其框图如下所示: 1.1 epit 特性 EPIT具有以下主要特性: •可选择时钟源的32位递减计数器 •12位预分频器,用于对输入时钟进行分频 •可即时编程的计数器值 •可以设置在低功耗和调试模式下,计数器仍

tq2440_External Interrupt Controller

在开始之前整理一下ARM9结构中断建立过程: /* EXCEPTION HANDLER VECTOR TABLE */  ^ DRAM_BASE  HandleUndef # 4  HandleSwi # 4  HandlePrefetch # 4  HandleAbort # 4  HandleReserv # 4  HandleIrq # 4  HandleFiq # 4  小注: 这里

【ARMv7-A】——WFI(wait for interrupt)

文章目录 WFI基本原理使用场景多任务模型注意事项代码实例linux 内核中的 WFI 指令不使用 WFI 指令使用 WFI 指令 WFI WFI 即 Wait for interrupt,常用于低功耗。 WFI (Wait for interrupt) 和 WFE (Wait for event) 是两个让 ARM 核进入 low-power standby 模式的指令,