從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
( 發表人:葉子 )