国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

查看: 3507|回復(fù): 1
打印 上一主題 下一主題

[飛凌]S3C2440中斷處理流程

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2010-7-13 14:50:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)鍵詞: 飛凌 , 流程
本文轉(zhuǎn)引自 飛凌嵌入式 S3C2440 技術(shù)討論區(qū) www.witech.com.cn
粗略寫了一下S3C2440的中斷處理流程(以飛凌2440開發(fā)板所用bootloader代碼為例),給初學(xué)者看的,希望大家多多討論,不斷改進,使其最終成為一份完善的教程!
首先定義向量表堆棧  bootloader中取0x33ffff00
        ^   _ISR_STARTADDRESS                ; _ISR_STARTADDRESS=0x33FF_FF00
HandleReset                 #   4
HandleUndef                 #   4
HandleSWI                   #   4
HandlePabort                #   4
HandleDabort                #   4
HandleReserved              #   4
HandleIRQ                   #   4
HandleFIQ                   #   4
IRQ堆棧地址為0x33ffff18,這里放中斷處理函數(shù)的入口地址。
ldr        r0,=HandleIRQ       ;This routine is needed
ldr        r1,=IsrIRQ          ;IsrIRQ就是中斷處理函數(shù)的入口地址
str        r1,[r0]
中斷發(fā)生后程序自動從該處取值并跳轉(zhuǎn)
b        HandlerIRQ        ;handler for IRQ interrupt
HandlerIRQ      HANDLER HandleIRQ
這里跳轉(zhuǎn)到了IsrIRQ
IsrIRQ
        sub        sp,sp,#4       ;sp-4,預(yù)留給pc。
        stmfd        sp!,{r8-r9}        ;保護r8 r9  一會兒要用。這里沒有保持r14。
        ldr        r9,=INTOFFSET        
        ldr        r9,[r9]                ;獲得中斷號
        ldr        r8,=HandleEINT0        ;
        add        r8,r8,r9,lsl #2        ;通過中斷偏移值計算中斷源
        ldr        r8,[r8]                ;取出相應(yīng)中斷處理函數(shù)的入口地址值
        str        r8,[sp,#8]        ;將其存在sp+8處,即剛才預(yù)留給pc的堆棧
        ldmfd        sp!,{r8-r9,pc}        ;還原r8 r9并跳轉(zhuǎn)到中斷處理函數(shù)
中斷函數(shù)處理完后會從r14取值返回
沙發(fā)
 樓主| 發(fā)表于 2010-7-28 17:12:55 | 只看該作者
飛凌嵌入式 S3C2440 技術(shù)討論區(qū) www.witech.com.cn
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表