第二章编程模型(Cortex-M7 Processor Programmers Model)

news2024/11/26 8:43:38

第二章编程模型

本章描述了程序员模型。它包含以下部分:

  • 关于2-2页的程序员模型。
  • 2-3页的操作和执行方式。
  • 指令集摘要见第2-4页。
  • 系统地址映射在2-5页。
  • 2-8页的独家监视器。
  • 处理器核心寄存器在第2-9页。
  • 例外情况见第2-10页。

2.1关于编程模型

本章概述了描述实现定义选项的Cortex-M7处理器程序员模型。此外:

  • 第三章总结了编程模型的系统控制特性。
  • 第六章总结了编程模型的MPU特点。
  • 第七章总结了编程模型的NVIC特征。
  • 第8章总结了编程模型的FPU特性。
  • 第9章总结了编程模型的调试特性。
  • 第10章总结了编程模型的CTI特征。
  • 第11章总结了编程模型的DWT特性。
  • 第12章总结了编程模型的ITM特性。

 2.2操作和执行方式

本节简要介绍Cortex-M7处理器的操作和执行模式。有关更多信息,请参阅Arm v7-M架构参考手册。

2.2.1操作模式

处理器支持Thread模式和Handler模式两种操作模式:

  • 处理器在复位或异常返回时进入线程模式。特权和非特权代码可以在线程模式下运行。
  • 处理器由于出现异常而进入Handler模式。所有代码都享有特权演技时尚。

2.2.2操作状态

处理器可以在两种工作状态下工作:

  • 拇指的状态。这是运行16位和32位半字对齐Thumb指令的正常执行。
  • 调试状态。这是处理器停止调试时的状态。

2.2.3特权访问和非特权用户访问

代码可以以特权或非特权的方式执行。非特权执行限制或排除对某些资源的访问。特权执行可以访问所有资源。处理程序模式总是特权的。线程模式可以是特权模式或非特权模式。

2.3指令集汇总

处理器实现了ARMv7-M指令集和ARMv7E-M架构配置文件提供的特性。有关ARMv7-M指令的更多信息,请参阅《Arm v7-M架构参考手册》。

2.3.1与其他Cortex处理器的二进制兼容性、

该处理器与其他Cortex-M配置文件处理器中实现的指令集和功能具有二进制兼容性。您不能将软件从Cortex-M7处理器移动到:

  • Cortex-M3处理器,如果它包含浮点运算或指令,是DSP扩展的一部分,如SADD16。
  • Cortex-M4处理器,如果它包含双精度浮点操作。
  • Cortex-M0或Cortex-M0+处理器,因为它们是ARM6-M架构的实现。

为Cortex-M3和Cortex-M4处理器设计的代码与Cortex-M7处理器兼容,只要它不依赖于比特带。

为了确保将软件迁移到Cortex-M7处理器时的平稳过渡,Arm建议设计用于在Cortex-MO、MO+、M3和M4处理器上运行的代码遵循以下规则,并适当配置配置和控制寄存器(CCR):

  • 使用字传输只访问NVIC和系统控制空间(SCS)中的寄存器。
  • 将处理器上所有未使用的SCS寄存器和寄存器字段视为不修改。
  • 请在CCR中配置以下字段:
  1. STKALIGN位到1。
  2. UNALIGN_TRP位为1。
  3. 在CCR寄存器中保留所有其他位的原始值。

 2.4系统地址映射

处理器包含一个内部总线矩阵,它仲裁处理器和外部AHBD存储器对外部存储器系统以及内部sc和调试组件的访问。

优先级总是给予处理器,以确保任何调试访问都尽可能是非侵入性的。

系统地址映射如图2-1所示。

 表2-1显示了由不同内存映射区域寻址的处理器接口。

 2.4.1专用外围总线

内部PPB接口提供以下访问:

  • 仪表跟踪宏单元(ITM)。
  • 数据观察点和跟踪(DWT)。
  • 断点单元(FPB)。
  • SCS,包括MPU,指令和数据缓存,以及嵌套矢量中断控制器(NVIC)。
  • 处理器和PPB ROM表。

外部PPB接口提供访问:

  • 嵌入式跟踪宏单元(ETM)。
  • CTI (Cross Trigger Interface)接口。
  • CoreSight调试和跟踪外部系统中的组件。

2.4.2跨区域的非对齐访问

Cortex-M7处理器支持ARMv7非对齐访问,并将所有访问作为单个非对齐访问执行。它们在内部被转换成两个或多个对齐的访问,并在处理器的外部接口上执行。

请注意:

所有Cortex-M7处理器外部访问都是对齐的。

未对齐支持仅适用于加载/存储单(LDR, LDRH, STR, STRH)。加载/存储双精度已支持字对齐访问,但不允许其他未对齐访问。

如果尝试这样做,就会产生错误。

跨内存映射边界的未对齐访问在体系结构上是不可预测的。处理器行为依赖于边界。不支持对PPB空间的不对齐访问,所以PPB访问不存在跨界情况。

2.5独家监控

Cortex-M7处理器实现了一个本地独占监视器。有关信号量和本地独占监视器的更多信息,请参阅Arm*v7-M架构参考手册。

处理器中的本地监视器被构造成不包含任何物理地址。相反,它将任何访问视为匹配前一个LDREX指令的地址。这意味着实现的独占保留颗粒(ERG)是整个内存地址范围。

2.6处理器核心寄存器

处理器有以下32位寄存器:

  • 13个通用寄存器,RO-R12。
  • 堆栈指针(SP), R13银行寄存器的别名,SP_process和SP_main。
  • 链接寄存器(Link Register, LR), R14。程序计数器(PC), R15。
  • 专用程序状态寄存器(xPSR)。

有关处理器寄存器集的更多信息,请参阅Arm*v7-M架构参考手册。

2.7异常

处理器和NVIC优先处理所有异常。处理异常时:

  • 所有异常都以Handler模式处理。
  • 处理器状态在异常时自动存储到堆栈中,并在中断服务程序(ISR)结束时自动从堆栈中恢复。
  • 矢量与状态保存并行获取,从而实现高效的中断进入。

处理器支持尾链,它支持背靠背中断,而不需要状态保存和恢复的开销。

在实现过程中,您可以配置中断的数量和中断优先级级别。软件可以选择只启用中断配置数量的一个子集,并可以选择使用多少个配置优先级。

请注意

EPSR。T位支持Arm架构互连模型,但是,由于ARMv7-M只支持执行Thumb指令,因此必须始终将其值保持为1。这意味着所有异常向量必须设置位[0]。如果在异常项上相关向量表项的位[0]被设置为0,则执行第一条指令会导致INVSTATE UsageFault。如果在重置时发生这种情况,则会升级为HardFault,因为在重置时禁用了UsageFault。

2.7.1异常处理

无论是TCM接口、AXIM接口还是AHB接口的外部读错误,都会在处理器中产生同步异常。外部写错误在处理器中产生异步异常。

处理器实现了高级异常和中断处理,如Arm*v7-M架构参考手册中所述。

除了架构定义的行为之外,处理器异常模型还具有以下实现定义的行为:

从HardFault到NMI锁定在NMI优先级上的堆叠异常。

从NMI解除堆叠到HardFault锁定的异常,优先级为HardFault。

为了最小化中断延迟,处理器可以在识别中断时放弃正在执行的大部分多周期指令。唯一的例外是来自Device或强排序内存的加载,或者在AXI接口上启动的共享存储独占操作。当中断被识别时,所有正常的内存事务将被放弃。

处理器从中断返回时重新启动任何被放弃的操作。处理器还实现了可中断-可持续位,允许加载和存储多个可中断和可持续。在这些情况下,处理器在最后一次完成传输后恢复这些指令的执行,而不是从头开始。有关可中断可持续位和密钥限制的更多信息,请参阅Arm v7-M架构参考手册。

具体来说,在Cortex-M7处理器上,这些指令总是重新启动而不是继续:

  • 指令错误。
  • 该指令位于If-Then (IT)块中。
  • 该指令是一个加载倍数,在列表中有基寄存器,并且已经加载了基寄存器。
  • 该指令是一个负载倍数,并受到ECC错误的影响。

 

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

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

相关文章

力扣题目解析:生成奇数个字符的字符串的巧妙方法

本篇博客会讲解力扣“1374. 生成每种字符都是奇数个的字符串”的解题思路,这是题目链接。 这道题的解题思路很巧妙,它利用了字符串长度n的奇偶性: 如果n是奇数,那么就把字符串全部填充为’a’,这样每种字符都是奇数个…

posix ipc之共享内存

note 1.shm_open的pathname不能带路径名&#xff0c;shm_open的创建目录为/dev/shm 2.使用ftruncate设置内核共享内存实例的大小 3.使用mmap进行有名映射(实例反应在文件系统的一个文件) code #include <sys/mman.h> #include <sys/stat.h> #include <fcntl…

【动手学习深度学习--逐行代码解析合集】16深度卷积神经网络(AlexNet)

【动手学习深度学习】逐行代码解析合集 16深度卷积神经网络&#xff08;AlexNet&#xff09; 视频链接&#xff1a;动手学习深度学习–深度卷积神经网络&#xff08;AlexNet&#xff09; 课程主页&#xff1a;https://courses.d2l.ai/zh-v2/ 教材&#xff1a;https://zh-v2.d2…

网络安全与防范

1.重要性 随着互联网的发达&#xff0c;各种WEB应用也变得越来越复杂&#xff0c;满足了用户的各种需求&#xff0c;但是随之而来的就是各种网络安全的问题。了解常见的前端攻击形式和保护我们的网站不受攻击是我们每个优秀fronter必备的技能。 2.分类 XSS攻击CSRF攻击网络劫…

瑞萨RFP工具使用问题总结

最近在用瑞萨的RH850&#xff0c;需要用到瑞萨提供的刷新工具RFP&#xff08;Renesas Flash Programmer&#xff09;&#xff0c;但是总是遇到一些问题&#xff0c;除了一些能够在官网上找到答案的问题&#xff0c;还遇到了其他各种各样的问题&#xff0c;这里记录一下问题和对…

【问题分析解决】git添加.gitignore后不生效问题

一&#xff0c;问题现象 在已经提交过的git管理的项目中&#xff0c;新增加一个.gitignore文件&#xff0c;或者修改.gitignore文件之后&#xff0c;新增的内容不生效。 二&#xff0c;问题原因 因为我们误解了.gitignore文件的用途&#xff0c;该文件只能作用于Untracked F…

AI图像生成无需API开发连接集简云数据表,实现生成图片自动同步能力

1 场景描述 人工智能的出现&#xff0c;各个领域都开始尝试将AI作为提高工作效率的必备工具。除了AI对话等&#xff0c;越来越多的AI图像生成工具也出现在市场上。这些AI图像生成工具可以自动创建惊人的图像、艺术作品和设计&#xff0c;从而帮助设计师和创意人员更快速地实现其…

工业交换机网管运维方案

工业交换机设备商对网管的需求 对工业交换机设备提供商来说&#xff0c;如下几个因素都是需要面对的&#xff1a; 最终客户的需要&#xff1a; 网络和工业交换机设备的可管理性&#xff0c;已经被越来越多的最终用户所重视&#xff0c;在设备采购中&#xff0c;多数时候甚至是…

电脑内存错误怎么办?

内存是电脑的基本配件之一&#xff0c;一款电脑的内存大小能够在一定程度上决定这款电脑的性能。我们在使用电脑的过程中总会出现一些关于内存大大小小的问题&#xff0c;其中电脑提示内存错误的原因是什么?电脑内存错误怎么解决呢? 内存错误的原因 电脑的很多故障往往都会反…

面试题更新之-本地存储是什么?

文章目录 本地存储是什么Cookiesjs中如何使用Cookies localStoragejs中如何使用localStorage sessionStoragejs中如何使用sessionStorage 本地存储是什么 本地存储是指将数据保存在用户的本地设备上&#xff0c;以供后续使用和访问。通过本地存储&#xff0c;网页和应用程序可…

Day2 图连通

A - PRO-Professor Szu 简单的来说就是 缩点、反图拓扑。 需要注意不与 n 1 n1 n1 联通的点可能会使得一些点的入度无法为 0 而无法入队&#xff0c;消除这些点的影响即可。 当时写的&#xff1a; D - BLO-Blockade 非割点&#xff1a; 2 ( n − 1 ) 2(n-1) 2(n−1)。 …

【环信集成教程】环信的那些”已读“功能实现及问题解决

写在前面 在调用环信的消息回执时&#xff0c;是否有以下的烦恼 1、发送了消息已读回执&#xff0c;为什么消息列表页的未读数没有发生变化&#xff1f; 2、发送了消息已读回执&#xff0c;为什么消息漫游拉取不到已读状态&#xff1f; 如果你有这些烦恼&#xff0c;那就继续…

大量SDK设备接入时,如何巧妙配置EasyCVR平台参数?

EasyCVR视频融合平台可支持海量视频的轻量化接入与汇聚管理。在视频能力上&#xff0c;EasyCVR可实现视频直播、录像、回放、检索、云存储、告警上报、语音对讲、电子地图、集群、智能分析以及平台级联等。平台支持多协议接入&#xff0c;包括国标GB28181、RTMP、RTSP/Onvif、海…

【QT/OpenCV】QT实现张正友相机标定

相机标定 01、相机标定02、OpenCV函数及其张正友标定法2.1、相机标定步骤2.2、相机标定相关函数2.2.1 提取角点--- findChessboardCorners2.2.2 亚像素角点提取1--- find4QuadCornerSubpix2.2.3 亚像素角点提取2--- cornerSubPix2.2.4 绘制内角点 --- drawChessboardCorners2.2…

操作系统复习(非抢占式的优先数调度算法)

今天在写题目的时候遇到了一个问题&#xff0c;在非抢占式的优先数调度算法中&#xff0c;存在一种情况。优先级相同&#xff0c;并且同时到达&#xff0c;这种情况下&#xff0c;短作业优先。例如&#xff1a; 这种情况下&#xff0c;调度顺序为&#xff1a;P1、P2、P4、P3。

终极实时测试工具:NCrunch 4.17 for vs19-22 Crack

适用于 .NET 的终极实时测试工具 在编码时以内联方式查看实时测试结果和指标。 Visual Studio 的自动并发测试 NCrunch 是一个全自动测试扩展&#xff0c;旨在使编码和测试变得轻而易举。 忘记停下来运行测试&#xff0c;让 NCrunch 为您完成工作。 以您认为的速度编码和测试…

记录一个AFR去嵌S参数异常的案例。

最近在使用AFR去嵌一个S参数的时候&#xff0c;遇到了如下问题&#xff1a; 首先介绍一下这个S参数&#xff0c;一端是MCIO连接器&#xff0c;另一端是CEM连接器&#xff0c;所以测试的时候一端接MCIO测试治具&#xff0c;一端接CEM测试治具&#xff0c;再通过线缆将测试治具连…

c++--继承

1.什么是继承 C有面向对象三大特性&#xff0c;封装&#xff0c;继承&#xff0c;多态&#xff0c;封装。而继承就是代码可以复用的重要手段。他可以让程序员在原有类的基础上进行扩展&#xff0c;增加功能&#xff0c;产生新的类&#xff0c;称为子类或派生类&#xff0c;继承…

【监控系统】Prometheus监控组件Node-Exporter配置实战

这一节&#xff0c;我们来配置一下Node-Exporter&#xff0c;那么我们先来了解一下什么是Prometheus的Exporter&#xff1f; 任何向Prometheus提供监控样本数据的程序都可以被称为一个Exporter&#xff0c;它是一种用于将不同数据源的指标提供给Prometheus进行收集和监控的工具…