芯片产业链:核(ARM)----> 芯片 ---> 产品
1.CPU核
CPU又叫中央处理器,其主要功能是进行算术运算和逻辑运算,内部结构大概可以分为控制单元、算术逻辑单元和存储单元等几个部分。按照其处理信息的字长可以分为:八位微处理器、十六位微处理器、三十二位微处理器以及六十四位微处理器等等。
CPU厂家主要工作:机器码设计 主频 高速缓存(cache) 多核集成 硬件浮点运算 数据运算 功耗
CISC:Complex Instruction Set Computer,复杂指令集计算机;
RISC:Reduced Instruction Set Computer,精简指令集计算;
CISC指的是采用复杂指令集的计算机,它的特点是拥有较多且复杂的指令,单条指令可以完成较为复杂的功能。而RISC则是一种采用了简化指令集的设计理念,其特点是拥有较少且简单的指令,强调通过组合简单的指令来实现复杂的功能。这种设计可以提高执行效率,降低硬件的复杂度。
2.ARM
简介
ARM是Advanced RISC Machines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、低功耗的RISC(精简指令集)处理器。
ARM 公司的特点是只设计芯片,而不生产。它将技术授权给半导体厂商,并提供服务。
ARM核发展
ARM公司在经典处理器ARM11以后的产品改用Cortex命名,并分成A、R和M三类,旨在为各种不同的市场提供服务。Cortex系列属于ARMv7架构,由于应用领域不同,基于v7架构的Cortex处理器系列所采用的技术也不相同,基于v7A的称为Cortex-A系列,基于v7R的称为Cortex-R系列,基于v7M的称为Cortex-M系列。
ARM核(ARMv7)工作模式
模式更改可以在软件控制下进行,也可以由外部或内部异常引起。
FIQ mode:快中断处理,快速中断模式是相对一般中断模式.而言的,它是用来处理对时间要求比较紧急的中断请求,主要用于高速数据传输及通道处理中。
IRQ mode:慢中断处理,IRQ模式是采用IRQ中断的默认模式,一般中断模式也叫普通中断模式,用于处理一般的中断请求,通常在硬件产生中断信号之后自动进入该模式,该模式为特权模式,可以自由访问系统硬件资源。
Hyp mode: 虚拟化处理,Hyp模式是作为虚拟化扩展的一部分实现的非安全PL2模式。Hyp模式在从非安全状态获取必须带到PL2的异常时进入。在非安全PL1模式下,执行HVC(Hypervisor Call)指令会生成Hypervisor Call异常。
User mode: 用户模式是用户程序的工作模式,它运行在操作系统的用户态,它没有权限去操作其它硬件资源,只能执行处理自己的数据,也不能切换到其它模式下,要想访问硬件资源或切换到其它模式只能通过软中断或产生异常。
System: 系统模式是特权模式,不受用户模式的限制。用户模式和系统模式共用一套寄存器,操作系统在该模式下可以方便的访问用户模式的寄存器,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。
Supervisor mode: 管理模式是CPU上电后默认模式,因此在该模式下主要用来做系统的初始化,软中断处理也在该模式下。当用户模式下的用户程序请求使用硬件资源时,通过软件中断进入该模式。
Abort mode: 中止模式用于支持虚拟内存或存储器保护,当用户程序访问非法地址,没有权限读取的内存地址时,会进入该模式,linux下编程时经常出现的segment fault通常都是在该模式下抛出返回的。
Undefined mode: 未定义模式是与指令相关的异常(包括任何执行未定义指令的尝试)采取的默认模式。
Monitor mode: 监视器模式是采用安全监视器调用异常的模式。在PL1模式下,执行SMC(安全监视器调用)指令会生成安全监视器调用异常。
ARM核(ARMv7)的寄存器资源
简介
寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。
用途分析
R0-R10 用来存放用户的数据
R11(fp:frame-pointer) 用来记录一个栈空间的开始地址
R12(ip: The Intra-Procedure-call scratch register) 用来临时存储sp
R13(sp:stack pointer) 栈指针寄存器
R14(lr:link register) 在发生跳转的时候,用来保存PC寄存器的值
R15(pc:program counter) 用来存放CPU需要执行的指令所在内存的地址
CPSR(Current Program Status Register)
SPSR(Saved Program Status Register)
异常产生的时候,用来保存CPSR的值。