【嵌入式系统设计】LES3~5:Cortex-M4系统架构(上)第1节 ARM处理器,M4内核处理器,M4调试跟踪接口


关注作者了解更多

我的其他CSDN专栏

过程控制系统

工程测试技术

虚拟仪器技术

可编程控制器

工业现场总线

数字图像处理

智能控制

传感器技术

嵌入式系统

复变函数与积分变换

单片机原理

线性代数

大学物理

热工与工程流体力学

数字信号处理

光电融合集成电路技术

电路原理

模拟电子技术

高等数学

概率论与数理统计

数据结构

C语言

模式识别原理

自动控制原理

数字电子技术

关注作者了解更多

资料来源于网络,如有侵权请联系编者

目录

Cortex-M4系统架构(上)

ARM系列的发展过程

ARM处理器的分类

ARM架构指令集演化

ARMv7

M4处理器特性

M4为扩展MCU应用范围而生

M4内核模块框图

核心及核心外设

调试跟踪接口

总线接口

M4内核

M4内核外设

M4调试跟踪接口

Flash硬件断点控制FPB

仪器跟踪宏单元ITM

数据观察跟踪单元DWT

内嵌跟踪宏单元ETM

CoreSight ROM表

总线互联矩阵BusMatrix

• AHB to APB桥接器

调试模式


Cortex-M4系统架构(上)

ARM 架构的背景

 Cortex-M4体系架构概述,基本框图

 Cortex-M4与其他内核比较

 Cortex-M4的流水线,内部总线

 Cortex-M4通用寄存器表,特殊寄存器介绍

 Cortex-M4存储模型

 Cortex-M4异常和可嵌套中断向量系统

ARM系列的发展过程

ARM处理器的分类

ARM架构指令集演化

ARMv7

ARMv7定义了3种不同的处理器配置(processor profiles):

- Profile A是面向复杂、基于虚拟内存的OS和应用的

- Profile R是针对实时系统的

- Profile M是针对低成本应用的优化的微控制器的

 所有ARMv7 profile实现Thumb-2技术

 ARMv7版本开始,型号命名改为cortex-A/R/M

M4处理器特性

ARMv7M架构

- Thumb-2 技术
- SIMD和DSP
- 单周期乘加指令 (支持32 x 32 + 64 -> )
- 可选配的单精度浮点运算单元
- 集成可配置的可嵌套矢量中断控制器NVIC
- 兼容Cortex-M3

微内核结构

- 带分支预测的三级流水线
- 3套AHB-Lite总线接口

可配置超低功耗

 深度睡眠模式,中断可唤醒
- 浮点运算单元可单独关闭电源

灵活配置

可配置中断控制器( 1~240个中断源可配置,优先级可配置)
- 可选配的内存保护单元 - MPU(Memory Protection Unit)
- 可选配的调试和跟踪模块

M4为扩展MCU应用范围而生

M4内核模块框图

核心及核心外设

 核心处理器CORE

 单精度浮点运算单元FPU

- Float Point Unit

 嵌套向量中断控制器NVIC

- Nested Vectored Interrupt Controller

 存储保护单元MPU

- Memory Protection Unit

 系统控制模块SCB

- System control block

 系统定时器

- Sysick

调试跟踪接口

闪存修补和断点(FPB)

 仪表跟踪(ITM)

 数据观察点与跟踪(DWT)

 跟踪点接口单元(TPIU)

 指令跟踪(ETM)

 JTAG调试接口(SWJ-DP) SW-DP调试接口(SW-DP)

总线接口

 AHB(Advanced High performance Bus)系统总线

 指令总线(Instruction Bus

 数据总线(Data Bus

 系统总线(System Bus

 APB(Advanced Peripheral Bus)外围总线

 PPBPrivate Peripheral Bus)私有外设总线

 总线矩阵(BusMatrix

M4内核

核心处理器:中央内核(包含DSP),

- 1.25DMIPS/MHz

- Thumb-2,单周期乘法累加(MAC)单元- 带可选配的单精度浮点运算单元

MIPS: Million Instructions executed Per Second,每秒百万条指令,用来计算同一秒内系统的处理能力,即每秒执行了多少百万条指令。DDhrystone的缩写,表示了在Dhrystone这样一种测试方法下的MIPSDhrystone是一种整数运算测试程序

M4内核外设

FPU

- 支持IEEE 754标准

- 集成了乘法和累加指令集- 乘除、累加和开放运算都有硬件支持- 三级流水线结构

 NVIC嵌套向量中断控制器–可配置的中断控制器

- 中断的具体路数由芯片厂商定义

- 采用向量中断的机制,自动取出对应的服务例程入口地

址,无需软件判定

- 支持中断嵌套- 1255优先级- NMI & SysTick

 内存保护单元MPU

- 选配模块

- 把内存分割成8个区域并进行保护- 非法访问将产生异常中断错误

 SCB系统控制模块

- 编程模型与处理器之间的接口

- 提供系统实现的信息和系统控制,包括异常的配置、控

制和报告

 SysTick定时器

- 倒计时定时器,用于在每隔一定的时间产生一个中断- 系统睡眠模式下也可工作

- OS系统心跳定时

M4调试跟踪接口

 SW-DP/SWJ-DP串行调试口和支持JTAG的串行调试口

- AHB访问端口(AHB-AP)协同工作,将SW-DP的外部调

试器命令转换成内部总线命令

- 处理器核心没有JTAG扫描链,多数调试功能通过AHB访问

来实现的

- SWJ-DP同时支持串行线协议和JTAG协议,而SW-DP只支持

串行协议

Flash硬件断点控制FPB

- FPB提供flash地址重载和断点功能

- 映射Flash上的指令地址, 当内核访问该指令时, 自动 跳转到FPB指定的指令(通常为SRAM上的地址),实现硬

件断点

仪器跟踪宏单元ITM

-  软件可以直接把控制台消息写到 ITM stimulus

口,从而把它们输出成跟踪数据。

-  DWT 可以产生硬件跟踪数据包,并通过ITM 把它们

输出。

-  ITM 可以产生时间戳数据包并插入到跟踪数据流中,

用于帮助调试器求出各事件的 发生时间。

 因为ITM 要使用跟踪端口来输出数据,所以芯片上必须有TPIU 单元,否则无法输出

数据观察跟踪单元DWT

- 可以设置数据观察点

- 当数据地址或数据的值匹配了观察点时,产生了一次匹

配命中事件

- 匹配命中事件用于产生一个观察点事件,激活调试器以 产生数据跟踪信息,或与ETM联动

内嵌跟踪宏单元ETM

- ETM与内核紧密耦合,可实现指令执行的历史记录跟踪。

- ETM 并不会一直精确地输出处理器当前正在执行的地址。

通常它只输出有关程序执行流的信息,并且只有在需要时才输出完整的地址(例如,当一个跳转发生时)。因为调试主机也有一份二进制映像的拷贝,它可以使用此拷贝来重建指令的执行序列。

- ETM 也与其它的调试组件互相交互。例如,它与DWT  比较器就有关系:DWT 的比较

- 器可用于产生ETM 的触发信号,或者控制跟踪的启动与

停止。

跟踪端口的接口单元TPIU
- 用于和外部的跟踪硬件(如跟踪端口分析仪)交互

  

CoreSight ROM

- 查找表,提供了系统包含哪些系统设备,调试组件,及

寄存器的地址

- 方便芯片厂商根据自己的配置自定义添加模块

- 调试软件根据这些模块来自适应不同的芯片调试资源

- CoreSight(内核景象)调试架构是ARM在推出Cortex 后推出来的,旨在丰富ARM产品的调试功能

总线互联矩阵BusMatrix

- AHB互连的网络

- 让数据在不同的总线之间并行传送 - 两个总线主机不访

问同一块内存区域

- 可支持bitbanding,实现按位操作一定的区域

 AHB to APB桥接器

- AHB总线转换到APB总线的桥接模块

- APB总线用于访问系统上的私有慢速总线外设设备,通常

为私有的调试模块

- 芯片厂商可附加其他的外设设备

AHB-AP桥接

- 用于桥接SW-DP/SWJ-DPAHB总线互联矩阵,从而发起 AHB访问

调试模式

- 第一种称为“halt”(停机模式),在进入此模式时,

处理器完全停止程序的执行。

- 第二种则称为“debug monitor exception”(调试监视 器模式),此时处理器执行相应的调试监视器异常服务 例程,由它来执行调试任务,此时依然允许更高优先级 的异常抢占它。

I-Code总线和D-Code总线

- 分别用于执行代码空间的指令和数据

System Bus

- 用于访问SRAM和其他外设

PPB

- 内部PPB用于访问ITMDWTFPBMPUNVIC

- 外部PPB用于访问TPIUETMROM

 

Code是否搬运到RAM中,主要看两点:

1flash的速度是否满足CPU要求,当前flash使用单双地址、预取等技术,可达到200M左右,当CPU速度小于200M时一般不需要搬运;

2、代码是对flash本身操作的,则必须搬运到RAM运行。

搬运过程如下:1、启动时,代码都存储在flash中,代码包含两

部分,一部分是可以直接在flash中运行的。一部分是必须在RAM中运行的CODE1(比如flash的擦写程序),此外flash中还包含一部分数据data,这部分数据有初始值;

2、启动后,在运行程序之前,需要将CODE1\DATA stack搬运到RAM中,同时在RAM中还要初始化一段区域DATA1,是初始化为0的数据区;

代码数据全部搬运,主要用于CPU频率到200M以上的情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/888289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式推理框架 xDit

1. xDiT 简介 xDiT 是一个为大规模多 GPU 集群上的 Diffusion Transformers(DiTs)设计的可扩展推理引擎。它提供了一套高效的并行方法和 GPU 内核加速技术,以满足实时推理需求。 1.1 DiT 和 LLM DiT(Diffusion Transformers&am…

资料文件夹转移工具5.2.3 |快速转移到D盘,释放C盘空间

这是一款支持将C盘的常用文件夹转移到其他磁盘分区的工具,提供仅变目录、复制资料和转移资料三种转移方式。该工具完全免费,单文件免安装,大小仅为546KB,非常适合需要释放C盘空间的用户。 大小:546KB 下载地址&#…

学习笔记052——Spring Boot 自定义 Starter

文章目录 Spring Boot 自定义 Starter1、自定义一个要装载的项目2、创建属性读取类 ServiceProperties3、创建 Service4、创建自动配置类 AutoConfigration5、创建 spring 工程文件6、将项目打成 jar 包7、jar 打包到本地仓库8、配置application.yml Spring Boot 自定义 Starte…

uniapp 自定义导航栏增加首页按钮,仿微信小程序操作胶囊

实现效果如图 抽成组件navbar.vue&#xff0c;放入分包 <template><view class"header-nav-box":style"{height:Props.imgShow?:statusBarHeightpx,background:Props.imgShow?:Props.bgColor||#ffffff;}"><!-- 是否使用图片背景 false…

node.js基础学习-express框架-静态资源中间件express.static(十一)

前言 在 Node.js 应用中&#xff0c;静态资源是指那些不需要服务器动态处理&#xff0c;直接发送给客户端的文件。常见的静态资源包括 HTML 文件、CSS 样式表、JavaScript 脚本、图片&#xff08;如 JPEG、PNG 等&#xff09;、字体文件和音频、视频文件等。这些文件在服务器端…

下载maven 3.6.3并校验文件做md5或SHA512校验

一、下载Apache Maven 3.6.3 Apache Maven 3.6.3 官方下载链接&#xff1a; 二进制压缩包&#xff08;推荐&#xff09;: ZIP格式: https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zipTAR.GZ格式: https://archive.apache.org/dist/…

单片机知识总结(完整)

1、单片机概述 1.1. 单片机的定义与分类 定义&#xff1a; 单片机&#xff08;Microcontroller Unit&#xff0c;简称MCU&#xff09;是一种将微处理器、存储器&#xff08;包括程序存储器和数据存储器&#xff09;、输入/输出接口和其他必要的功能模块集成在单个芯片上的微型…

C# winform非常好用的图表开源控件Scottplot

wifnorm自带的chart控件功能和性能都不太行&#xff0c;所以在网上搜索到了Scottplot开源图表控件。根据自己需要&#xff0c;将已经试验使用过的用法记录在这里 winform建议使用版本 Scottplot包版本&#xff1a;4.1.71 这个版本在winform中可以以控件形式直接拖拉到窗体中使…

Python 3 教程第33篇(MySQL - mysql-connector 驱动)

Python MySQL - mysql-connector 驱动 MySQL 是最流行的关系型数据库管理系统&#xff0c;如果你不熟悉 MySQL&#xff0c;可以阅读我们的 MySQL 教程。 本章节我们为大家介绍使用 mysql-connector 来连接使用 MySQL&#xff0c; mysql-connector 是 MySQL 官方提供的驱动器。…

Gooxi Eagle Stream 2U双路通用服务器:性能强劲 灵活扩展 稳定易用

人工智能的高速发展开启了飞轮效应&#xff0c;实施数字化变革成为了企业的一道“抢答题”和“必答题”&#xff0c;而数据已成为现代企业的命脉。以HPC和AI为代表的新业务就像节节攀高的树梢&#xff0c;象征着业务创新和企业成长。但在树梢之下&#xff0c;真正让企业保持成长…

UICollectionView在xcode16编译闪退问题

使用xcode15运行工程&#xff0c;控制台会出现如下提示&#xff1a; Expected dequeued view to be returned to the collection view in preparation for display. When the collection views data source is asked to provide a view for a given index path, ensure that a …

Gentoo Linux部署LNMP

一、安装nginx 1.gentoo-chxf ~ # emerge -av nginx 提示配置文件需更新 2.gentoo-chxf ~ # etc-update 3.gentoo-chxf ~ # emerge -av nginx 4.查看并启动nginx gentoo-chxf ~ # systemctl status nginx gentoo-chxf ~ # systemctl start nginx gentoo-chxf ~ # syst…

CQ 社区版 2024.11 | 新增“审批人组”概念、可通过SQL模式自定义审计图表……

CloudQuery 社区 11 月新版本来啦&#xff01;本月版本依旧是 CUG&#xff08;CloudQuery 用户组&#xff09;尝鲜版的更新。 针对审计模块增加了 SQL 模式自定义审计图表&#xff1b;在流程模块引入了“审批人组”概念。此外&#xff0c;在 SQL 编辑器、连接管理等模块都涉及…

做异端中的异端 -- Emacs裸奔之路4: 你不需要IDE

确切地说&#xff0c;你不需要在IDE里面编写或者阅读代码。 IDE用于Render资源文件比较合适&#xff0c;但处理文本&#xff0c;并不划算。 这的文本文件&#xff0c;包括源代码&#xff0c;配置文件&#xff0c;文档等非二进制文件。 先说说IDE带的便利: 函数或者变量的自动…

RDIFramework.NET CS敏捷开发框架 SOA服务三种访问(直连、WCF、WebAPI)方式

1、介绍 在软件开发领域&#xff0c;尤其是企业级应用开发中&#xff0c;灵活性、开放性、可扩展性往往是项目成功的关键因素。对于C/S项目&#xff0c;如何高效地与后端数据库进行交互&#xff0c;以及如何提供多样化的服务访问方式&#xff0c;是开发者需要深入考虑的问题。…

基于Pyside6开发一个通用的在线升级工具

UI main.ui <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>MainWindow</class><widget class"QMainWindow" name"MainWindow"><property name"geometry"&…

Redis(配置文件属性解析)

一、tcp-backlog深度解析 tcp-backlog是一个TCP连接的队列&#xff0c;主要用于解决高并发场景下客户端慢连接问题。配置文件中的“511”就是队列的长度&#xff0c;对联与TCP的三次握手有关&#xff0c;不同的linux内核&#xff0c;backlog队列中存放的元素&#xff08;客户端…

24.12.02 Element

import { createApp } from vue // 引入elementPlus js库 css库 import ElementPlus from element-plus import element-plus/dist/index.css //中文语言包 import zhCn from element-plus/es/locale/lang/zh-cn //图标库 import * as ElementPlusIconsVue from element-plus/i…

C++小问题

怎么分辨const修饰的是谁 是限定谁不能被改变的&#xff1f; 在C中&#xff0c;const关键字的用途和位置非常关键&#xff0c;它决定了谁不能被修改。const可以修饰变量、指针、引用等不同的对象&#xff0c;并且具体的作用取决于const的修饰位置。理解const的规则能够帮助我们…

在线家具商城基于 SpringBoot:设计模式与实现方法探究

第3章 系统分析 用户的需求以及与本系统相似的在市场上存在的其它系统可以作为系统分析中参考的资料&#xff0c;分析人员可以根据这些信息确定出本系统具备的功能&#xff0c;分析出本系统具备的性能等内容。 3.1可行性分析 尽管系统是根据用户的要求进行制作&#xff0c;但是…