从Flash和SRAM中触发中断的过程示例(3)
链接需要按照如下方法配置:中断向量表(ivt.s)需要链接到SRAM的底部(0x40000000)。确定相关的中断向量位于0x40000000-0x4000003F。其他的文件链接到代码内部,可以存放在SRAM中。
而且,中断向量需要被remapped to SRAM。使用MEMAP寄存器,配置它为用户RAM模式可以实现。
Int main()
{
………………….
初始化 MEMAP
MEMAP = 0x2;
………………………..
}
TIMER1配置为触发一个FIQ中断,代码从FLASH中运行
例子包含下面的文件:
1. 中断向量表(ivt.s)
2. 启动汇编代码(init.s)
3. 主C文件
本应用笔记只提到了相关的文件。如果使用其他的交叉编译环境,C文件可以保存大部分不动,汇编文件需要更改。
中断向量表
这些代码应当被链接到0x0。这样中断向量和FIQ ISR就被提供给了ARM核。
;*******************************************************************
汇编指令
********************************************************************
AREA IVT,CODE ;新的代码段
CODE32
IMPORT start
T1_IR EQU 0Xe0008000
ENTRY
;*******************************************************************
LDR PC,=start
LDR PC,Undefined_Addr
LDR PC,SWI_Addr
LDR PC,Prefetch_Addr
LDR PC,Abort_Addr
DCD ;标识
LDR PC,IRQ_Addr
;*******************************************************************
FIQ ISR已经自己存放在了 0x1C,取代了放置在这里的LDR 指令
******************************************************************
;清 TIMER1 中断
MOV R8,#0x1
LDR R9,=T1_IR
STR R8,[R9]
后面的用户应当增加更多的代码在这里。
;返回到C main
SUBS PC,R14,#0x04
;*************************************************************************
Undefined_Addr DCD Undefined_Handler
SWI_Addr DCD SWI_Handler
Pregetch_Addr DCD Pregetch_Handler
Abort_Addr DCD Abort_Handler
IRQ_Addr DCD IRQ_Handler
非常好我支持^.^
(0) 0%
不好我反对
(0) 0%
相关阅读:
- [DSP] 基于DSP的双通道数字语音监录器设计 2011-09-23
- [单片机] 单片机的FLASH引导装载系统设计 2011-09-20
- [DSP] JTAG接口在线烧写Flash的实现 2011-09-16
- [缓冲/存储技术] 单片机系统Flash存储器在系统编程设计 2011-09-14
- [FPGA/ASIC技术] 基于Flash型FPGA的信号源卡设计 2011-09-14
- [电子动态] NAND Flash需求9月有望开始回温 2011-09-07
- [电子动态] 闪存芯片价格小幅下跌 NAND Flash终端出货量不如预 2011-08-30
- [缓冲/存储技术] SRAM简介及与DRAM/SDRAM的比较 2011-08-25
( 发表人:叶子 )