关于ARM中断的具体的启动代码解释

发布者:真诚友谊最新更新时间:2018-12-19 来源: eefocus关键字:ARM  中断  启动代码 手机看文章 扫描二维码
随时随地手机看文章

关于中断的具体的启动代码解释:

 

可以这么理解,44B0 中断系统中有两张中断转移表,经过二重转移才跳到中断处理程序。第一张中断向量表由硬件决定,所在区域为ROM(flash),地址空间从0X00开始,其中0X00-0X 1C为异常向量入口地址,0X20-0XC0为中断向量入口地址。另一张中断向量表在RAM 中,可以随便改,其位置在程序连接后才定。由于 RAM 放在地址空间的高端(距离中断向量超过了 32M),为了从第一张中断向量表跳到第二张中断向量表,故在第一张中断向量表对应位置上写上 ldr PC,# interrupt_service 如:ldr PC,=HandlerEINT4567。

 

(1) 一级中断向量表


以下为汇编代码片断,详见44B0数据手册11章——中断控制器)

 

AREA     Init,CODE,READONLY
;说明:关键字ENTRY告诉编译器保留这段代码;从代码看Init段就是要写入0x00地址的原始中断向量,因此把这个文件编译生成的44binit.O和Init填入ADS-Linker-Layout页对应项中。【这样编译器会把该段代码编译到0X0地址。】


ENTRY           ;ENTRY程序入口标号需要顶格式写,否则出错。

     b ResetHandler      ;复位异常   0x0000 0000
     b HandlerUndef      ;未定义异常   0x0000 0004
     b HandlerSWI        ;软件中断异常   0x0000 0008
     b HandlerPabort     ;指令预取异常   0x0000 000C
     b HandlerDabort     ;数据预取异常   0x0000 0010
     b .                 ;保留   0x0000 0014
     b HandlerIRQ       ;外部中断外设中断都是在这里扩展的   0x0000 0018
     b HandlerFIQ       ;快速中断   0x0000 001C

VECTOR_BRANCH
     ldr pc,=HandlerEINT0     ;mGA  H/W interrupt vector table  0x00000020
     ldr pc,=HandlerEINT1     ;
     ldr pc,=HandlerEINT2     ;
     ……

    ……

     b .
     ldr pc,=HandlerADC     ;mGKB      0x0000 00C0
     b .       ;
     b .       ;
     b .       ;
     b .       ;
     b .       ;mGKB
     b .
     b .
;0xe0=EnterPWDN
     ldr pc,=EnterPWDN

     LTORG

    通过这段代码,就在44B0的ROM中以0x00为起始地址的地方建立起了一张中断向量表,而且这个表的顺序完全符合44B0数据手册中对中断向量地址的定义要求。
















 

 

 

 

 

 

 

 

 

 

 

 












2、二级中断向量表


  ^   _ISR_STARTADDRESS    ;一般为 #define _ISR_STARTADDRESS 0xc7fff00

HandleReset          #   4

HandleUndef          #   4

HandleSWI            #   4

HandlePabort         #   4

HandleDabort         #   4

HandleReserved       #   4

HandleIRQ            #   4

HandleFIQ            #   4

;Do not use the label 'IntVectorTable',

;because armasm.exe can not recognize this label correctly.

;the value is different with an address you think it may be.

;IntVectorTable

HandleADC       #   4

HandleRTC       #   4

……

……

HandleEINT2     #   4

HandleEINT1     #   4

HandleEINT0     #   4   ;0xc1(c7)fff84

        END

 

这段第一行 “^” 符号表示在RAM区开辟空间,就是伪代码中的MAP。 

^ _ISR_STARTADDRESS 表示在RAM的_ISR_STARTADDRESS处开辟一段空间。这里开辟的空间是用来存放中断服务程序及其他异常处理程序地址的。每个中断或其他异常都开辟4个字节的空间,这是因为RAM区的程序地址要4个字节才能放得下。而中断程序的地址是应用程序在使用这个中断时,将中断服务程序的地址存入这对应的空间内。

 

 

3、 中断向量表最终指向


 

一般在44B.H等头文件能找到对应于二级中断向量表的宏定义:片断如下

#define pISR_RESET  (*(unsigned *)(_ISR_STARTADDRESS+0x0))

#define pISR_UNDEF  (*(unsigned *)(_ISR_STARTADDRESS+0x4))

#define pISR_SWI    (*(unsigned *)(_ISR_STARTADDRESS+0x8))

#define pISR_PABORT (*(unsigned *)(_ISR_STARTADDRESS+0xc))

#define pISR_DABORT (*(unsigned *)(_ISR_STARTADDRESS+0x10))

#define pISR_RESERVED   (*(unsigned *)(_ISR_STARTADDRESS+0x14))

#define pISR_IRQ    (*(unsigned *)(_ISR_STARTADDRESS+0x18))

#define pISR_FIQ    (*(unsigned *)(_ISR_STARTADDRESS+0x1c))

#define pISR_ADC    (*(unsigned *)(_ISR_STARTADDRESS+0x20))

#define pISR_RTC    (*(unsigned *)(_ISR_STARTADDRESS+0x24))

#define pISR_UTXD1  (*(unsigned *)(_ISR_STARTADDRESS+0x28))

#define pISR_UTXD0  (*(unsigned *)(_ISR_STARTADDRESS+0x2c))

……

……

#define pISR_EINT2 (*(unsigned *)(_ISR_STARTADDRESS+0x7c))

#define pISR_EINT1 (*(unsigned *)(_ISR_STARTADDRESS+0x80))

#define pISR_EINT0 (*(unsigned *)(_ISR_STARTADDRESS+0x84))

 

     一般在C文件中将自定义的中断服务子程序地址放进对应宏中,如:

pISR_TIMER0 = (int) time_interrupt()


关键字:ARM  中断  启动代码 引用地址:关于ARM中断的具体的启动代码解释

上一篇:ARM中断体系结构
下一篇:ARM中断处理过程

推荐阅读最新更新时间:2024-03-16 16:20

基于ARM和μC/OS-Ⅱ的在线磷酸根离子监测仪设计
火力发电厂和大型工业锅炉,通常采用向炉水中添加少量磷酸盐以防止钙、镁水垢的生成,磷酸根浓度不够,不能有效防止结垢,磷酸根离子含量过高,会导致炉水的pH值变高。因此磷酸根离子浓度是炉水检测的重要参数。ARM处理器具备高性能、低功耗、低成本等优点,将其应用于在线磷酸根离子分析仪的管理控制系统,可以提高磷酸根分析仪的处理速度和精度。 1 结构及测量原理简介 磷酸根离子分析仪整体结构包括光路系统、水路系统和管理控制系统三个部分。 光路系统主要包括:专用的单色LED冷光源、比色皿和光电传感器。 水路系统由比色皿、柱塞泵、多通道切换阀、流通池、样水/标液切换阀、流量计、排污阀、溢流管等组成。 利用化学吸光法原理,即在一定的
[单片机]
基于<font color='red'>ARM</font>和μC/OS-Ⅱ的在线磷酸根离子监测仪设计
基于Berkeley DB的机房环境监控系统
  引言   随着社会信息化进程的发展,许多行业部门的中心机房设备和规模也日趋扩大,配套的环境设备也日益增多,一旦机房的环境设备出现故障,将直接影响计算机系统的安全运行,后果不堪设想。为了保证安全,对机房的环境设备进行自动监控是极其重要的。   1 机房环境设备监控的主要内容及基本功能   机房环境设备监控的主要内容有:机房用电的检测;对机房低压配电柜,UPS电源设备的输入端和输出端,各回路的电压、电流、频率、电功率的监测;温度、湿度的监测;机房漏水的监测;消防的监测。   通过对机房环境设备特点的分析,可把机房环境监控系统的基本功能概括为:现场数据的实时采集、发送和显示;对采集到的数据进行处理和存储;对数据处理的结果进行
[单片机]
基于Berkeley DB的机房环境监控系统
基于ARM9的LCD程序编写
人机交互是嵌入式系统必须具有的功能。比较简单的人机交互有按键、LED、蜂鸣器,稍微 复杂的有7 段数码管和点阵。但如今这些都不能满足人们的需求了,所以又出现了LCD 和 触摸屏技术。s3c2440 具有LCD 和触摸屏接口,可以很好的连接LCD 和触摸屏。这篇文章 主要介绍TFT 型LCD 的用法。 要想正确使用LCD,必须注意两点:1、时序;2、显示缓存区。 1、时序 LCD 一般需要三个时序信号:VSYNC、HSYNC 和VCLK。VSYNC 是垂直同步信号,在每 进行一个帧(即一个屏)的扫描之前,该信号就有效一次,由该信号可以确定LCD 的场频, 即每秒屏幕刷新的次数(单位Hz)。HSYNC 是水平同步信号,在每进行一行的扫描
[单片机]
ARM汇编语言 - 简介 [三]
上文介绍了ARM的数据处理指令,本文将主要介绍ARM中的跳转指令。 【跳转指令】 无条件跳转 ARM中的基础跳转指令就一个字母 B ,代表Branch,相比起x86中和它功能基本相同的 jmp 指令,意思显得稍微隐晦了点。 B 属于无条件跳转,就是不管三七二十一,跳就对了,如果跳转的目标地址不是由立即数直接给出,而是通过寄存器给出,那就应该使用 BX 。 B label ;jump to the address given by the label BX reg ;jump to the address given by the register 目标地址是否由寄存器给出只是表象,真正的区
[单片机]
<font color='red'>ARM</font>汇编语言 - 简介 [三]
ARM汇编指令学习之开篇
指令集学习 (一) ARM 指令集 1. 指令格式 2. 条件码 3. ARM 存储器访问指令 1) LDR/ STR -加载 / 存储指令 2) LDM/ STM -多寄存器加载 / 存储指令 3) SWP -寄存器和存储器交换指令 4. ARM 数据处理指令 1) 数据传送指令 a) MOV -数据传送指令 b) MVN -数据非传送指令 2) 算术逻辑运算指令 a) ADD -加法运算指令 b) SUB -减法运算
[单片机]
S3C2440外部中断之按键中断
要做2440的中断实验。首先要了解ARM的中断体系结构。ARM体系CPU有七种工作模式。分别是: 用户模式(usr):ARM处理器正常程序执行状态。 快速中断模式(fiq):用于高速数据传输或通道处理。 中断模式(irq):用于通用的中断处理。 管理模式(svc):操作系统使用的保护模式。 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。 系统模式(sys):运行具有特权的操作系统任务。 未定义指令终止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。 此外,ARM体系的CPU有两种工作状态,分别是:ARM状态、Thumb状态。 实际上,CPU一
[单片机]
S3C2440外部<font color='red'>中断</font>之按键<font color='red'>中断</font>
ARM7入门6,LCD显示字符
用ADS1.2编辑的,注意添加target.c,IRQ.s,Startuo.s和mem.scf文件。 主程序: /**************************************************************************** * File: main.c * 功能:向LCD输出字符 ****************************************************************************/ #include config.h #define rs (1 8) #define rw (1 9) #define en (1 10) #d
[单片机]
<font color='red'>ARM</font>7入门6,LCD显示字符
英特尔进军 Arm 芯片领域,并追赶台积电提高代工市场份额
2 月 27 日消息,近日在接受 Tom's Hardware 采访时,英特尔代工负责人斯图尔特・潘(Stu Pann)表示将会进军 Arm 芯片,并不断追赶台积电的代工市场份额。 代工愿景 英特尔希望在 2030 年成为全球第二代代工厂,并希望能成为一家有弹性的代工厂,能够缓解地缘政治、战争冲突等各种问题导致的供应链中断问题。 英特尔会重新平衡其半导体业务,计划产业链的 50% 布局放在美洲 / 欧洲、50% 放在亚洲。 加强和 Arm 合作 Arm 首席执行官雷内・哈斯(Rene Hass)通过远程连接的方式出席 IFS 活动,表示世界似乎正在摆脱独占硬件的想法,转而希望为微软或 Faraday 这样的大公司打造最
[半导体设计/制造]
英特尔进军 <font color='red'>Arm</font> 芯片领域,并追赶台积电提高代工市场份额
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved