综合资讯 技术文章 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

电子技术 | 技术资料 | 嵌入式系统 | 单片机专题 | DSP专题
EDA/PLD专题 | 电源技术专题 | 电子制作专题 | 其他综合 | 芯片选型

所在的位置:首页在线阅读嵌入式系统ARM技术专辑正文
 
对44B0中断向量的理解

这段时间调试44B0,对44B0的中断系统有了一定的了解。现归纳为以下几点,与大家共享,希望对大家有所帮助。

一、 关于44B0中断系统。
44B0中断系统中有两张中断转移表,经过二重转移才跳到中断处理程序。第一张中断向量表由硬件决定,所在区域
为ROM(flash),地址空间从0X00开始,其中0X00-0X1C为异常向量入口地址,0X20-0XC0为中断向量入口地址。另
一张中断向量表在RAM中,可以随便改,其位置在程序连接后才定。

二、 如何从第一张中断向量表跳到第二张中断向量表。
由于RAM放在地址空间的高端(距离中断向量超过了32M),故在第一张中断向量表对应位置上写上

ldr PC,# interrupt_service
如:ldr PC,=HandlerEINT4567
    
三、如何在启动程序中设置异常向量,中断向量表。如何把C语言中的一个中断函数对应到汇编的中断向量表中,
示意图及举例如下:


 

#define _ISR_STARTADDRESS  0xc7fff00     //GCS6:16M bit DRAM/SDRAM
#define pISR_EINT4567 (*(unsigned *)(_ISR_STARTADDRESS+0x74))
.macro HANDLER HandleLabel
    sub     sp,sp,# 4    
stmfd   sp!,{r0}     
ldr     r0,=\HandleLabel
ldr     r0,[r0]     
str     r0,[sp,# 4]    
    ldmfd   sp!,{r0,pc}     
.endm
.text
ENTRY:
    b ResetHandler
    |
    |
VECTOR_BRANCH:
    ldr pc,=HandlerEINT0   
|
|
    ldr pc,=HandlerEINT4567 /* 0x30                                 */  

HandlerEINT4567:HANDLER HandleEINT4567
  
 .equ HandleEINT4567, _ISR_STARTADDRESS+4*29
   
   把C语言中的一个中断函数对应到汇编的中断向量表中
    pISR_EINT4567 = (int)Eint4567Isr; 



返回 上一页 下一页   信息发布:工号01   转引自: 【 】 【打印】 【关闭

关于我们 ┋ 友情链接


深圳市福田区海滨广场福业大厦12C
电话:0755-88305880 25960580 传真:0755-88305880
Copyright©2005-2007 无忧电子开发网版权所有

粤ICP备05064233号