TC3xx中断路由IR模块详解

原创 汽车电子嵌入式 2024-01-24 07:57

前言

如果熟悉ARM Cotex-M4架构,则我们知道ARM架构的芯片都有一个中断控制器(NVIC, Nested Vectored Interrupt Controller)来管理中断,中断控制器使用中断向量表来管理中断,每个中断对应一个唯一的中断向量,在中断触发的时候,NVIC会根据中断向量找到对应的中断服务程序(Interrupt Service Routine, ISR)来进行中断处理。外设模块都有一个或几个固定的中断号。

而英飞凌Infineon芯片具有自己独立的Tricore架构,来自外部资源、内部资源或者软件的中断请求在Tricore架构里面叫做服务请求(service requests),响应中断的CPU或者DMATricore架构中叫做服务提供者(Service Provider)。

缩略词

简写

全称

IR

Interrupt Router

SRN

Service Request Node

ISP

Interrupt Service Provider

ICU

Interrupt Control Unit

TOS

Type of Service

GPSR

General Purpose Service Request



注:本文章引用了一些第三方工具和文档,若有侵权,请联系作者删除!

正文

1.功能概述

中断系统在中断路由模块中实现,该模块包括服务请求节点 (SRN) ,中断控制单元 (ICU) 以及用于软件开发支持的附加功能。


如图 下图所示,可以生成服务请求的每个模块都连接到中央中断路由模块中的一个或多个 ServiceRequest 节点 (SRN)。 中断路由模块还包括多个通用服务请求节点 (SRN) ,这些节点可用于软件 (SW) 触发的服务请求。 每个 SRN 都包含一个服务请求控制寄存器 (SRC) ,用于配置有关优先级的服务请求,并映射到一个可用的服务提供者。



每个 SRN 都连接到中断路由模块中的所有 ICU ,其中 SRN 控制寄存器设置定义了目标服务提供者和服务请求的优先级。


每个 ICU 处理映射到 ICU 的来自 SRNs 的竞争服务请求之间的中断仲裁。


每个 ICU 都连接到一个服务提供者 (CPU DMA 模块) ,其中 ICU 提供有效的仲裁轮服务请求 /SRN ,服务提供者在处理 ICU 的服务请求时向 ICU 发出信号,并向 ICU 发出信号。

 


2. 服务请求节点(SRN

中断路由器模块中的每个服务请求节点 (SRN) 都包含一个服务请求控制 (SRC) 寄存器和接口逻辑,用于将其连接到中断路由模块外部的触发装置和中断路由内部的中断仲裁总线。


2.1服务请求控制寄存器

中断路由模块中的所有服务请求控制寄存器的格式都相同。 一般而言,这些寄存器包括:


. Enable/Disable 信息(SRE)。


. 服务器请求设置位和服务请求清除位(SETRCLRR)。


. 软件粘滞位 (SWS) 表示软件发起的服务请求。


. 服务请求优先级向量(SRPN)。


. 服务器请求目的地/服务提供者。


. 向安全管理单元 (SMU) 发出完整性错误信号。


. 中断溢出标志位(IOV)。


除了通过硬件由相关触发装置激活外,每个 SRN 还可以通过软件启动的两个服务请求控制位由软件设置或重置。

 

 

 

 

 

注意:配置SRN寄存器需要很多的权限,具体的权限配置参考芯片手册。不过,SRN的配置、使能、初始化过程一般都是OS来接管的,对于普通开发者来讲,了解其过程即可。


3. 中断请求触发源和SRNs的映射关系

 

每一个中断请求都和一个SRN一一对应,比如:


对于CAN12,也就是CAN1INT2,对应SRCSRC_CAN1INT2,对应的SRC地址为:

0x5B0 +1*0x40 + 2*4 = 0x5F8

 


AUTOSAR配置工具(Davinci)中需要配置OsISR如下:

 


每个中断请求都对应中断向量表中的一个中断向量索引,vector[index],也对应一个SRN[index]index计算公式如下:


Index (SRC) = (SRC Address Offset) / 4


举例

0x5F8 / 0x4 = 370

则,CAN12的中断在中断向量表中的位置为:Interrupt Vector[370],对应的SRNSRN[370]. 


注意Aurix芯片中的CAN模块的每一个硬件单元不区分Can_Rx还是 Can_Tx中断,统一都是一个中断Trigger,也就对应一个SRN,也就是对应一个ISR(中断服务例程/程序),在中断服务程序中区分是Can_Tx/Can_Rx/Can_BusOff触发的中断。


4. 中断控制单元(ICU

中断路由模块中的每个服务提供者(CPU DMA 模块)对应一个 ICU,也就是其中每个 ICU 与一个服务提供者相关。 可以通过 SRN SRCx.TOS 寄存器位字段将 SRNs 映射到其中一个 ICU.


中断控制单元的作用:


. 管理映射到 ICU 的来自 SRNs 的竞争服务请求之间的仲裁。


. 向服务提供者提供仲裁后的获胜者。


. 接收服务提供者提供的接受服务请求的信息。


. 检查接受的服务请求信息 (ECC 检查)


. 向安全管理单元  (SMU) 发送完整性错误信号。


. 管理相关 SRNs 中已确认服务请求的清除信息。


注意:在当前实施中, ECC 代码仅用于错误检测。 检测到的错误将报告给 SMU ,但未纠正。


4.1 ICU控制器寄存器

ICU模块通过LWSRLatest Winning Service Request )寄存器将SRC仲裁后的Winner信息提供给ISPInterrupt Service Provider, CPU or DMA)。

 


ICU模块通过LASRLast Acknowledged Service Request)寄存器从ISP获取ISP已经接接受/处理的SR信息。

 

ECRError Capture Register)寄存器捕获(CapturesLASR寄存器内容,当ICU检测到ECC Error时。

 

 

4.2 通用服务请求寄存器及服务请求广播寄存器

GPSRGeneral Purpose Service Requests)用于实现软件中断,因为GPRS没有映射到任何的硬件中断触发事件。


INT 模块提供了多组通用服务请求 (GPSR) ,并提供了一种通过软件并行触发 GPSR 组多个服务请求的机制。

 


4.2.1 通用目的服务请求(GPSRxy

INT 模块提供多组通用服务请求:


•每个通用服务请求组由八个服务请求节点组成。


•通用服务请求的名称是 SRC_GPSRxy)


GPSR 用于软件中断 (未映射到硬件服务请求触发器)


GPSR 只能通过向相关 SRC_GPSRxy.SETR1 写入 ´1´ 或向 SRBx[y] 中的相关服务请求广播寄存器位写入 ´1´来触发)


SRC_GPSRxy: x = group number; y= number of interrupt within the group, y=0:7


4.2.2 服务请求广播寄存器(SRBx

服务广播寄存器 (SRBx) 可用于并行设置对多个服务提供商 (CPU DMA) 的服务请求。


为每个通用服务请求组 (GPSRxy1) 实施了一个服务请求广播寄存器 (SRBx)


•服务请求广播寄存器 (SRBx) 可用于并行触发 SRC_GPSRx1 组内的多个服务请求。


•服务请求广播寄存器始终读取为 0 •向 SRBx[y] 写入 ´1´ 将触发服务请求 GPxyXR1)


•向 SRBx[31:6] 写入 ´1´ 不起作用。


4.2.3 SRBx的访问保护寄存器(ACCEN_SRBx

每个 SRBx 寄存器都通过专用 ACCE_SRx0 / ACCE_SRBx1 寄存器集进行写保护:


•每个 SRBx 寄存器都有一个相关的 ACCE_SRBx 寄存器 (x = 相同的数字)


ACCE_SRBx 的配置定义了允许向相关 SRBx 寄存器写入哪个标签 ID 


•如果存在访问保护违规,写入将被静默忽略,将向 SMU 发送错误信号。


除了发送给 SMU 的信号,不会生成其他错误,中断或陷阱。


用例: ACCEN_SRBx 定义允许向 SRBx 写入哪个标签 ID 以触发通用服务请求组 x 的多个服务请求节点。


5. 仲裁处理

中断模块中的每个 ICU 都有自己的中断总线。 通过 SRC.TOS 位字段设置将每个服务请求节点 (SRN) 映射到相关的 ICU / 中断总线,可以将其定向到一个服务提供者。

 


在第一个待决服务请求中,相关中断总线正在启动第一个仲裁过程。 相关中断控制单元提供了赢得最后一个仲裁过程的服务请求。


仲裁过程使用 3-4 个系统外围总线时钟周期来确定优先级最高的服务请求 SRPN


在仲裁过程中,中断总线将比较所有待定服务请求节点的 SRC.SRPN 位字段,这些节点通过 SRC.TOS 设置映射到此中断总线。 在仲裁过程中,优先级最高的未决服务请求被确定为获奖者,相关的 SRN 服务请求控制寄存器位字段值 SRPN ECC SRN 索引将提供给 ICUICU 向服务提供商提供这些 (SRPN ECC SRN 索引)  ICU 在收到服务提供商的这些信息并进行确认后,会执行 ECC 检查。 ECC 检查通过接收到的值完成: ECC SRPN SRN 索引号,假定 SRE 位为´1´ (启用 SRN) ICU TOS 号。


中断路由器模块向安全管理单元发出检测到的错误信号 (SMU 中的一个位,涵盖所有 SRN ICU 的错误)


注意:在当前实施中, ECC 代码仅用于错误检测。 检测到的错误将报告给 SMU ,但未纠正。


6. 中断处理函数ISR的地址计算

中断向量表基地址寄存器BIV[VSS]域标识使用的是32 字节向量空间,还是8字节向量空间。


注意AUTOSAR架构下,如果使用VectorOSBIV寄存器的初始值需要用户配置,VectorMICRSOS不会配置BIV寄存器,且BIV寄存器是受EndInit保护的。

 


ICU仲裁SRN的中断服务器请求后,会通过ICRICU Interrupt Control)寄存器给CPU发送中断请求(如果TOS选择的是CPU而不是DMA)。

 

 

 


CPU判断BIV.VSS,然后根据ICR. PIPN来计算ISR地址:


a) 方案


BIV.VSS == 0, 32byte向量。ISR地址 == ICR. PIPN << 5 | BIV


b) 方案


BIV.VSS == 1, 8字节向量。ISR地址 == ICR. PIPN << 3 | BIV


C) 方案


PIPN不在有用,只有一个Vector地址。

 


通过使用 32 字节配置,小型中断例程可以直接实施到矢量表中。


它们甚至可以跨越多个矢量条目 (请参见 TriCore Architecture Manual)。 如果矢量表可以位于 TriCore 程序侧内存中,则此类快速中断处理非常有用。 8 字节配置会减小矢量表的大小。 每个引导程序条目只包含一个跳转指令或一个调用,并返回为 16 位操作代码指令。 TriCore 编译器支持通过关键字或函数生成这种中断向量表。 如果 BIV 掩码 PIPN ,以便任何中断地址计算都将产生相同的地址,则可以配置最小矢量表。 例如:


__mtcr(BIV,0x80000001 | 0xFF<<3); // move to core register BIV


这将配置 BIV 寄存器使用函数中断处理程序所在的通用单个条目,通过使用函数指针数组将其分支到特定中断例程。 如果使用指向阵列的指针,则可以快速切换阵列。


C方案示例代码

void (*isr_pointer_array[256])(void);void (**isr) (void) = isr_pointer_array;void interruptHandlerInstall(long int SRprio, long int addr){*isr_pointer_array[SRprio]=addr; } void interruptHandler(void){isr[__mfcr(ICR)& 0xFF]();asm (" rfe"); // return from event}

(Line 1) define ISR pointer array. Max. 255 interrupts possible.


(Line 2) define pointer which points to the start of the isr_pointer_array.


(Line 3) start of function interruptHandlerInstall. This function installs the interrupts in the array. Necessary


information are the interrupt priority and ISR entry address.


(Line 4) This line stores the ISR entry address in the array.


(Line 5 and 6) This function branches to the specific interrupt routine and gets called immediately after an interrupt occurs.


(Line 7) This line gives the return command, after the ISR has been processed.


中断条目地址存储在数据数组中,而不是将值编码到指令中。 函数 interruptHandlerInstall组织该数组中中断的安装。这种矢量表生成有时比8字节配置更灵活,不需要任何特定的编译器支持中断。


注意:在中断发生之前,必须全局启用中断系统。 中断控制寄存器 (ICR) 包含启用 CPU 服务请求系统的全局中断启用位 (ICR.IE)。 大多数编译器支持以下属性 (或类似属性)

__enable ().

设置此位。

 


End

「汽车电子嵌入式在CSDN上同步推出AUTOSAR精进之路专栏,本专栏每个模块完全按实际项目中开发及维护过程来详细介绍。模块核心概念介绍、实际需求描述、实际工程配置、特殊需求介绍及背后原理、实际工程使用经验总结。 目的是让读者看完每一个章节后能理解原理后根据需求完成一个模块的配置或者解决一个问题。」


点击文章最后左下角的阅读原文可以获取更多信息


或者复制如下链接到浏览器获取更多信息

https://blog.csdn.net/qq_36056498/article/details/132125693


文末福利




1
.如需汽车电子嵌入式收集的学习文档,
后台回复“

资料

即可免费下载;

2.为便于技术交流,创建了汽车电子嵌入式技术交流群,可尽情探讨AP,CP,DDS,SOME/IP等前沿热点话题,后台回复“加群”即可加入;



注:本文引用了一些第三方工具和文档,若有侵权,请联系作者删除!


推荐阅读

汽车电子嵌入式精彩文章汇总第一期:20210530-20230703

汽车电子嵌入式精彩文章汇总第2期

TC3xx芯片GTM模块-CMU,CCM,TBU详解

TC3xx芯片GTM模块-TOM详解

AUTOSAR架构下PWM模块配置实践

TC3xx芯片GTM模块-TIM详解

AUTOSAR架构下ICU模块配置实践

TC3xx芯片电源管理系统PMS详解



End


欢迎点赞,关注,转发,在看,您的每一次鼓励,都是我最大的动力!

汽车电子嵌入式

微信扫描二维码,关注我的公众号


评论
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 198浏览
  • 「他明明跟我同梯进来,为什么就是升得比我快?」许多人都有这样的疑问:明明就战绩也不比隔壁同事差,升迁之路却比别人苦。其实,之间的差异就在于「领导力」。並非必须当管理者才需要「领导力」,而是散发领导力特质的人,才更容易被晓明。许多领导力和特质,都可以通过努力和学习获得,因此就算不是天生的领导者,也能成为一个具备领导魅力的人,进而被老板看见,向你伸出升迁的橘子枝。领导力是什么?领导力是一种能力或特质,甚至可以说是一种「影响力」。好的领导者通常具备影响和鼓励他人的能力,并导引他们朝着共同的目标和愿景前
    优思学院 2025-01-08 14:54 58浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 105浏览
  • 本文介绍编译Android13 ROOT权限固件的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。关闭selinux修改此文件("+"号为修改内容)device/rockchip/common/BoardConfig.mkBOARD_BOOT_HEADER_VERSION ?= 2BOARD_MKBOOTIMG_ARGS :=BOARD_PREBUILT_DTB
    Industio_触觉智能 2025-01-08 00:06 88浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 214浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 98浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 140浏览
  • 故障现象一辆2017款东风风神AX7车,搭载DFMA14T发动机,累计行驶里程约为13.7万km。该车冷起动后怠速运转正常,热机后怠速运转不稳,组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断 用故障检测仪检测,发动机控制单元中无故障代码存储;读取发动机数据流,发现进气歧管绝对压力波动明显,有时能达到69 kPa,明显偏高,推断可能的原因有:进气系统漏气;进气歧管绝对压力传感器信号失真;发动机机械故障。首先从节气门处打烟雾,没有发现进气管周围有漏气的地方;接着拔下进气管上的两个真空
    虹科Pico汽车示波器 2025-01-08 16:51 67浏览
  •  在全球能源结构加速向清洁、可再生方向转型的今天,风力发电作为一种绿色能源,已成为各国新能源发展的重要组成部分。然而,风力发电系统在复杂的环境中长时间运行,对系统的安全性、稳定性和抗干扰能力提出了极高要求。光耦(光电耦合器)作为一种电气隔离与信号传输器件,凭借其优秀的隔离保护性能和信号传输能力,已成为风力发电系统中不可或缺的关键组件。 风力发电系统对隔离与控制的需求风力发电系统中,包括发电机、变流器、变压器和控制系统等多个部分,通常工作在高压、大功率的环境中。光耦在这里扮演了
    晶台光耦 2025-01-08 16:03 56浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 162浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 123浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 118浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 93浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 155浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 115浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦