版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2.1嵌入式处理器内核
1.处理器内核
所谓处理器内核就是处理器的内部核心的简称。处理器内核是一个设计技术,并不是一个芯片,内核设计一般追求高速度、低功耗、易于集成。2.现代嵌入式领域的处理器体系结构全部是采用RISC指令集的内核。
3.四大嵌入式处理器内核流派(1)MIPS(2)PowerPC(3)68K/COLDFIRE(4)ARM2.2ARM体系结构
1.ARM体系结构技术特征(1)采用RISC体系结构设计且单周期操作(2)采用加载与存储指令结构来访问内存和外设(3)在ARMCortex-A70系列之前,均为固定长度的32位指令格式。(3)采用三地址指令格式(4)指令流水线技术 ARM7采用3级流水线结构,采用冯•诺依曼体系结构(程序存储器与数据存储器统一编址)。ARM9采用5级流水线,采用哈佛体系结构(程序存储器与数据存储器分开独立编址),ARMCortex-A8采用2条13级流水线等。2、ARM体系结构版本自诞生以来,已经发生了很大的演变,至今已定义了8种不同版本,不同ARM内核采用的结构版本不完全相同。
ARM体系结构版本及内核关系2.3ARM处理器工作状态与工作模式
ARM处理器工作状态1.ARM状态:32位指令的状态,所有指令代码长度均为32位。2.Thumb状态:16位指令的状态,较短的操作码有更少的功能性,而较短的操作码提供整体更佳的编码密度。3.Thumb-2状态:兼有16位及32位指令,能用16位编码尽量使用16位代码,否则用32位编码。实现了更高的性能、更有效的功耗及更少地占用内存。4.调试状态:处理器停机调试时进入调试状态。Cortex-M3只有Thumb-2状态和调试状态。5.ARM与Thumb间的切换:通过BX指令,将操作数寄存器的最低位设置为1[0]即可实现ARM状态和Thumb状态的切换。
ARM处理器工作模式-经典ARM工作模式工作模式功能说明可访问的寄存器CPSR[M4:M0]用户模式User程序正常执行工作模式PC,R14~R0,CPSR10000快速中断模式FIQ处理高速中断,用于高速数据传输或通道处理PC,R14_fiq~R8_fiq,R7~R0,CPSR,SPSR_fiq10001外部中断模式IRQ用于普通中断处理PC,R14_irq~R13_irq,R12~R0,CPSR,SPSR_irq10010管理模式SVC操作系统的保护模式,处理软中断SWIPC,R14_svc~R13_svc,R12~R0,CPSR,SPSR_svc10011中止模式ABT处理存储器故障,实现虚拟存储器和存储器保护PC,R14_abt~R13_abt,R12~R0,CPSR,SPSR_abt10111未定义指令模式UND处理未定义的指令陷井,用于支持硬件协处理器仿真PC,R14_und~R13_und,R12~R0,CPSR,SPSR_und11011系统模式SYS运行特权级的操作系统任务PC,R14~R0,CPSR11111
ARM处理器工作模式-Cortex-M工作模式线程模式及特权级线程模式:执行普通代码的模式,复位自动进入。处理模式:处理异常中断的模式,返回时进入线程模式。工作模式切换2.4寄存器组织-ARM状态下的寄存器
模式寄存器用户模式系统模式管理模式中止模式未定义模式外部中断模式快速中断模式通用寄存器R0R1R2R3R4R5R6R7R8R8_fiqR9R9_fiqR10R10_fiqR11R11_fiqR12R12_fiqR13(SP)R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14_svcR14_abtR14_undR14_irqR14_fiq程序计数器:R15(PC)状态寄存器CPSR无SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq
程序状态寄存器共6个,除了共用的当前程序状态寄存器CPSR外还有分组的备份程序状态寄存器SPSR(5组共5个)。程序状态寄存器CPSR
通用寄存器R0低位寄存器组(所有ARM处理器不同状态均可使用)R1R2R3R4R5R6R7R8高位寄存器组(16位指令模式不能使用,仅提供给32位模式,如Thumb是不可见的,Thumb-2可直接使用)R9R10R11R12堆栈指针R13(SP)PSP(进程堆栈指针)MSP(主堆栈指针)链接寄存器R14(LR)程序计数器R15(PC)状态寄存器xPSR(APSR,EPSR,IPSR)2.4寄存器组织-Cortex-M下的寄存器
Cortex-M的程序状态寄存器Cortex-313029282726…876543210M0/1NZCV保留位M3/4NZCVQ保留位Cortex-31~9876543210M0/1保留当前异常编号(6位编码,见第4章)M3/4保留当前异常编号(9位编码)31~252423……876543210保留T保留位应用程序状态寄存器APSR中断程序状态寄存器IPSR执行程序状态寄存器EPSR2.5ARM处理器的异常中断
正常程序执行过程中,每执行一条ARM指令,PC值加4,每执行一条Thumb指令,PC值加2,程序按顺序正常执行。异常(Exceptions)是由于内部或外部事件引起的请求,使处理器去作相应处理的事件。当发生异常时,系统执行完当前指令后,跳转到相应的异常处理程序入口执行异常处理,异常处理完程序返回。一、经典ARM处理器的异常中断二、ARMCortex-M微控制器异常中断
经典ARM处理器的异常中断异常类型优先级别工作模式异常向量地址说明高端低端复位RESET1管理模式0XFFFF00000X00000000当RESET复位引脚有效时进入该异常未定义的指令UND6未定义指令中止模式0XFFFF00040X00000004协处理器认为当前指令未定义时产生指令异常。可利用它模拟协处理器操作。软件中断SWI6管理模式0XFFFF00080X00000008用户定义的中断指令,可用于用户模式下的程序调用特权操作。指令预取中止PABT5中止模式0XFFFF000C0X0000000C当预取指令地址不存在时或该地址不允许当前指令访问时执行指令产生的异常。数据访问中止DABT2中止模式0XFFFF00100X00000010当数据访问指令的目标地址不存在时或该地址不允许当前指令访问时执行指令产生的异常外部中断请求IRQ4外部中断模式0XFFFF00180X00000018有外部中断时发生的异常快速中断请求FIQ3快速中断模式0XFFFF001C0X0000001C有快速中断请求时发生的异常
(1)保护状态寄存器:CPSR=>SPSR,对处理器当前状态、中断屏蔽及各标志位的保护。(2)设置状态寄存器:设置CPSR中的M4~M0的5个位使进入相应工作模式,设置I=1禁止IRQ中断。(3)保存断点地址:将断点地址保存到新的异常工作模式的R14中。(4)转中断入口地址:给程序计数器PC强制赋值,使转入由表2.3所示的向量地址,以便执行相应的处理程序。经典ARM处理器的中断响应过程
(1)恢复原来被保护的用户寄存器。(2)恢复程序状态寄存器:SPSR=〉CPSR,以恢复被中断的程序工作状态。(3)恢复断点地址:将PC值恢复成断点地址,以执行用户原来运行着的程序。(4)开中断:清除CPSR中的中断禁止标志I和F,开放外部中断IRQ和快速中断FIQ。这些操作都是中断返回时自动完成的,无需用户使用堆栈操作指令。经典ARM处理器的中断返回
1、ARMCortex-M异常状态:(1)未激活(2)挂起(3)激活(4)激活且挂起2、ARMCortex-M异常中断的种类(1)系统复位RESET(2)不可屏蔽中断NMI(3)硬件故障HartFault(4)存储器管理故障MemMang(5)总线故障(预取或数据中止)BusFault(6)使用故障UsageFault(7)SVC指令产生的异常SVCCall(8)可挂起的系统服务PendSV(9)系统定时中断SysTick(10)外部中断(IRQ0~IRQ239)ARMCortex-M微控制器的异常中断Cortex-M中断向量表详见P.38~P.40表2.4/2.5
假设外部中断类型号为ID则中断向量存储的地址即中服服务程序入口地址: Iadd0=ID×4外部中断IRQi(i=0~239)中断向量地址的求法为:
Iadd0=(16+i)×4例如:P.39表2.5中的TIM2的中断号(IRQi)i=28,因此中断服务程序的地址为:(16+28)×4=176=0x000000B0ARMCortex-M外部中断服务程序入口地址
ARMCortex-M微控制器的堆栈
1、入栈保护
中断发生时,系统自动依次将xPSR、PC、LR、R12、R3、R2、R1和R0压入堆栈2、取中断入口地址
根据类型号获取中断服务程序入口地址。3、更新寄存器SP更新到入栈保护后的值(-0x14)中断服务寄存器IPSR的值为新的中断类型编号PC指向中断服务程序入口地址LR更新为特殊的返回值EXC_RETURNARMCortex-M异常中断响应过程
1、恢复保护
返回时,系统自动依次将R0、R1、R2、R3、R12、LR、PC和xPSR从堆栈弹出2、EXC_RETURN返回值给LR在中断服务程序结束时返回给LR。EXC_RETURN的值可以为:如果EXC_RETURN=0xFFFFFFF1将返回处理模式,并使用主堆栈MSP;如果EXC_RETURN=0xFFFFFFF9将返回线程模式,并使用主堆栈MSP;如果EXC_RETURN=0xFFFFFFFD将返回处理模式,并使用线程堆栈PSP;ARMCortex-M异常中断返回2.6ARM的存储器格式及数据类型
ARM体系结构将存储器看作是从0X00000000地址开始的以字节为单位的线性组合。每个字数据32位占四个字节即4个单元的地址空间,依次排列。作为32位的处理器,ARM体系结构所支持的最大寻址空间为4GB(232字节)。大端模式(Big-Endian):32位字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端模式(Little-Endian):32位字数据的高字节存放在高地址,而低字节存放在低地址。这与通用计算机的PC的存储器的信息存放格式相同。
高地址31………2423………1615………87………0地址示例D字节1字节2字节3字节40x3000100CC字节1字节2字节3字节40x30001008B字节1字节2字节3字节40x30001004A字节1字节2字节3字节40x30001000低地址假设:一个字(4字节)中,字节1为最低字节,字节4为最高字节。以大端模式存储字数据:A、B、C、D四个字31………2423………1615………87………0字节4字节3字节2字节1
高地址31………2423………1615………87………0地址示例D字节4字节3字节2字节10x3000100CC字节4字节3字节2字节10x30001008B字节4字节3字节2字节10x30001004A字节4字节3字节2字节10x30001000低地址假设:一个字(4字节)中,字节1为最低字节,字节4为最高字节。以小端模式存储字数据:A、B、C、D四个字31………2423………1615………87………0字节4字节3字节2字节1
ARM存储器数据类型ARM处理器支持字节(8位)、半字(16位)、字(32位)三种数据类型。其中,字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0)。每一种又支持有符号数和无符号数,因此共有6种数据类型。ARM微处理器的指令长度可以是32位(在ARM状态下),也可以为16位(在Thumb状态下)。如果是ARM指令则必须固定长度,使用32位指令,且必须以字为边界对齐;如果是使用Thumb指令,指令长度为16位,则必须以2字节为对齐。2.7ARM流水线技术
计算机指令执行过程的各个阶段相对独立,因此CPU内部的指令译码执行逻辑电路可以设计成分级的处理部件,实行流水处理,即流水线(Pipeline)方式。流水线技术大大加快了处理器的指令执行速度,现代CPU几乎都采用了流水线技术,所有的ARM处理器核都使用了流水线设计。不同的ARM核其流水线级数不同。ARM7采用3级流水线结构,ARM9采用5级流水线,而ARM10则采用6级流水线,ARM11采用8级流水线,Cortex-A9则采用13级流水线。ARM的3级指令流水线
ARM7处理器核使用3级指令流水线,指令执行分为3个阶段:取指、译码和执行。取指,由取指部件处理,把指令从内存中取出,放入指令流水线;译码,指令被译码。在这一级指令占有译码逻辑,不占有数据通路;执行,执行流水线中已经被译码的指令,在这一级,指令占有数据通路,移位操作,读通用寄存器,ALU产生结果,写通用寄存器。从存储器取指令指令所用的寄存器译码从寄存器组中读寄存器,执行移位和ALU操作,将寄存器写回到寄存器组执行译码取指PC-8PC-4PCARM7的3级指令流水线的功能段划分取指译码执行ARMThumbPC+8PC+4PC+4PC+2PCPC取指译码执行取指译码执行取指译码执行取指译码执行T1T2T3T4T5当前执行指令的所在地址ARM7的3级流水线示意图ARM7的3级流水线操作示意图时间片12345678指令1取指译码执行指令2取指译码执行指令3取指译码执行指令4取指译码执行指令5取指译码执行指令6取指译码执行ARM的5级指令流水线
ARM9TDMI采用程序存储器和数据存储器分开独立编址的哈佛结构,采用5级指令流水线,包括:取指:从程序存储器中取出指令,并放入指令流水线中。译码:对指令进行译码,从寄存器组读取寄存器操作数。执行:把一个操作数通过桶形移位寄存器进行移位,产生相应的运算结果和标志位。如果是LDR或STR指令,则在ALU中计算存储器的地址。缓冲数据:如果需要(LDR或STR),则访问数据存储器,否则简单地缓冲一个时钟周期,以便使所有指令具有同样的流水线流程。回写:将指令产生的结果写回目的寄存器中,包括从存储器读取的数据。缓冲缓冲缓冲缓冲回写回写回写回写取指译码执行ARMThumbPC+16PC+8PC+12PC+6PC+8PC+4PC+4PC+2PCPC取指译码执行取指译码执行取指译码执行取指译码执行T1T2T3T4T5当前回写指令的所在地址ARM9的5级流水线示意图缓冲回写ARM的5级流水线操作示意图时间片123456789指令1取指译码执行缓冲回写指令2取指译码执行缓冲回写指令3取指译码执行缓冲回写指令4取指译码执行缓冲回写指令5取指译码执行缓冲回写ARM的6级指令流水线
ARM10采用6级指令流水线,包括取指、发射、译码、执行、存储和回写。时间片12345678910指令1取指发射译码执行缓冲回写指令2取指发射译码执行缓冲回写指令3取指发射译码执行缓冲回写指令4取指发射译码执行缓冲回写指令5取指译码发射执行缓冲回写ARM的7级指令流水线
Cortex-R4和PXA250/270均采用7级指令流水线,Cortex-R4的指令流水线包括预取指令1、预取指令2、译码、地址生成含发射、乘加1、乘加2、乘加3及回写。而PXA250/270的指令流水线包括取指令1(分支目标缓冲器)、取指令2、译码、寄存/移位、ALU实现、状态执行、回写。Cortex-R4及PXA250/270的7级流水线操作示意图处理器时间片1234567891011Cortex-R指令1预取1预取2译码发射乘加1乘加2乘加3回写PXA250/270指令1预取1预取2译码寄存移位ALU实现状态执行回写Cortex-R指令2预取1预取2译码发射乘加1乘加2乘加3回写PXA250/270指令2预取1预取2译码寄存移位ALU实现状态执行回写Cortex-R指令3预取1预取2译码发射乘加1乘加2乘加3回写PXA250/270指令3预取1预取2译
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高速服务区考试试题及答案
- 莆田市人民医院造影技术专项考核
- 盐城市人民医院后勤服务礼仪与沟通技巧情景测试
- 吉安市中医院烧伤休克期液体复苏精准计算与执行考核
- 黔东南苗族侗族自治州农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)完整答案详解
- 抚州市人民医院住院医师规范化培训入训资格认证
- 嘉兴市中医院电磁导航支气管镜技术考核
- 绍兴市中医院中药不良反应监测考核
- 芜湖市人民医院器械除锈技术考核
- 抚州市中医院信息管理专业英语文献阅读测试
- 2025新外研社版七年级上英语单词默写单(开学版)
- 煤矿液压支架工培训课件
- 2025年创业指导服务行业研究报告及未来行业发展趋势预测
- 6.1 包饺子(教案)北师大版数学三年级上册
- 新罪犯入监心理辅导团体方案设计
- (2025年标准)订婚双方协议书
- 加气站反恐安全知识培训内容课件
- 矿物元素生物地球化学-洞察及研究
- 2024-2025学年黑龙江省哈尔滨市第四十七中学七年级上学期期中道德与法治试卷
- 商场安全用电培训
- 国开学习网山东《机械制造工艺学(本)》形考任务123答案+终结性考试答案
评论
0/150
提交评论