当前位置: 首页 > news >正文

【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) 第一个参数可以表示为一个对某一个函数进行测试&#xff0c;第二个参数表示对这个函数测试时的分的几…...

go-zero配置DB的redis缓存

配置定义&#xff1a; # 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 }对应的配置文件…...

物理服务器

物理服务器 物理服务器是一种独立的、非虚拟化的计算机设备&#xff0c;它通常被用作高性能应用、数据库、存储和网络等关键业务应用的运行平台。物理服务器可以提供更高的处理能力、更好的安全性和可靠性&#xff0c;但需要用户自行维护和管理。 物理服务器的形式多种多样&…...

3.3 实验三:以太网链路聚合实验

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

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...

二维FDTD算法仿真

二维FDTD算法仿真&#xff0c;并带完全匹配层&#xff0c;输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...