【RH850U2A芯片】Reset Vector和Interrupt Vector介绍
目录
前言
正文
1. 什么是Reset Vector
1.1 S32K144芯片的Reset Vector
1.2 RH850芯片的Reset Vector
2. 什么是Interrupt Vector
2.1 S32K144芯片的Interrupt Vector
2.2 RH850芯片的Interrupt Vector
3. Reset Vector等价于Interrupt Vector吗
4. 总结
前言
最近在研究符合AUTOSAR架构的OS(代码级别),系统在EcuM_Init调用OS标准接口StartOS之前还做了非常多的准备工作,感觉不把这些地方搞明白就去研究OS有点基础不牢呀,而且后面还发现OS在开始任务调度之前还完成了中断向量表(Interrupt Vector)的重映射,然后ECU第一次上电后还会有一个Reset Vector的概念,二者有什么联系了?本文讲基于NXP的S32K144芯片和Renesas的RH850-U2A芯片谈谈自己对Reset Vector和Interrupt Vector的理解。
ECU系统从上电到运行到main函数之前一般经历了初始化堆栈,初始化RAM,系统初始化等操作,具体可以参考:
S32K平台学习(1)-S32K144启动流程分析
本文参考文档:
1.RH850/U2A-EVA GroupUser’s Manual: Hardware
瑞萨电子 (Renesas Electronics Corporation)
2.Cortex-M4 Devices Generic User Guide
3.ARM Cortex-M4 Processor Technical reference manal
3.ARMv7-M Architecture
4.S32K1xx Series Reference Manual
正文
1. 什么是Reset Vector
Reset Vector也就是系统上电后存放第一个PC指针程序地址的存储空间的首地址值。
1.1 S32K144芯片的Reset Vector
S32K144芯片采用Cotex-M4内核,ARMV7架构,对于系统复位重启后上电的默认操作需要查看ARM相关的的手册,如下图所示:
R13是堆栈寄存器(stack Pointer),在Thread mode下,COTROL寄存器的bit[1]控制stack pointer作为Main Stack Pointer(MSP 这个是reset 值)还是Process Stack Pointer(PSP)
系统复位Reset后,处理器装载0x00000000地址处的四字节值到MSP寄存器。也就是说系统启动的时候,0地址处存放的是MSP寄存器的值。
R15是程序计数器(Program Counter PC)。存储当前程序地址。Reset重启的时候,处理器装载0x00000004地址处的值到PC指针,也就是装载Reset handler的地址到PC指针,PC指针跳转到Reset Handler标号/地址处开始执行Reset Hander标号下的操作。
也就是说,对于S32K144芯片,Reset Vector也就是Reset Handler,也就是以0x0000_0004为首地址的四字节(.long)存储的Reset Handler标号的地址。
Reset Vector/Handler下的具体操作就是跳入到main函数之前的一些系统级操作,如初始化堆栈,初始化RAM,系统初始化等。具体参考前言部分关于S32K启动流程的参考文章。
1.2 RH850芯片的Reset Vector
RH850芯片采用瑞萨公司自定义的内核IP架构(不是ARM,PowerPc,X86等常见嵌入式芯片架构),有自己一套独立的指令集。
但是,关键核寄存器(SP,PC,LR等)和ARMV7架构的核寄存差不多。
RH850-U2A有四个核,每个核的Reset Vector地址可以通过Option Byte(RH850特有的配置字,可以配置系统时钟,Reset Vector地址等很多关键信息)配置,核0(PE0)和核1(PE1)的默认(default)Reset Vector地址是0x0000_0000(也就是说,系统上电后PC指针把0x0000_0000起始地址处存放的程序所在地址装载到PC指针),核2(PE2)和核3(PE3)的默认(default)Reset Vector地址是0x0080_0000(也就是说,系统上电后PC指针把0x0080_0000起始地址处存放的程序所在地址装载到PC指针)。
也就是说,对于RH850芯片,Reset Vector也就是以0x0000_0000/0x0080_0000为首地址的四字节(.long)存储的Reset Handler标号的地址。
2. 什么是Interrupt Vector
中断向量表就是一片地址空间,这段地址空间里面存放了系统所有的中断处理函数的入口地址,包括异常中断处理函数。通常我们在讲中断向量表的时候都是说中断向量表的入口地址。每个系统有自己的中断控制器及对应的中断控制寄存器,我们可以通过改变中断控制寄存器中保存的中断向量表的基地址来对中断向量表进行重映射(也就是在不同地地址空间存放中断向量表,然后在合适的时候把中断向量表地地址赋值给中断向量表寄存器)。
2.1 S32K144芯片的Interrupt Vector
S32K144芯片是ARM-Cotex M4内核,ARMV7架构的芯片,核寄存器VTOR(中断向量表寄存器)中存放的就算Interrupt Vector的起始地址。
也就是说,赋值给VTOR寄存器的地址就是Interrupt Vector的起始地址,在系统启动启动阶段我们把isr_vector的地址赋值给了VTOR寄存器,也就是说Interrupt Vector地起始地址就是isr_vector所在的地址。
2.2 RH850芯片的Interrupt Vector
RH850芯片有两个中断向量表基址寄存器,EBASE存放的是异常中断向量表基地址,INTBP存放的中断向量表的基地址。
也就是说,对于RH850芯片有两个中断向量表寄存器,EBASE存放的是异常中断向量表的基地址,INTBP存放的是正常中断向量表的基地址。
3. Reset Vector等价于Interrupt Vector吗
以RH850芯片为例,PE0的Reset Vector的基地址是0x0000_0000,如果我们赋值0x0000_0000给EBASE,这个时候Exception Handler地基地址从0x0000_00010开始,这个时候我们可以理解为Reset Vector的基地址值等于Exception Interrupt Vector基地址值。
但是如果我们重映射EBASE = 0x0000_0100,这个时候Reset Vector的基地址值不等于Exception Interrupt Vector基地址值。
也就是说,Reset Vector和Interrupt Vector是两个概念,二者的值可能相同。
4. 总结
1. Reset Vector和Interrupt Vector是两个概念,二者的基地址的值可能相同。
2. S32K144的Reset Vector的地址是0x0000_0004,RH850-U2A PE0的Default Reset Vector是0x0000_0000。
3. 中断向量表控制寄存器中存储的值就说中断向量表的基地址,我们在系统开发的不同阶段(BootLoader和APP)会对其进行重映射,也就是BooLoader和APP中中断向量表的基地址是不一样。
4. 异常中断处理函数需要明确定义好,防止系统产生异常中断后找不到异常中断处理函数程序跑飞。
相关文章:

【RH850U2A芯片】Reset Vector和Interrupt Vector介绍
目录 前言 正文 1. 什么是Reset Vector 1.1 S32K144芯片的Reset Vector 1.2 RH850芯片的Reset Vector 2. 什么是Interrupt Vector 2.1 S32K144芯片的Interrupt Vector 2.2 RH850芯片的Interrupt Vector 3. Reset Vector等价于Interrupt Vector吗 4. 总结 前言 最近在…...

Zabbix交换分区使用率过高排查
Zabbix High swap space usage 问题现象 Zabbix 出现Highswap space usage(less than 50% free)告警,提示交换分区空间使用率超过50% 处理过程 1. 确定swap分区是否已占满 free -h登录Zabbix服务器检查内存情况,检查发现Linux服务器空闲的内存还有不少…...
‘HEAD‘ 是 HTTP 请求的一种方法
一、名词解释 ‘HEAD’ 是 HTTP 请求的一种方法,它与 ‘GET’ 方法类似,但有一些关键区别。 当你使用 ‘GET’ 请求时,服务器会返回请求的资源(例如 HTML 页面或文件内容)。而当你使用 ‘HEAD’ 请求时,服务…...

go语言(十七)----json
1、结构体转json package mainimport ("encoding/json""fmt" )type Movie struct{Title string json:"title"Year int json:"year"Price int json:"rmb"Actors []string json:"actors" }func main() {movie : Mo…...

Java笔记 --- 四、异常
四、异常 Java.lang.Throwable Error Exception(异常) 异常的作用 异常的处理方式 JVM默认的处理方式 捕获异常(自己处理) try里面没有出现异常,就不会运行catch里面的代码 如果出现多个异常,需要多个c…...
Ubuntu20.04配置grub ,不必每次都输入 nomodeset
一、查看原来的grub配置: grep menuentry /boot/grub/grub.cfg 重点注意以下类似的核心版本号 gnulinux-5.15.0-92-generic-advanced-86a86651-8070-4338-92ee-8a1a13a98a05 gnulinux-5.15.0-67-generic-advanced-86a86651-8070-4338-92ee-8a1a13a98a05 …...

PBM模型学习(七)核化模型
Nucleation Rate 返回的是成核速率:单位时间内,多少个小颗粒生成,单位,个,/对于fluent而言,这个是对于网格而言,所以单位是:个/m3*s 成核:从无到有,形成一个…...

蓝桥小白赛4 乘飞机 抽屉原理 枚举
👨🏫 乘飞机 🐷 抽屉原理 import java.util.Scanner;public class Main {static int N 100010;static int[] a new int[N];public static void main(String[] args){Scanner sc new Scanner(System.in);int n sc.nextInt();int q s…...

HTML新手教程
HTML入门 教程:【狂神说Java】HTML5完整教学通俗易懂_哔哩哔哩_bilibili 一.初识HTML HyperTextMarkupLanguage(超文本标记语言) 超文本包括:文字、图片、音频、视频、动画。 HTML5的优势 世界知名浏览器厂商对HTML5的支持市场的…...
P1226 【模板】快速幂题解
题目 给你三个整数a,b,p,求 mod p。 输入输出格式 输入格式 输入只有一行三个整数,分别代表a,b,p。 输出格式 输出一行一个字符串a^b mod ps,其中a,b,p分别为题目给定的值,s为运算结果。 输入输出样例 输入样例 2 10 9 …...
文旅游戏的多元应用场景
文旅游戏在各个领域中找到了广泛的应用,为用户提供了独特的文化体验和娱乐享受。下面将探讨文旅游戏在多个应用场景中的丰富表现。 1. 旅游推广与目的地引导 文旅游戏成为旅游局的一项有力工具,能够将目的地的历史、文化和特色景点巧妙地融入游戏中。通…...
小波变化最通俗的解释,小波变换是用来干什么的,类似小波变换功能的算法有哪些?
问题描述:小波变化最通俗的解释,小波变换是用来干什么的,类似小波变换功能的算法有哪些? 问题解答: 小波变换是一种数学工具,用于分析信号的频域特性。它可以将信号分解成不同频率的子信号,…...

Servlet 与 MVC
主要内容 Servlet 重点 MVC 重点 Filter 重点 章节目标 掌握 Servlet 的作用 掌握 Servlet 的生命周期 掌握 JSP 的本质 掌握 MVC 的设计思想 掌握 Filter 的作用及使用场景 第一节 Servlet 1. Servlet 概念 Servlet 是在服务器上运行的能够对客户端请求进行处理&a…...
基于单片机的感应自动门控制器的设计
摘要 现如今自动化、信息化程度越来越高, 单片机的应用领域也越来越广, 成为人们生活不可或缺的一部分。随省社会的发展、科技的进步以及人们生活水平的逐步提高,各种方便千生活的自动控制系统开始进入了人们的生活,以单片机为核…...

兄弟HL-1208黑白激光打印机清零方法
兄弟HL-1208黑白激光打印机基本参数: 产品类型:黑白激光打印机(定位类型家用) 最大打印幅面:A4 最高分辨率:600600dpi 黑白打印速度:20ppm 内存标配:1MB,最大&#…...

第二百八十八回
文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取文件类型"相关的内容,本章回中将介绍如何播放视频.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用…...
【日常学习笔记】gtest
https://zhuanlan.zhihu.com/p/369466622 int Factorial(int n) {int result 1;for (int i 1; i < n; i) {result * i;}return result; }TEST(TestSuiteName, TestName) 第一个参数可以表示为一个对某一个函数进行测试,第二个参数表示对这个函数测试时的分的几…...
go-zero配置DB的redis缓存
配置定义: # cat internal/config/config.go package configimport ("github.com/zeromicro/go-zero/rest""github.com/zeromicro/go-zero/core/stores/cache" )type Config struct {rest.RestConfCacheRedis cache.CacheConf }对应的配置文件…...
物理服务器
物理服务器 物理服务器是一种独立的、非虚拟化的计算机设备,它通常被用作高性能应用、数据库、存储和网络等关键业务应用的运行平台。物理服务器可以提供更高的处理能力、更好的安全性和可靠性,但需要用户自行维护和管理。 物理服务器的形式多种多样&…...

3.3 实验三:以太网链路聚合实验
HCIA-Datacom实验指导手册:3.3 实验三:以太网链路聚合实验 一、实验介绍:二、实验拓扑:三、实验目的:四、配置步骤:步骤 1 掌握使用手动模式配置链路聚合的方法步骤 2 掌握使用静态 LACP 模式配置链路聚合的…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...