查看: 3330|回復: 1
打印 上一主題 下一主題

[飛凌]S3C2440中斷處理流程

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

本版積分規則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页