-
interrupt service routine,ISR:中断服务程序。
中断:指当CPU正在处理某件事情时,外部发生的某一事件(如一个电平的变化,一个脉冲沿的发生或 定时器计数溢出等)请求CPU迅速去处理,于是CPU暂时中止当前的工作,转去处理所发生的事件。中断服务处理完该事件以后,再回到原来被中止的地方继续原来的工作。
中断是一种硬件机制,用于通知CPU有个异步事件发生了。中断一旦被系统识别,CPU则保存部分(或全部)现场(context),即部分(或全部) 寄存器的值,跳转到专门的 子程序,称为 中断服务程序(ISR)。 中断服务程序做事件处理,处理完成后执行任务调度,程序回到就绪态优先级最高的任务开始运行(对于可剥夺型内核)。 -
Nested Vectored Interrupt Controller,NVIC:
-
Error Correcting Code,ECC:错误检查和纠正,在ECC内存技术之前,使用最多的是奇偶检验Parity,但Parity的不足是:当内存查到某个数据位有错误时,却并不一定能确定在哪一个位,也就不一定能修正错误,所以带有奇偶校验的内存的主要功能仅仅是“发现错误”,并能纠正部分简单的错误。而ECC可以将Parity无法检查出来的错误位查出并将错误修正。
除此之外,Parity中,8bit增加1个检验数据位来检查,数据位成倍增加时,检验数据位也成倍增加(16bit-2,32bit-4),而ECC中,每增加一倍,只需要增加1位,8bit时基础位5位,16bit6,32bit7……
【】只能修复1比特错误;不保证能检测超过2比特的错误; -
cortex-M
- 处理器两种操作模式:
- handler mode(处理者模式),thread mode(线程模式),这用于区别异常服务例程的代码(包括中断服务例程的代码)和普通应用程序的代码。handler模式为异常处理例程的代码,线程模式为普通应用程序的代码。
- 软件执行有两种特权分级:
- unprivileged(user用户级),privileged(特权级)。这使得普通的用户程序代码不能意外地,甚至是恶意地执行涉及到要害的操作。
- 在特权级下,程序可以访问所有范围的存储器(如果有MPU,还要在MPU的禁地之外),并且能够执行所有指令;在用户级下,某些寄存器不允许访问,如果访问,则产生fault,具体地说就是MPU,NVIC,SCB和STK四个单元不能访问。
- 在线程模式,可以是特权级,也可以是用户级;handler模式总是特权级的;在复位后,处理器处于线程模式+特权级。
- 有两个堆栈指针,但他们是banked,所以任一时刻只能使用其中的一个。R13 is Stack Pointer(SP)。堆栈主要是通过POP,PUSH指令来进行操作。
- Main Stack Pointer,MSP:0,主堆栈指针,当程序复位后(开始运行后),一直到第一次任务完成切换之前,使用的都是MSP。
- Process Stack Pointer,PSP:1,进程堆栈指针,由用户的应用程序代码使用。
- 处理器两种操作模式:
-
时钟周期(振荡周期):是计算机中最基本、最小的时间单位,在一个时钟周期内,CPU仅完成一个最基本的动作。
-
CPU周期(机器周期):在计算机中,为方便管理,把一条指令的执行过程划分为若干个阶段,每一个阶段完成一项工作,每一阶段完成所需时间为CPU周期。如:取指令,存储器读/写等,每一项工作称为一个基本操作,每一个基本操作由多个CPU最基本的动作组成,完成一个基本操作所需的时间称为机器周期。一般按照内存中读取一个指令字的最短时间来规定CPU周期。
-
指令周期:取出并执行一条指令的时间。 一般由若干个机器周期(CPU周期)组成,是从取指令、分析指令到执行完所需的全部时间。
- 指令周期包含多个CPU周期,一个CPU周期包含多个时钟周期。
-
lockup:在HardFault处理期间又发生了另外的一个错误中断或者NMI中断处理期间发生了一个错误中断,则处理器就会进入到锁定状态。因为在这两个异常处理执行期间,优先级不允许HardFault错误处理抢占。
【CPU】常见术语解释
于 2023-09-04 17:46:57 首次发布