Cortex-M0的内核架构

news2024/11/27 8:40:40

目录

Cortex-M 系列产品线

Cortex-M0结构框图

Cortex-M0特性

Cortex-M0工作模式

Cortex-M0工作状态

Cortex-M0的寄存器

Cortex-M0的中断和异常

Cortex-M0的指令集


Cortex-M 系列产品线

Cortex-M系列是由ARM(Advanced RISC Machines)开发的一系列32位微控制器(MCU)内核。以下是Cortex-M系列的一些常见产品线:

  1. Cortex-M0: 这是Cortex-M系列中的最基础、最低功耗的处理器内核。它适用于对成本和功耗要求极高的应用,如传感器、嵌入式控制器等。
  2. Cortex-M0+: Cortex-M0+是对Cortex-M0内核的改进版本,提供了更高的性能和更低的功耗。它特别适用于资源受限的应用,如物联网设备、传感器节点等。
  3. Cortex-M1: Cortex-M1是ARM的较早的FPGA(现场可编程门阵列)友好型内核,主要用于在FPGA上实现可编程逻辑控制器。
  4. Cortex-M3: Cortex-M3是一款功能更强大的处理器内核,具有更高的性能和更多的外设接口。它适用于需要较高计算能力和实时控制的应用,如工业自动化、汽车电子等。
  5. Cortex-M4: Cortex-M4在Cortex-M3的基础上增加了数字信号处理(DSP)扩展指令集和浮点单元(FPU),使其更适合于音频处理、图像处理和其他需要高性能数字信号处理的应用。
  6. Cortex-M7: Cortex-M7是Cortex-M系列中最强大的内核,具有更高的时钟频率和更高的性能。它适用于要求实时性和高计算能力的应用,如无人机、工业控制等。
  7. Cortex-M23: Cortex-M23是ARM推出的针对物联网设备和安全性设计的内核。它具有较低的功耗、较小的面积和较高的安全性,适用于需要高度安全性和低功耗的应用,如智能门锁、传感器网络等。
  8. Cortex-M33: Cortex-M33是在Cortex-M23的基础上增加了一些额外功能的内核,如TrustZone技术和数字信号处理(DSP)扩展指令集。它适用于对安全性要求更高的应用,如智能卡、安全传输设备等。

这些是Cortex-M系列的一些常见产品线,每个产品线都具有不同的特性和适用范围,可以根据具体应用的需求选择适合的处理器内核。

Cortex-M0结构框图

Cortex-M0 微处理器主要包括处理器内核、嵌套向量中断控制器(NVIC)、调试子系统、内部总线系统构成。

  1. 处理器内核
  2. 嵌套向量中断控制器(NVIC)
    1. NVIC的主要功能是接收和分发中断信号,并确定哪个中断具有优先级,并在适当的时候触发相应的中断服务程序(Interrupt Service Routine,ISR)。当多个中断同时发生时,NVIC通过优先级来确定哪个中断应该被处理。较高优先级的中断将立即中断正在执行的任务,而较低优先级的中断将等待。
    2. NVIC支持嵌套中断,这意味着当一个中断正在处理时,如果更高优先级的中断发生,处理器可以立即切换到更高优先级的中断服务程序,而不会中断正在执行的较低优先级的中断服务程序。一旦较高优先级的中断完成处理,处理器将返回到先前的中断服务程序继续执行。
  3. 调试子系统
    1. 调试子系统通常包含以下功能和工具:
      1. 调试器(Debugger):提供了一个交互式的开发环境,允许开发人员逐步执行程序、观察变量和数据、设置断点(Breakpoint)以及跟踪代码的执行流程。调试器能够帮助开发人员找到代码中的错误和问题,并对程序行为进行分析和调试。
      2. 分析工具(Analyzer):用于分析系统的行为和性能。这些工具可以帮助开发人员对系统进行性能优化、内存泄漏检测、代码覆盖率分析等。分析工具能够提供详细的报告和统计数据,帮助开发人员深入了解系统的性能和效率。
      3. 追踪器(Tracer):用于跟踪程序的执行过程和数据流动。追踪器可以记录程序执行的路径、函数调用关系、变量的取值等信息,以帮助开发人员理解程序的执行流程和数据交互,从而更容易地发现和解决问题。
      4. 监视器(Monitor):用于监测系统的状态和行为。它可以提供关于系统性能、资源利用情况、内存使用情况等方面的信息。监视器可以帮助开发人员了解系统的运行状况,识别性能瓶颈和资源消耗问题。
  4. 内部总线系统
    1. 嵌入式系统的内部总线系统是指用于在嵌入式设备内部连接各个组件和子系统的通信架构。内部总线系统允许不同的硬件模块相互通信和交换数据,以实现设备的功能。
    2. 内部总线系统通常由一组电子线路和协议组成,用于传输数据、控制信号和时序信息。这些线路和协议定义了数据传输的规则和格式,以确保各个组件之间的正确通信。
    3. 内部总线系统在嵌入式系统中扮演着关键的角色,它能够连接处理器、内存、输入/输出接口、传感器、执行器和其他外设等各种硬件模块。通过内部总线系统,这些模块可以相互协作,共享数据和资源,并实现系统的功能。
    4. 常见的嵌入式内部总线系统包括I2C(Inter-Integrated Circuit)、SPI(Serial Peripheral Interface)、CAN(Controller Area Network)、USB(Universal Serial Bus)等。这些总线系统在不同的嵌入式系统中具有不同的应用和特点,可以根据具体的需求选择适合的总线系统来设计和实现嵌入式设备。

Cortex-M0 微处理器通过精简的高性能总线(AHB-LITE)与外部进行通信

Cortex-M0特性

  1. 采用Thumb指令集 (ARM指令是32位的,而Thumb指令时16位的,如果存储空间中可以放32条ARM指令,就可以放64条Thumb指令,因此在存放Thunb指令时,代码密度高)
  2. 高性能,使用ARMv6-M的体系架构;
  3. 中断数量可配置1-32个,4级中断优先级。
  4. 门电路少,低功耗。中断唤醒控制器(WIC),支持极低功耗休眠模式。
  5. 兼容性好。与Cortex-M1 处理器兼容,向上兼容 Cortex-M3 和 Cortex-M4 处理器 ,可以很容易地升级、移植。
  6. 支持多种嵌入式操作系统,也被多种开发组件支持。

Cortex-M0工作模式

线程模式(Thread Mode):芯片复位后,执行用户程序

处理模式(Handler Mode):当处理器发生了异常或者中断,处理完成后返回线程模式

Cortex-M0工作状态

Thumb状态:正常运行时处理器的状态

调试状态:调试程序时处理器的状态

Cortex-M0的寄存器

  • R0-R12:13个通用寄存器
    • 其中 R0-R7为低端寄存器,可作为16位或32 位指令操作数,R8-R12为高端寄存器,只能用作32位操作数
  • R13:栈指针寄存器 SP(the stark pointer)
    • Cortex-M0 在不同物理位置上存在两个栈指针,主栈指针 MSP,进程栈指针 PSP。在处理模式下,只能使用主堆栈,在线程模式下,可以使用主堆栈也可以使用进程堆栈。 系统上电的默认栈指针是MSP。这样设计的目的是为了在进行模式转换的时候,减少堆栈的保存工作。同时也可以为不同权限的工作模式设置不同的堆栈。
  • R14:链接寄存器LR(the link register)
    • 用于存储子程序或者函数调用的返回地址
  • R15:程序计数器PC(the program counter register)
    • 存储下一条将要执行的指令的地址。
  • 特殊寄存器:组合程序状态寄存器xPSR,该寄存器由三个程序状态寄存器组成
    • 应用PSR(APSR):保存程序计算结果的状态标志
      • N负数标志
      • V溢出标志
      • C进位借位标志
      • Z零标志
    • 中断PSR(IPSR):包含当前ISR的异常编号
    • 执行PSR(EPSR):包含Thumb状态位
  • 控制寄存器:CONTROL
    • 控制处理器处于线程模式时,使用哪个堆栈
    • =0,使用MSP 处理器模式时,固定使用MSP
    • =1,使用PSP

Cortex-M0的中断和异常

中断(Interrupts): 中断是由外部事件引起的,它们可以是来自外设的信号,例如定时器到期、串口接收到数据等。

当中断事件发生时,处理器会立即停止当前执行的任务,并转而执行一个与该中断事件相关联的中断处理程序(Interrupt Service Routine,ISR)。ISR是一个预先定义的函数,用于处理特定的中断事件。一旦ISR执行完成,处理器会返回到先前中断发生的地方继续执行。

Cortex-M0支持多个中断优先级,并具有可编程的向量表(Vector Table),它包含了中断向量的地址。当中断事件发生时,处理器会从向量表中找到相应中断的地址,并跳转到ISR执行。

异常(Exceptions): 异常是指处理器在执行指令过程中检测到的错误或特殊事件。异常可以是由于程序错误(例如除以零或无效的指令)引起的,也可以是由硬件事件(例如存储器错误或外设错误)引起的。

Cortex-M0支持多种类型的异常,包括硬件中断、软件中断(通过软件指令触发)、错误中断等。当发生异常时,处理器会立即暂停当前任务,并跳转到一个预定义的异常处理程序(Exception Handler)。异常处理程序是与异常类型相关联的代码块,用于处理异常情况。一旦异常处理程序执行完成,处理器将返回到异常发生的地方继续执行。

Cortex-M0的指令集

ARM处理器支持两种指令集:ARM 和 Thumb。

注:EPSR寄存器的T标志位负责指令集的切换,Cortex-M0只支持Thumb指令。

  • ARM指令集
    • 32位精简指令集
    • 指令长度固定
    • 降低编码数量产生的耗费,减轻解码和流水线的负担;
  • Thumb指令集
    • Thumb指令集是ARM指令集的一个子集;
    • 指令宽度16位;
    • 与32位指令集相比,大大节省了系统的存储空间;
    • Thumb指令集不完整,所以必须配合ARM指令集一同使用

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

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

相关文章

宁德时代,冷暖自知口难言

作者 | 魏启扬 来源 | 洞见新研社 发布可以“上天”的凝聚态电池、落地能量密度160Wh/kg的钠离子电池、量产系统集成度全球最高的麒麟电池…… 宁德时代在上海车展前后密集发声,坚决捍卫着“宁王”的冠冕。 如果再结合不久前的2022年年报,全年307亿的…

六级备考23天|CET-6|写作技巧1|开头段模版

目录 1 考前注意事项 2 真题参考 3 六级作文三段式 第一段 第二段 第三段 4 名言解释型作文 5 开头段的模版 why 型 6 选择型开头模版 7 国内学校/出国读书 8 团队精神和交流 9 作业 10 抽象意志品质类开头 ​ 11 信任的重要性​ 1 考前注意事项 定位错误 常识干扰 拼凑…

【必读】解密Redis主从同步问题,避免数据不一致!

大家好,我是小米,一个热爱技术的程序员。今天,我要和大家聊一聊Redis中常见的一个问题——主从不一致。作为一款高性能的键值存储系统,Redis主从架构在分布式场景中被广泛应用。然而,由于Redis的特性以及配置不当等原因…

大内存分页用在什么场景下?

此内容可以作为你积累高并发处理技能的一个小小的组成部分。挖掘虚拟内存和内存管理单元更底层的工作原理,以及了解转置检测缓冲区(TLB)的作用。 了解如何通过内存,提升你的程序性能。什么情况下使用大内存分页? 这道…

【四】设计模式~~~创建型模式~~~建造者模式(Java)

【学习难度:★★★★☆,使用频率:★★☆☆☆】 4.1. 模式动机 无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、方向盘、发送机等各种部件…

【Web服务器集群】企业化架构部署

文章目录 前言一、LMAP架构介绍1.概念2.LAMP构建顺序3.LAMP编译安装4.各组件介绍4.1 Linux4.2 Apache4.3 MySQL4.4 PHP/Perl/Python 二、服务器部署1.Apache部署2.MySQL部署3.PHP部署4.安装论坛 前言 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整…

案例分享 | 纽扣电池石墨片厚度及缺陷检测

石墨片是一种导热散热材料,质轻柔软,能够轻松贴合在各种热源点,在新能源、航天、3C电子等领域应用广泛。 汽车钥匙中的纽扣电池也需要使用石墨片,石墨片会有统一的厚度标准,装配过程中表面不可避免地会出现裂纹、划痕…

数据结构与算法—排序算法篇

目录 1、选择排序 1.1、算法思想 1.2、步骤 1.3、算法实现 1.4、算法分析 2、 冒泡排序 2.1、算法思想 2.2、算法实现 2.3、算法分析 2.4、改进冒泡排序 3、插入排序 3.1、算法思想 3.2、算法实现 3.3、算法分析 4、希尔排序 4.1、算法思想 4.2、增长量选定规…

Auto-GPT 迈向智能体的第一步——从信息增强和上下文理解开始

Auto-GPT 的出现,意味着 AI 已经能够在没有人工干扰的情况下独立地完成目标任务。这个在 GitHub 中不断创造历史的项目,正以惊人的速度发展着、变化着。 这样前沿又带有科幻色彩的技术项目,引起了各方关注,开发者、投资人、媒体人…

《操作系统》by李治军 | 实验5.pre - switch_to 汇编代码详解

目录 【前言】 一、栈帧的处理 1. 什么是栈帧 2. 为什么要处理栈帧 3. 执行 switch_to 前的内核栈 4. 栈帧处理代码分析 二、PCB 的比较 1. 根据 PCB 判断进程切换与否 2. PCB 比较代码分析 三、PCB 的切换 1. 什么是 PCB 的切换 2. PCB 切换代码分析 四、TSS 内核…

ChatGPT再起争端,如何应对未来的机器挑战?速来学习解决方法!

AI孙燕姿事件 前些日子,“AI孙燕姿”一度火爆出圈。其实就是有网友使用人工智能技术,利用神似歌星孙燕姿的声音翻唱了不少歌手的代表作,并上传到社交平台上,而其翻唱作品的逼真程度是“甚至换气声都可以模仿”。随着“AI孙燕姿”翻…

你还不会AVL树吗?

AVL树 AVL树概念AVL树的插入结点定义插入流程左单旋右单旋左右双旋右左双旋 验证AVL树 AVL树概念 🚀AVL树是一颗平衡的二叉搜索树,所谓平衡是指左右子树的高度差的绝对值不超过1。所以一颗AVL树(如果不是空树)有以下性质&#xf…

2023 年的 Web Worker 项目实践

目录 前言 引入 Web Worker Worker 实践 Worker 到底有多难用 类库调研 有类库加持的 worker 现状 向着舒适无感的 worker 编写前进 1. 抽取依赖,管理编译和更新: 2. 定义公共调用函数,引入所打包的依赖并串联流程: 3. …

两种方法绘制笑脸(需要用到canvas标签)

两种方法绘制笑脸&#xff08;需要用到canvas标签&#xff09; 方法一&#xff1a; <!DOCTYPE html> <html><head lang"en"><meta charset"utf-8"><title>绘制笑脸-方法一</title></head><body><canv…

二开项目权限应用全流程

二开项目-权限应用全流程(人力资源类) addRoutes基本使用** 格式 **router.addRoutes([路由配置对象])**或者:this.$router.addRoutes([路由配置对象]) 改造代码 1 .在router/index.js中的路由配置中删除动态路由的部分 export const constantRoutes [{path: /login,comp…

【ChatGPT】如何入门GPT并快速follow当前的大语言模型LLM进展?

如何入门GPT并快速follow当前的大语言模型LLM进展? 自从去年chatGPT悄悄发布,OpenAI发布的GPT系列工作也变得炙手可热,而基于此,各家公司/实验室百家争鸣,纷纷发布自己的工作,可以说每天都有新的进展。 在当前的情况下,要如何入门GPT系列生成模型,并快速跟进SOTA进展…

SpringMVC一站式学习,分分钟钟让你上手

文章目录 一、SpringMVC1.1 引言1.2 MVC架构1.2.1 概念1.2.2 好处 二、开发流程2.1 导入依赖2.2 配置核心(前端)控制器2.3 后端控制器2.4 配置文件2.5 访问 三、接收请求参数3.1 基本类型参数3.2 实体收参【重点】3.3 数组收参3.4 集合收参 【了解】3.5 路径参数3.6 中文乱码 四…

突破障碍:数字化如何改变对外劳务行业

有没有一份工作是又高薪又能学英语又能环游世界&#xff1f;在小红书上一搜&#xff0c;就发现许多年轻人曾经有过“国际邮轮”工作的经历&#xff0c;打卡全球100城市、全方面的英文口语环境、一觉起来就是一个新的国家...而且还能赚钱&#xff1f;听上去真是令人向往的生活&a…

PoseiSwap 参赛,参与斯坦福、Nautilus Chain等联合主办的 Hackathon 活动

近日&#xff0c;由 Stanford Blockchain Accelerator、Zebec Protocol、 Nautilus Chain、Rootz Lab 共同主办的“ Boundless Hackathon Stanford ” 主题的黑客松活动&#xff0c;目前已接受报名。该活动旨在帮助更多的优质开发者参与到 Web3 世界的发展中&#xff0c;推动链…

自动化测试框架、Python面向对象以及POM设计模型简介

目录 1 自动化测试框架概述 2 自动化测试框架需要的环境 3 自动化测试框架设计思想&#xff1a;Python面向对象 4 自动化测试框架设计思想&#xff1a;POM&#xff08;Page Object Model&#xff09;页面对象模型 1 自动化测试框架概述 所谓的框架其实就是一个解决问题…