ARM有37個(gè)寄存器,其中31個(gè)通用寄存器,6個(gè)狀態(tài)寄存器。本文主要討論的是ARM體系的CPU的7種工作模式。 一、存儲器格式(字對齊) Arm體系結構將存儲器看做是從零地址開(kāi)始的字節的線(xiàn)性組合。從零字節到三字節放置第一個(gè)存儲的字(32位)數據,從第四個(gè)字節到第七個(gè)字節放置第二個(gè)存儲的字數據,一次排列。作為32位的微處理器,arm體系結構所支持的最大尋址空間為4GB。 存儲器格式 1、大端格式:高字節在低地址,低字節在高地址; 2、小端格式:高字節在高地址,低字節在低地址。 指令長(cháng)度 Arm微處理器的指令長(cháng)度是32位的,也可以為16位(thumb狀態(tài)下)。Arm微處理器中支持字節(8位),半字(16位),字(32位)三種數據類(lèi)型,其中,字需要4字節對齊,半字需要2字節對齊。 注:所謂的指令長(cháng)度是一條完整的指令的長(cháng)度,而不是單純的mov這3個(gè)字母長(cháng)度。 淺談ARM體系CPU的7種工作模式 二、ARM體系的CPU有兩種工作狀態(tài) 1、ARM狀態(tài):處理器執行32位的字對齊的ARM指令; 2、Thumb狀態(tài):處理器執行16位的、半字對齊的Thumb指令。 在程序運行的過(guò)程中,可以在兩種狀態(tài)之間進(jìn)行相應的轉換。處理器工作狀態(tài)的轉變并不影響處理器的工作模式和相應寄存器中的內容。 CPU上電處于A(yíng)RM狀態(tài)。 三、ARM體系的CPU有以下7種工作模式 1、用戶(hù)模式(Usr):用于正常執行程序; 2、快速中斷模式(FIQ):用于高速數據傳輸; 3、外部中斷模式(IRQ):用于通常的中斷處理; 4、管理模式(svc):操作系統使用的保護模式; 5、數據訪(fǎng)問(wèn)終止模式(abt):當數據或指令預取終止時(shí)進(jìn)入該模式,可用于虛擬存儲以及存儲保護。 6、系統模式(sys):運行具有特權的操作系統任務(wù); 7、未定義指令中止模式(und):當未定義的指令執行時(shí)進(jìn)入該模式,可用于支持硬件。 CPU的模式可以簡(jiǎn)單的理解為當前CPU的工作狀態(tài),比如:當前操作系統正在執行用戶(hù)程序,那么當前CPU工作在用戶(hù)模式,這時(shí)網(wǎng)卡上有數據到達,產(chǎn)生中斷信號,CPU自動(dòng)切換到一般中斷模式下處理網(wǎng)卡數據(普通應用程序沒(méi)有權限直接訪(fǎng)問(wèn)硬件),處理完網(wǎng)卡數據,返回到用戶(hù)模式下繼續執行用戶(hù)程序。 特權模式 除用戶(hù)模式外,其它模式均為特權模式(Privileged Modes)。ARM內部寄存器和一些片內外設在硬件設計上只允許(或者可選為只允許)特權模式下訪(fǎng)問(wèn)。此外,特權模式可以自由的切換處理器模式,而用戶(hù)模式不能直接切換到別的模式。 異常模式 特權模式中除系統(system)模式之外的其他5種模式又統稱(chēng)為異常模式。它們除了可以通過(guò)在特權下的程序切換進(jìn)入外,也可以由特定的異常進(jìn)入。比如硬件產(chǎn)生中斷信號進(jìn)入中斷異常模式,讀取沒(méi)有權限數據進(jìn)入中止異常模式,執行未定義指令時(shí)進(jìn)入未定義指令中止異常模式。其中管理模式也稱(chēng)為超級用戶(hù)模式,是為操作系統提供軟中斷的特有模式,正是由于有了軟中斷,用戶(hù)程序才可以通過(guò)系統調用切換到管理模式 。 。1)用戶(hù)模式 用戶(hù)模式是用戶(hù)程序的工作模式,它運行在操作系統的用戶(hù)態(tài),它沒(méi)有權限去操作其它硬件資源,只能執行處理自己的數據,也不能切換到其它模式下,要想訪(fǎng)問(wèn)硬件資源或切換到其它模式只能通過(guò)軟中斷或產(chǎn)生異常。 。2)系統模式 系統模式是特權模式,不受用戶(hù)模式的限制。用戶(hù)模式和系統模式共用一套寄存器,操作系統在該模式下可以方便的訪(fǎng)問(wèn)用戶(hù)模式的寄存器,而且操作系統的一些特權任務(wù)可以使用這個(gè)模式訪(fǎng)問(wèn)一些受控的資源。 。3)一般中斷模式 一般中斷模式也叫普通中斷模式,用于處理一般的中斷請求,通常在硬件產(chǎn)生中斷信號之后自動(dòng)進(jìn)入該模式,該模式為特權模式,可以自由訪(fǎng)問(wèn)系統硬件資源。 。4)快速中斷模式 快速中斷模式是相對一般中斷模式而言的,它是用來(lái)處理對時(shí)間要求比較緊急的中斷請求,主要用于高速數據傳輸及通道處理中。 。5)管理模式 管理模式是CPU上電后默認模式,因此在該模式下主要用來(lái)做系統的初始化,軟中斷處理也在該模式下,當用戶(hù)模式下的用戶(hù)程序請求使用硬件資源時(shí)通過(guò)軟件中斷進(jìn)入該模式。 。6)終止模式 中止模式用于支持虛擬內存或存儲器保護,當用戶(hù)程序訪(fǎng)問(wèn)非法地址,沒(méi)有權限讀取的內存地址時(shí),會(huì )進(jìn)入該模式,Linux下編程時(shí)經(jīng)常出現的segment fault通常都是在該模式下拋出返回的。 。7)未定義模式 未定義模式用于支持硬件協(xié)處理器的軟件仿真,CPU在指令的譯碼階段不能識別該指令操作時(shí),會(huì )進(jìn)入未定義模式。 技術(shù)資料出處:電子發(fā)燒友網(wǎng) 該文章僅供學(xué)習參考使用,版權歸作者所有。 AO-Electronics 傲壹電子 官網(wǎng):www.aoelectronics.com 中文網(wǎng):www.aoelectronics.cn |