從Flash和SRAM中觸發(fā)中斷的過程示例(3)
鏈接需要按照如下方法配置:中斷向量表(ivt.s)需要鏈接到SRAM的底部(0x40000000)。確定相關(guān)的中斷向量位于0x40000000-0x4000003F。其他的文件鏈接到代碼內(nèi)部,可以存放在SRAM中。
而且,中斷向量需要被remapped to SRAM。使用MEMAP寄存器,配置它為用戶RAM模式可以實(shí)現(xiàn)。
Int main()
{
………………….
初始化 MEMAP
MEMAP = 0x2;
………………………..
}
TIMER1配置為觸發(fā)一個(gè)FIQ中斷,代碼從FLASH中運(yùn)行
例子包含下面的文件:
1. 中斷向量表(ivt.s)
2. 啟動(dòng)匯編代碼(init.s)
3. 主C文件
本應(yīng)用筆記只提到了相關(guān)的文件。如果使用其他的交叉編譯環(huán)境,C文件可以保存大部分不動(dòng),匯編文件需要更改。
中斷向量表
這些代碼應(yīng)當(dāng)被鏈接到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 ;標(biāo)識(shí)
LDR PC,IRQ_Addr
;*******************************************************************
FIQ ISR已經(jīng)自己存放在了 0x1C,取代了放置在這里的LDR 指令
******************************************************************
;清 TIMER1 中斷
MOV R8,#0x1
LDR R9,=T1_IR
STR R8,[R9]
后面的用戶應(yīng)當(dāng)增加更多的代碼在這里。
;返回到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%
不好我反對(duì)
(0) 0%
相關(guān)閱讀:
- [DSP] 基于DSP的雙通道數(shù)字語(yǔ)音監(jiān)錄器設(shè)計(jì) 2011-09-23
- [單片機(jī)] 單片機(jī)的FLASH引導(dǎo)裝載系統(tǒng)設(shè)計(jì) 2011-09-20
- [DSP] JTAG接口在線燒寫Flash的實(shí)現(xiàn) 2011-09-16
- [緩沖/存儲(chǔ)技術(shù)] 單片機(jī)系統(tǒng)Flash存儲(chǔ)器在系統(tǒng)編程設(shè)計(jì) 2011-09-14
- [FPGA/ASIC技術(shù)] 基于Flash型FPGA的信號(hào)源卡設(shè)計(jì) 2011-09-14
- [電子動(dòng)態(tài)] NAND Flash需求9月有望開始回溫 2011-09-07
- [電子動(dòng)態(tài)] 閃存芯片價(jià)格小幅下跌 NAND Flash終端出貨量不如預(yù) 2011-08-30
- [緩沖/存儲(chǔ)技術(shù)] SRAM簡(jiǎn)介及與DRAM/SDRAM的比較 2011-08-25
( 發(fā)表人:葉子 )
