音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

STR71xF的異常處理 -1-

作者:liuq 欄目:MCU技術(shù)
STR71xF的異常處理 -1-
STR71xF的異常處理

1.概述
所謂異常可能是某個硬件外設(shè)的發(fā)出的中斷、也可能是代碼錯誤或存儲器訪問出錯、或者是用戶定義的異常。發(fā)生異常時必須暫停正常的程序流程,處理器要跳轉(zhuǎn)到一個特定的代碼段執(zhí)行一系列預(yù)先定義的動作。這個處理過程就叫做異常處理。
在介紹STR7 ARM7響應(yīng)和處理異常之前,讓我們先回顧一下8051單片機的中斷響應(yīng)和處理的原理。8051有兩個控制中斷的特殊功能寄存器IE(中斷屏蔽寄存器)和IP(中斷優(yōu)先級寄存器)。前者用于開放或禁止中斷源,后者決定中斷源的優(yōu)先級別。當(dāng)一個被開放的中斷源發(fā)出中斷請求時,8051的中斷仲裁機構(gòu)將判斷是否能接受其請求。如果當(dāng)前無中斷處理或者新發(fā)生的中斷的優(yōu)先級比當(dāng)前正在處理的中斷高(標(biāo)準(zhǔn)8051只允許2級中斷嵌套),CPU將置起新的優(yōu)先級狀態(tài)寄存器,硬件自動將被中斷程序下一條指令的PC(分兩個字節(jié))壓進堆棧,然后跳轉(zhuǎn)到新中斷源的中斷向量地址,執(zhí)行新中斷服務(wù)程序。8051恢復(fù)中斷邏輯(通常是退出中斷服務(wù)程序)時必須使用一條RETI指令,RETI指令將保存在堆棧里的地址彈出送到PC,程序從中斷處繼續(xù)執(zhí)行程序。
綜上所述,8051的中斷處理有以下特點:
響應(yīng)中斷后硬件將中斷返回地址壓入堆棧,設(shè)置中斷邏輯,進入中斷路徑
處理器只有一種工作狀態(tài),程序狀態(tài)狀態(tài)字(PSW)的保存、寄存器組的切換都由應(yīng)用程序決定
只有一個堆棧和一個堆棧指針

8051相比,ARM7有7種運行模式,其中5種是處理異常的模式。因此比8051有更完善的系統(tǒng)保護功能。各種模式除了公用寄存器r0–r12,r15(PC)和 CPSR外還有:
&#61548;每種異常模式專用的保存返回地址的鏈接寄存器r13(lr_<mode>)
&#61548;每種異常模式有專用的堆棧指針r14(sp_<mode>),所以可以在內(nèi)存中為每種異常模式定義自己專用的堆棧
&#61548;每種異常模式有一個專用于保存被中斷程序處理器狀態(tài)的寄存器SPSR_<mode>  
&#61548;ARM7處理器在進入異常服務(wù)時硬件自動保存PC和CPSR(當(dāng)前程序狀態(tài)寄存器),但退出異常處理時需要用軟件恢復(fù)PC和CPSR.。
&#61548;在ARM狀態(tài)下,快中斷模式(FIQ)有獨立的r8–r12寄存器組,提高了響應(yīng)速度。

為了比較清楚地介紹STR71x ARM的異常處理原理和過程,我們在下面先簡單地介紹ARM7處理器的體系結(jié)構(gòu)。
2.ARM7的運行模式
ARM7的7種運行模式是:用戶模式(USER)、系統(tǒng)模式(SYS)、快中斷模式(FIQ)、管理模式(SVC)、數(shù)據(jù)訪問中止模式(ABT)、中斷模式(IRQ)、未定義指令模式(UND)。其中除用戶模式外,其余6種都是特權(quán)模式。
用戶模式(USER),大多數(shù)程序都運行在此模式。用戶模式下不能直接訪問受系統(tǒng)保護的資源。
系統(tǒng)模式(SYS)是一種用于操作系統(tǒng)的特殊用戶模式,任何異常模式都不能進入系統(tǒng)模式。
其他5種特權(quán)模式都是異常模式,只有發(fā)生異;蛑袛鄷r才能進入相應(yīng)的異常模式。


2樓: >>參與討論
gyt
收藏了
謝謝

3樓: >>參與討論
liuq
STR71xF的異常處理 -2-
3. ARM7的工作狀態(tài)
ARM7處理器有兩種工作狀態(tài),ARM狀態(tài)(32位)和Thumb狀態(tài)(16位)。程序運行過程中可以隨時在兩種狀態(tài)之間切換。但是在進入到異常處理模式時處理器無條件地切換到ARM模式。因為保存在異常向量中是一條32位的ARM指令,這條指令的任務(wù)是跳轉(zhuǎn)到執(zhí)行異常處理的服務(wù)程序。一旦異常處理完成,處理器再返回原先運行的狀態(tài),這時可以是ARM 也可以是Thumb模式。
異常處理程序通常使用ARM模式程序編寫,也可以使用Thumb指令碼編寫。但是在使用Thumb指令集編寫的異常處理程序在退出異常前必須讓處理器返回到ARM狀態(tài),因為必須用ARM指令才能使PC返回到原先被中斷的地址。

4.ARM狀態(tài)的寄存器組織
ARM狀態(tài)和Thumb狀態(tài)的寄存器組織結(jié)構(gòu)稍有區(qū)別,我們用兩張圖表來說明。圖1是ARM狀態(tài)的寄存器。
圖1反映在ARM狀態(tài)下7種處理器模式的寄存器組織,其中不帶黑色斜角的寄存器是公用寄存器(一共有37個32位寄存器)。帶黑色斜角的是各處理器模式專用的寄存器。另外帶黑色斜角還表示在本模式下是分組(Block)寄存器。它意味在特權(quán)模式下,只需用一條尾綴帶S的指令就可以對同組寄存器進行相同的操作。
r0–r7是非分組寄存器,為所有運行模式公用。
r8–r14有分組和非分組。非分組的可以公用,分組的為對應(yīng)運行模式專用。
r13通常用做堆棧指針(SP)。
r14叫做子程序鏈接寄存器,在執(zhí)行子程序調(diào)用指令時,r14中得到r15(PC)的值,保留返回地址。在發(fā)生異常或中斷時,r14_<mode>也是用來保存r15的內(nèi)容。
r15用做程序計數(shù)器(PC)。在ARM狀態(tài)下,PC總是指向當(dāng)前正在執(zhí)行指令的下兩條指令的地址,即PC=當(dāng)前指令地址+8。
CPSR是當(dāng)前程序狀態(tài)寄存器,是公用寄存器。將在下一節(jié)詳細介紹。
FIQ模式比其他異常模式增加了r8–r12專用寄存器組,目的是為了加快響應(yīng)中斷的速度。
SPSR是程序狀態(tài)保存寄存器,只有特權(quán)模式有,而且是專用的。用戶模式和系統(tǒng)模式?jīng)]有SPSR寄存器。



4樓: >>參與討論
gyt
再謝
 
5樓: >>參與討論
eastbest
標(biāo)價650元的DK-STR910 開發(fā)板有貨么?
在深圳如何購買?

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請問到哪下載STR71X芯片的詳細datasheet
如何拿到ST MCU的代理
基于SRT91xF開發(fā)板的問題
請問ST7267兼容片?
STR9,惋惜一下...
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號