cortex-m3基础-概览

news/2024/12/12 11:18:58/文章来源:https://www.cnblogs.com/bliss-/p/18602063

  • 简介

cortex-m3是一个32位处理器内核:总线(数据、地址)宽度是32位、寄存器位宽是32位;内核结构为哈佛结构,拥有独立的数据总线和指令总线,可以并行进行指令执行和数据访问;

一、寄存器组

cortex-m3拥有R0-R15寄存器,其中R0-R12为通用寄存器

  • 通用寄存器

通用寄存器用于数据操作,绝大多数16位thumb指令只能访问R0-R7,32位Thumb指令可以访问所有的

  • Banked R13:MSP和PSP,两个堆栈寄存器,同一时刻只能使用其中一个,堆栈指针的低两位永远是0,堆栈总是4字节对齐的
    • 主堆栈寄存器(MSP):复位后缺省使用的堆栈寄存器,用于操作系统内核和异常处理例程(包含中断服务程序
    • 进程堆栈寄存器:由用户的应用代码使用
  • R14连接寄存器LR

当调用一个函数时,LR记录调用函数返回的地址,当调用关系超过两层时,则会一级一级将函数的返回地址压入栈中

  • R15程序计数寄存器PC

指向当前的程序运行地址

  • 特殊功能寄存器

 

二、操作模式和特权级别

  • 两种模式
    • handler模式:当检测到中断、异常时运行的模式
    • thread模式:用户应用程序运行
  • 特权级别
    • 特权级:处理器中比较高级的执行级别,可以执行任何指令、访问任何寄存器和存储器
    • 用户级:访问受限的存储器空间和和系统资源,无法执行系统级别指令

三、内建的嵌套向量中断控制器(NVIC)

  • 嵌套向量中断控制器负责管理微控制器的内部中断和外部中断请求,包含优先级管理、嵌套管理、使能禁用管理、挂起清除管理、向量表重定位管理。
  • 嵌套向量中断控制器缩短中断延时、使控制器的中断更加的灵活好用

四、存储器映射

五、总线接口

cortex-m3内部拥有多个总线接口,可以同时进行取址和访问内存

  • 指令存储总线(I-Code、D-Code):多code区的访问,负责代码运行时取指令和取数据
  • 系统总线:CPU对内存和外设的访问、包含数据访问、地址访问和控制
  • 外设总线:访问非共享的外设设备

六、存储器保护单元(MPU)

  • 可以根据实际需求对不同的内存区域增加不同的访问权限,当检测到访问越限时mpu会产生一个fault异常。
  • 可以利用MPU实现多进程系统,实现多个进程独享内存空间。
  • 可以将固定区域设定权限,保证数据访问的安全性和隐私性

七、指令集

cortex-m3只使用thumb-2指令集,既允许32位指令又允许16位指令。

  • 指令举例
    • UBFX,BFI,BFC;位段提取、插入、清零,支持C位段,简化外设寄存器的操作
    • CLZ,RBIT;计算前导指令和位反转指令
    • UDIV,SDIV;无符号除法和带符号除法
    • SEV,WFE,WFI;发送事件、等待事件和等待中断,可以用于多处理器之间的任务同步和休眠管理
    • MSR,MRS;访问特殊功能寄存器

八、中断和异常

  • CM3支持240条中断和11个内部异常,可以实现fault管理机制
  • CM3去掉了FIQ机制,但是使用NVIC能实现更好的FIQ功能
  • 支持NMI(不可屏蔽中断)输入引脚,当这个中断触发时,NMI服务例程会无条件执行

九、调试支持

  • cortex-m3提供了程序执行控制、暂停、单步执行、指令断点、数据观察、寄存器存储器访问等各种调试跟踪机制
  • 支持停机模式和监视器模式
  • 支持JTAG和SW两种主机调试接口,通过DAP与调试器进行通信
  • 支持调试信息输出,允许软件在运行时将控制台消息通过调试口输出
  • 支持对时钟周期、指令执行数、中断开销进行计数统计,有助于对系统的性能分析和优化

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

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

相关文章

渠道管理智慧:与新华三谈数字化革新与共赢策略

智算智存全能担当 新华三集团作为数字化解决方案领导者,致力于成为客户业务创新、数字化转型值得信赖的合作伙伴。作为紫光集团旗下的核心企业,新华三通过深度布局"云-网-算-存-端"全产业链,不断提升数字化和智能化赋能水平。新华三拥有计算、存储、网络、5G、安全、…

RocksDB 内存超限问题剖析

在使用 RocksDB 存储引擎的过程中,有部分开发者遇到了内存使用超出预期的情况。本文针对这一问题展开了深入分析,并提出了相应的解决方案和优化建议,提升系统性能和稳定性。作者:来自 vivo 互联网服务器团队- Zeng Luobin在使用 RocksDB 存储引擎的过程中,有部分开发者遇到…

20242822《Linux内核原理与分析》第十二周作业

缓冲区溢出漏洞实验 一、实验简介 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。 二、实验准备…

信而泰网络测试仪校准解决方案

一、影响仪表精度的因素 网络测试仪是用于对数据网络及其相关设备性能参数进行测试的仪表,可以模拟网络终端产生流量,进行网络性能测试,对网络状态进行实时监测,分析和统计。数字计量对于精准数据的网络测试仪来说是一剂强心针,它能促进网络测试仪的规范化、数据化、准确化…

京准电钟:计算机网络监控系统搭建NTP校时服务器

京准电钟:计算机网络监控系统搭建NTP校时服务器京准电钟:计算机网络监控系统搭建NTP校时服务器 京准电钟:计算机网络监控系统搭建NTP校时服务器 京准电钟官微——ahjzsz 我们都知道,对于监控设备来说,设备时间的统一和精准,是保障录像文件及日志可靠的关键。 虽然录像机、…

依靠 PROFINet 与 Modbus 协议让西门子 PLC 成功连接 RS485 接口变频器

在工业网络环境中,不同网络协议的沟通不畅是否曾让您倍感困扰?别担心,捷米特JM-RTU-PN 数据通讯模块横空出世,为您化解这一棘手难题!此模块专注于 PROFINet 网络与Modbus 网络间的数据交互,能够巧妙地将 RS485 网络接入西门子 PLC的PROFINet 网络架构之中,并且全面支持多…

广成CAN-485-西门子PLC调试

1,TBOX波特率500K, 2,信号解析

易基因:WGBS揭示Vpr蛋白在HIV-1感染中对CD4+ T细胞DNA甲基化变化的作用|项目文章

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 全球约有3800万HIV-1感染者,每年新增感染者约150万。HIV-1主要攻击CD4+ T细胞,导致其耗竭,最终发展为艾滋病和死亡。尽管抗逆转录病毒治疗有效抑制HIV-1复制,但由于病毒在潜伏感染细胞中的持续存在,这种病…

pandas中的groupby函数分组函数和 mean 求平均值函数

import pandas as pd #建一个集合有两列 一列是班级列;第二列是成绩列 data = {class: [A, A, B, B, B],score: [80, 90, 70, 85, 95]} # 使用熊猫库的DateFrame类 将上面两列数据 二维结构化 复制给df df = pd.DataFrame(data) #对df调用分组方法groupby,对其再取平均值 结果…

文案课程

促销要写的明显 -不要恶趣味 -谐音可以用于写文案 -数字描述文案是有必要的,清晰明显

转载:【AI系统】模型压缩基本介绍

随着神经网络模型的复杂性和规模不断增加,模型对存储空间和计算资源的需求越来越多,使得部署和运行成本显著上升。模型压缩的目标是通过减少模型的存储空间、减少计算量或提高模型的计算效率,从而在保持模型性能的同时,降低模型部署的成本。模型压缩的目标可以概括为以下几…

转载:【AI系统】SqueezeNet 系列

本文将介绍 SqueezeNet 系列网络,在轻量化模型这个范畴中,Squeezenet 是最早的研究。主要针对了一些组件进行轻量化。与以往的网络都只讲网络如何设计不同。SqueezeNext 则从硬件角度分析如何加速,从而更全面地了解网络结构的设计。 SqueezeNet 模型 SqueezeNet:是轻量化主…