娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年04月02日(星期三)

正在發生

2020年04月02日 | ARM中斷異常處理的返回的問題

發布者:Jikai 來源: eefocus關鍵字:ARM  中斷  異常處理  返回 手機看文章 掃描二維碼
隨時隨地手機看文章

因為ARM指令是三級流水線就是說取指,譯指,執行時同時執行的 ,這樣說吧,現在PC指向的是正在取指的地址,那么cpu正在譯指的指令地址是PC-4(假設在ARM狀態下,一個指令占4個字節),cpu正在執行的指令地址是PC-8.也就是說PC所指向的地址和現在所執行的指令地址相差8,盡管以后版本的指令流水線擴展為5級和8級,但是這一特性一直被兼容處理,也即pc(excute)=pc(fetch) - 8,其中:pc(excute)是當前正在執行的指令,就是之前取該指令時候的PC的值;pc(execute):當前指令執行的,計算中如果用到pc,是指此時pc的值。當突然發生中斷的時候,保存的是PC的地址。


(1)對于子程序的調用


如下面是一段S3C2440 ARM匯編代碼:

image.png

AREA Reset,CODE,READONLY

    ENTRY

    Start

         MOV r0,#08

         MOV r1,#08

         BL zFun

         MOV r0,#04

         MOV r1,#08

    zFun

         MOV r0,#02

         END


當0x30000008處的BL指令執行時,會把PC(=0x30000010)保存到LR寄存器里面,也就是LR=0x30000010。接下來處理器會立即對LR進行一個自動的更新動作:LR=LR-0x4,這樣,LR里面的地址為0x30000010 – 0x4 = 0x3000000C,它是指令”MOV r0,#04”的地址,所以當從子程序zFun返回時,LR里面正好是正確的返回地址。既是下一條要執行的指令的地址。


(2)中斷異常處理函數調用


異常就是正在執行的指令,由于各種軟件或硬件故障被打斷,比如,在讀數據或指令時,訪問存儲器失敗、產生了一個外部硬件中斷等。當這些情況發生時,在ARM系統里,由異常和中斷處理程序做出相應的處理,當處理完成后,要返回到被中止的指令,使被中止的指令能夠繼續正常執行下去。因此,確定異常和中斷處理程序的返回地址是一個非常重要的問題。


1、中斷處理


當外部中斷IRQ和FIQ(Fast Interrpt Request,快速中斷請求)發生時,ARM核完成一部分工作。當然,這些工作是任何異常發生時都必須要做的,所以ARM處理器就會自動帶我們完成。 其它重要的工作,必須由程序員來完成。ARM處理器處理的事包括從用戶模式切換到IRQ模式、狀態寄存器值的變化及跳轉。比如說,處理器自動跳轉到從0x0地址開始的異常中斷向量表的0x18處,在向量表的0x18處,最簡單的指令為”B HandlerIRQ”。


那程序員所要關心的就是實現具體的異常處理程序(HandlerIRQ)。當用ARM匯編語言實現HandlerIRQ函數的時候,如何確定HandlerIRQ函數正確地返回地址,使被中止的指令能夠繼續正常執行下去。


比較常用的中斷處理程序結構如下:


HandlerIRQ ;中斷響應,從向量表直接跳來


SUB r14,r14,#4 ;計算返回地址


STMFD r13,{r0-r3,r14} ;保護現場,一般只需要保護{r0-r3,lr}


BL irqHandler ;跳到具體的異常處理函數


LDMFD r13,{r0-r3,pc}^ ;恢復現場


通過”SUB R14,R14,#4”計算中斷函數的返回地址。為什么計算返回地址的時候要減去4呢?

image.png

我們看上個表,比如在執行地址為0x30000004的move指令時,突然來了一個IRQ中斷,這個中斷打斷了move指令的執行,這個時候就要去跳轉到異常處理函數,之后還要返回0x30000004地址重新執行move指令。當中斷發生時,LR里面保存了用戶模式下PC的值,那么當執行地址為0x30000004的move指令時,PC的值應該是0x3000000C,前面介紹過,當發生跳轉時,處理器會對LR進行一個自動的更新動作:LR=LR-0x4,這樣LR里面的地址是0x3000000C-0x04=0x30000008。但是0x30000008并不是我們要的地址,因為中斷發生在地址為0x30000004的move指令執行的時候,所以中斷處理完后應該返回這個地址。 這就是在計算返回地址的時候LR減去4的原因。對于FIQ中斷和預取指中止異常,計算返回地址方法和IRQ相同。

關鍵字:ARM  中斷  異常處理  返回 引用地址:ARM中斷異常處理的返回的問題

上一篇:ARM各種異常返回地址的計算
下一篇:ARM 軟中斷指令SWI

0

推薦閱讀

  錘子科技之前已經宣布將于4月9日在北京工業大學奧林匹克體育館舉行新品發布會,而現在錘子官方已經確認了其中的主角,那就是堅果3手機。下面就隨手機便攜小編一起來了解一下相關內容吧。  錘子科技吳德周在微博上表示,堅果3手機將會是本次發布會的主角,當然吳德周并沒有公布更多有關于堅果3手機的細節。  與以往發布會不同,此次門票將以贈票形...
隨著人工智能與物聯網技術在中國市場的應用場景不斷拓展,嵌入式系統設計面臨更加智能、實時、安全、節能等諸多挑戰。全球領先的半導體解決方案供應商瑞薩電子株式會社(TSE:6723)宣布,將攜其多款智能工業、智能家居及智能基礎設施解決方案亮相 2019年4月9日-11日在深圳會展中心(1號展廳1B003展位)舉行的2019中國電子信息博覽會(CITE) 。 瑞薩電子...
醫院內,機器人護理員隨叫隨到,為醫患雙方提供著便利和安全;馬路上,機器人清潔工有條不紊,護衛著城市的干凈與整潔;樓宇間,機器人快遞員上下奔走,滿足著每個人的日常需求;餐廳里,機器人大廚手起刀落,溫暖著食客們的肚子和內心……今年以來,機器人在服務領域的頻頻亮相,不僅滿足了我們在特殊時期下的各種需求,幫助人們共渡難關;同時也加速了產...
曾經在位居全球前五大智能手機廠商的LG電子,正遭遇前所未有的困難局面。  據最新消息,LG手機業務出售談判告吹,潛在的買方已經失去興趣。  爆料人稱,LG最快于下周一公布關閉手機業務的決定,相關員工將被安排到韓國昌原市的家電工廠。  與此同時,LG卷軸屏手機、LG Wing的生產也已停止,原定上半年更新的所有新機擱置。  更糟糕的是...

史海拾趣

問答坊 | AI 解惑

求助

單片機控制的流水燈,燈為什么會不閃!!急!!…

查看全部問答∨

用DSP定時器實現方波輸出的方法

在DSP的電機控制中,經常要用到方波輸出,就是常說的PWM,PTO。一般的控制方式采用的是使用2812的EV單元去產生對稱波形。但是在現代的一些控制領域,特別是位置控制領域,經常要實現開環控制脈沖個數,并產生多種頻率的脈沖輸出。EV是很難實現的。 ...…

查看全部問答∨

LDO低壓差線性穩壓器

LDO  LDO是low dropout regulator,意為低壓差線性穩壓器,是相對于傳統的線性穩壓器來說的。傳統的線性穩壓器,如78xx系列的芯片都要求輸入電壓要比輸出電壓高出2v~3V以上,否則就不能正常工作。但是在一些情況下,這樣的條件顯然是太苛刻了,如 ...…

查看全部問答∨

2410 I2C 在什么情況下產生中斷?

最近一段時間,接觸了好幾個具有 I2C 接口的從設備器件; 也對 I2C 的 WinCE 流驅動也有所了解。 開始用【查詢】方式實現了一個 I2C 流驅動; 現在準備用【中斷】方式實現 I2C 流驅動; 但是看了好幾遍【2410數據手冊】,都沒有看明白; 2410 ...…

查看全部問答∨

WinCE 4.2下軟重啟的工具

誰有WinCE 4.2下軟重啟的工具啊。網上的都是用于Win Mobile版本的。不能用。…

查看全部問答∨

[問題]flash擦除時間很怪啊

下載bootloader要擦除flash(spansion s29gl032a) 匯編寫的 flash容量4M 扇區:8x8k,63x64k bootloader只用了64k,故只擦除了前64k,結果時間很長,要60s左右 經過測試發現: 擦除大小 時間 8k        7s 16k&n ...…

查看全部問答∨

PLC與變頻器的組合應用

                                      &n ...…

查看全部問答∨

安裝了IAR5.2,破解失敗,怎么回事啊,用5.2的朋友進來看看

Fatal Error[Cp001]: Copy protection check, No valid license found for this product對程序進行編譯就會有這個錯誤,用軟件破解了啊,也在網上查了,但是還是沒有解決我卸載好幾遍了希望高手幫助啊…

查看全部問答∨

基于sensorTag的浴室濕度調節器

浴室的排風扇一直開著的話一方面浪費電源,另一方面不利于周圍洗浴溫度的上升。使用這樣一款浴室濕度調節器,就可以及時的調節浴室內的濕度,使其控制在一個可視的,溫度舒適的合理范圍內。這樣既可以節約能源又可以,避免浴室濕度過大視線受阻帶來 ...…

查看全部問答∨
小廣播
添点儿料...
无论热点新闻、行业分析、技术干货……
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 甘肃省| 婺源县| 恩平市| 洪洞县| 龙江县| 奉化市| 崇州市| 黑河市| 武山县| 巴里| 全州县| 东光县| 施秉县| 平定县| 仙桃市| 霍邱县| 百色市| 油尖旺区| 会昌县| 南充市| 天祝| 漳平市| 嘉善县| 平定县| 桓台县| 湖州市| 连南| 商南县| 江津市| 文成县| 阿合奇县| 兴国县| 都匀市| 楚雄市| 连南| 故城县| 大埔区| 合山市| 山西省| 时尚| 喜德县|