1. 程式人生 > >arm的幾種工作模式

arm的幾種工作模式

ARM的兩種工作狀態:
ARM狀態:   32位的字對齊,執行ARM指令
Thumb狀態:16位的半字對齊的Thumb指令
注:CPU在兩種狀態中切換時並不影響CPU的工作模式和相應的暫存器中的內容,thumb狀態下只能訪問r0~r7,cpsr,lr,sp,和pc暫存器。ARM的7種工作模式
3種正常執行態:
           使用者模式(User):大部分任務(比如使用者應用程式)執行在這種模式。
           系統模式(System):執行作業系統的特權任務,為了解決作業系統在管理模式下不能訪問使用者模式下部分暫存器而設立。
           管理模式(Supervisor):作業系統的保護模式,當復位或者軟中斷指令執行時將會進入這種模式。

 2種中斷模式
           快速中斷模式(FIQ--First Interrupt Request):當一個高優先順序中斷(FIQ)產生時會進入這種模式。
           外部中斷模式(IRQ--Interrupt Request):當一個低優先順序(Normal)中斷產生時進入這種模式。
注:FIQ和IRQ的區別---FIQ模式必須儘快處理,處理結束後離開這個模式;IRQ模式可以被FIQ模式中斷,但IRQ不能中斷FIQ模式;為使FIQ模式響應更快,FIQ模式具有更多的影子(Shadow)暫存器(硬體自動完成相應暫存器的資料備份)。ARM的FIQ模式提供了更多的banked暫存器,r8到r14還有SPSR,而IRQ模式就沒有那麼多,R8,R9,R10,R11,R12對應的banked的暫存器就沒有,這就意味著在ARM的IRQ模式下,
中斷處理程式自己要儲存R8到R12這幾個暫存器,然後退出中斷處理時程式要恢復這幾個暫存器,而FIQ模式由於這幾個暫存器都有banked暫存器,模式切換時CPU自動儲存這些值到banked暫存器,退出FIQ模式時自動恢復,所以這個過程FIQ比IRQ快。
2種異常模式
          資料訪問終止模式(Abort):指令或資料預取終止時的模式,該模式下實現虛擬儲存或儲存保護。當資料或指令 預取終止時進入這種模式。
          未定義指令終止模式(Undef):當執行未定義指令時進入這種模式。
對於Cortex A系列的ARM處理器來說,還有一種特有的Minitor模式:
1種特有模式:
           Monitor模式:是為了安全而擴展出的用於執行安全監控程式碼的模式,也是一種他特權模式

相關推薦

32位ARM處理器的工作模式工作狀態

ARM處理器工作模式一共有 7 種 : USR  模式     正常使用者模式,程式正常執行模式 FIQ模式(Fast Interrupt Request)      處理快速中斷,支援高速資料傳送或通道處理 IRQ

arm工作模式

ARM的兩種工作狀態:ARM狀態:   32位的字對齊,執行ARM指令Thumb狀態:16位的半字對齊的Thumb指令注:CPU在兩種狀態中切換時並不影響CPU的工作模式和相應的暫存器中的內容,thumb狀態下只能訪問r0~r7,cpsr,lr,sp,和pc暫存器。ARM

老男孩教育每日一題-第83天-binlog是什麽?記錄的什麽?有工作模式及企業應用場景

mysql binlog 每日一題 參考答案含義binlog:是用於記錄所有更新了數據的操作語句,語句以事件的形式保存,它描述數據的更改過程作用:用於實時備份數據,數據庫的主從復制log_bin 打開記錄binlog功能binlog的查看mysqlbinlog /home/mysql/binlog

RabbitMQ的工作模式

maven: <dependencies> <!-- RabbitMQ的客戶端 --> <dependency> <groupId>com.rabb

stm32筆記--2硬體--GPIO管腳的工作模式

高阻態 高阻態是電路的一種輸出狀態,既不是高電平也不是低電平,如果高阻態再輸入下一級電路的話,和沒接一樣。 電路分析時可以把高阻態看成開路,即輸出(輸入)電阻非常大,極限可以認為是懸空。但是理論上高阻態不是懸空,而是對地或者對電源的電阻非常大的狀態,實際應用

由淺入深瞭解Thrift(三)——Thrift server端的工作模式分析

http://blog.csdn.net/houjixin/article/details/42779915 五、  Thrift伺服器端幾種工作模式分析與總結 Thrift為伺服器端提供了多種工作模式,本文中將涉及以下5中工作模式:TSimpleServer、T

ARM的7工作模式、37個通用暫存器、CPSR程式狀態暫存器

一、ARM 採用的是32位架構 1、ARM約定 Byte:8 bits Halfword:16 bits (2 byte) Word:32 bits (4 byte) 2、大部分ARM core 提供 ARM 指令集(32-bit) 每條指令都是4個位元組? Thumb

ARM的2狀態和7工作模式

一、ARM處理器的兩種工作狀態: 1、ARM狀態:32位,ARM狀態執行字對齊的32位ARM指令。 2、Thumb狀態,16位,執行半字對齊的16位 3、用Bx Rn指令來進行兩種狀態的切換:    其中Bx是跳轉指令,而Rn是暫存器(1個字,32位),如果Rn的位0為1,

ARM處理器的7工作模式--linux作業系統與ARM工作模式

一、ARM處理器的7種工作模式使用者模式(USR):正常程式執行模式,不能直接切換到其他模式系統模式(SYS):執行作業系統的特權任務,與使用者模式類似,但具有可以直接切換到其他模式等特權快中斷模式(FIQ):支援高速資料傳輸及通道處理,FIQ異常響應時進入此模式中斷模式(I

ARM處理器的2工作狀態和7工作模式

兩種工作狀態 1、ARM狀態:32位,ARM狀態執行字對齊的32位ARM指令。 2、Thumb狀態,16位,執行半字對齊的16位指令。 3、用Bx Rn指令來進行兩種狀態的切換:     其中Bx是跳轉指令,而Rn是暫存器(1個字,32位),如果Rn的位0為1,則

Java開發web的開發模式

調度 開發模式 process 模板 spring 程序 校驗 透明 class Java開發web的幾種開發模式 Java Web開發方案有多種可供選擇,這裏列舉一些經典的開發模式進行橫向比較,為Java Web的開發模式選擇提供參考。除此之外還有好多方案(如Tape

java常見的設計模式

設計模式 單例 餓漢式 懶漢式 設計模式 1、概述 1)設計模式(Design pattern):是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結; 2)分類: 創建型模式(創建對象的): 單例模式、抽象工廠模式、建造者模式、工廠模式、原型模式。 行為型模式(對象

iOS 開發中的設計模式

設計模式 開發 模式 ios 設計 iOS 開發中的幾種設計模式

apache的三工作模式

httpdweb服務器Apache目前一共有三種穩定的MPM(Multi-Processing Module,多進程處理模式)它們分別是prefork、worker和event,它們同時也代表這Apache的 演變和發展使用httpd -V命令查看Apache的工作模式,如我安裝的httpd-2.2版本[[e

【RabbitMQ】4、Exchange 模式

copy 消息發送 但是 net with .html ole img lis AMQP協議中的核心思想就是生產者和消費者隔離,生產者從不直接將消息發送給隊列。生產者通常不知道是否一個消息會被發送到隊列中,只是將消息發送到一個交換機。先由Exchange來接收,然後Exch

FTP兩工作模式:主動模式(Active FTP)和被動模式

ftp 主動(port) 被動(pasv)模式在主動模式下,FTP客戶端隨機開啟一個大於1024的端口N向服務器的21號端口發起連接,然後開放N+1號端口進行監聽,並向服務器發出PORT N+1命令。服務器接收到命令後,會用其本地的FTP數據端口(通常是20)來連接客戶端指定的端口N+1,進行數據傳輸。在被

ST MCU_GPIO的八工作模式詳解。

信息 div ref floating .html 下拉電阻 控制 edi zoom 補充: N、P型的區別,就是一個為正電壓啟動(NMOS),一個為負電壓啟動(PMOS) GPIO的八種工作模式詳解浮空輸入_IN_FLOATING帶上拉輸入_IPU帶下拉輸入_I

Apache三工作模式介紹與配置

Apache工作模式查看方法 查看Apache編譯安裝的參數 worker模式原理及配置方法 prefork模式原理及配置方法 event模式原理及配置方法 Apache三種工作模式介紹與配置一、Apache的三種工作模式介紹及相關查看方法1、Apache三種工作模式簡介Apache目前一

Apache三工作模式

技術分享 允許 domain ges 當前 ipv 適用於 ESS device Apache的三種工作模式分別是:prefork、worker、event。 1. prefork模式(默認模式) profork模式實現了一種非線程、預派生的Web服務器,用的是進程去處理

JavaScript創建對象的重要模式

special 高級 .get evel app 傳遞 array 函數傳遞 內部 一、工廠模式 1. 代碼示例 function person(name, age) { var p = new object(); p.name = name; p.age =