《ARM與Linux些許問(wèn)題》第二章:Linux操作系統(tǒng)與ARM工作模式
首先,ARM開(kāi)發(fā)板在剛上電或復(fù)位后都會(huì)首先進(jìn)入SVC即管理模式,此時(shí)、程序計(jì)數(shù)器R15-PC值會(huì)被賦為0x0000 0000;bootloader就是在此模式下,位于0x0000 0000的NOR FLASH或SRAM中裝載的,因此、開(kāi)機(jī)或重啟后bootloader會(huì)被首先執(zhí)行。
本文引用地址:http://www.ex-cimer.com/article/201611/317767.htm接著,bootloader引導(dǎo)Linux內(nèi)核,此時(shí)、Linux內(nèi)核一樣運(yùn)行在ARM的SVC即管理模式下;當(dāng)內(nèi)核啟動(dòng)完畢、準(zhǔn)備進(jìn)入用戶(hù)態(tài)init進(jìn)程時(shí),內(nèi)核將ARM的當(dāng)前程序狀態(tài)CPSR寄存器M[4:0]設(shè)置為10000、進(jìn)而用戶(hù)態(tài)程序只能運(yùn)行在ARM的用戶(hù)模式。
由于ARM用戶(hù)模式下對(duì)資源的訪問(wèn)受限,因此、可以達(dá)到保護(hù)Linux操作系統(tǒng)內(nèi)核的目的。
需要強(qiáng)調(diào)的是:Linux內(nèi)核態(tài)是從ARM的SVC即管理模式下啟動(dòng)的,但在某些情況下、如:硬件中斷、程序異常(被動(dòng))等情況下進(jìn)入ARM的其他特權(quán)模式,這時(shí)仍然可以進(jìn)入內(nèi)核態(tài)(因?yàn)榫褪强梢圆僮鲀?nèi)核了);同樣,Linux用戶(hù)態(tài)是從ARM用戶(hù)模式啟動(dòng)的,但當(dāng)進(jìn)入ARM系統(tǒng)模式時(shí)、仍然可以操作Linux用戶(hù)態(tài)程序(進(jìn)入用戶(hù)態(tài),如init進(jìn)程的啟動(dòng)過(guò)程)。
即:Linux內(nèi)核從ARM的SVC模式下啟動(dòng),但內(nèi)核態(tài)不僅僅指ARM的SVC模式(還包括可以訪問(wèn)內(nèi)核空間的所有ARM模式);Linux用戶(hù)程序從ARM的用戶(hù)模式啟動(dòng),但用戶(hù)態(tài)不僅僅指ARM的用戶(hù)模式。
===========================================================================================
評(píng)論