1531_AURIX_TriCore内核架构_任务以及函数

news2024/11/25 22:29:23

全部学习汇总: GreyZhang/g_tricore_architecture: some learning note about tricore architecture. (github.com)

继续前面的内核架构学习,这次看一下任务以及函数的描述。

1. 在嵌入式系统中,内核以及函数的设计其实是有一定的模型或者说是模式的。通常来说这个模型有一定的相似之处,都是让中断服务子程序或者是操作系统的任务运行在自己的虚拟MCU上,感觉自己拥有一切MCU的资源。如何实现这样环境的虚拟呢?很大程度是依赖于RTOS对于上下文信息的管理。

2. 在TriCore的内核上,这样的操作系统实现的时候是非常容易的,可以做到非常轻量化。因为,很多上下文的切换工作会由硬件直接处理掉。

3. 这里再次说了一下,上下文CSA其实是16个字节,主要是寄存器的信息。

这张图可以很清楚看到上下文,不管是高区还是低区的内容。其中,A11还有PCXI在两个模块中都有。A11是返回地址寄存器,而PXCI是链接字寄存器,后面可以理解这个链接字的作用其实是指明一块CSA的地址。

1. 链接字的功能作用是把不同的CSA连接起来。至于如何形成关联,后面会有更进一步的描述。

2. 上下文的上区保存是硬件自动完成的,下去通过指令来处理。

1. 感觉这里的描述有点让我糊涂,我自己理解了一下感觉这样的描述不见得是靠纯字面的信息去理解。可能,拆分一下会有更为清晰的理解。首先需要明确,为什么上下文的低区需要保存,这是因为每一个运行的任务使用的这部分信息都是不同的。这些信息可能是函数的传递参数,也可能是函数的返回值。如果要保证这样的一致性,那么中断或者trap在执行处理结束之后就得考虑对这边付恩信息的恢复和实现。

2. 不同的任务或者中断处理程序之间的寄存器不具备信息的继承性,这个也是前面描述的模型的一点体现。每一个任务的中断后的恢复,都应该有自己完整的继承性。这样,每一个任务以及ISR都可能感觉自己独占了一个MCU。

3. 高区的上下文寄存器在没有写入之前久长时去读取,其行为是未定义的。

4. 这个表格给出来了上下文切换的一些条件。

1. 链接字在功能上来说可能会是一个偏移,只要是基地址确定就可以。但是是地址的话,处理或许会更方便。

2. FCX在第一次读取的时候会给出一个全新的数值。

3. 从中间的额信息描述看,如果堆栈耗尽CSA没法继续分配,应该会报一个trap。

上面提到的上下文切换的trap信息,在这里能够看到很好的解释。

4. Trap的处理行为取决于软件实现,可能是reset,也可能扩充CSA区域。至于扩充的方法,可能是分配新的内存,也可能是杀死task来释放内存。

1. 函数调用的时候,RA是返回地址。

2. 如果是同步的trap,RA中是触发trap的指令PC。

3. 如果是异步的trap或者中断,RA中会是接下来要执行的指令的PC。

4. 我曾经怀疑过这个调用的层级是否会影响递归的层级,现在看到了解释,这个是故意如此设计的,这样的设计是为了避免软件出现失控的递归。

5. 剩余的信息,之前看过一次了。此外,介绍了中断管理系统管理的内容。

1. 中断优先级等信息不在上下文切换的内容当中。

2. 中断中的上下文处理,一定程度上可以看出中断嵌套功能的实现。

3. 如果中断ISR用到的寄存器少,上下文的切换处理可以硬件直接实现。如果使用的寄存器很多,可能处理的过程中是一个软硬结合的过程。

指令之中有一个函数的快速调用以及快速返回的功能,这两条指令虽然是触发了函数调用,但是不会进行上下文的切换。

这几张图结合在一块儿,可以比较清晰地看出来CSA空间的分配以及回收过程。

几个概念强化理解下:

1. FCX,这个是CSA空间中还可以继续用的部分相应的指针。

2. PCX,这个是已经用掉的CSA的部分相应的指针。

3. LCX,这个是CSA存储的大小限制。

这两个寄存器,本质上来说是一个指针信息。

既然是一个限制值,那么肯定是可以设置并且读取进行判断的。这个信息来自于存储分配的结果,而这个分配是软件指定的,因此内核硬件本身判断不出来。

1. 内核设计的时候,可能会考虑硬件上的加速手段增强性能。因此,为了保证CSA的一致性,在CSA存储访问之前强制使用DSYNC来进行同步。

2. CSA不能是虚拟地址,因此从安全考虑,如果用了外置的存储尽量也用作通用RAM,不要考虑用在CSA的空间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/27747.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day33 文件上传中间件解析漏洞编辑器安全

前言 先判断中间件,是否有解析漏洞,字典扫描拿到上传点,或者会员中心,有可能存在文件上传的地方,而后测试绕过/验证,根据实际情况判断是白名单、黑名单还是内容其他的绕过,绕过/验证和中间件的…

数字信号处理FFT快速傅立叶变换MATLAB实现——实例

今天做作业的时候发现要对一个信号进行FFT变换,在网上找了半天也没找到个能看懂的(因为我太菜了),后来自己研究了一下,感觉一知半解的 起因是这道作业题 例题-满足奈奎斯特 我画了两个图,一个是原信号经过…

毕业论文管理系统的设计与实现

摘要 随着互联网技术的迅猛发展,网络给人们带来了很多便利,比如人们借助于网络进行相互交流、相互通信、共享信息、文件的上传下载等。在线毕业论文管理系统就是以上运用之一,它已经广泛的应用于目前的各大高校,但现有的这些系统都有一定的局…

如何在VScode和Jetbrain上使用备受争议的GitHub Copilot

如何在VScode和Jetbrain上使用备受争议的GitHub Copilot VSCDOE https://docs.github.com/en/copilot/quickstart 配置好之后,就是这种效果,真实太NB了!!! 一个tab就把所有的代码都填充上去了! Jetbrain…

MES系统以全流程优化为核心,实现全闭环的生产

MES系统是一个在车间中广泛使用的软件,它具有承上启下的功能.该系统采用企业ERP系统,获取计划、资源等数据,并与PLM、SRM、WMS等进行整合,获取BOM、流程等数据。该系统可对下级的控制系统进行操作,并将作业命令和恢复计…

Prometheus Operator 极简配置方式在k8s一条龙安装Prometheus 监控

在k8s上 Prometheus(普罗米修斯) 监控,需要部署各种组件,比如Prometheus、Alertmanager、Grafana。同时各个组件的配置文件也是需要到处各个配置,Prometheus配置监控服务时,你还要知道各个监控服务的地址&a…

JDBC编程

JDBC编程 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5QlM7GTR-1669108965995)(https://img1.baidu.com/it/u865461056,274570923&fm253&fmtauto&app138&fPNG?w794&h500)] 什么是JDBC Java数据库连接 Java Database Connect…

第2-4-2章 规则引擎Drools入门案例-业务规则管理系统-组件化-中台

文章目录3. Drools入门案例3.1 业务场景说明3.2 开发实现3.3 小结3.3.1 规则引擎构成3.3.2 相关概念说明3.3.3 规则引擎执行过程3.3.4 KIE介绍3. Drools入门案例 全套代码及资料全部完整提供,点此处下载 本小节通过一个Drools入门案例来让大家初步了解Drools的使用…

Java 集合学习笔记:HashMap

Java 集合学习笔记&#xff1a;HashMapUML简介阅读源码属性字段1. 静态属性2.成员属性静态内部类class Node<K,V>静态工具方法hash(Object key)comparableClassFor(Object x)compareComparables(Class<?> kc, Object k, Object x)tableSizeFor(int cap)构造方法Ha…

电梯物联网网关软硬件一体化解决方案

电梯物联网监测平台&#xff0c;基于边缘计算智能监测设备全天候、全自动监测电梯的运行。通过采集电梯实时运行传感数据&#xff0c;建立运行状态关键数据标准&#xff0c;基于AI机器学习算法&#xff0c;采用大数据分析计算&#xff0c;对电梯故障、困人等事件实时报警&#…

solr自定义定制自带core添加分词器,解决镜像没有权限问题

因为solr要安装自定义的分词器 就打算在原有基础上提前放好,直接启动就有core 第一步获取默认配置 方法一 docker安装solr 这个帖子中 1、安装镜像 docker pull solr:8.11.1 2、新建目录 mkdir -p /home/apps/solr 3、复制配置文件 运行一个临时solr docker run --name solr…

14.HTML和CSS 02

文章目录一、HTML标签&#xff1a;表单标签1、概念2、form标签3、表单项标签4、案例二、CSS&#xff1a;页面美化和布局控制1、概念2、好处3、CSS的使用&#xff1a;CSS与html结合方式4、css语法5、选择器6、属性案例一、HTML标签&#xff1a;表单标签 1、概念 表单标签是用于…

integral函数Opencv源码理解-leetcode动态规划的使用场景

前言 Opencv有一个integral()函数&#xff0c;也就是积分图算法。有三种积分图类型&#xff0c;求和&#xff08;sum&#xff09;&#xff0c;求平方和(sqsum)&#xff0c;求旋转45和(titled)。根据名字可知道&#xff0c;前两个是统计输出每个坐标的左上方像素和、左上方像素平…

pexpect 自动交互输入

pexpect 为 python 内置库&#xff0c;在 linux 上执行的&#xff0c;win 执行会报错 主要用于执行命令后自动输入&#xff0c;例如要执行 sql 去修改全局变量&#xff1a; mysql -uroot -p -h127.0.0.1 -e"set gloabl max_prepared_stmt_count1000000;" 这时候会…

实时数据平台设计

1 相关概念背景 1.1 从现代数仓架构角度看实时数据平台 现代数仓由传统数仓发展而来&#xff0c;对比传统数仓&#xff0c;现代数仓既有与其相同之处&#xff0c;也有诸多发展点。首先我们看一下传统数仓&#xff08;图1&#xff09;和现代数仓&#xff08;图2&#xff09;的…

基于springboot和vue的IT内部电脑报修服务系统设计与实现-计算机毕业设计源码+LW文档

it内部设备服务系统设计与实现 摘 要 it内部设备服务系统将传统的网络服务方式与最新的互联网技术相结合&#xff0c;使用方便快捷&#xff0c;有利于设备维修部门规范管理&#xff0c;提高网络维修部门的工作效率&#xff0c;在技术、态度等多方面提高维修部门服务质量。因此…

Oracle表空间、用户详解

目录新建连接三者关系表空间创建表空间修改表空间和数据文件修改数据文件容量新增表空间的数据文件重命名数据文件修改表空间状态修改数据文件状态删除表空间查询用户创建删除查询修改新建连接 工具选择&#xff1a; 我们一般会选择一个工具来连接本地的Oracle&#xff0c;而我…

老男孩k8s笔记

1.docker常用操作&#xff0c;挂载&#xff0c;环境变量&#xff0c;容器内安装应用&#xff0c;提交镜像 2.trefik部署&#xff1a; k8s部署traefik_weixin_30916125的博客-CSDN博客 3.删除节点后重新加入 k8s node节点删除并重新加入_人生匆匆的博客-CSDN博客 4.mariDB配置…

streamlit+ndraw进行可视化训练深度学习模型

简介 如果你喜欢web可视化的方式训练深度学习模型&#xff0c;那么streamlit是一个不可错过的选择&#xff01; 优点&#xff1a; 提供丰富的web组件支持嵌入python中&#xff0c;简单易用轻松构建一个web页面&#xff0c;按钮控制训练过程 本文使用streamlit进行web可视化…

会议管理系统SSM记录(一)

目录&#xff1a; &#xff08;1&#xff09;环境搭建 &#xff08;2&#xff09;整合MyBatis &#xff08;1&#xff09;环境搭建 添加&#xff1a;package 配置成web的结构&#xff1a; pom先加入springmvc的依赖就可以实现spring和springmvc的整合 pom.xml中加入依赖&am…