🎗️RTOS原理与实现01:芯片内核简介
2023-6-1
| 2023-6-8
0  |  阅读时长 0 分钟
type
status
password
date
slug
summary
category
URL
tags
icon

4.1 为什么要了解硬件特性

RTOS作为系统软件,运行时必然与硬件相关,e.g.
① 任务切换时寄存器的保存
② 异常处理
③ 内核时钟节拍来自硬件定时器

4.2 内核概述

Cortex-M3内核是ARM公司开发的CPU内核。完整的MCU芯片集成了Cortex-M3内核及其他组件
notion image

4.3 内核特性介绍

4.3.1 工作模式及特权级别

硬件开始工作后,CPU会进入特定的工作模式。此小节主要介绍CPU的工作模式及相应模式下的特权级,课程中我们用了一幅图展示如下:
notion image
① 前台程序(中断服务程序)只能在特权级运行
② 后台程序可以根据需要切换权限级别
💡
说明:特权级的不同通常体现在栈指针的使用上,用户级使用PSP;特权级使用MSP

4.3.2 寄存器组

notion image
notion image
💡
注意:Cortex-M3有三个程序状态寄存器,分别是APSR(应用PSR)/ IPSR(中断PSR)/ EPSR(执行PSR)。这三个程序状态寄存器其实是一个三合一寄存器,即可以单独访问,也可以组合访问

4.3.3 Cortex-M3预定义的存储器映射

notion image
说明:Cortex-M3此处的地址空间映射由处理器内核设置,而非芯片厂商设置,这点有利于简化系统移植

4.3.4 堆栈

Cortex-M3使用递减栈,采用双堆栈机制
notion image

4.3.5 系统异常

4.3.5.1 系统异常列表

notion image
需要注意如下3种异常,① 复位、② PendSV、③ SysTick

4.3.5.2 进入异常

notion image

4.3.5.3 退出异常

notion image
💡
说明:将进入异常时设置的特殊LR(即EXC_RETURN值)写入PC,就会进入异常返回流程
bit 3
bit 2
含义
EXC_RETURN数值
0
0
返回handler模式,因为handler模式只能运行在特权级,所以只能使用MSP
0xFFFFFFF1
0
1
错误组合,handler模式无法使用PSP
1
0
返回thread模式,且使用MSP,即仍在特权级运行
0xFFFFFFF9
1
1
返回thread模式,且使用PSP,即在用户级运行
0xFFFFFFFD

4.3.5.4 复位异常的响应

notion image
💡
说明:复位异常发生后,CPU将0x00000000和0x00000004中的内容(即异常向量表的前2项)分别加载MSP和PC,即可开始执行。0x0000010赋值给PC,即启动引导代码的位置;0x20008000赋值给MSP,即MSP初始值
notion image

4.3.5.5 PendSV异常的响应

  • 作用:在PendSV中执行RTOS上下文切换(即不同任务间的切换)
  • 工作原理:配置为最低优先级,上下文切换的请求将自动延迟到其他的ISR都完成后才处理,并且可以被其他异常/中断抢占。
    • notion image
说明:如果在SysTick中断中发现需要进行任务切换,则只是标记PendSV异常,SytTick中断处理结束时仍然返回之前的ISR。最后当没有比PendSV优先级更高的异常/中断时,才进行任务切换
💡
注意:这一流程的实现需要依赖Cortex-M3提供的NVIC硬件支持,这种可抢占的异常也体现了RTOS的实时特性

4.3.6 指令系统

Cortex-M3使用Thumb-2指令集,长度可为16位或32位。指令可以携带后缀,如有条件执行。下面仅介绍后续汇编代码中会使用到的指令。
notion image
 
  • RTOS
  • RTOS原理与实现01:RTOS基础知识RTOS原理与实现02:基本任务切换
    Loading...
    目录