一.  中断向量表

中断向量表是存放中断向量的表。中断服务程序的入口地址或存放中 断服务程序的首地址成为中断向量,因此中断向量表是一系列中断服务程序入口地址组成的表。

当有中断事件发生时,处理器通过中断向量表进入相关的中断服务程序处理事件。

二.  添加中断向量表

1.  start.S 文件添加中断向量表

通过正点原子提供的 ARM ArchitectureReference Manual ARMv7-A and ARMv7-R edition.pdf 文档。该文档在参考资料目录下。

找到中断向量表如下:

我们根据以上的中断向量的顺序,在汇编文件 start.S 中添加中断向量表。

start.S 汇编文件中添加的中断向量表如下:


.global _start
.global _bss_start
_bss_start:.word _bss_start
.global _bss_end
_bss_end:.word _bss_end_start:ldr pc, =Reset_Handler       /* 复位中断  */ ldr pc, =Undefined_Handler /* 未定义中断    */ldr pc, =SVC_Handler     /* SVC(Supervisor)中断 */ldr pc, =PrefAbort_Handler  /* 预取终止中断 */ldr pc, =DataAbort_Handler /* 数据终止中断 */ldr pc, =NotUsed_Handler   /* 未使用中断 */ldr pc, =IRQ_Handler        /* IRQ中断    */ldr pc, =FIQ_Handler     /* FIQ(快速中断)未定义中断 */

2.  start.S 文件添加中断服务函数

这一篇文章暂时对中断服务函数不做实现。中断服务函数内部暂时都为循环执行。中断服务函数也是汇编实现,也是添加到 start.S 汇编文件中。

如下为添加到 start.S 文件的中断服务函数:

/* 复位中断服务函数 */
Reset_Handler:     //暂时写为循环执行ldr r0, =Reset_Handlerbx r0/* 未定义中断服务函数 */
Undefined_Instruction_Handler:ldr r0, =Undefined_Instruction_Handlerbx r0/* SVC中断服务函数 */
SVC_Handler:ldr r0, =SVC_Handlerbx r0/* 预取终止中断服务函数 */
Prev_Abort_Handler:ldr r0, =Prev_Abort_Handlerbx r0/* 数据终止中断 */
Data_Abort_Handler:ldr r0, =Data_Abort_Handlerbx r0/* 未使用的中断 */
Not_Used_Handler:ldr r0, =Not_Used_Handlerbx r0/* IRQ中断!重点!!!!! */
IRQ_Handler:ldr r0, =IRQ_Handlerbx r0/* FIQ中断 */
FIQ_Handler:ldr r0, =FIQ_Handlerbx r0

以上写好了中断服务函数的框架。

重点是设置中断向量偏移操作,复位中断服务函数 和 IRQ中断服务函数的具体实现。

复位中断服务函数大体需要做的工作如下:

(1)  关闭 I-Cache,D-CacheMMU

关闭以上的模块需要用到 CP15 协处理器的一些指令操作。

(2)  设置处理器的 9 种工作模式下对应的SP指针。

(3)  清除 bss段。

(4)  跳到 C 函数,也就是 main() 函数。

接下来的博文说明设置中断向量偏移操作,复位中断服务函数 和 IRQ中断服务函数的具体实现。

IMX6ULL-IRQ中断之添加中断向量表相关推荐

  1. ARM-------->第六天,IRQ中断

    irq中断 按下按键k2或者k3就可以产生irq中断 回忆异常的处理流程: 5种异常模式  7种异常源 0地址有异常向量表:每一种异常源都会有一个固定的地址,在这个地址处,是一个跳转到对应的异常处理函 ...

  2. imx6ull gpio 中断

    本文使用100ask_imx6ull_mini开发板来做实验,内容参考百问网开发手册 一.整体流程 GPIO 作为中断源,本实验使用KEY1(GPIO5_1)和KEY5(GPIO4_IO14)两个按键 ...

  3. 中断的分类,中断指令,中断类型码,中断向量表,中断优先级

    目录 PC机的中断系统 中断的分类 内部中断(软件中断) 故障 陷阱 异常终止 中断指令 指令类型中断指令 INT N 溢出中断指令  INTO 中断返回指令  IRET 外部中断(硬件中断) 非屏蔽 ...

  4. MTK 平台的Irq 中断号,dts匹配过程

    MTK一直以傻瓜化,工具化出名,导致了许多代码逻辑的缺失:所以很多做 MTK平台的人,对很多东西都不甚了解,一知半解.最近我们调试一个驱动,在添加 irq时,就找不到代码的逻辑关联,现把关键的过程记录 ...

  5. 微机原理——8086中断类型以及中断向量表、中断响应、中断返回

    博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问. 目录 先验知识回顾 控制 ...

  6. ADuC7126学习(一):ADuC7126精密微控制器用keil4编写程序不能进入IRQ中断的问题

    开头的几句话:ADuC7124/ADuC7126均为完全集成的1 MSPS.12位数据采集系统,在单芯片内集成高性能多通道ADC.16位/32位MCU和Flash/EE存储器. 最近自主设计一块简单的 ...

  7. IRQ中断与FIQ中断的区别

    在学习嵌入式的时候中断是我们必须要了解的东西. 首先我们要知道什么是中断,中断的概念(可看可不看,重要的是理解)是指半中间发生阻隔.停顿或故障而断开.其实中断也是异常的一种,只是是一种人为可控的异常. ...

  8. AR9331中Linux内核启动中与IRQ中断相关的文件

    先列出框架,具体后继再来分析. 首先是lds文件,该文件设置了各个section在FLASH或RAM中的先后顺序. 位于~/openwrt1407/build_dir/target-mips_34kc ...

  9. fiq中断的入口地址,是什么FIQ和IRQ中断系统之间的区别?

    I want to know the difference between FIQ and IRQ interrupt system in any microprocessor, e.g: ARM92 ...

最新文章

  1. MAC 下SVN 删除文件失败 提示emains in tree-conflict
  2. Aqua Data Studio【下载】ads-windows-x64-16.0.5
  3. python——函数 11、命名空间
  4. 关于国内厂商的国际版杀毒软件
  5. java通过jri 数据分析_SparkR安装部署及数据分析实例
  6. 使用记事本开发第一个java程序
  7. 植物大战僵尸tv版显示无法连接服务器,创维云电视植物大战僵尸tv版总是无法连接服务器...
  8. clion msys2 Mingw 未找到
  9. 当股份制银行核心数据遇到国产数据库
  10. Solr高级查询Facet
  11. Qt和PyQt中的组合键输入捕获处理
  12. 【转载收藏】Unity预计算实时GI
  13. CPU连续飙升的背后是 “道德的沦丧” 还是 “人性的泯灭”
  14. 【学习笔记】欧拉公式证明(定义法、泰勒公式法)
  15. 仅将人脑视为预测机器,人类文明会出什么问题
  16. 并发编程--线程池原理
  17. KDD2020|PinnerSage:Pinterest推荐中的多模式用户嵌入框架
  18. 2022年安徽最新食品安全管理员模拟考点及答案
  19. react 搭建本地开发环境
  20. 以太网/串口连接开发板

热门文章

  1. Kubernetes 故障解之(Failed to find subsystem mount for required subsystem: pids)
  2. web爬虫学习(四)——手机APP爬取
  3. 2021-03-04 mysql in里加个参数就查不到??是JSON_EXTRACT导致的,用JSON_UNQUOTE()去掉双引号就正常了
  4. 领导看了会炸毛的溢出理论
  5. Sentinel持久化
  6. 论文精读:Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks
  7. 十大领域五大过程组(上):你必须了解的项目管理常识
  8. NoSQL代表: Mongo DB(芒果数据库) NoSQL代表: Mongo DB(芒果数据库)
  9. 2022第二届中国新能源汽车功能安全创新国际峰会
  10. 线性代数(2)行列式6种运算性质