Arm Cortex R52与TC3xx Aurix上下文切换对比

这篇具有很好参考价值的文章主要介绍了Arm Cortex R52与TC3xx Aurix上下文切换对比。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.Arm Cortex R52上下文切换

2.英飞凌TC3xx的CPU上下午切换

2.1 上下文类型

2.2 Task Switching Operation 

2.3 Context管理寄存器

 2.4 各种事件的上下文切换

2.4.1 中断/Trap的上下文切换

2.4.2 函数调用的上下文切换

2.4.3 FCALL/FRET的上下文切换

2.5 Context Save、Restore操作

2.6 Context 切换性能特性


1.Arm Cortex R52上下文切换

        R52采用Armv8-r 架构,因此根据Arm® Architecture Reference Manual Supplement Armv8:

  • 发生异常

        PE(Process element)将状态上下文保存到SP寄存器指向的堆栈。

        保存的上下文状态如下:

  1. RETPSR:Combined Exception Return Program Status Registers

aurix与arm区别?,TC3xx分析,arm开发,汽车,英飞凌,Tricore,上下文切换

  1. ReturnAddress.
  2. LR(R14):Link Register
  3. R12(General-Purpose Register) 
  4. R3-R0.

aurix与arm区别?,TC3xx分析,arm开发,汽车,英飞凌,Tricore,上下文切换

  • Task上下文切换

        按照发生异常时硬件存储的内容,使用汇编代码来实现;

2.英飞凌TC3xx的CPU上下午切换

        在嵌入式实时控制系统中,任务是一个独立的控制线程。任务的状态由其上下文定义。当一个任务被中断时,处理器使用该任务的上下文重新启用该任务的继续执行。

2.1 上下文类型

上下文类型可以分为:

  • Upper Context:
    1. upper地址寄存器A[10]--A[15];
    2. upper数据寄存器 D[8]--D[15];
    3. PCXI
    4. PSW
  • Lower Contex:
    1. Lower 地址寄存器A[2]--A[7]
    2. Lower 数据寄存器D[0]--D[7]
    3. A[11] Return Address
    4. PCXI

        上下文存放在内存中,占16word,被称为Context Save Areas,举例如下:

aurix与arm区别?,TC3xx分析,arm开发,汽车,英飞凌,Tricore,上下文切换

        CSA使用的是固定大小的链表,通过LinkWord进行连接,从上图可以看到,LinkWord和PCXI的布局都在同一位置,而LinkWrod结构如下图所示: 

aurix与arm区别?,TC3xx分析,arm开发,汽车,英飞凌,Tricore,上下文切换

        根据芯片手册上PCXI的描述

aurix与arm区别?,TC3xx分析,arm开发,汽车,英飞凌,Tricore,上下文切换

        可以看到LW只关注Segment和Offset,PCXI不仅关注上述内容,还要关注Context Tag、PIE和PCPN。

        LW只关注Segment和Offset的原因是用于生成链接CSA的有效地址,生成方式如下:

aurix与arm区别?,TC3xx分析,arm开发,汽车,英飞凌,Tricore,上下文切换

2.2 Task Switching Operation 

aurix与arm区别?,TC3xx分析,arm开发,汽车,英飞凌,Tricore,上下文切换

         从上表可以看到,上述7种事件或指令触发时,upper/lower context会被保存或恢复;其中当外部中断、trap或函数调用时,upper context会自动保存lower context通过软件指令保存

        SAVE操作是通过从LW中读取FCX的下一个值,存储在FCX(Free CSA List Head Pointer)寄存器中;

        STORE操作是通过指令的有效地址来进行存储,不需要对CSA list或者FCX寄存器进行更改。

        Restore是save的反向操作;load是store的反向操作。

        需要注意的是upper和lower contexts在寄存器内容保持的角度上有较大差别。

        Upper cotext 寄存器不能保证是静态硬件寄存器,例如函数调用、中断总是从私有的upper context 寄存器开始运行,并且不被继承。

        Lower context 寄存器与全局寄存器类似;trap、interrupt、function里看到的值与调用前的寄存器值一样;在上述3个事件里对寄存器值的任何操作会在事件返回后仍然存在。所以可以使用 lower context向调用函数传递参数,并从这些函数里返回值。

2.3 Context管理寄存器

Context save和restore寄存器是context 管理寄存器的指针,如下:

  • FCX(Free CSA List Head Pointer)

        用于保存free CSA list 头指针,它总是指向一个可用的CSA,结构如下:

aurix与arm区别?,TC3xx分析,arm开发,汽车,英飞凌,Tricore,上下文切换

         FCXO和FCXS一起使用,指向下一个可用的CSA.

  • PCX(Previous Context Pointer)

        PCX保存了上一个任务的CSA的地址。PCX是PCXI寄存器的一部分。

aurix与arm区别?,TC3xx分析,arm开发,汽车,英飞凌,Tricore,上下文切换

  • LCX(Free CSA List Limit Pointer)

        用于识别即将到来的free CSA list损耗。如果发生一个context save操作,并且FCX和LCX的值匹配,则自动识别条件“free context depletion”,完成context保存操作后立即触发FDC trap。LCX结构如下:

aurix与arm区别?,TC3xx分析,arm开发,汽车,英飞凌,Tricore,上下文切换

 2.4 各种事件的上下文切换

2.4.1 中断/Trap的上下文切换

发生上述事件时,处理器首先保存当前任务的upper context到内存中,挂起当前任务,并开始执行中断或者trap。

2.4.2 函数调用的上下文切换

发生此类事件时,必须保存 calling routine的上下文并restore,以便在函数返回后恢复调用方的继续执行。整个硬件来保存upper上下文。此外,可以直接使用指令CALL来进行upper context保存并且调用跳转,RET指令恢复上下文,返回跳转。

2.4.3 FCALL/FRET的上下文切换

        在不需要保存和恢复的upper context寄存器的情况下,可以优先使用FCALL指令。该指令执行跳转,并且并行地将当前返回地址A11保存到堆栈中,不保存其他状态

2.5 Context Save、Restore操作

        下图展示free 和 previous context 链表如何进行save操作。

aurix与arm区别?,TC3xx分析,arm开发,汽车,英飞凌,Tricore,上下文切换

         上图可以看到FCX指向的是FreeContextList,分别是CSA3-4-5,PCX链表为PCX-CSA2-1。

当发生CSA操作时,FreeContextList的第一个CSA会被拉出放置到previous context list首端。

aurix与arm区别?,TC3xx分析,arm开发,汽车,英飞凌,Tricore,上下文切换

        

        具体操作如下:

1.CSA3中链接字的内容被加载到NEW_FCX中。NEW_FCX现在指向CSA4。NEW_FX是内部缓冲区,用户无法访问。

2.PCX的内容被写入CSA3的链接字。CSA3链接字现在指向CSA2。

3.FCX的内容写入PCX。PCX现在指向CSA3,它位于先前上下文列表的前面。

4.NEW_FCX加载到FCX中

aurix与arm区别?,TC3xx分析,arm开发,汽车,英飞凌,Tricore,上下文切换

        

RESTORE操作为反向操作:

        CSA3拉出来存取NEW_PCX,Linkto2给NEW_PCX,FCX中linkto4给CSA3的LW,PCX内容赋给FCX,FCX指向CSA3,NEW_PCX存取PCX。

aurix与arm区别?,TC3xx分析,arm开发,汽车,英飞凌,Tricore,上下文切换

 

2.6 Context 切换性能特性

        Tricore对函数调用、trap、中断使用统一的上下文切换方式。在所有情况下,任务的Upper context都由硬件自动保存或恢复;对lower context的保存和恢复可由软件实现。上下文存储的位置有不同的性能表现。

        CSA存放在DSPR或从DSPR恢复,花费4个cycle;

        CSA存放在DLMU或从DLMU恢复,花费8个cycle;

        CSA存放在cached 外部内存,最好的情况花费8个cycle。

下表为 CSA控制流指令耗时

aurix与arm区别?,TC3xx分析,arm开发,汽车,英飞凌,Tricore,上下文切换

         实际时间需要根据时钟频率来估算,

        例如时钟频率为100MHz,CSA存放在DSPR,产生中断时CSA保存耗费时间为4cycle*1/100000000 = 40ns,restore耗费时间为4cycle*1/100000000 = 40ns,总计80ns。文章来源地址https://www.toymoban.com/news/detail-784471.html

到了这里,关于Arm Cortex R52与TC3xx Aurix上下文切换对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 英飞凌TC3xx--深度手撕HSM安全启动(五)--TC3xx HSM启动流程、通信机制分析

            在包含HSM的MCU的软件开发里,Host和Hsm应该为两个独立的软件工程。不管是Etas还是Vector的HSM包,都是需要单独收费的。         既然是单独的工程,相应的启动代码也是必须要有的。         在英飞凌的HSM固件架构里,HSM BootRom主要有以下几个作用:内部测试、生产

    2024年02月05日
    浏览(30)
  • 英飞凌TC3xx系列GTM系统介绍

    英飞凌TC3xx是英飞凌AURIX 2G系列单片机,该系列单片机是32位微控制器,具有多个TriCore CPU、程序及数据存储器、总线、中断系统、DMA及功能强大的外围设备。 AURIX 2G系列按不同的需求有不同的内存及功能组合的单片机选择,全系均可满足ASIL D功能安全要求,其中功能最强大的

    2024年02月09日
    浏览(43)
  • Infineon TC3XX的 通过HSM 实现Secure Debug

    AURIX™ 调试接口保护- 内部开关概览 Gate1: 通过OCDS模块控制TriCoreTM 调试访问接口; Gate2: 通过DMU模块控制TriCoreTM 调试访问接口; Gate3和Gate4: HSM直接控制。控制Host CPU的访问并且也可以支持禁用HSM自身的调试功能。 AURIX™ 挑战应答机制-调试访问保护 – 用例分析 AURIX™ 挑战应

    2024年02月02日
    浏览(34)
  • 英飞凌TC3xx之一起认识DSADC系列(一)架构介绍

    Delta-Sigma 模数转换器模块具有多个通道,对于TC387有6个通道,提供片上调制器和相关解调器模块,以及用于解调、抽取和滤波的可配置滤波器链(参见图 285)。片上的二阶前馈调制器可以将模拟输入信号转换为数据流,同时也支持多种类型的外部调制器连接到输入路径上。调

    2024年02月20日
    浏览(30)
  • 英飞凌TC3xx--深度手撕HSM安全启动(一)--安全启动方式

            汽车MCU的信息安全在最近几年是越来越火,而信息安全最重要的一个功能就是系统的安全启动;         从嵌入式角度出发,安全启动最早应用在linux系统上,全称叫secure boot;它是一种逐级验证镜像,从而实现固件可信运行。以常见的uboot启动为例,通常要经过

    2024年02月08日
    浏览(37)
  • 英飞凌TC3xx--深度手撕HSM安全启动(二)--加密算法解析

            在第一节,我们简单描述了汽车MCU常见的安全启动,以及英飞凌和vector设计的安全启动流程。这里我们就要对启动中所使用的加密算法进行描述。         首先我们来分析在MCU中安全启动时所需要的成员: 待校验对象(通常为应用程序)的数据长度、起始地址;

    2024年02月06日
    浏览(28)
  • 英飞凌TC3xx之一起认识GTM系列(一)先来认识GTM架构

    GTM系统使用GTM全局时钟f GTM 运行(本文称为SYS_CLK)。 特点如下 : GTM模块由两个主要部分组成: 由博世设计的GTM IP v3.1.5.1 GTM IP 由许多不同的子模块组成,提供多种功能来解决所有问题 与定时器模块相关的最常见应用 由英飞凌设计的GTM Wrapper 以下是子模块中一些最重要的

    2024年02月03日
    浏览(35)
  • 瑞萨RH850-P1X ECM和英飞凌TC3xx SMU对比

            P1X ECM(Error Control Module)收集从不同的错误源和监控电路发来的错误信号,并通过error pin(ERROROUTZ)对外输出、产生中断并发出ECM reset信号。         P1x-C系列根据产品型号不同,ECM个数也不相同,如下:         对应寄存器基地址如下:         其内部结构

    2024年02月08日
    浏览(33)
  • 英飞凌-AURIX-TC3XX-内核架构:AURIX TriCore 1.6P

    1、AURIX TC1.6P内核简介及特点 TC3XX 系列属于 AURIX™ 2G 系列, AURIX™ 2G 系列系列单片机采用的是 TC1.6.E 和 TC1.6P 的核心组合。使用的是32位哈弗架构,将程序指令存储和数据存储分开。具有如下特点: ①、地址范围达到 4GB ,分为16段,每段256MB; ②、使用的16位和32位指令可减

    2024年02月02日
    浏览(25)
  • ARM v8 Cortex R52内核 01 概述

    Cortex-R52处理器是一种中等性能、有序、超标量处理器,主要用于汽车和工业应用。它还适用于各种其他嵌入式应用,如通信和存储设备。 Cortex-R52处理器具有一到四个核心,每个核心实现一个单一的Armv8-R AArch32兼容处理单元processing element (PE)。在Cortex-R52上下文中,PE和核心在

    2024年04月17日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包