首页 > 其他分享 >cortex-m3基础-概览

cortex-m3基础-概览

时间:2024-12-12 11:20:21浏览次数:4  
标签:中断 概览 访问 指令 cortex m3 寄存器

  • 简介

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与调试器进行通信
  • 支持调试信息输出,允许软件在运行时将控制台消息通过调试口输出
  • 支持对时钟周期、指令执行数、中断开销进行计数统计,有助于对系统的性能分析和优化

标签:中断,概览,访问,指令,cortex,m3,寄存器
From: https://www.cnblogs.com/bliss-/p/18602063

相关文章

  • 在STM32上运行KWS之三 模型搭建与训练测试
    此篇文章在2023年2月6日被记录搭建一个怎样的模型KWS模型结构属于比较简单的模型结构,但是为了少走弯路,我计划使用现成的结构,我从这个演示视频参考而来:点击我跳转,这个KWS项目运行在AT32F403上,其网络模型结构为一个64个特征的普通卷积层,然后重复四次的DS-CNN卷积,在每次卷积后都......
  • 在STM32上运行KWS之一 工作简述
    此篇文章在2023年2月1日被记录前景提要公司有一个新产品,产品定义上有一个很愚蠢的交互设计,耳机中有人打电话过来后,会有提示音播放是否接听,此时用户想要接听,随便说什么话都可以接通(甚至噪音都可以),如果不想接通就闭嘴,因此我来了兴趣,能否在单片机上运行简单的语音关键词识别简......
  • hal库点亮stm32f103c8t6最小板自带小灯
    hal库点亮stm32f103c8t6最小板自带小灯1.打开STM32CubeMX2.点击创建最小工程3.输入STM32F103C8T6,选中此芯片4.搜索框里面搜索PC13,这个是最小板上面自带的5.设置引脚模式6.创建命名工程,然后选择纯英文路径7.选择版本8.基本小配置9.生成工程代码,并打开......
  • STM32中使用低功耗定时器延时
    此篇文章在2022年5月19日被记录上文说了STM32L4的几种低功耗模式,将其应用起来作为一个低功耗的延时方案。为什么使用低功耗定时器,在追求长时间续航时,单片机有时需要切换到低功耗模式或者停止模式下,在这种模式下,系统主时钟关闭,有一些依赖于系统主时钟的应用程序,可能会发生出现......
  • STM32低功耗入门
    此篇文章在2022年5月19日被记录STM32低功耗介绍:STM32L4系列单片机总共有9中低功耗模式:1、Sleepmode:CPU时钟关闭,IO口保持与运行状态相同的状态。可由wake事件,NVIC,SysTick,外部中断等,无唤醒时间,唤醒后执行唤醒源中断回调函数(和标准库中断服务函数功能一样,但意义不同),然后按原来......
  • 基于STM32单片机的智能点滴输液报警器液位检测电机无线WiFi手机APP设计DR-01非接触液
    25-040-点滴检测+药水液位+电机控制+上下限+按键+声光提醒+TFT彩屏+WiFi产品功能描述:本系统由STM32F103C8T6单片机核心板、TFT液晶显示电路、无线无线WIFI/、点滴检测模块、步进电机控制电路、DR-01非接触液位传感器检测电路、蜂鸣器声光报警、按键电路、电源电路组成。【1......
  • STM32单片机芯片与内部13 TIM-通用定时器TIM2345 高级定时器TIM18-定时计数功能、库函
    目录一、通用定时器库函数工程模板1、TIM_TimeBaseInitTypeDef2、时钟3、初始化4、中断服务函数二、通用定时器库函数API1、初始化封装2、中断服务函数封装三、高级定时器库函数工程模板1、TIM_TimeBaseInitTypeDef2、时钟3、初始化4、中断服务函数四、高级定时......
  • STM32单片机芯片与内部12 TIM-基本定时器TIM67 -定时计数功能、库函数配置、HAL库配置
    目录一、功能二、库函数工程模板1、NVIC_InitTypeDef与TIM_TimeBaseInitTypeDef2、时钟使能3、初始化4、清除中断5、开启/关闭中断6、使能/失能计数器三、库函数API1、初始化的封装2、中断服务函数四、HAL库工程模板1、TIM_HandleTypeDef2、TIM_MasterConfigType......
  • 教你用FFmpeg音视频命令行工具轻松转换视频格式,以及合并带m3u8文件的片段视频成一个完
    FFmpeg的下载与安装FFmpeg打开上面的网址,直接点击下载按钮(Download)跳转以后请选择自己的平台然后再下载,我这里以Windows为例,下面的两个下载哪个都行,我就以第一个为例(第二个要跳转到github可能更慢)点击第一个进来后点击左边的releasebuilds,然后点击如图的zip文件下载,下载......
  • 分享一个对STM32 ADC单次转换模式、连续转换模式扫描模式的理解
    目录不启动SCAN模式在单次转换模式下:启动SCAN模式下在连续转换模式下此随笔出自对STM32ADC单次转换模式、连续转换模式扫描模式的理解举例用ADC1规则通道的顺序为CH0,CH1,CH2,CH3不启动SCAN模式在单次转换模式下:启动ADC1,则1.开始转换CHO(ADCSQR的第一通道)2.转换完成......