ARM-Cortex-M3内核结构.doc
《ARM-Cortex-M3内核结构.doc》由会员分享,可在线阅读,更多相关《ARM-Cortex-M3内核结构.doc(36页珍藏版)》请在咨信网上搜索。
1、ARM CortexM3 内核结构2.1 ARM CortexM3 处理器简介2、1、1 概述ARM公司成立于上个世纪九十年代初,致力于处理器内核研究,ARM 即 Advanced RISC Machines 得缩写,ARM公司本身不生产芯片,只设计内核,靠转让设计许可,由合作伙伴公司来生产各具特色得 芯片。这种运行模式运营得成果受到全球半导公司以及用户得青睐。目前ARM体系结构得处理器内核有: ARM7TDMI、ARM9TDMI、ARM10TDMI、ARM11以及Cortex等。2005年ARM推出得ARM Cortex系列内核,分别为:A系列、R系列与M系列,其中A系列就是针对可以运行复杂
2、操作系统(Linux、Windows CE、Symbian 等)得处理器;R系列就是主要针对处理实时性要求较高得处理器(汽车电子、网络、影像系统);M系列 又叫微控制器,对开发费用敏感,对性能要求较高得场合。CortexM系列目前得产品有M0、M1、M3,其中M1用在FPGA中。CortexM系列对微控制器与低成本应 用提供优化,具有低成本、低功耗与高性能得特点,能够满足微控制器设计师进行创新设计得需求。其 中,ARM CortexM3处理器得性能就是ARM7得两倍,而功耗却只有ARM7得1/3,适用于众多高性能、极其低 成本需求得嵌入式应用,如微控制器、汽车系统、大型家用电器、网络装置等,A
3、RM CortexM3提供了 32位微控制器市场前所未有得优势。CortexM3内核,内部得数据路径为32位,寄存器为32位,存储器接口也就是32位。CortexM3采用了 哈佛结构,拥有独立得指令总线与数据总线,可以让取指与数据访问分开进行。CortexM3还提供一个 可选得MPU,对存储器进行保护,而且在需要得情况下也可以使用外部得cache。另外在CortexM3中, 存储器支持小端模式与大端存储格式。CortexM3内部还附赠了很多调试组件,用于在硬件水平上支持 调试操作,如指令断点,数据观察点等。另外,为支持更高级得调试,还有其它可选组件,包括指令跟 踪与多种类型得调试接口。2、1、
4、2 内核结构组成及功能描述CortexM3微控制器内核包括处理核心与许多得组件,目得就是用于系统管理与调试支持。如图2、1为 CortexM3内核方框图。NMI 中断号239:0SLEEPING SLEEPDEEPNVICSysTick中断睡眠CM3核调试指令数据MPUCortexM3触发ETMTPIUFPBDWTITM专用外 设总线SWDP JTAGDP专用外设总线(内部) AHBAPAPBROM表总线矩阵Icode总线Dcode总线系统总线总线矩阵系统总线(AHB)静态 RAM外部 RAM外部控制器设备AHB to APB 总线Flash 存 储器SRAM 可选配外部 RAMI/O外设总线
5、UARTPWMTimer图 2、1 CortexM3 内核方框图1、处理器内核CortexM3处理器内核采用ARMv7M架构,其主要特性如下:lThumb2指令集架构(ISA)得子集,包含所有基本得16位与32位Thumb2指令;l哈佛处理器架构,在加载/存储数据得同时能够执行指令取指;l带分支预测得三级流水线;l32位单周期乘法;l硬件除法;lThumb状态与调试状态;l处理模式与线程模式;lISR得低延迟进入与退出;l 可中断可继续(interruptiblecontinued)得LDM/STM、PUSH/POP;l 支持ARMv6类型BE8/LE;l支持ARMv6非对齐访问。2、NVIC
6、(嵌套向量中断控制器)NVIC与处理器内核就是紧密耦合得,这样可实现快速、低延迟得异常处理。在CortexM微控制器此功 能非常强大。3、总线矩阵总线矩阵用来将处理器与调试接口与外部总线相连。 处理器包含4 个总线接口:lICode 存储器接口:从Code 存储器空间(0x00000000x1FFFFFFF)得取指都在这条32 位 AHBLite 总线上执行。lDCode 存储器接口:对Code 存储器空间(0x00000000x1FFFFFFF)进行数据与调试访问都 在这条32 位AHBLite 总线上执行。l系统接口:对系统空间(0x200000000xDFFFFFFF)进行取指、数据与调
7、试访问都在这条32 位 AHBLite 总线上执行。l外部专用外设总线(PPB):对外部PPB 空间(0xE00400000xE00FFFFF)进行数据与调试访 问都在这条32 位APB 总线(AMBA v2、0)上执行。跟踪端口接口单元(TPIU)与厂商特定得 外围器件都在这条总线上。注:处理器包含一条内部专用外设总线,用来访问嵌套向量中断控制器(NVIC)、数据观察点与 触发(DWT)、Flash 修补与断点(FPB),以及存储器保护单元(MPU)。4、FPBFPB单元实现硬件断点以及从代码空间到系统空间得修补访问,FPB有8个比较器。5、DWT数据观察点与跟踪,调试功能部件。6、ITMI
8、TM就是一个应用导向(application driven)得跟踪源,支持对应用事件得跟踪与printf类型得调 试。7、MPU存储器保护单元(MPU)就是用来保护存储器得一个元件。处理器支持标准得ARMv7“受保护得存储器 系统结构”(PMSA)模型。如果希望向处理器提供存储器保护,则可以使用可选得MPU;MPU对访问允许 与存储器属性进行检验。它包含8个区与一个可选得执行默认存储器映射访问属性得背景区。8、ETMETM支持指令跟踪得低成本跟踪宏单元。9、TPIUTPIU用作来自ITM与ETM(如果存在)得CortexM3内核跟踪数据与片外跟踪端口分析仪之间得桥接。10、SW/JTAGDPC
9、ortexM3处理器可配置为具有SWDP或JTAGDP调试端口得接口,或两者都有。这两个调试端口提 供对系统中包括处理器寄存器在内得所有寄存器与存储器得调试访问。2、2 内核寄存器组织如图 2、2 所示,Cortex_M3 内核寄存器分为 16 个通用寄存器 R0R15 与 7 个特殊功能寄存器。R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)低 寄 存 器通 用 寄 存 器高寄 存 器特殊状态寄存器 功能中断屏蔽寄寄存器 存器控制寄存器xPSRPRIMASKFAULTMASKBASEPRICONTROLMSP PSP图 2、2 寄存器组织图
10、2、2、1 通用寄存器 R0R15R0R12 寄存器:就是真正意义上得通用。在处理器运行过程中,作数据得寄存。R13 为堆栈指针寄存器:堆栈指针就是用于访问堆栈,也即系统得 RAM 区。Cortex_M3 中采用了两个 堆栈指针:主堆栈指针(MSP)与进程堆栈指针(PSP),R13 在任何时刻只能就是其中一个,默认情况为 MSP,可以通过控制寄存器(CONTORL)来改变。Cortex_M3 中堆栈方向就是向低地址方向增长,为满堆栈 机制。堆栈操作就是通过 PUSH 与 POP 来完成操作得。例如 MSP 当前指针指向:0x2000_000C;R0=0x00000000。 执行:PUSHR0此
11、时 MSP 指向:0x2000_0008 执行示意如图 2、3 所示。已使用已使用上次压入得数据未用未用RAMRAM0x2000_000C MSP向 下 生已使用已使用已使用0x00000000未用0x2000_0008长 MSP2、3 堆栈操作示意图R14 程序连接寄存器(LR):在执行分支(B)与链接(BL)指令或带有交换分支(BX)与链接 指令(BLX)时,PC 得返回地址自动保存进 LR。比如在子程序调用时用保存子程序得返回地址。LR 也用于异常返回,但就是在这里保存得就是返回后得状态,不就是返回得地址,异常返回就是通过硬件自动出栈 弹出之前压入得 PC 完成得。R15 程序计数器(P
12、C):就是程序运行得基础,具有自加得功能。该寄存器得位 0 始终为 0,因此,指令始终与字或半字边界对齐。2、2、2 特殊功能寄存器特殊功能寄存器分为程序状态寄存器、中断屏蔽寄存器与控制寄存器三类。xPSR 程序状态寄存器:系统级得处理器状态可分为 3 类,应用状态寄存器(APSR)、中断状态寄 存器(IPSR)、执行状态寄存器(EPSR),可组合起来构成一个 32 位得寄存器,统称 xPSR。表 2、1 xPSR 寄存器寄存 器名位313029282726:252423:2019:1615:10987654:0APSRNZCVQIPSR中断编号EPSRICI/ITTICI/ITxPSR 寄存
13、器得各位得功能如表 2、2:表 2、2 xPSR 寄存器各位功能位名称定义31N负数或小于标志:1:结果为负数或小于;0 结果为正数或大于30Z零标志:1:结果为 0;0:结果为非 029C进位/借位标志:1:进位或借位;0 没有进位或借位28V溢出标志:1:溢出;0:没有溢出27Q粘着饱与标志:1:已饱与;0:没有饱与26:2515:10ITIFThen 位。它们就是 ifThen 指令得执行状态位。 包含 ifThen 模块得指令数目与它们得执行条件24T用于指示处理器当前就是 ARM 状态还就是 Thumb 状态15:12ICI可中断可继续得指令位:如果在执行 LDM 或 STM 操作时
14、产生一次中断,则 LDM 或 STM 操作暂停,该位来保存该操作中下一个寄存器操作数得编号,在中断响 应之后,处理器返回由该位指向得寄存器并恢复操作。8:0ISR占先异常得编号中断屏蔽寄存器:分为三组,分别就是 PRIMASK、FAULTMASK、BASEPRI。PRIMASK 为片上外设总中断开关,该寄存器只有位 0 有效,当该位为 0 就是响应所有外设中断;当该位为 1 时屏蔽所有片上外设中断。FAULTMASK 寄存器管理系统错误得总开关,该寄存器中有位 0 有效,当该位为 0 时,响应所有得异常;为 1 屏蔽所有得异常。BASEPRI 寄存器用来屏蔽优先级等于与小于某一个中断数值得寄存
15、器。控制寄存器:CONTROL 有两个作用,其一用于定义处理器特权级别,其二用于选择堆栈指针,如表 3、3 所示。表 2、3 CONTROL 寄存器位功能CONTROL1堆栈指针选择0:选择主堆栈指针 MSP1:选择进程堆栈指针 PSPCONTROL00:特权级1:用户级CONTROL0:异常情况下,处理器总就是处于特权模式,CONTROL0位总就是为 0;在线程模式情况下(非异常情况),处理器可以工作在特权级也可工作在用户级,该位可为 0 或 1。特权级下所有得资源 都可以访问,而用户级下被限制得资源不能访问,比如 MPU 被限制得资源。CONTROL1:为 0 时,只使用 MSP,此时用户
16、程序与异常共享同一个堆栈,处理器复位后默认得也 就是该模式。为 1 时,用户应用程序使用进程堆栈 PSP,而中断任然得使用主堆栈 MSP。这种双堆栈机制, 特别适合在带有 OS(操作系统)得环境下使用,只要 OS 内核在特权级下执行,而用户应用程序在用户 模式下执行,就可很好得将代码隔离互不影响。2、3 处理器操作模式ARM CortexM3支持2个模式与两个特权等级。如图2、4所示,在嵌入式系统应用程序中,程序代码 涉及异常服务程序代码与非异常服务程序代码,这些代码可以工作在处理器特权级也可以工作在用户级 级,但有区别。当处理器处在线程模式下时,既可以使用特权级,也可以使用用户级;另一方面,
17、handler 模式总就是特权级得。在复位后,处理器进入线程模式特权级。特权级用户级Handler 模式错误得用法线程模式线程模式异常 handler 得代码 主应用程序得代码图 2、4 操作模式与特权等级在线程模式用户级下,对系统控制空间(SCS,0xE000E0000xE000EFFF,包括NVIC、SysTick、 MPU以及代码调试控制所用得寄存器)得访问将被禁止。除此之外,还禁止使用MRS/MSR访问,除了APSR 之外得特殊功能寄存器。如果操作,则对于访问特殊功能寄存器得,访问操作被忽略;而对于访问SCS 空间得,将产生错误。在特权级下不管就是任何原因产生了任何异常,处理器都将以特
18、权级来运行其服务例程,异常返回 后,系统将回到产生异常时所处得级别,同时特权级也可通过置位CONTROL0来进入用户级。用户级下 得代码不能再试图修改CONTROL0来回到特权级。它必须通过一个异常handler,来修改CONTROL0, 才能在返回到线程模式后进入特权级。如图2、5所示。特权级 handler模式CONTROL0=1异常服务 例程CONTROL0=0异常服务 例程特权级 线 启 动 程模式代码用户级 线 程模式异常异常用户用户程序程序特权级得 线程图 2、5 处理器模式转换图把代码按特权级与用户级分开处理,有利于使CortexM3得架构更加稳定可靠。例如,当某个用户 程序代码
19、出问题时,可防止处理器对系统造成更大得危害,因为用户级得代码就是禁止写特殊功能寄存器 与NVIC中寄存器得。另外,如果还配有MPU,保护力度就更大,甚至可以阻止用户代码访问不属于它得 内存区域。在引入了嵌入式实时操作系统中,为了避免系统堆栈因应用程序得错误使用而毁坏,我们可以给 应用程序专门配一个堆栈,不让它共享操作系统内核得堆栈。在这个管理制度下,运行在线程模式得用 户代码使用PSP,而异常服务例程则使用MSP。这两个堆栈指针得切换就是智能全自动得,在异常服务得始 末由CortexM3硬件处理。如前所述,特权等级与堆栈指针得选择均由CONTROL负责。 当CONTROL0=0,在异常处理得始
20、末,只发生了处理器模式得转换,如图2、6所示。 若CONTROL0=1(线程模式+用户级),则在中断响应得始末,处理器模式与特权等级都要发生变化,如图2、7所示。 CONTROL0只有在特权级下才能访问。用户级得程序如想进入特权级,通常都就是使用一条“系统服务呼叫指令(SVC)”来触发“SVC异常”,该异常得服务例程可以视具体情况而修改CONTROL0。中断事件中断服务程序中断返回主程序入栈出栈线 程 模 式(特权级)Handler 模 式(特权级)线 程 模 式(特权级)图 2、6 中断前后得状态转换中断事件中断服务程序中断返回主程序入栈出栈线 程 模 式(用户级)Handler 模 式(特
21、权级)线 程 模 式(用户级)图 2、7 中断前后得状态转换+特权等级切换2、4 存储器系统2、4、1 存储器映射CortexM3 采用了固定得存储映射结构,如图 2、8 所示。CortexM3 得地址空间就是 4GB, 程序可以在代码区,内部 SRAM 区以及外部 RAM 区中执行。但就是因为 指令总线与数据总线就是分开得,最理想得就是把程序放到代码区,从而使取指与数据访问各自使用己得总 线。内部 SRAM 区得大小就是 512MB,用于让芯片制造商连接片上得 SRAM,这个区通过系统总线来访问。 在这个区得下部,有一个 1MB 得区间,被称为“位带区”。该位带区还有一个对应得 32MB 得
22、 “位带别 名(alias)区”,容纳了 8M 个“位变量”(对比 8051 得只有 128 个位变量),位带区对应得就是最低得 1MB 地址范围,而位带别名区里面得每个字对应位带区得一个比特。位带操作只适用于数据访问,不适 用于取指。通过位带得功能,可以把多个布尔型数据打包在单一得字中,却依然可以从位带别名区中, 像访问普通内存一样地使用它们。位带别名区中得访问操作就是原子得,消灭了传统得“读改写”三 步。ROM外部 PPBETMTPIU0xE00FFFFF0xE00FF0000xE00420000xE00410000xE0040000保留NVIC保留FPBDWTITM0xE003FFFF0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM Cortex M3 内核 结构
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。