一、流水线

1、Cortex-CM3处理器使用一个3级流水线,流水线的3级分别是:取指,解码和执行:

2、当运行的指令大多数是16位时,处理器会每隔一个周期做一次取指。当执行到跳转指令时需要清洗流水线,处理器会不得不跳转目的地重新取指。为了改善这种情

况,Cortex-CM3支持一定数量的v7M指令可以避免很多短程跳转。

3、由于流水线的存在,以及出于对Thumb代码兼容的考虑,读取PC会返回当前指令地址+4的值。

4、在处理器内核的预取单元中也有一个指令缓冲区,它允许后续的指令在执行前现在里面排队,也能在执行未对齐的32位指令时,避免流水线断流。

二、详细框图

1、Cortex-CM3处理器里面除了处理核心外,还有其他好多组件,以用于系统管理和调试支持:

1)、MPUI和ETM是可选组件,不一定会包含在每一个Cortex-CM3的MCU中。

2)、方框图中的缩写及定义

2、Cortex-CM3处理器是以一个处理器子系统呈现的,其CPU内核本身与NVIC和一系列调试块都紧密耦合:

1)、CM3core:Cortex-CM3处理器的中央处理核心。

2)、嵌套向量中断控制器NVIC:NVIC是一个在Cortex-CM3中内建的中断控制器。

3)、SysTick定时器:系统滴答定时器是一个非常基本的到时器定时器,用于在每隔一定的时间产生一个中断,即使是系统在睡眠模式下也能工作。

4)、存储器保护单元:MPU是一个选配的单元,有些Cortex-CM3可能没有配置此组件。如果有,则它可以把存储器分成一些regions,并分别给予保护。

5)、BusMatrix:BusMatrix是Cortex-CM3内部总线系统的核心。

6)、AHB to APB:它是一个总线桥,用于把若干个APB设备链接到Cortex-CM3处理器的私有外设总线上。

7)、图框中其他的组件都用于调试,通常不会再应用程序中使用它们。

3、其他调试组件

1)、SW-DP/SWJ-DP:串行线调试端口(SW-DP)/串口线JTAG调试端口(SWJ-DP)都与AHB访问端口(AHB-PB)协同工作,以使外部调试器可以发起AHB上的数据传

送,从而执行调试活动。

2)、AHB-AP:AHB访问端口通过少量的寄存器,提供了对全部Cortex-CM3存储器的访问机能。

3)、嵌入式跟踪单元ETM:ETM用于实现实时指令跟踪,但它是一个选配件,所以不是所有的Cortex-CM3产品都具有实时指令跟踪能力。

4)、数据观察点及跟踪单元:通过DWT,可以设置数据观察点。

5)、指令跟踪单元ITM:软件可以通过该模块直接把消息送给TPIU;还可以让DWT匹配命中事件通过ITM产生数据跟踪包,并把它输出到一个数据跟踪流中。

6)、跟踪端口的接口单元TPIU:TPIU用于跟外部的跟踪硬件交互。

7)、FPB:FPB提供flash地址重载和断点功能。

8)、ROM表:只是一个简单的查找表,提供了存储器映射信息,这些信息包括多种系统设备和调试组件。

三、Cortex-CM3的总线接口

1、I-Code总线

1)、I-Code总线是一条基于AHB-lite总线的32位总线,负责在0x0000_0000-0x1FFF_FFFF之间取指操作。

2)、取指以字的长度执行,即使是对于16位指令也是如此.因此CPU内核可以一次取出两条16位指令。

2、D-Code总线

1)、D-Code总线是一条基于AHB-lite总线的32位总线,负责在0x0000_0000-0x1FFF_FFFF之间取指操作。

2)、链接到D-Code总线上的任何设备都只需支持AHB-Lite的对齐访问,不需要支持非对齐访问。

3、系统总线

1)、系统总线是一条基于AHB-lite总线的32位总线,负责在0x2000_0000-0xDFFF-FFFF和0xE010_0000-0xFFFF_FFFF之间的所有数据传送。取指和数据访问都有。

2)、所有的数据传输都是对齐的。

4、外部私有外设总线

1)、基于APBzing总线协议的32位总线。此总线负责0xE004_0000-0xE00F_FFFF之间的私有外设访问。

2)、但是APB的一部分空间已经被TPIU、ETM以及ROM表用掉了,就只留下0xE004_2000-0xE00F_F000这个区间用于附加的(私有)外设。

5、调试访问端口总线

1)、调试访问端口总线接口是一条基于”增强型APB规格“的32位总线,它专用于挂接调试接口。

四、Cortex-CM3的其他接口

1、除了总线接口之外,Cortex-CM3还有几个用于其它目的的接口,这些接口的信号都不大可能会引出到引脚上,而只用于连接SoC不同的部分,或者干脆就没有使用。

2、杂项接口信号

五、外部私有外设总线

1、Cortex-CM3处理器有一个外部私有外设总线(PPB)接口。外部PPB接口是基于高级外设总线(APB)协议构造的。用于非共享的系统设备。

2、为了支持CoreSight设备,该接口又包含了称为“PADDR31”的信号,给出传送的发源地:

1)、若该信号为0,则表示是运行在Cortex-CM3内部的软件产生的传送操作。

2)、若为1,则表示是调试软件产生了传送操作。

3、外部私有外设总线是专用的,不服务于普通的外设,这恶鬼规矩只能靠芯片设计者自觉遵守。

4、外部PPB不支持非对齐访问。

六、典型的连接方式

1、总线接口与其他设备和存储器的典型连接

2、代码存储区既可以被指令总线(I-CODE)访问,也可以被数据总线(D-CODE)访问,此时需要在中间插入一个总线开关,称为总线矩阵或者使用一个AHB总线复用器。

1)、如果使用了总线矩阵,则闪存和附加的SRAM可以被both I-CODE和D-CODE访问。

2)、当数据访问和指令访问同时尝试访问同一个区域时,可以赋予数据访问更高的优先级以提高性能。

3)、通过AHB总线矩阵把取指和数据访问分开后,如果指令总线和数据总线在同一时刻访问不同的存储器设备,则两者可以并行不勃。但是若只使用了总线复用器则数据传

送就不能同时发生。

3、有些引脚比较多的接口会带外部总线接口(EMI)。在此情况下,需要一个外部存储器控制器。其他的AHB设备则可以简单的链接到系统总线上,而不需要额外的总线矩

阵。

七、复位信号

1、Cortex-CM3中各种复位信号

2、典型的Cortex-CM3芯片内部复位信号和其作用范围示意图

Cortex-M3的整体风景相关推荐

  1. Cortex M3 NVIC与中断控制

    Cortex M3 NVIC与中断控制 宗旨:技术的学习是有限的,分享的精神是无限的. 一.NVIC概览 --嵌套中断向量表控制器 NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断 ...

  2. Cortex M3内核架构

    CortexM3内核架构 宗旨:技术的学习是有限的,分享的精神是无限的. 1.ARMCortex-M3处理器 Cortex-M3处理器内核是单片机的中央处理单元( CPU). 完整的基于CM3的MCU ...

  3. Cortex M3 Bit-banding简介

    http://blog.csdn.net/shevsten/article/details/7676397 Cortex M3 Bit-banding简介 分类: ARM MCU2012-06-19 ...

  4. cortex m3 开源_开源增强现实耳机,Steam的125M有效帐户等

    cortex m3 开源 您好,开放游戏迷! 在本周的版本中,我们将了解Steam的1.25亿活跃帐户和Game Developers Conference,这是一个开源增强现实头戴设备,Linux游 ...

  5. cortex m3的操作模式和状态

    1.操作状态(operation state): debug state:处理器在调试器发起halt或匹配到断点时,会进入debug state并停止执行指令. thumb state:处理器正在运行 ...

  6. cortex m3/m4处理器的复位设计

    cortex m3/m4处理器在复位层面总体上可以划分为core和debug logic两部分.core部分包括处理器内核(core)以及NVIC,BUS Matrix,MPU的非debug部分.de ...

  7. Cortex、ARMv8、arm架构、ARM指令集、soc?Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是处理器(内核)后者是指令集的架构(架构)

    架构组成元素的指令集状态或者语法thumb指令集与arm指令集的区别例如thumb指令集是什么_thumb指令集与arm指令集的区别以及thumb-2的关系在下一文中介绍,本文暂时不讨论 有粉丝问我到 ...

  8. stm32 cortex M3 汇编指令集 英文详解

    这是cortex M3的汇编指令集详解,包含指令执行的周期,如下图示例,可以去Arm公司下载此文档,链接在此https://developer.arm.com/documentation/ddi033 ...

  9. Cortex‐M3的Faults异常究竟是什么?

    关注+星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | strongerHuang 有许多朋友在学习,或者开发STM32时都遇到过HardFault_Handler的情 ...

  10. ARM 架构、ARM7、ARM9、STM32、Cortex M3 M4 、51、AVR 有啥区别

    ARM架构.ARM7.ARM9.STM32.Cortex M3 M4.51.AVR之间有什么区别和联系? ARM架构:由英国ARM公司设计的一系列32位的RISC微处理器架构总称,现有ARMv1~AR ...

最新文章

  1. LeetCode: Max Points on a Line
  2. OpenMeetings的安装
  3. worker进程和task进程区别_celery 每个 worker 在执行任务时,如何配置一定数量的 task?...
  4. 大师兄科研网vasp_怎样知道一名研究生有没有科研潜力?
  5. 标准化(Normalization)和归一化实现
  6. mysql数据库deptno_mysql数据库的 select查询
  7. eNSP重装之后,启动路由器时注册失败
  8. Network-based Fraud Detection for Social Security Fraud
  9. caffe+vs2013+window10+GPU(CPU)配置
  10. 我的家乡主题网页设计
  11. linux驱动开发学习笔记十六:gpio相关OF函数和子系统API函数
  12. Django新手入门(五)——Models详解
  13. 深入浅出强化学习:原理入门(待更新)
  14. UnityShader学习教程之<矩阵的左乘还是右乘所导致的效果问题>
  15. 【tensorrt】——插件写法及python plugin大体流程
  16. 教你一个快递查询单号查询物流的简单方法
  17. Ugui中使用Image完成动态连线
  18. NACHOS调度算法的实现
  19. 微型计算机的基本组成及各个部分的作用
  20. 服务器错误500-内部服务器错误。您查找的资源存在问题,因而无法显示。

热门文章

  1. Qt学习笔记-各种对话框基本使用
  2. 华为手机8.0.0怎么找到云相册_华为G9怎么找到云相册_失而复得 华为“查找手机”功能有多强大?快来了解一下......
  3. matlab第七讲,matlab第七讲教案
  4. python pandas 排序_Pandas的排序和排名(Series, DataFrame) + groupby
  5. LeetCode:922. 按奇偶排序数组 II
  6. (计算机组成原理)第五章中央处理器-第四节4:微程序控制单元设计
  7. Qt之模式、非模式、半模式对话框
  8. C++ 里利用 std::ios::sync_with_stdio(false) 解决TLE问题
  9. Linux下安装Octave
  10. JS 常用函数一(弹对话框、操作HTML元素、写HTML文档、写到控制台、查找元素、元素插入内容、改变HTML属性、计时)