方又圆网站建设/app拉新平台

方又圆网站建设,app拉新平台,破解php网站后台密码,网站做弹窗广告1、架构包含哪几部分内容 寄存器处理模式流水线MMU指令集中断FPU总线架构 2、以STM32为例进行介绍 2.1 寄存器 寄存器名称作用R0-R3通用寄存器用于数据传递、计算及函数参数传递;R0 也用于存储函数返回值。R4-R12通用寄存器用于存储局部变量,减少频繁…

1、架构包含哪几部分内容

  • 寄存器
  • 处理模式
  • 流水线
  • MMU
  • 指令集
  • 中断
  • FPU
  • 总线架构

2、以STM32为例进行介绍

2.1 寄存器

寄存器名称作用
R0-R3通用寄存器用于数据传递、计算及函数参数传递;R0 也用于存储函数返回值。
R4-R12通用寄存器用于存储局部变量,减少频繁的内存访问。
R13栈指针 (SP)指向当前栈顶,负责管理栈操作。分为主栈指针 (MSP)进程栈指针 (PSP):系统中断处理和普通任务可以使用不同的栈。栈指针用于管理栈的操作,包括函数调用时保存现场和中断处理时保存寄存器状态。
R14链接寄存器 (LR)保存函数调用返回的地址,函数返回时恢复程序执行。
R15程序计数器 (PC)指向当前执行的指令地址,控制程序执行的流程。
xPSR程序状态寄存器包含条件标志 (N, Z, C, V) 以及处理器状态 (T 位用于 Thumb 指令集)。
CONTROL控制寄存器控制处理器工作模式,如栈指针选择 (MSP/PSP) 和权限级别 (特权级/用户级)。
PRIMASK中断屏蔽寄存器屏蔽所有可屏蔽中断,保证关键代码段不被中断打断。
BASEPRI基础优先级寄存器设置中断优先级屏蔽阈值,低于该阈值的中断会被屏蔽。
FAULTMASK故障屏蔽寄存器屏蔽所有异常,包括硬件故障,通常用于系统恢复或严重故障时。

分类记忆:
通用寄存器:R0-R12
R0-R3:用于数据传递、计算及函数参数传递;R0 也用于存储函数返回值。
R4-R12:用于存储局部变量,减少频繁的内存访问。
特殊功能寄存器
R13(栈指针 SP):指向当前栈顶,管理栈操作。
R14(链接寄存器 LR):保存函数调用返回地址。
R15(程序计数器 PC):指向当前执行的指令地址,控制程序流程。
状态和控制寄存器
xPSR(程序状态寄存器):包含条件标志和处理器状态。
CONTROL(控制寄存器):控制处理器工作模式。
PRIMASK、BASEPRI、FAULTMASK:用于中断和故障管理。

2.2 处理模式

stm32默认普通程序和中断程序都工作在特权级。

  • 处理者模式
    • 始终运行在特权级
  • 线程模式
    • 可以运行在特权级和非特权级,通过CONTROL寄存器控制。

2.3 流水线

  • 概念
    MCU的流水线,指的是在指令执行过程中将一条指令的不同阶段拆分成多个步骤,让这些步骤可以并行执行,从而提高指令吞吐量。

  • 一个典型的 ARM 处理器指令流水线包括以下阶段:

    • 取指(Fetch):从内存中获取指令。
    • 译码(Decode):将指令翻译成处理器可以理解的操作。
    • 执行(Execute):执行指令,如加法、乘法、位移等操作。
    • 存储(Memory Access):如果需要,进行内存访问,读取或写入数据。
  • ARM 处理器的流水线可以有多个阶段,常见的有 3 级、5 级或 7 级流水线,甚至更深的流水线设计。

2.4 MMU

MMU定义:Arm MMU深度解读

  • ARM 处理器中的 MMU(Memory Management Unit,内存管理单元) 用于支持虚拟内存和内存保护。

  • 它通过将虚拟地址转换为物理地址,并设置内存访问权限,确保操作系统和应用程序的内存安全。MMU 是多任务操作系统(如 Linux)运行的关键。

    • 虚拟内存:MMU 支持将程序的地址空间映射到物理内存中,使得不同的任务可以使用不同的虚拟地址空间。
    • 内存保护:通过 MMU,操作系统可以保护内存空间,防止进程间非法访问。
  • 对于一些低端 ARM Cortex-M 系列(如 Cortex-M0),没有内置 MMU,而是使用 MPU(Memory Protection Unit) 进行简单的内存保护,而不支持完整的虚拟内存。

2.5 指令集

ARM 处理器的指令集架构基于 RISC 设计原则,使用精简指令集。常见的 ARM 指令集架构有:

  • ARM 指令集:用于标准 32 位指令集的 ARM 处理器,支持更复杂的运算和操作。
  • Thumb 指令集:是 ARM 的一种压缩指令集,指令长度为 16 位,旨在减少内存占用,适用于资源受限的嵌入式系统。Thumb 指令集的执行效率虽然略低,但通过减少代码大小提高了存储效率。
  • Thumb-2 指令集:结合了 32 位 ARM 指令和 16 位 Thumb 指令,使得处理器能够在运行时动态切换不同指令集,提供更高的性能和代码密度。

2.6 中断

ARM 处理器具有复杂的中断和异常处理机制,其中NVIC(Nested Vectored Interrupt Controller,嵌套向量中断控制器) 是 Cortex-M 系列中的重要模块,用于管理中断。

  • 中断优先级:ARM Cortex-M 支持多级中断优先级,可以快速响应高优先级中断。
  • 中断嵌套:允许高优先级中断在低优先级中断的处理中打断执行,实现中断的嵌套。

在发生中断时,处理器会自动保存必要的寄存器,并跳转到对应的中断服务程序 (ISR) 执行,处理完后恢复执行原程序。

中断现场保存

2.7 FPU

在一些高性能的 ARM Cortex-M 处理器(如 Cortex-M4、Cortex-M7)中,集成了硬件浮点运算单元 (FPU),用于加速浮点数的运算。这对于涉及大量数学计算的应用(如信号处理、图像处理)非常有用。

  • 单精度浮点运算(FPU-S):支持 IEEE 754 标准的单精度浮点运算。
  • 双精度浮点运算(FPU-D):更高端的处理器支持双精度浮点运算。

2.8 总线架构

冯·诺依曼结构,也称统一存储结构,ARM 处理器通过各种总线架构连接外设、存储器和其他模块,常见的总线架构包括:

  • AHB (Advanced High-performance Bus):高性能总线,用于连接内存和高速外设。
  • APB (Advanced Peripheral Bus):低速外设总线,用于连接定时器、串口、GPIO 等外设。
  • AXI (Advanced eXtensible Interface):在高端 ARM 处理器中使用,支持高吞吐量和并发的外设访问。

回顾

  • stm32有哪些通用寄存器
  • stm32有哪些特殊功能寄存器
  • stm32有哪些状态和控制寄存器
  • 讲一下stm32的两种处理模式
  • 为什么要用虚拟地址?为什么要用MMU?
  • ARM常见的指令集架构有哪些
  • 介绍一下NVIC
  • 介绍一下stm32的总线架构

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

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

相关文章

CentOS 7部署主域名服务器 DNS

1. 安装 BIND 服务和工具 yum install -y bind bind-utils 2. 配置 BIND 服务 vim /etc/named.conf 修改以下配置项: listen-on port 53 { any; }; # 监听所有接口allow-query { any; }; # 允许所有设备查询 3 . 添加你的域名区域配置 …

C++ 多线程简要讲解

std::thread是 C11 标准库中用于多线程编程的核心类,提供线程的创建、管理和同步功能。下面我们一一讲解。 一.构造函数 官网的构造函数如下: 1.默认构造函数和线程创建 thread() noexcept; 作用:创建一个 std::thread 对象,但…

Vscode HTML5新增元素及属性

一、‌HTML5 语义化标签 HTML5 语义化标签&#xff08;Semantic Elements&#xff09;是一组 ‌具有明确含义的 HTML 元素‌&#xff0c;通过标签名称直接描述其内容或结构的功能&#xff0c;而非仅作为样式容器&#xff08;如 <div> 或 <span>&#xff09;。它们旨…

Three学习入门(四)

9-Three.js 贴图与材质学习指南 环境准备 <!DOCTYPE html> <html> <head><title>Three.js Texture Demo</title><style> body { margin: 0; } </style> </head> <body><script src"https://cdnjs.cloudflare.…

前端NVM安装

https://v0.dev/chat/settings 本地启动环境 1安装 nvm 2安装node nvm install v18.19.0 nvm install v20.9.0 nvm use 18 node -v 3安装 pnpm npm install -g pnpm 或者 npm i -g pnpm 4启动 代码 目录下 执行 pnpm i pnpm run dev 4.1到代码目录下 4.2直接cmd…

cmd命令查看电脑的CPU、内存、存储量

目录 获取计算机硬件的相关信息的命令分别的功能结果展示结果说明获取计算机硬件的相关信息的命令 wmic cpu get name wmic memorychip get capacity wmic diskdrive get model,size,mediaType分别的功能 获取计算机中央处理器(CPU)的名称 获取计算机内存(RAM)芯片的容量…

如何监控 SQL Server

监控 SQL Server 对于维护数据库性能、确保数据可用性和最大限度地减少停机时间至关重要。随着企业越来越依赖数据驱动的决策&#xff0c;高效的SQL Server监控策略能显著提升组织生产力和用户满意度。 为什么要监控 SQL Server SQL Server 是许多关键应用程序的支柱&#xf…

画秒杀系统流程图

秒杀系统流程图 秒杀系统关键点 高并发处理: 使用网关&#xff08;如 Nginx&#xff09;进行流量限流&#xff0c;避免过载。分布式锁或 Redis 原子操作控制并发。 活动状态检查: Redis 存储活动状态&#xff08;如 seckill:activity:1:status&#xff09;&#xff0c;快速…

【js逆向入门】图灵爬虫练习平台 第九题

地址&#xff1a;aHR0cHM6Ly9zdHUudHVsaW5ncHl0b24uY24vcHJvYmxlbS1kZXRhaWwvOS8 f12进入了debugger&#xff0c;右击选择一律不在此处暂停&#xff0c; 点击继续执行 查看请求信息 查看载荷&#xff0c;2个加密参数&#xff0c;m和tt 查看启动器&#xff0c;打上断点 进来 往…

Vue中的状态管理器Vuex被Pinia所替代-上手使用指南

Pinia.js 是新一代的状态管理器&#xff0c;由 Vue.js团队中成员所开发的&#xff0c;因此也被认为是下一代的 Vuex&#xff0c;即 Vuex5.x&#xff0c;在 Vue3.0 的项目中使用也是备受推崇 Pinia.js 有如下特点&#xff1a; 完整的 typescript 的支持&#xff1b;足够轻量&…

向量数据库学习笔记(1) —— 基础概念

一、 嵌入模型 Embedding Models 嵌入模型是将复杂数据&#xff08;如文本、图像、音频等&#xff09;转换为向量表示的机器学习模型 1. 核心概念 嵌入(Embedding)&#xff1a;将高维、非结构化的数据映射到低维、稠密的向量空间 向量表示&#xff1a;输出固定长度的数值向量…

[NO-WX179]基于springboot+微信小程序的在线选课系统

[NO-WX179]基于springboot微信小程序的在线选课系统 1、管理员角色&#xff08;web端&#xff09;&#xff1a;2、教师角色&#xff08;web端&#xff09;&#xff1a;3、用户角色&#xff08;小程序或web端&#xff09;&#xff1a;4、部分运行截图管理端--教师管理管理端--学…

2025年渗透测试面试题总结-某 长亭(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 长亭 一、Spring SpEL表达式注入漏洞 1. 技术原理 2. 利用条件 3. 攻击方法 4. 防御策略 二、Jav…

conda环境下解决gitk乱码模糊

关键词 conda、git、gitk、git gui、模糊、linux、乱码 现象 操作系统&#xff1a;ubuntu24.04 conda版本&#xff1a;25.1.1 正常的终端里gitk显示不会模糊 但是在conda创建的python虚拟环境中使用gitk&#xff0c;字体开始变得模糊不清 分析 根据deepseek的原因原因分析…

【C++项目实战】:基于正倒排索引的Boost搜索引擎(1)

1. 项目的相关背景与目标 针对boost网站没有搜索导航功能&#xff0c;为boost网站文档的查找提供搜索功能 站内搜索&#xff1a;搜索的数据更垂直&#xff0c;数据量小 类似于cplusplus.com的搜索 2.搜索引擎的相关宏观原理 3.技术栈和项目环境 技术栈&#xff1a;C/C&am…

深入理解指针(1)(C语言版)

文章目录 前言一、内存和地址1.1 内存1.2 究竟该如何理解编址 二、指针变量和地址2.1 取地址操作符&2.2 指针变量和解引用操作符*2.2.1 指针变量2.2.2 如何拆解指针类型2.2.3 解引用操作符 2.3 指针变量的大小 三、指针变量类型的意义3.1 指针的解引用3.2 指针-整数3.3 voi…

第一天学爬虫

阅读提示&#xff1a;我今天才开始尝试爬虫&#xff0c;写的不好请见谅。 一、准备工具 requests库&#xff1a;发送HTTP请求并获取网页内容。BeautifulSoup库&#xff1a;解析HTML页面并提取数据。pandas库&#xff1a;保存抓取到的数据到CSV文件中。 二、爬取步骤 发送请求…

重学Java基础篇—线程池参数优化指南

一、核心参数解析 线程池&#xff08;ThreadPoolExecutor&#xff09;的性能取决于以下关键参数&#xff1a; 参数说明corePoolSize核心线程数&#xff0c;即使空闲也不会被回收maximumPoolSize最大线程数&#xff0c;当队列满且核心线程忙时创建新线程workQueue任务队列&…

记一次线上环境JAR冲突导致程序报错org.springframework.web.util.NestedServletException

一、问题描述 有个文件导入功能&#xff0c;用到了Hutool 的加密解密功能&#xff0c;本地运行完全可以&#xff0c;但是线上报错&#xff1a;“org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFou…

2.基于多线程的TCP服务器实现

目录 1. 简单分析之前的代码 2. 多线程服务器设计 2.1 C11线程的基本使用 2.2 服务器主体逻辑 3. 错误处理的封装 4. 完整的代码实现 客户端代码&#xff08;client.cpp&#xff09; 服务器代码&#xff08;server.cpp&#xff09; 5. 运行方式 在我们预想中&#xff…