久久中文视频-久久中文网-久久中文亚洲国产-久久中文字幕久久久久-亚洲狠狠成人综合网-亚洲狠狠婷婷综合久久久久

Rss & SiteMap

曙海教育集團論壇 http://www.bjzhda.cn

曙海教育集團論壇
共2 條記錄, 每頁顯示 10 條, 頁簽: [1]
[瀏覽完整版]

標題:ARM異常處理

1樓
wangxinxin 發表于:2010-11-18 12:12:26
如果您閱讀ARM手冊,您會發現,在ARM中,經常強調Exception(異常)這個概念,在ARM里,Interrupt(中斷)也是一種形式的異常。ARM的Exception同其所定義的5種異常模式是密切相關的,CPU在捕獲到任何一個Exception后,必定會進入某個異常模式,異常類型及捕獲到該異常后CPU所進入的異常模式之間的對應關系是ARM所預先定義好的。 如果您對X86比較熟悉,您會發現,不象X86,系統定義了不同的中斷,比如鍵盤中斷,鼠標中斷等等,并且系統也定義了這些中斷所對應的中斷向量。ARM沒有定義這些,ARM只會告訴你,有外部中斷產生,并切換到IRQ或FIQ模式,然后執行IRQ或FIQ所對應的中斷向量。至于到底是鍵盤中斷,還是鼠標中斷,這得由操作系統提供的中斷函數自己去判斷,比如通過查詢中斷控制器的某個或某些寄存器。ARM這樣做的原因是:ARM只是一個CORE,它并不定義也不去假想其外部環境,這樣可以使得ARM CORE更加緊湊和簡潔,同時也給SOC設計者提供了更多的靈活性和發揮空間。您一定要相信,ARM被如此廣泛使用不是“蓋”的,從系統開發者角度看,ARM是一種最簡單、最靈活的CPU,它的優雅和簡潔性就像C語言一樣。呵呵,C語言是我最喜歡的語言。 好了,“臭屁”了這么多,我們言歸正傳。對ARM異常處理的研究務必要弄清楚以下幾個方面: (1) 異常類型 (2) 異常類型及處理該異常時CPU的執行模式 (3) 異常向量地址 (4) 異常處理過程 異常類型 ARM定義了如下類型的異常(江南七怪,這樣好記): (1) RESET異常:由于執行RESET指令或外部RESET信號產生的異常 (2) SWI異常:執行SWI指令產生的異常,通常用于提供系統調用接口 (3) IRQ異常:ARM的IRQ Signal被觸發所產生的異常 (4) FIQ異常:ARM的FIQ Signal被觸發所產生的異常 (5) Prefetch Abort異常:預取指令時產生的異常 (6) Data Abort異常:存取內存數據時產生的異常 (7) Undefined instruction異常:執行unknown指令時產生的異常 執行模式 當產生異常后,CPU會進入相應的異常模式并處理該異常: (1) RESET和SWI異常:CPU進入Supervisor模式 (2) IRQ異常:CPU進入IRQ模式 (3) FIQ異常:CPU進入FIQ模式 (4) Prefetch Abort和Data Abort異常:CPU進入Abort模式 (5) Undefined instruction異常:CPU進入Undefined模式 向量地址 ARM的異常向量地址可以處于4G物理空間的低端(0x00000000起),也可以處于高端(0xffff0000起),具體是哪種情況,根據具體的CPU及其配置而定。下面是7種異常的向量地址(挎弧內為高端情形): (1) RESET異常:0x00000000 (0xffff0000) (2) Undefined instruction異常: 0x00000004 (0xffff0004) (3) SWI異常:0x00000008 (0xffff0008) (4) Prefetch Abort異常: 0x0000000c (0xffff000c) (5) Data Abort異常: 0x00000010 (0xffff0010) (6) IRQ異常: 0x00000018 (0xffff0018) (7) FIQ異常: 0x0000001c (0xffff001c) 每個中斷向量為4字節,一般的操作系統在該地址處放置一條跳轉指令“LDR PC,終端處理函數地址”。另外要注意的是,在IRQ異常和Data Abort異常之間空了4個字節,這4個字節是保留的。 處理過程 處理過程包括兩個部分: (1) 進入:這個過程由CPU負責 (2) 退出:這個過程由OS負責 在捕獲到某個異常后,啟動“進入”過程,該過程內CPU執行如下動作: (1) 將當前PC的值(或PC + 4,或PC + 8)保存到R14的某個影子寄存器中。到底選擇哪個影子寄存器由該異常的執行模式而定;另外R14影子寄存器的值同異常類型相關。比如Data Abort異常,對應的影子寄存器就是Abort模式的影子寄存器R14_abt,R14_abt的值為異常產生時PC值 + 8。 (2) 將CPSR保存到CPSR的某個影子寄存器SPSR中,同樣,具體選擇哪個影子寄存器由該異常的執行模式而定。 (3) 執行對因的中斷向量 退出過程由操作系統自己負責,只要確保退出后的PC和CPSR同進入之前是一樣就可以了。有時候操作系統在處理某種特定情況的異常后會將退出后PC值變為進入前PC值 + 4(即下一條指令地址),這僅僅是一個提醒,其目的是說明退出過程是完全由軟件自己決定的。
共2 條記錄, 每頁顯示 10 條, 頁簽: [1]

Copyright © 2000 - 2009 曙海教育集團
Powered By 曙海教育集團 Version 2.2
Processed in .01563 s, 2 queries.
主站蜘蛛池模板: 国产真实孩交 | 男人躁女人躁的好爽免费视频 | 欧美日韩一区二区中文字幕视频 | 国产一级内谢a级高清毛片 国产一级片毛片 | 亚洲国产一区在线精选 | 欧美日韩在线视频 | 日韩中文字幕网 | 欧美上床视频 | 国产精品国三级国产aⅴ | 精品伊人久久久久7777人 | 精品免费久久久久久成人影院 | 伊大人香蕉久久网 | 久久99亚洲精品久久久久 | 成人免费xxxxx在线视频 | 久久综合亚洲一区二区三区 | 亚洲二区在线 | 农村寡妇偷毛片一级 | 在线观看免费av网站 | 久久精品免费全国观看国产 | 日本久久一区二区 | 亚洲欧洲日产国码一级毛片 | 亚洲人成网址在线播放a | 欧美成人性毛片免费版 | 国产一区二区精品久久91 | a毛片a毛片a视频 | 国产高清精品一区 | 久久久久国产成人精品亚洲午夜 | 欧美在线成人午夜网站 | 欧美一级片免费观看 | 日本一区二区三区四区不卡 | 九九视频在线免费观看 | 精品一区二区视频 | 亚州久久 | 成年人在线视频网站 | 特黄特黄黄色大片 | 麻豆影音 | 美女白浆视频 | 久久精品成人一区二区三区 | 一级毛片q片 | 久久午夜影视 | 久久频这里精品香蕉久久 |