合肥高端网站建设公司/百度网页版登录首页
目录
- 实现 CM3
- 流水线
- CM3 详细框图
- CM3 总线接口
- 总线连接模板
- 异常
- 异常类型
- 优先级定义
- 优先级组
- 向量表
- 中断输入于挂起
- NMI
- 中断挂起
- Fault 类异常
- 总线 faults
- 存储器管理 faults
- 用法 faults
- SVC 与 PendSV
实现 CM3
流水线
CM3 处理器使用 3 级流水线,分别是:取指,解码和执行
CM3 有时候会一次取出两个 16 位指令(合计 32 位指令),先处理一个然后等一个周期后再处理下一个
处于对 Thumb 兼容性考虑,取 PC 时,会返回当前指令地址+4 值
处理器内核预取单元有一个指令缓冲区
,让后续执行的指令在这里排队
CM3 详细框图
缩写 | 含义 |
---|---|
NVIC | 嵌套向量中断控制器 |
SYSTICK Timer | 一个简易的周期定时器,用于提供时基,亦被操作系统所使用 |
MPU | 存储器保护单元(可选) |
CM3BusMatrix | 内部的 AHB 互连 |
AHB to APB | 把 AHB 转换为 APB 的总线桥 |
SW-DP/SWJ-DP | 串行线调试端口/串行线 JTAG 调试端口。通过串行线调试协议或者是传统的 JTAG 协议(专用于 SWJ-DP),都可以用于实现与调试接口的连接 |
AHB-AP AHB | 访问端口,它把串行线/SWJ 接口的命令转换成 AHB 数据传送 |
ETM | 嵌入式跟踪宏单元(可选组件),调试用。 用于处理指令跟踪 |
DWT | 数据观察点及跟踪单元,调试用。这是一个处理数据观察点功能的模块 |
ITM | 仪器化跟踪宏单元 |
TPIU | 跟踪单元的接口单元。所有跟踪单元发出的调试信息都要先送给它,它再转发给外部跟踪捕获硬件的 |
FPB Flash | 地址重载及断点单元 |
ROM 表 | 一个小的查找表,其中存储了配置信息 |
CM3 处理器中各个重要模块介绍:
- CM3Core:CPU
- NVIC:支持中断嵌套,向量中断机制可以在中断发生时,自动取出对应服务例程的入口地址
- SysTick 定时器:在 NVIC 内部实现,可以每隔一定时间产生中断,即便系统睡眠也可以工作
- 存储器保护单元:把存储器划分为多个区进行保护
- BusMatrix:CM3 总线核心,通过他让数据在不同总线间传输
- AHB to APB Bridge:总线桥,把多个 APB 设备连接到私有外设总线
- SW-DP/SWJ-DP:串行调试
- AHB-AP:无
- ETM 嵌入式跟踪宏单元:实时指令跟踪,
- DWT 数据观察点及跟踪单元:通过其设置数据观察点
- ITM 仪器化追踪宏单元:无
- FPB:提供 flash 地址重载与断点功能
CM3 总线接口
I-Code 总线
一条 32 位总线,进行取指操作
D-Code 总线
一条 32 位总线,进行数据访问操作,连接到该总线的设备不需要支持非对齐访问
系统总线
负责数据传送,他们都是对齐的
外部私有外设总线
基于 APB 协议的 32 为总线,负责私有外设访问
调试访问端口总线
专用于挂接调试接口
总线连接模板
异常
异常类型
编号为 1-15 的对应系统异常,大于等于 16 的则全是外部中断
中断不等于异常
15 个可用的系统异常表
优先级定义
优先级的数值越小,则优先级越高。
CM3 支持中断嵌套,使得高优先级异常会抢占(preempt)低优先级异常
三个特殊的系统异常:复位,NMI 以及硬 fault
,它们有固定的优先级,并且它们的优先级号是负数,从而高于所有其它异常
CM3 还把 256 级优先级按位分成高低两段,分别称为抢占优先级和子优先级
NVIC 中有一个寄存器保存优先级组,他把优先级分为两段:
MSB 所在的位段对应抢占优先级; LSB 所在的位段对应子优先级
优先级组
CM3 支持 8 个不同的中断优先级,通常被分成 4 个优先级组
CM3 中断优先级组分配的四种主流方式:
Preemptive Priority Grouping (0 位抢占优先级组)
:
这种模式下,优先级分组被禁用,所有中断的优先级都是唯一的。优先级值高的中断总是可以打断正在执行的优先级值低的中断。这是最简单的中断优先级模式,但在复杂的应用中可能不够灵活。
No Preemptive Priority Grouping (4 位抢占优先级组)
:
这种模式下,中断被分为 4 个优先级组,每组内有 2 个优先级。每个组的中断不会互相打断,但是一个组内的高优先级中断可以打断低优先级中断。这提供了一定程度的分层和优先级控制。
Priority Grouping (3 位抢占优先级组)
:
这种模式下,中断被分为 8 个优先级组,每组内有 1 个优先级。这意味着每个中断都有唯一的优先级,没有中断会被其他中断完全屏蔽。这提供了更精细的优先级控制,但在复杂应用中可能需要更多的配置。
Priority Grouping (2 位抢占优先级组)
:
这种模式下,中断被分为 16 个优先级组,每组内有 1 个优先级。与上述模式相比,这种模式提供了更大的灵活性,但配置会更加复杂。
向量表
Cortex-M3
处理器使用中断向量表来管理不同中断的入口地址。
中断向量表是一个存储了中断处理程序地址的数组,每个元素对应一个特定的中断号。
当中断发生时,处理器会根据中断号从向量表中读取对应的地址,然后跳转到相应的中断处理程序。
中断向量表通常位于内存的起始地址处。向量表中的每个元素都是一个 4 字节(32 位)的地址,指向对应中断的处理程序
可以在 SRAM 中开出一块空间用于存储向量表
中断输入于挂起
NMI
NMI(Non-Maskable Interrupt,非屏蔽中断)是一种特殊类型的中断,在嵌入式系统中常用于处理一些紧急和重要的事件。与普通的可屏蔽中断不同,NMI 是无法被屏蔽或阻止的中断,即使处理器处于屏蔽中断状态(例如,全局中断被禁用),NMI 仍然可以触发。
当 NMI 发生时,处理器会跳转到 NMI 处理程序的入口地址执行相应的操作
中断挂起
中断输入脚置位有效后,他就被挂起,此时无法撤销中断请求
若在中断得到响应前消除挂起状态,则中断被取消
中断服务例程开始执行时,其挂起状态会被硬件自动清除
中断源一直维持中断请求信号,则该中断再完成一轮服务历程后又会被立刻赋予挂起状态进行下一轮
中断源以脉冲的形式发送 N 多个中断请求信号,最终只会接受一个
Fault 类异常
总线 faults
该 fault 可能产生的情况:
- 当 AHB 接口上正在传送数据时,回复了一个错误信号
- 在处理器启动中断服务序列(sequence)后读取向量时
- 中断处理起始阶段的堆栈 PUSH 动作
- 中断处理收尾阶段的堆栈 POP 动作
总线 fault 一旦检测到更高优先级异常,就会先执行后者,自己就挂起
总线 fault 是被某同级或更高优先级异常的服务例程引发的,则会变成硬 fault,使得最后执行的是硬 fault 的服务例程
欲使能总线 fault 服务例程前,总线 fault 服务例程的入口地址必须已经在向量表中配置好
总线 fault 状态寄存器(BFSR)
位于 NVIC 内部,可以找出产生 fault 的原因
存储器管理 faults
触发该 faults 的原因有如下四点:
- 访问了所有 MPU regions 覆盖范围之外的地址
- 访问了没有存储器与之对应的空地址
- 往只读 region 写数据
- 用户级下访问了只允许在特权级下访问的地址
MemManage fault 被除能,则会上访成硬 faults
若该硬 faults 执行时又导致了 MemManage fault,则内核被锁定
MemManage fault 必须被使能才能正常响应
用法 faults
用法 faults 一个重要的功能是:
执行了协处理器指令。Cortex-M3 本身并不支持协处理器,但是通过 fault 异常机制,可以建立一套“软件模拟”的机制,来执行一段程序模拟协处理器的功能
其余功能以及使能除能啥的情况和存储器 faults 基本一致,在这里不做过多介绍
导致用法 faults 最常见的原因是:视图切入 ARM 状态
SVC 与 PendSV
OS 不允许用户直接操作硬件,故出现了对应的桥梁 SVC(系统服务调用)
SVC 可以这样定义:
操作系统提供系统服务函数,用户通过 SVC 对这些函数发出请求,并以此来间接控制硬件
SVC 异常可以通过执行 SVC 指令来产生;
SVC 指令需要一个立即数,充当系统调用代号
PendSV 和 SVC 作用一致,只不过他可以被挂起
PendSV 异常处理程序通常会保存当前任务的上下文,并加载下一个任务的上下文,从而实现任务切换
PendSV 的任务优先级较低,故可以被许多高优先级例程打断
相关文章:

【Cortex-M3权威指南】学习笔记4 - 异常
目录 实现 CM3流水线CM3 详细框图CM3 总线接口总线连接模板 异常异常类型优先级定义优先级组 向量表中断输入于挂起NMI中断挂起 Fault 类异常总线 faults存储器管理 faults用法 faults SVC 与 PendSV 实现 CM3 流水线 CM3 处理器使用 3 级流水线,分别是:…...

RISC-V(2)——特权级及特权指令集
目录 1. 特权级 2. 控制和状态寄存器(CSR) 2.1 分类 2.2 分析 1. 特权级 一个 RISC-V 硬件线程(hart)是运行在某个特权级上的,这个特权级被编码到一个或者多个 CSR(control and status register&a…...

Linux——常用命令大汇总(带你快速入门Linux)
纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。 💬文章目录 一.终端和shell命令解析器终端和shell命令解析器概述终端提示符的格式常用快捷键 二.Linux命令格式帮助文档:man 三.目录基础知识Wind…...

记录 使用 git 克隆仓库报错:Warning: Permanently added‘github.com’ to the .....(ssh )
解决方法: 1. 新建空文件夹->右键->点击 Git Bash Here2. 输入 cd C:3. 输入 cat ~/.ssh/id_rsa.pub4. 输入 ssh-keygen重复回车,生成一个矩形,则说明公钥已经生成了。重复步骤3,生成publickey,右键…...

kafka---- zookeeper集群搭建
1.准备工作: ##准备3个节点,要求配置好主机名称,服务器之间系统时间保持一致 ##注意/etc/hostname 和/etc/hosts 配置主机名称(在这个里我准备Prac-zk-133, Prac-zk-134 , Prac-zk-135二节点) vim /etc/hosts #保证可以通过主机名互通 添加格式为IP 主…...

linux安装firefox
1.下载对应包 https://www.mozilla.org/en-US/firefox/all/#product-desktop-release 2. 挂载桌面链接(如果/usr/bin/firefox下有的话,先删除) ln -s /opt/firefox/firefox /usr/bin/firefox 3.执行以下命令,即可启动Firefox客户端: firefox...

【MySQL】基础语法总结
MySQL 基础语句 一、DDL 数据库定义语言 1.1CREATE 创建 1.1.1 创建数据库 语法结构 CREATE DATABASE database_name;示例 CREATE DATABASE demo;1.1.2 创建表 语法结构 CREATE TABLE 表名 (列1 数据类型,列2 数据类型,... );示例 CREATE TABLE new_user (id INT PRIMARY KE…...

【玩玩Vue】使用el-menu作为菜单时,通过一二级路由控制菜单高亮
原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、Vue路由二、路由一级控制高亮(常用)1.vue中路由文件2.网址样式3.Vue文件4.$route的内容 三、路由二级控制高亮…...

9.2 【C语言】使用结构体数组
一个结构体变量中可以存放一组有关联的数据(如一个学生的学号、姓名、成绩等数据),如果有10个学生需要参加运算,显然应该用数组,这就是结构体数组。 9.2.1 定义结构体数组 例9.3 有三个候选人,每个选民只…...

leetcode原题: 最小值、最大数字
题目1:最小值 给定两个整数数组a和b,计算具有最小差绝对值的一对数值(每个数组中取一个值),并返回该对数值的差 示例: 输入:{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8} 输出:3&…...

Prompt2Model: Generating Deployable Models from Natural Language Instructions
本文是LLM系列文章,针对《 Prompt2Model: Generating Deployable Models from Natural Language Instructions》的翻译。 Prompt2Model:从自然语言指令生成可部署模型 摘要1 引言2 Prompt2Model框架3 参考实现4 实验设置5 实验结果6 讨论与结论不足道德…...

前端埋点 sendBeacon 替代方式
看英文文档真的很重要 sendBeacon 限制比较多, 容易跨域, 跨域时候还必须指定请求头, 不能使用通配符来解决跨域 文档地址 文档里面说 fetch 其实可以代替 sendBeacon 原文: Note: For use cases that need the ability to send requests with methods other than POST, or …...

面试官问我MySQL和MariaDB的联系和区别,这我能不知道?
🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师…...

1.网络空间搜素引擎
网络空间搜素引擎 https://cybermap.kaspersky.com/cn 世界所以带有ip的网络设备互联组成的空间叫做网络空间 地址 :shodan.io 简介 : 这句话还是有点东西得 。 区别: 平常得搜素引擎主要搜网页,shadan可以搜所以带有ip地址…...

《安富莱嵌入式周报》第321期:开源12导联便携心电仪,PCB AI设计,150M示波器差分探头,谷歌全栈环境IDX,微软在Excel推出Python
周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV1ju4y1D7A8/ 《安富莱嵌入式周报》第321期:开源12导…...

前端开发必备的网站
前端开发必备的网站及官网 说明: 这里记录了我本人平时开发所用到的网站,对我还是有帮助的,后续会接着补充进来,一方面是为了记录,另一方面也可以帮助到大家… 网站名称及描述网址Elememt-ui (组件库)Elememt-ui&…...

Java运行时jar时终端输出的中文日志是乱码
运行Jar时在控制台输出的中文日志全是乱码,这是因为cmd/bash默认的编码是GBK,只要把cmd的编码改成UTF-8即可 两种方式修改:临时修改和注册表永久修改 临时修改 只对当前的cmd页面有效,关闭后重新打开都会恢复成GBK, 打开cmd&am…...

Vue框架--Vue中el和data的两种写法
data与el的2种写法 1.el有2种写法 (1).new Vue时候配置el属性。 (2).先创建Vue实例,随后再通过vm.$mount(#root)指定el的值。 2.data有2种写法 (1).对象式 (2).函数式 如何选择:目前哪种写法都可以,以后学习到组件时ÿ…...

【数据结构】 二叉树面试题讲解->贰
文章目录 🌏引言🎄[二叉树遍历](https://www.nowcoder.com/practice/4b91205483694f449f94c179883c1fef?tpId60&&tqId29483&rp1&ru/activity/oj&qru/ta/tsing-kaoyan/question-ranking)🐱👤题目描述&#…...

C和SystemVerilog联合仿真
想要联合仿真一个c程序和verilog表示的硬件,可以用如下方法(DPI): 先写一个.c文件funcs.c #include <stdio.h> #include "svdpi.h"extern int sayHello();void something() {printf("something\n");s…...

15-mongodb
一、 MongoDB 简介 1 什么是 MongoDB MongoDB 是一个基于分布式文件存储的数据库。由 C语言编写。在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系…...

CSS学习笔记02
CSS笔记02 美化网页元素 为什么要美化网页 目的: 有效的传递页面信息美化网页、页面漂亮、才能吸引用户突显页面的主题提高用户的体验 span标签 span标签是短语内容的通用行内容器,它本身并没有任何特殊语义。 通常我们使用span标签来把我们想要重…...

为什么Java接口可以多继承,而类不可以?
个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…...

自动化信息收集工具 水泽 使用教程
自动化信息收集工具 水泽 使用教程 1.水泽简介&安装2.使用教程3.测试使用1.水泽简介&安装 一条龙服务,只需要输入根域名即可全方位收集相关资产,并检测漏洞。也可以输入多个域名、C段IP等 开发语言:Python3 水泽下载地址 安装前置准备: 当前用户对该目录有写权…...

2023年全国职业院校技能大赛(高等职业教育组)“信息安全管理与评估”理论技能答案
理论技能与职业素养(100分) 2023年全国职业院校技能大赛(高等职业教育组) “信息安全管理与评估”理论技能 【注意事项】 1.理论测试前请仔细阅读测试系统使用说明文档,按提供的账号和密码登录测试系统进行测试&am…...

MATLAB 动态图GIF
MATLAB 动态图GIF 前言一、创建动态图(动态曲线、动态曲面)1. 创建动画曲线(MATLAB animatedline函数)2. 创建动画曲面 二. 保存动态图三、完整示例1. 动态曲线( y s i n ( x ) ysin(x) ysin(x))2. 动态曲…...

ChatGPT⼊门到精通(4):ChatGPT 为何⽜逼
⼀、通⽤型AI 在我们原始的幻想⾥,AI是基于对海量数据的学习,锻炼出⼀个⽆所不知⽆所不能的模 型,并借助计算机的优势(计算速度、并发可能)等碾压⼈类。 但我们⽬前的AI,不管是AlphaGo还是图像识别算法&am…...

数据分析基础-数据可视化学习笔记03-可视化的符号与表示-图形符号学
概念 图型符号学(Cartographic Symbolization)是地图学领域中的一个重要概念,涉及到如何使用不同的符号、颜色、图案和标记来在地图上表示地理信息和数据。图型符号学旨在传达地理信息,使得地图能够清晰、有效地传达各种空间数据…...

暴力递归转动态规划(四)
题目 规定1对应A、2对应B、3对应C…26对应Z,那么一个数字字符串比如"111",就可以转化为:“AAA”、“KA"或"AK”,给定一个数字字符组成的字符串str,返回有多少种转化结果。 解释一下,字…...

大数据项目实战(Sqoop安装)
一,搭建大数据集群环境 1.4 Sqoop安装 1.sqoop安装 (1)上传安装包 (2)解压安装包 tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /export/servers (3)重命名 mv sqoop-1.4.6.b…...