ARM cortex 内核编程模式

ARM cortexM4 内核的编程模式,处理器模式和软件执行的特权级别简介

处理器模式

处理器模式包含:

线程模式:常用来执行应用软件,处理器复位后,进入线程模式执行应用软件。

管理模式:常用来处理异常,当处理器处理完异常后,会返回线程模式。

软件执行的特权级别分为:

非特权模式:顾名思义,在这种模式下,权限是有限的,软件只有有限的权利对MSR和MRS指令,并且不能使用CPS指令,不能使用系统定时器,内嵌中断控制器,系统控制块,对内存和外设的访问有权限限制。

特权模式:顾名思义,特权模式,就是软件有所有的权限,可以使用所有的指令和访问所有的资源。

在线程模式下,控制寄存器控制软件执行时特权模式还是非特权模式,在管理模式下,软件总是具有特权权限,权限比较大。只有特权软件在线程模式下才能改写控制寄存器来改变软件执行的特权级别。

内核寄存器

cortex M4内核寄存器主要有:

R0~R12 通用寄存器,32位的为数据操作的通用寄存器。

MSP,PSP,main堆栈指针,处理器堆栈指针,R13

LR,链接寄存器, R14

PC,程序计数器, R15

PSR,程序状态寄存器

ASPR,应用程序状态寄存器

IPSR,中断程序状态寄存器

EPSR,执行程序状态寄存器

PRIMASK,优先级屏蔽掩码寄存器

FAULTMASK,错误屏蔽掩码寄存器

BASEPRI,基本优先级屏蔽掩码寄存器

CONTROL, 控制寄存器

具体的寄存器操作以及使用请参照ARM官方文档,部分寄存器我们在前面的ARM相关课程里已经讲过了,这里不赘述,如果记不住也没关系,在具体项目应用时候在参照官方文档,但了解这些内核知识还是很必要的,尤其是要做驱动开发时候和理解汇编语言时候。

嵌入式

程序猿

微信号:InterruptISR

原文发布于微信公众号 - 嵌入式程序猿(InterruptISR)

原文发表时间:2015-07-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏青玉伏案

设计模式(十三):从“FQ”中来认识代理模式(Proxy Pattern)

我们知道Google早就被墙了,所以FQ才能访问Google呢,这个“FQ”的过程就是一个代理的过程。“代理模式”在之前的博客中不止一次的提及过,之前的委托回调...

2096
来自专栏我和PYTHON有个约会

爬虫 0030~ requests利刃出鞘

requests第三方封装的模块,通过简化请求和响应数据的处理,简化繁琐的开发步骤和处理逻辑、统一不同请求的编码风格以及高效的数据处理特性等而风靡于爬虫市场。

881
来自专栏信安之路

路由器漏洞 EXP 开发实践

本文主要以 CVE-2013-0230 漏洞为例,讲解路由器上缓冲区漏洞的 exp 编写。

1670
来自专栏北京马哥教育

自动化发布-GitLab WEB Hooks 配置

钩子(hooks) Git是在特定事件发生之前或之后执行特定脚本代码功能(从概念上类比,就与监听事件、触发器之类的东西类似)。 Git Hooks就是那些在Gi...

4035
来自专栏杨建荣的学习笔记

关于shell中的pl/sql脚本错误排查与分析(r4笔记第21天)

今天有个同事问我一个问题,他说运行shell脚本的时候抛出了ORA 错误,但是对于错误的原因没有思路,想让我帮他看看。 我查看了下,脚本的结构比较清晰。 脚本是...

2955
来自专栏人人都是极客

进程、线程之间的爱恨纠葛...

当一个程序开始执行后,在开始执行到执行完毕退出这段时间内,它在内存中的部分就叫称作一个进程。

1493
来自专栏木子昭的博客

Markdown批量发布到Github

1303
来自专栏云计算教程系列

如何在CentOS 7上添加Swap

使服务器响应更快,并防止应用程序中出现内存不足错误的最简单方法之一是添加一些swap空间。Swap是存储驱动器上的一个区域,操作系统可以在该区域临时存储无法再保...

1402
来自专栏WindCoder

《Linux内核分析》之触发一个系统调用实验总结

系统调用列表中可用的很多,可惜对用代码进行系统调用不太清楚,只好从网上窃取了一份,地址在最后放上。此处以fork()为例。

883
来自专栏JMCui

Linux 学习记录 二 (文件的打包压缩).

 前言:本文参考《鸟哥的Linux 私房菜》,如有说的不对的地方,还请指正!谢谢!  环境:Centos 6.4  和window不同,在Linux压缩文件需要...

3455

扫码关注云+社区