异常中断向量表的地址问题

目前有个疑问,就是书上说异常中断向量表是从地址0x0000_0000开始的,那么在s5pv210中,好像0x0000_0000地址对应的好像是iROM,而iROM是Samsung公司预置好了的代码,难道说异常中断向量表是存放在iROM中的?而且根据iROM_application手册中提供的图,在0xD003_7400处有一个异常向量表,难道 s5pv210 改变了异常中断向量的地址???

这个问题经过长时间的存放,今天终于在一本书上找到了答案,解决如下:

其实 s5pv210 的中断向量表的位置并没有改变,还是存在于 0 地址处,但是只支持irq中断和复位,其他的几种异常并不支持。当发生中断的时候,cpu仍然会跳转到0x18处执行,然后跳转到iROM中的一个固定的地址处去执行,接着再将 0xD003_7400 处的内容加载到 pc 中。所以说 0xD003_7400 地址处应该存放的中断处理程序的首地址。

由于这些处理都是iROM中的代码所完成的功能,而且Samsung公司并不公开iROM的源代码,在iROM手册中又没有具体详细的介绍,让我们很难受。该书中使用了一种方法来验证了上面的说法:

就是利用串口来输出iROM中的代码,然后将内容保存为.bin文件,接着使用arm-linux-objdump命令来反汇编bin文件,即可看到对应的汇编代码。回头等学到了串口的时候,用这个方法来验证一下。

时间: 2024-10-15 07:56:30

异常中断向量表的地址问题的相关文章

【转】一个跟地址对齐有关的应用异常案例

@2019-01-29 [小记] 一个跟地址对齐有关的应用异常案例 原文地址:https://www.cnblogs.com/skullboyer/p/10335373.html

u-boot分析(四)---设置异常向量表|设置SVC模式

u-boot分析(四) 通过前三篇的分析,我们对u-boot已经有了整体的认识和掌握,但是我们仍然对于其部分硬件是如何初始化的不太清楚,所以接下来几篇博文我将会对我们在http://www.cnblogs.com/wrjvszq/archive/2015/01/10/4215627.html一文中总结出的u-boot的工作流程中的重要环节,结合文档加以分析. 今天我们会用到的文档: 1.        ARM Architecture Reference Manual:http://downlo

进程—异常控制流之中断篇

从给处理器加电开始,直到断电为止,PC(程序计数器)都在不间断的读取并执行指令. 最简单的一种控制流是一个"平滑的"序列,其中每个instk和instk+1 在存储器中都是相邻的.典型地,这种平滑流的突变,也就是instk?和instk+1? 不相邻,是由诸如跳转(jump).调用(call)和返回(ret)这样一些熟悉的程序指令造成的.这样一些指令都是必要的机制,使得程序能够对由程序变量表示的内部程序状态中的变化做出反应. 但是系统也必须能够对系统状态的变化做出反应,这些系统状态不是

LINUX-内核-中断分析-中断向量表(3)-arm【转】

转自:http://blog.csdn.net/haolianglh/article/details/51986987 arm中断概念 在<ARM体系结构与编程>第9章中说到,ARM 中有个概念叫做“异常中断”,也就是包括外部中断在内的各种异常.显然,ARM体系的“异常中断”概念更加接近MIPS体系中的“异常”概念. 既然更类似MIPS体系,那么自然的ARM体系就存在“异常中断入口”和“异常中断向量表”的概念. arm的异常中断向量表 非向量化中断 ARM体系定义了7种异常中断,在<AR

s3c2440裸机-异常中断(二. und未定义指令异常)

1._und(未定义指令异常)介绍 我们之前分析过5种异常,那么如何进入未定义指令异常,当然是cpu读取指令发生异常,出现了指令解析异常. 我们先来看下当cpu解析到什么样的指令才会触发未定义指令异常呢? 从上面的arm指令格式中可知,只要指令码属于划线的格式,就属于未定义指令异常. 2.汇编向c函数传参 我们知道汇编给C语言函数传参是通过r0,r1,...通过堆栈的方式去传递的参数,比如r0=1, r1=2;那么在被调用的c函数中argv0就是r0, argv1就是r1...,那么我们如果通过

ARM(ARM内部寄存器及SFR、异常处理、中断向量表)

1.ARM内部寄存器:设计在CPU内部 (1)特点:速度快 (2)数量:一共有37个: 6个状态寄存器: 31个通用寄存器(R0-R12) R13(SP):栈指针,不同模式下栈空间是不一样的 R14(LR):链接寄存器(存放断点),硬件自动完成 R15(PC):程序指针,取指令的位置 在FIQ模式下是独立的与其他模式不同 R16  PSR--CPSR(当前状态寄存器) SPSR:程序状态寄存器 条件状态(NZCV)保留字 I  F  T 模式位(M4-M0) SFR(Special Functi

S5PV210-arm裸机-异常中的中断实现过程

210中的异常中的中断实现过程: 首先异常分为很多种,异常中包含了中断异常,有一个东西叫做异常向量表,在异常向量表中有很多相应异常的的地址.异常向量表中的所有异常中断的地址是不会变化的.地址都是固定的,但这些地址都是一个基于基地址的一个地址.不同的CPU中,基地址是不同的. 在210中,CPU内部给了一个发生异常时的异常向量的基地址,查阅官方资料知道,这个基地址为0XD0037400,所以我们需要自己把异常向量表中的地址加在210给的发生异常时的异常向量的基地址上.比如:reset(复位异常)在

SpringMVC 处理异常的4种方式

springmvc处理异常有三种方式: 1.在一个controller中定义一个方法,用@ExceptionHandler注解标注.(优先级最高) @ExceptionHandler public ModelAndView handleException(Exception exception){     ModelAndView mv = new ModelAndView("error/500");     mv.addObject("ex",exception)

20.核心初始化之异常向量表

20.核心初始化之异常向量表 一.异常向量表: 包含:1.异常定义 ???? 2.异常类型 ???? 3.异常入口 ???? 4.向量表 首先异常定义,在ARM Architecture Reference Manual.pdf文档中,2.Programmers' Model的2.6.Exceptions异常: 异常:因为内部或外部的一些事件,导致处理器停下来正在处理的工作,转而去处理这些发生的事件. 2.异常类型 当一种异常发生的时候,ARM处理器会跳转到对应该异常的固定地址去执行异常处理程序