一、ARM體系的CPU有以下7種工作模式:
1、用戶模式(usr):正常的程序執(zhí)行狀態(tài)
2、快速中斷模式(fiq):處理快速中斷,支持高速數(shù)據(jù)傳送或通道處理
3、中斷模式(irq): 處理普通中斷
4、管理模式(svc):操作系統(tǒng)使用的保護(hù)模式
5、系統(tǒng)模式(sys):運行具有特權(quán)的操作系統(tǒng)任務(wù)
6、數(shù)據(jù)訪問終止模式(abt):數(shù)據(jù)或指令預(yù)取終止時進(jìn)入該模式
7、未定義指令終止模式(und):未定義的指令執(zhí)行時進(jìn)入該模式
注解:
可以通過軟件來進(jìn)行模式切換,或者發(fā)生各類中斷、異常時CPU自動進(jìn)入相應(yīng)的模式;
除用戶模式外,其余6種工作模式都屬于特權(quán)模式;
特權(quán)模式中除了系統(tǒng)模式以外的其余5種模式稱為異常模式;
大多數(shù)程序運行于用戶模式;
進(jìn)入特權(quán)模式是為了具有更高的權(quán)限去處理中斷、異常、或者訪問被保護(hù)的系統(tǒng)資源;
在uboot開發(fā)時需要較高的權(quán)限去操作系統(tǒng)的硬件資源,因此會將其設(shè)置為系統(tǒng)模式。
二、ARM修改工作模式:
想要切換模式可以通過軟件來進(jìn)行模式切換,或者發(fā)生各類中斷、異常時CPU會自動進(jìn)入相應(yīng)的模式,這里講講如何通過軟件進(jìn)行切換。每一種模式下都會有其CPSR寄存器(狀態(tài)字寄存器),從上圖中可以看到每種模式都有其相應(yīng)的Model Num,我們這里拿切換成管理模式(svc)來演示。我們對當(dāng)前模式下的cpsr寄存器的M位[4:0]設(shè)置成svc的model num=0b10010,就可以使處理器切換到svc模式。由于uboot需要大量的操作系統(tǒng)的硬件資源等,所以就需要將它設(shè)置為svc模式。
CPSR寄存器