arm与linux些许问题,《ARM与Linux些许问题》第二章:Linux操作系统与ARM工作模式

本文详细介绍了ARM处理器在启动时如何从SVC模式执行bootloader,然后加载Linux内核。在内核启动后,通过设置CPSR寄存器切换到用户模式,以保护内核资源。尽管Linux内核启动于SVC模式,但内核态不仅限于此,还包括其他可访问内核空间的ARM模式。同样,用户程序虽然从用户模式开始,但在特定条件下,如硬件中断或异常,仍能进入内核态执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

======================================================================================================================================

首先,ARM开发板在刚上电或复位后都会首先进入SVC即管理模式,此时、程序计数器R15-PC值会被赋为0x0000 0000;bootloader就是在此模式下,位于0x0000 0000的NOR FLASH或SRAM中装载的,因此、开机或重启后bootloader会被首先执行。

接着,bootloader引导Linux内核,此时、Linux内核一样运行在ARM的SVC即管理模式下;当内核启动完毕、准备进入用户态init进程时,内核将ARM的当前程序状态CPSR寄存器M[4:0]设置为10000、进而用户态程序只能运行在ARM的用户模式。

由于ARM用户模式下对资源的访问受限,因此、可以达到保护Linux操作系统内核的目的。

需要强调的是:Linux内核态是从ARM的SVC即管理模式下启动的,但在某些情况下、如:硬件中断、程序异常(被动)等情况下进入ARM的其他特权模式,这时仍然可以进入内核态(因为就是可以操作内核了);同样,Linux用户态是从ARM用户模式启动的,但当进入ARM系统模式时、仍然可以操作Linux用户态程序(进入用户态,如init进程的启动过程)。

即:Linux内核从ARM的SVC模式下启动,但内核态不仅仅指ARM的SVC模式(还包括可以访问内核空间的所有ARM模式);Linux用户程序从ARM的用户模式启动,但用户态不仅仅指ARM的用户模式。

===========================================================================================

关键字:ARM  Linux  操作系统  工作模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值