-
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…… -
cortex-M
- 处理器两种操作模式:
- handler mode(处理者模式),thread mode(线程模式),这用于区别普通应用程序的代码和异常服务例程的代码(包括中断服务例程的代码)。
- 软件执行有两种特权分级:
- 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,进程堆栈指针,由用户的应用程序代码使用。
- 处理器两种操作模式: