S5PV210中断向量表理解

【裸机开发】认识中断向量表(设置中断向量偏移的原因) 阅读详情

在uboot中,重新设置了中断向量表,即不在0地址处了,而在裸机中,第一种可以重新设置中断向量表,在_start标号处(这样的裸机代码要参考uboot的流程写法),第二种可以不重新设置,直接把中断处理程序地址放入0xd003,7400处,一旦发生异常,就会跳过去执行。

上述过程针对210,因为210的0地址处放的是固化代码,不能再放用户写的程序了,所以设置了这个机制。而2440发生异常时,就直接在0地址处可跳转了。

如果中断向量表从0地址开始,那么就会跳到0xd003,7400处执行, 这时如果不将中断处理程序和0xd003,7400地址绑定,这样一旦发生异常,跑到0xd003,7400地址去取,会发现没有东西可执行,因为此时的处理函数的地址不在0xd003,7400处了,而在别的地方了如果中断向量表不是从0地址开始,那么会跳到相应的地位执行。

如果b reset,ldr指令在0地址处构建异常向量表,跳转到reset标号处(在irom运行)执行,而iromcode代码固定,不能在标号处放入用户所写的异常处理函数,于是irom固化代码在标号处设立了那个0xd003,7400跳转机制,(可参考关于《s5pv210启动后的IROM的中断向量》这篇文章:http://donglu.100.blog.163.com/blog/static/2989132420146179411456/),于是用户将异常处理程序放到0xd003,7400地址处。固化代码实现了跳到0xd003,7400地址处执行,是为了将保证将中断程序放在sram里面执行,避免使得其放在irom里面,因为irom代码固定,不处理用户写的异常处理函数。三星的210芯片如果直接写异常处理标号,放在程序里面,而不放到0xd003,7400地址地址处,就永不会执行该异常处理函数。

如果不写b reset这些构建异常向量表的指令,这样会默认在0地址处构建向量表,通过直接将函数地址写到0地址开始的地方,实现了异常向量表和中断函数的绑定,但是这个方法是错误的,不能将中断函数放在向量表中,是因为iromcode代码固定。

以上是个人理解的,可作为参考,谢谢!



ARM_s5pv210_arm_9 异常处理: 复位异常————————SVC管理模式 未定义指令异常—————–未定义模式 SWI软中断异常—————–SVC管理模式 预取指令异常——————-中止模式 数据异常————————中止模式 中断—————————–中断模式 快速中断————————快速中断模式 异常向量表: 异常处理: CPU: 1.备份CPSR,SPSR=CPSR 2.修改CPSR (1 阅读详情

相关推荐

x210:uboot和系统移植扩展--uboot启动第一阶段

从u-boot.lds中ENTRY所指定处可以看出,整个uboot程序的起始就是_start处。 不简单的头文件包含 (1)#include <config.h>。config.h是在include目录下的,这个文件不是源码中本身存在的文件,而是配置过程中自动生成的文件(参考uboot配置和编译过程详解章节,该文件中的内容为#include <configs/x210_sd.h> )。可见start.S中包含的第一个头文件就是:include/configs/x210_s..

linux驱动开发大纲 468

从入门到精通Uboot(6.Uboot启动流程分析)

1.从Uboot.lds开始 这个是脚本链接文件,编译后会在根目录下生成。 对Uboot.lds进行分析: 这个_start为当前代码的入口地址 _start 在文件 arch/arm/lib/vectors.S中有定义 可以发现这个变量被定义为全局变量 这个是加载地址,但会在顶层Makefile中被重新定义,使加载到新的地址。 .text是指代码段,代码段的内容一共有4个部分,分别是: (.__image_copy_start) (.vectors) arch/arm/cpu/armv7/star

qq_43216121的博客 1135

uboot启动分析

uboot是一个操作系统引导程序,多用于嵌入式设备上linux操作系统的引导。它是一个裸机程序,启动流程对其他裸机系统的启动都具有参考意义。下面,我们一起学习一下uboot的启动流程。uboot的启动流程如下图所示:我们对启动流程进行分析时,首先需要分析其链接脚本uboot.lds,从中了解大概的镜像布局,来知道程序的入口,以及一些特殊的地址变量定义,段等。uboot程序的最开始为_start,从_start开始,是中断向量表的定义,这是大多数嵌入式裸机程序的共识,它们总是以复位中断为入口,进入整个系统。

m0_61455436的博客 1319

uboot-重定位中断向量表 relocate_vectors 函数

重定位中断向量表 relocate_vectors 函数

wojiaxiaohuang2014的博客 575

STM32开发 -- 启动流程

启动模式讲完了,我们知道是主闪存存储器启动的。主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它。 接下来,再看一下它的启动流程是怎样的。 话说启动流程,我都讲过很多个了。 参看:S5PV210开发 – 启动流程 参看:DM368开发 – Bootloader 开发(转毕设) BUT,我真的还是讲不明白。还是没有理解透,过一段...

不积跬步,无以至千里 1万+

信息安全-入侵检测技术原理与应用

入侵检测技术原理与应用、入侵检测概述、入侵检测技术、入侵检测系统组成与分类、入侵检测系统主要产品与技术指标、入侵检测系统应用

我的个人博客 1万+

uboot启动流程详解(1)-_start

这个宏定义的主要作用就是生成 BL1 文件,提到 BL1 文件肯定又会有朋友产生疑问,在这里就这个 BL1 文件给大家简单的介绍一下:BL1 文件是一段外部代码,存放在 SD 卡或者 nandflash 上,大小为(4K\8K\16K)。除了 BL1 文件,还有 BL0 和 BL2 文件。BL0 文件是存放在 CPU 内部 IROM 中的一段固化代码,CPU 上点之后,首先去运行BL0 文件。BL2 文件是完整的 U-Boot 代码。

u011029104的专栏 277

【分享】ArcGIS实现分子分母等标注实用技巧

前言 标注是显示在地图上的文字信息,是出图中不可或缺的重要元素,为了标注的样式丰富,摆放的位置灵活,因此给制图出图带来不少难度,以下分享几种本人在ArcGIS中的标注方法,实现上下标注、换行标注或分式标注的实用技巧。 普通模式与高级模式 默认为普通模式,勾选高级开启高级模式。 普通二分式标注(普通模式) [DLBM] & vbnewline & [DLMC] 标注效果展示 分行二分式标注(普通模式) [DLBM]& vbnewline & "——————" &

杨港 3万+

s5pv210中断详解

本文根据《朱老师物联网大讲堂》学习视频编写。如有侵权请联系 S5PV210中断体系介绍 一、什么是中断? (1)中断的发明是用来解决宏观上的并行需要的。宏观就是从整体上来看,并行就是多件事情都完成了。 (2)微观上的并行,就是指的真正的并行,就是精确到每一秒甚至每一刻,多个事情都是在同时进行的。宏观上面的并行并不等于围观的并行,有时候宏观上是并行的,微观上是串行的。 (3)例子中一个人在

qq_35718950的博客 827

宏基因组功能注释实战:从CAZyme到VFDB的完整流程(含数据库下载与脚本优化)

本文详细介绍了宏基因组功能注释的完整流程,涵盖CAZyme、eggNOG、CARD和VFDB四大核心数据库的实战应用。从环境配置、数据库下载与预处理到注释流程执行与优化,提供了全面的操作指南和脚本优化建议,帮助研究人员高效完成宏基因组数据分析。特别针对CAZyme注释等关键步骤给出了参数优化方案和常见问题排查方法。

weixin_29289821的博客 296

关系代数表达式优化步骤

关系代数表达式优化步骤 本篇主要讲解怎么画查询语法树并对其优化,因为我在学关系代数的语法树的时候,在网上找不到比较详细的教法或者技巧,最后通过答案反推原理,所以想写一篇技巧来描述一下这类题的解题方法。 先上书内讲解 1、构造查询树 第一步:把用高级语言定义的查询转换为关系代数表达式 ★ 以 SELECT子向对应投影操作,以FROM字向对应笛卡尔积以 WHERE子句对应选择操作,生成原始查询树 ★ SQL语句转化为原始查询树 第二步:把关系代数表达式转换为查询树。 注: 查询树是一种表示关系代数表达式的树形结

m0_51718449的博客 7016

天嵌开发板 TQ210 S5PV210 中断方式按键实现

中断在裸机开发中是非常重要的一项学习内容,之前学习过STM32的中断实 现,是参考正点原子的代码,通过库函数的方式实现的,为了进一步深度理解 其中的道理,此次通过天嵌的TQ210开发板实现中断方式。 具体功能为,LED正常闪烁,当按键被按下的时候,通过串口打印信息,提 示按键被按下,此过程不影响LED正常闪烁。 中断执行过程具体如下图: ...

chuomei5332的博客 471

变色龙哈希函数 Chameleon Hash 可变型区块链

哈希函数 Hash: 众所周知,区块链有着极其优秀的安全性就是因为其充分使用了哈希函数。 哈希简单用一句话来讲,就是:将任意长度输入的字串可转换成一个固定长度的字串,通过原始字串可以很容易地算出转换后的字串,通过转换后的字串很难还原出原始字串。 哈希函数特征: 1. 对于任意m作为输入,得到输出的结果,很难找到另一个输入m'  (m'不等于m),使得m'的Hash结果也为同样的输出

新手村 1万+

s5pv210开发板学习笔记(1)

从本文中,你可以了解到s5pv210开发板的启动模式,

qq_57212368的博客 620

风光储并网对电力系统稳定性影响的仿真研究

本文研究了风光储并网对电力系统稳定性的影响,基于MATLAB/Simulink平台搭建了IEEE 9节点测试系统的风光储并网模型。研究对比了光储、风储和风光储三种并网配置在多种干扰下的稳定性表现。结果表明:光储系统对频率变化最敏感,风储系统具有更强的功率波动适应能力,而风光储联合系统通过互补效应展现出最佳综合稳定性。储能系统在所有配置中均显著改善了频率恢复性能,验证了其在新能源并网中的关键支撑作用。研究为高比例可再生能源电力系统的稳定运行提供了仿真依据和技术参考。

huanghm88的专栏 155

SAE ARP 4761A内容详解

SAE ARP 4761A主要为民用航空系统及设备的安全评估提供指南,帮助制造商和设计者满足FAA的FAR 25.1309等适航标准的要求。该文档旨在为航空器和航空系统设计中涉及的安全评估流程提供一个结构化的框架,并结合一系列工具和方法,如故障树分析(FTA)、依赖图分析(DD)、马尔可夫分析(MA)等,来系统地评估潜在的安全隐患。这一标准不仅适用于大型航空器的设计和评估,还可以应用于各种类型的飞行系统,如无人驾驶飞行器(UAV)和新型的电动垂直起降飞机(eVTOL)。

qq_41854911的博客 3150

S5PV210中断控制器详解(一):概述和使用中断

1 S5PV210的Interrupt Controller简介 S5PV210是三星推出的一款基于Cortex-A8的Soc,其内部集成的中断控制器由4个ARM PrimeCell PL192矢量中断控制器级连(daisy-chain)而成,每个PL192 VIC(Vector Interrupt Controller)支持32个中断源,所以最多支持128个。S5PV210使用了其中的93

亦大乐谍的嵌入式分享小站——思考/验证/总结/分享 3919

《FreeRTOS 入门与实战》第2章:开发环境搭建(实战)

STM32CubeIDE工程创建与FreeRTOS移植J-Link调试环境搭建SystemView可视化跟踪配置。

2301_79143213的博客 1733

1.8.ARM裸机第八部分-按键和CPU的中断系统

当中断发生时,在irq_handler中依次去查询4个中断源寄存器,看哪一个的哪一位被置1,则这个位对应的寄存器就发生了中断,即找到了中断编号。要考虑中断返回的问题。(2)第二个问题,怎么找到对应的isr的问题:首先给每个中断做了个编号,进入isr_handler之后先通过查阅中断源寄存器和子中断寄存器(中哪一位为1)确定中断的编号,然后用这个编号去isr数组(isr数组是中断初始化时事先设定好的,就是把各个中断的isr的函数名组成一个数组,用中断对应的编号作为索引来查询这个数组)中查阅得到isr地址。

woyingle8866的博客 467

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

linux中断之二(s5pv210)

异常向量初始化 在init/main.c中的start_kernel()函数中: asmlinkage void __init start_kernel(void) { char * command_line; extern struct kernel_param __start___param[], __stop___param[]; smp_setup_processor_id()

yiheng528的专栏 1577

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

uboot移植-从uboot官方源码开始移植过程总结

1 选取源码 下载源码 解压源码 自行登录uboot官网,下载uboot源码,我选取的是2013.10的,因为之后的源码采用类似新的配置模式(能用即可)。 我的源码是uboot-2013.10,解压缩一份在windows(用来查看分析和修改),一份在Linux(用来交叉编译)。 2 寻找目标板子 uboot工程里面有很多开发板,我们要找到一个和我们类似SOC的开发板,很显然最起码要匹配两个

楷尘·极客 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

嵌入式Linux裸机开发笔记3(IMX6ULL)—C语言实现LED实验(1)

实际工作中是很少用到汇编去写嵌入式驱动的,毕竟汇编太难,而且写出来也不好理解,大部分情况下都 是使用 C 语言去编写的。语言环境搭建的,当然还有一 些其他的处理,比如中断向量表等等。C 语言文件就是完成我们的业务层代码的,其实就是我们实际例程要完成的功能。

qq_55730568的博客 223

深入解析中断硬件框架:从原理到实践,解决嵌入式系统中断问题

中断是计算机系统中实现异步事件响应的核心机制,其本质是CPU在正常执行流程中,对紧急事件进行即时处理的硬件支持。中断硬件框架通常包含中断源、中断控制器和CPU响应三个关键环节,通过优先级仲裁和向量化技术,确保系统能够高效、有序地处理多任务并发。理解中断硬件框架对于嵌入式系统开发至关重要,它不仅能优化实时性,还能有效避免中断丢失、优先级混乱等常见问题。在实际应用中,如STM32等微控制器,中断处理常涉及NVIC配置、中断服务函数编写以及中断嵌套管理。本文结合中断服务函数和中断向量表等热词,探讨了中断在工业控制

weixin_31815843的博客 288

inside uboot (三) 异常向量表

1. 异常向量表概述 从上面的地址映射来看,中断向量表的地址为0xD0037400,因此如果我们想在SRAM中,也就是BL1中处理异常的话, 就需要把我们的异常向量表拷贝到这个地址上。或者我们可以在链接脚本中直接指定代码的地址。 如果在主内存中,我们要使用异常向量表的话,我们需要配置CP15协处理器中的VBAR寄存器。 2. 中断向量表代码 _start: b reset ldr...

学习是为了探索这个世界的本质 1203

S5PV210的中断处理机制详解

参考博客:;

weixin_42031299的博客 1261
上一篇: S5PV210中断向量表理解
lingchenckobe
博客等级 码龄11年 1粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值