嵌入式实时操作系统的设计与开发New(三)

启动流程

当Mini2440从NAND Flash启动时,因为NAND Flash无法作为程序运行的载体,所以S3C2440A芯片通过硬件机制将NAND Flash的开头4KB的内容自动复制到SRAM上,并将这4KB大小的SRAM映射为自身内存的BANK0,将这4KB大小的内容映射到0x00000000开始的地址上,然后处理器从0x00000000地址开始执行。

创建异常向量表
当程序运行发生异常时,程序指针PC会自动跳转到主存最开始地址(0x00000000),这里就是异常向量表的起始地址,然后会通过专门的硬件机制定位到相应的异常向量。
ARM处理器内核一共定义了七种异常:

  1. 复位异常:强制PC的值设为0x0,让CPU从0x0开始取指执行命令,这时CPU运行在ARM状态。
  2. 未定义指令异常:遇到一个无法处理的指令,PC取值为0x4。
  3. 软中断异常:当软中断指令SWI被执行时,软中断异常发生,PC取指为0x8。软中断是用户模式切换到特权模式的唯一途径,软中断会将程序带到管理模式下,这样程序就可以对更多的寄存器,特别是CPSR有了修改的权利。软中断通常用来实现特权模式下的系统调用功能。
  4. 预取指终止异常。当一条指令的预取指片段执行失败(通常为内存读取错误)时,预取指终止异常发生,PC取值为0xC。
  5. 数据终止异常。当在读出数据时发生内存错误,数据终止异常发生。
  6. IRQ中断异常。当CPU接受到外部设备发生的中断请求时,IRQ中断异常发生。IRQ中断异常会在FIQ快速中断时被屏蔽。
  7. FIQ快速中断异常。FIQ快速中断异常是为数据传输与处理提供快速中断通道,FIQ快速中断模式下,ARM提供了更多的专业寄存器,就为中断处理节省了寄存器保护入栈的时间。

快中断的优先级比一般中断高。

NVIC中断与内核中断区别

**NVIC(Nested Vectored Interrupt Controller)是 Cortex-M 系列 MCU 的中断控制器,它能够管理多个中断请求。通常,当外部设备产生一个中断请求时,NVIC 会在优先级高的中断请求和当前正在执行的进程中间产生一个中断,以便按照预定义的优先级处理请求。

内核中断是操作系统的内核中的一种恒定的行为,它是在内核内部完成的。内核中断通常与操作系统的某些特定功能相关联,例如定时器中断、快速进程切换、系统调用等。内核中断请求被处理时,内核会暂停正在执行的进程,并跳转到内核中处理该中断。在内核中处理完中断之后,内核会再次恢复之前暂停的进程。

可以说,NVIC中断和内核中断是完全不同的两个概念。NVIC 是 MCU 中断处理器的一部分,负责处理硬件的中断请求,而内核中断则是操作系统的一部分,负责处理软件相关的中断。两者都是处理中断请求,但处理的对象和处理方式完全不同,而且在不同的层次上运行。**

你可能感兴趣的:(嵌入式实时操作系统的设计与开发,RTOS)