1527_AURIX_TriCore内核架构开篇与架构概述

news2025/7/17 8:26:33

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

看文档的时候,引用了内核架构的内容。这方面我没有看过,除了ARM也没有什么内核算是较为认真的看过。纵然是ARM,看的时候也是有点走马观花。但是,内核相关的东西一点都不了解在遇到问题的时候也很棘手。因此,这次也把这个内核手册走马观花看一下。

这一页的目录中,提到了架构概述以及编程模型两部分。第一部分会是我这次看的一个主要的关注点,而第二个部分,我觉得有必要理解一下。如果每一个架构都能够抽取出来一个编程模型,那么理解其他的架构会有很多参考的信息可以类比。我猜测,这里面介绍的会是一些运算的功能以及中断系统之类的。

这里的几个功能主题:通用以及系统寄存器、任务和函数、中断系统。看到这里,前面我自己的一点思考可能错了,那就是编程模型中并不会介绍中断系统。中断系统在这个架构中是一个完整的章节。

说起来,我也记不清之前看过的ARM是什么状态了。当时看的都是网页的版本,而OS的调试没少翻看中断的部分。

这一页介绍了Trap、存储完整性错误缓冲?(具体的功能未知,尚不清楚表达什么含义)、地址分布以及存储配置。

这一页,提到了存储保护系统、临时保护系统、浮点单元、内核调试控制器。

内核寄存器表。

1. TriCore是一个32bit的DSP,为嵌入式的实时系统需求做了专门的优化。

2. 系统架构的文档分为两卷,上卷是架构以及系统交互为主的,下卷主要是指令集以及扩展的介绍。MMU以及FPU都在可以选择的模块。这倒是让我又纠正了一个错误的理念:之前从一个客户那边听说AURIX的单片机全都没有MMU,看起来也不全是。

3. 这里还有一些扩展的文档,有些涉及到DSP以及编译器编写的,这些我觉得都有必要看一下。但是不知道这样的文档是否好获取。

1. 寄存器的默认值一般不是架构设计决定的,跟内核的实现有关。

2. 两个缩写相关的说明,之前的文档中都是接触过的。

1. ISA,是指令集架构的缩写。

2. 这里提到了一个虚拟机地址的可选功能,应该就是MMU的可选配体现出来的吧?

3. 所有的功能都是可以通过32bit的指令进行访问的,16bit的指令只是一个子集,设计的目的是为了降低code size以及功耗。

4. 这里提出来了架构实时性的两个指标,后续类似的判断都可以作为参考。一个是中断的延迟,另外一个是上下文的切换时间。

1. 分支指令集采用了分支预测。

2. 零开销循环,这是一个较新的概念,后面需要补充一下相关的基础知识。

3. 几个比较特殊的高级功能:扩展位处理、MMU、单周期多指令。

4. 这里简单描述了一下编程模型,主要是数据类型、存储模型以及寻址模式的支持。

5. 架构寄存器中有两个特殊寄存器之前在接触OS的时候看到过,PCXI以及PSW,分别是先前上下文信息寄存器和程序状态字。

1. PCXI、PC、PSW在保存和恢复上下文的时候至关重要。

2. 32个通用的寄存器,分为地址寄存器和数据寄存器。

3. 数据寄存器中有一个特殊的寄存器,D15,一般是用作隐式数据寄存器。关于隐式数据。

4. 地址寄存器中有三个比较特殊的寄存器,分别是用于堆栈、返回地址、隐式地址等功能。

5. A0、A1、A8、A9四个寄存器被定义为系统全局寄存器,调用及中断不会保存或者恢复。这几个寄存器一般会被OS用来降低系统的开销。

1. 除了GPR还有CSFR,这些寄存器在后面的章节会有描述。

2. 支持的数据类型中有两个比较特殊的数据类型,一个是位串,另一个是有符号分数。

3. 在指令集的设计中,大部分的指令都是针对一个专门的数据类型的。

4. 内核的寻址范围是4GB,分为了16块,每一块是256M。

5. 内核支持7种寻址模式,还有4种不同的数据宽度。

6. 有专门的设计,可以从内核层级上通过DSP技术支持快速的傅里叶变换。

7. 这里从内核的角度提出来了一个任务的概念,任务是一个独立的控制线程,存在两种类型。类型一其实是跟我们通常接触到的RTOS有一定的相似之处的,类型二则是ISR。

1. 这里也进一步描述了,SMT其实就是OS管理的任务,跟前面理解的一样。

2. 三种任务模式,模式0,没有权限可以访问任何外设; 模式1,可以访问外设,短时间内可以关闭中断;模式2,允许访问所有的系统寄存器和外设,可以关闭中断。

3. 一直在很多文档中看到上下文的概念,这里第一次看到对于上下文的明确定义。不同于其他的芯片,TriCore的上下文的管理是可以通过硬件进行高效管理的。

4. 一个CSA有64个字节,通过一个链接字进行控制。这样的描述多少是有些抽象的,可以借助于开元的FreeRTOS的处理看一下这里面的实施是如何做的。这种信息交换速度比较快,关键的实现其实是通过一个宽总线来实现的。

5. 上下文的切换有很多种方式,比如说中断以及服务请求、Trap以及函数调用。前面一个我觉得还是可以理解的,后面两种模式,看上去不太理解。因为Trap的发生在我之前的印象里面一般会直接导致系统的停止,而函数的调用本身可能会被当做OS任务的一部分。

1. 中断系统的设计始终围绕SRN设计,SRN是服务请求节点的意思。

2. 传统的MCU一般通过加载存储中的向量表来确定PS,而TriCore中请求直接跳转到向量。这个描述没有很理解,但是从模型上考虑,可能这里提到的传统的模式是软中断,而TriCore实现的其实是硬终端。

3. TriCore的中断系统根据这些描述并没有在脑子里建立起很好的模型,后面还得去深入分析理解。从一个简单的问题思考角度来说就没有分析清楚:中断的优先级看起来是允许相同的,那么,不允许相同的又是什么?

4. Trap的产生原因一般来说有3种:NMI、指令异常、非法访问。如果出现了Trap,可以从D15种看到TIN的数值。

1. Trap是分为8类,具体的翻译不去写了,我在阅读笔记中已经标注了。

2. 保护系统主要是用来保护核心系统,防止受到非关键问题的影响或者防止未经授权的访问。

3. 全局的保护系统主要是有三种: Trap、IO权限以及存储保护系统。

4. 1.3以上的内核版本是支持选配MMU的,现在看到的这个内核已经到了1.6,应该是全都支持的。如果有MMU,可以进行虚拟内存的访问。如果没有,则可以选择给予范围的内存保护。

这里提了一下内核的调试,前面已经看过了相应的资料,这里的信息也不多,直接跳过了。

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

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

相关文章

锐捷MSTP实验配置

目录 Vlan基础配置 多生成树配置 查看生成树信息 MSTP其它特性配置 边缘端口 生成树保护特性 生成树时间特性 Vlan基础配置 SW1、SW2配置Vlan vlan range 10,20,40 int g0/0 switchport mode trunk switchport trunk allowed vlan add 10,2…

图卷积神经网络 | Python实现基于GCN-GRU图卷积门控循环单元网络模型

图卷积神经网络 | Python实现基于GCN-GRU图卷积门控循环单元网络模型 目录 图卷积神经网络 | Python实现基于GCN-GRU图卷积门控循环单元网络模型效果分析基本描述模型结构程序实现参考资料效果分析 基本描述 GCN-GRU 模型是用于动态网络数据中动态不确定意见预测的端到端可训练…

Linux多线程编程

文章目录1、线程基本知识2、线程控制3、线程同步与互斥<1>线程互斥<2>线程同步条件变量生产者消费者模型POSIX信号量读者写者问题<3>线程池<4>单例模式1、线程基本知识 线程概念 线程是在进程内部运行的一个执行分支(执行流)&#xff0c;属于进程的一部…

Vue2.0开发之——Vue基础用法-条件渲染指令(23)

一 概述 条件渲染指令—v-if和v-showv-elsev-else-if 二 条件渲染指令—v-if和v-show 2.1 条件渲染指令 条件渲染指令用来辅助开发者按需控制 DOM 的显示与隐藏。条件渲染指令有如下两个&#xff0c;分别是&#xff1a; v-ifv-show 2.2 示例 布局代码 <div id"a…

【考研复试】计算机专业考研复试英语常见问题五(兴趣爱好/实践经历篇)

相关链接&#xff1a; 【考研复试】计算机专业考研复试英语常见问题一&#xff08;家庭/家乡/学校篇&#xff09;【考研复试】计算机专业考研复试英语常见问题二&#xff08;研究方向/前沿技术/本科毕设篇&#xff09;【考研复试】计算机专业考研复试英语常见问题三&#xff0…

Redhat(10)-防火墙-文件管理-JINJA2模板-Cron-文件权限-NTP-autofs

1.防火墙 2.文件管理 3.JINJA2模板 4.Cron作业 5.文件权限 6.NTP 7.autofs 1.防火墙 网络过滤子系统-netfilter&#xff1a;修正、丢弃数据包。 firewalld是什么&#xff1f; 就是处理网卡来的数据包。 1.源地址被分配给特定区域&#xff0c;应用该区域的规则。 2.网卡…

PyQt5 QLineEdit

PyQt5 QLineEditQLineEdit常用方法及属性QLineEdit 实例1QLineEdit 实例2QLineEdit 实例3QLineEdit 综合示例QLineEdit常用方法及属性 QLineEdit 实例1 import sys from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import *class MyLineEditWindo…

【VTK+有限元后处理】实时剖切视图

目的 实现后处理结果云图的平面剖切视图。 方法 通过使用vtkPlaneWidget控件交互&#xff0c;得到剖切平面&#xff0c;通过vtkClipDataSet完成对vtkUnstructuredGrid有限元结果数据的剖切操作。渲染管线如下图所示[1]^{[1]}[1]。 代码实现 首先&#xff0c;我们先写一个创…

【软考软件评测师】第二十八章 计算机网络(网络设备网络地址)

【软考软件评测师】第二十八章 计算机网络&#xff08;网络设备网络地址&#xff09; 第二十八章 计算机网络&#xff08;网络设备网络地址&#xff09;【软考软件评测师】第二十八章 计算机网络&#xff08;网络设备网络地址&#xff09;第一部分 知识点集锦1.IPv4地址1&#…

Maya 贴图链接检测重链打包插件tjh_lost_textures_finder 1.3.2 更新发布

经常遇到maya工程文件贴图丢失或是路径链接更改的问题&#xff0c;对于贴图师和渲染师来说&#xff0c;海量的贴图重连 贴图和查找丢失贴图都是繁重耗时的工作。自从tjh_lost_textures_finder插件诞生以来&#xff0c;就一直再做此项工作的优化工作。 V1.3.2最新版更新内容&am…

Python爬虫:scrapy从项目创建到部署可视化定时任务运行

目录前言第一节 基本功能1、使用 pyenv创建虚拟环境2、创建 scrapy项目3、创建爬虫第二节 部署爬虫4、启动 scrapyd5、使用 scrapyd-client 部署爬虫项目6、使用 spider-admin-pro管理爬虫第三节 部署优化7、使用 Gunicorn管理应用8、使用 supervisor管理进程9、使用 Nginx转发…

简单shell批量文件转换gbk转为utf8编码

前言 matlab打包成exe时发现中文乱码&#xff0c;查找发现是gbk编码问题,找半天没找到合适的批量转换编码工具&#xff0c;就搞了个简单的shell来实现 准备工作 windows上有安装git bash命令行的话可以直接跑sh脚本,没有的话下一个很快。linux可以直接运行 代码 #!/bin/sh…

Answering the SDIs Step by Step

title: Notes of System Design No.01 —Answering the SDIs Step by Step description: Answering the SDIs Step by Step ’ date: 2022-05-04 14:52:06 tags: 系统设计 categories: 系统设计 In this Article , I will give a introduction to the guildline of answerin…

实验33:RFID门禁卡实验

OK&#xff0c;本实验分为两个部分 一、读卡 二、显示不同的卡的信息&#xff0c;同时继电器动作 01 硬件电路设计 读卡ID&#xff0c;两张卡&#xff0c;白卡和蓝卡&#xff0c;用txt文件名称体现 lib里面是库文件 把它放在自己的Arduino相应的文件家里&#xff0c;最好是…

MySQL数据库 -- 内置函数

今天来一起学习MySQL数据库的内置函数。 目录 日期函数 current_date current_time current_timestamp date_add date_sub datediff 实例演示 创建一张表&#xff0c;记录生日 创建一个留言表 字符串函数 charset concat length replace substring ucase…

第02章 变量

变量介绍 定义 定义&#xff1a;变量是程序的基本组成单位&#xff0c;变&#xff08;变化&#xff09;量&#xff08;值&#xff09; 变量有三个基本要素&#xff1a;数据类型 变量名称 值 变量相当于内存中的一个数据存储空间的表示&#xff0c;可以把变量看作是一个房间…

Pthread 并发编程(三)——深入理解线程取消机制

基本介绍 线程取消机制是 pthread 给我们提供的一种用于取消线程执行的一种机制&#xff0c;这种机制是在线程内部实现的&#xff0c;仅仅能够在共享内存的多线程程序当中使用。 基本使用 #include <stdio.h>#include <pthread.h>#include <assert.h>#incl…

数字化助力生产制造管理:专项生产管理系统

对于现今的生产企业而言&#xff0c;大家都是希望可以让整个制造生产过程更加的规范。同时越来越多的企业也已经分析到&#xff0c;在现有的社会生产方式中&#xff0c;如果不能够使加工业和制造业有先进的更为现代化的管理模式&#xff0c;是难以取得更好的竞争优势的。因此在…

Hadoop搭建

一、安装虚拟机 root 123456789 1、安装完系统后配置虚拟机ip vim /etc/sysconfig/network-scripts/ifcfg-ens33 DEFROUTE"yes" IPV4_FAILURE_FATAL"no" IPV6INIT"yes" IPV6_AUTOCONF"yes" IPV6_DEFROUTE"yes" IPV6_FAIL…

Git学习1

Git学习历程——努力入世的后浪~。 目录 一、Git安装 二、Git的初级使用 1.Git配置文件 2.Git基本命令 2.1 git init 2.2 ls -al 2.3 touch 2.4 git add 2.5 git commit -m 2.6 git status 2.7 git rm 2.8 git log 2.9 git reset --hard 2.10 git reflog 三、Git…