2、ARM处理器概论
一、ARM处理器概述
1、ARM的含义
ARM(Advanced RISC Machines)有三种含义,一个公司的名称、一类处理器的通称、一种技术
ARM公司:
- 成立于1990年11月,前身为Acorn计算机公司
- 主要设计ARM系列RISC处理器内核
- 授权ARM内核给生产和销售半导体的合作伙伴,ARM公司并不生产芯片
- 提供基于ARM架构的开发设计技术软件工具、评估板、调试工具、应用软件总线架构、外围设备单元等
2、ARM产品系列
早先经典处理器:
- 包括ARM7、ARM9、ARM11家族
Cortex-A系列:
- 针对开放式操作系统的高性能处理器,应用于智能手机、数字电视、智能本等高端运用
Cortex-R系列:
- 针对实时系统、满足实时性的控制需求,应于汽车制动系统、动力系统等
Cortex-M系列:
- 为单片机驱动的系统提供了低成本优化方案,应用于传统的微控制器市场、智能传感器、汽车周边等
3、RISC处理器
- 只保留常用的简单指令,硬件结构简单。复杂操作一般都通过简单指令的组合实现,一般指令长度固定,且多为单周期指令
- RISC处理器在功耗、体积、价格方面有很大的优势,所以在嵌入式移动终端领域应用极为广泛
4、CISC处理器
- 不仅包含了常用指令,还包含了许多不常用的特殊指令,硬件结构复杂、指令条数较多,一般指令长度和周期都不固定
- CISC处理器在性能上有很大优势,多用于PC及服务器等领域
5、SOC(System on Chip)
- 即片上系统,将一个系统中需要的全部部件集成在一个芯片中,在体积、功耗、价格上有很大的优势
二、ARM指令集概述
1、指令集
- 指令:
- 能够指示处理器执行某种运算的命令称为指令(加、减、乘…)
- 指令在内存中以机器码(二进制)的方式存在
- 每一条指令都对应一条汇编
- 程序是指令的有序集合
- 指令集:
- 处理器能够识别的指令的集合称为指令集
- 不同架构的处理器的指令集不同
- 指令集是处理器对开发者提供的接口
2、ARM指令集
大多数ARM都支持两种指令集
ARM指令集:
- 所有的指令(机器码)都占用32bit的存储空间
- 代码灵活度高,简化了解码的复杂度
- 执行ARM指令集时,PC值每次自增4
Thumb指令集:
- 所有指令(机器码)都占用16bit存储空间
- 代码密度高、节省存储空间
- 执行Thumb指令集时,PC值每次自增2
3、编译原理
-
1、机器码(二进制)是处理器能够直接识别的语言,不同的机器码代表不同的运算指令,处理器能够识别哪些机器码是由处理器的硬件设计所决定的,不同的处理器机器码不同,所以机器码不可移植
-
2、汇编语言是机器码的符号化,即汇编就是用一个符号来代替一条机器码,所以不同的处理器汇编也不一样,即汇编语言不可移植
-
3、C语言在汇编时我们可以使用不同的编译器将C源码编译成不同的架构处理的汇编,所以C语言可以移植
三、ARM存储类型
1、ARM数据类型
ARM采用32位架构,基本数据类型有一下三种:
- Byte:8bit
- HalfWord:16bit
- Word:32bit
数据存储:
- Word型数据在内存的起始地址必须是4的整数倍
- Half Word型数据在内存的起始地址必须是2的整数倍
注:即数据本身是多少位在内存存储时就应该多少位对齐
2、字节序
大端对齐
- 低地址存放高位,高地址存放低位
- 如:a = 0x12345678
小端对齐 - 低地址存放低位,高地址存放高位
- 如:a = 0x12345678
注:ARM一般使用小端对齐
3、ARM指令存储
处理器处于ARM状态时
- 所有的指令在内存的起始地址必须是4的整数倍
- PC值由其[31:2]决定,[1:0]位未定义
处理器处于Thumb状态时
- 所有指令在内存的起始地址必须是2的整数倍
- PC值由其[31:1]决定,[0]位未定义
注:即指令本身是多少位在内存存储时,就应该多少位对齐
四、ARM工作模式
1、ARM有八个基本的工作方式模式
- User:非特权模式,一般在执行上层的应用程序时ARM处于该模式
- FIQ: 当一个高优先级中断产生后ARM将进入这种模式
- IRQ:当一个低优先级中断产生后ARM将进入这种模式
- SVC:当复位或执行软中断指令后ARM将进入这种模式
- Abort:当产生存取异常时ARM将进入这种模式
- Undef:当执行未定义的指令时ARM将进去这种模式
- System:使用和User模式相同的寄存器集的特权模式
- Moniter:为了安全而扩展出的用于执行安全监控代码的模式
2、不同模式的理解
- 不同的模式拥有不同的权限
- 不同模式执行不同代码
- 不同模式完成不同功能
3、模式的分类
按照权限分:
- User为非特权模式(权限较低),其余模式均为特权模式(权限较高)
按照状态分:
- FIQ、IRQ、SVC、Abort、Undef属于异常模式,即当处理器遇到异常的时候会进入对应的模式
相关文章:
2、ARM处理器概论
一、ARM处理器概述 1、ARM的含义 ARM(Advanced RISC Machines)有三种含义,一个公司的名称、一类处理器的通称、一种技术 ARM公司: 成立于1990年11月,前身为Acorn计算机公司主要设计ARM系列RISC处理器内核授权ARM内…...
【Python】福利彩票复式模拟选号程序
【效果】 【注意】 逻辑是用Random模拟10000次复试彩票选号,然后给出最大可能性一组。但是模拟终究是模拟,和现实彩票结果没有任何联系,下载下来玩就是了,没人能保证模拟出中奖号码,不要投机,不要投机! 【修改】 代码很简单,如果想改成不是复式的,自行修改即可。 如…...
Pytorch 机器学习专业基础知识+神经网络搭建相关知识
文章目录 一、三种学习方式二、机器学习的一些专业术语三、模型相关知识四、常用的保留策略五、数据处理六、解决过拟合与欠拟合七、成功的衡量标准 一、三种学习方式 有监督学习: 1、分类问题 2、回归问题 3、图像分割 4、语音识别 5、语言翻译 无监督学习 1、聚类…...
torch 和paddle 的GPU版本可以放在同一个conda环境下吗
新建conda 虚拟环境,python 版本3.8.17 虚拟机,系统centos 7,内核版本Linux fastknow 3.10.0-1160.92.1.el7.x86_64 ,显卡T4,nvidia-smi ,460.32.03,对应cuda 11.2,安装cuda 11.2和cudnn,conda…...
MYBATIS-PLUS入门使用、踩坑记录
转载: mybatis-plus入门使用、踩坑记录 - 灰信网(软件开发博客聚合) 首先引入MYBATIS-PLUS依赖: SPRING BOOT项目: <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus…...
C# 静态类和sealed类(密封类)的区别
网上看到很多文章写静态类,和密封类,但是鲜有它们的对比总结,在此简单总结一下: 静态类(Static Class): 静态类不能被实例化,其成员都是静态的,可以通过类名直接访问。静…...
el-table如何实现自动缩放,提示隐藏内容
前提问题:大屏展示中某一个区域是表格内容,当放大或缩小网页大小时,表格宽度随之缩放,但表格内容未进行缩放,需要表格内容与网页大小同时进行缩放,且表头和表格内容宽度不够未显示全时,需要进行…...
CRM客户管理软件对出海企业的帮助与好处
2023我们走出了疫情的阴霾,经济下行压力大,面对内需的不足,国内企业纷纷选择出海,拓展海外业务增加企业营收。企业出海不是一件易事,有了CRM系统可以让公司事半功倍,下面就来说一说CRM客户管理软件能为出海…...
【QT--使用百度地图API显示地图并绘制路线】
QT--使用百度地图API显示地图并绘制路线 前言准备工作申请百度地图密钥(AK)安装开发环境 开发过程新建项目ui界面GPSManager类主窗口Map 效果展示 前言 先吐槽一下下,本身qt学的就不咋滴,谁想到第一件事就是让写一个上位机工具,根据CAN总线传…...
C数据结构二.练习题
一.求级数和 2.求最大子序列问题:设给定一个整数序列 ai.az..,a,(可能有负数).设计一个穷举算法,求a 的最大值。例如,对于序列 A {1,-1,1,-1,-1,1,1,1,1.1,-1,-1.1,-1,1,-1},子序列 A[5..9](1,1,1,1,1)具有最大值5 3.设有两个正整数 m 和n,编写一个算法 gcd(m,n),求它们的最大公…...
猫头虎博主第5️⃣期赠书活动:《Java官方编程手册(第12版·Java 17)套装上下册》
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...
(1)数据库 MSQ 数据库 安装 使用 以及增删改查
下载官网:MySQL :: Download MySQL Shell 常见的数据库分为: 关系型数据库, Oracle、MySQL、SQLServer、Access非关系型数据库, MongoDB、Redis、Solr、ElasticSearch、Hive、HBase 安装过程 使用过程...
什么测试自动化测试?
什么测试自动化测试? 做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多。一直想动笔写一篇文章分享自动化测试实践中的一些经验。终于决定花点时间来做这件事儿。 首先理清自动化测试的概念,广义上来讲&a…...
【踩坑篇】代码中使用 Long 作为 Map的Key存在的问题
本周的工作结束,详述一些在项目代码中实际遇到的一些坑。 代码中遇到这样一个场景: 有个业务接口,接口返回的值是一个JSON格式的字符串,通过JSON解析的方式,解析为格式为: Map<Long, Map<String, O…...
微服务保护-授权规则/规则持久化
授权规则 基本规则 授权规则可以对调用方的来源做控制,有白名单和黑名单两种方式。 白名单:来源(origin)在白名单内的调用者允许访问 黑名单:来源(origin)在黑名单内的调用者不允许访问 点…...
练习敲代码速度
2023年9月18日,周一晚上 今晚不想学习,但又不想玩游戏,于是找了一些练习敲代码的网站来玩玩,顺便练习一下敲代码的速度 目录 参考资料个人推荐第一个 第二个第三个 参考资料 电脑打字慢,有哪些比较好的练打字软件&a…...
uni-app:实现条件判断展示图片(函数判定+三目运算)
一、多条件判断(通过函数进行图片展示) 效果 代码 在data中定义图片信息和要传递的数据信息,在src中写入函数并携带要传递的数据,通过传递的数据在函数中进行判断,并返回对应的图片信息 <template><view&…...
http概念
概念:HTTP,hyper text transfer protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 特点: 1.基于TCP协议:面向连接,安全。 2.基于请求-响应模型的:一次请求对应一…...
Postman应用——Variable变量使用(Global、Environment和Collection)
文章目录 变量的使用同名变量优先级Postman内置变量 Global、Environment和Collection变量设置,点击查看。 变量的使用 语法: {{变量名}}使用{{}}包裹变量名,引用设置好的变量。 注意:Environment变量引用前需要先选择已有的环…...
php高级 TP+Redis实现发布订阅和消息推送案例实战
Redis 的发布-订阅模型是一种消息通信模式,它允许客户端之间通过特定的频道进行通信。在这种模型中,有些客户端负责发布消息(发布者),而其他客户端则订阅它们感兴趣的频道并接收这些消息(订阅者)…...
Python 基础入门
给我家憨憨写的python教程 ——雁丘 Python解释器Pycharm的安装部署 关于本专栏一 Python简介1.1 Python优点1.2 支持的编程方式1.3 版本兼容问题1.4 Python的开发环境1.4.1 常用的 Python 编辑器1.4.2 常用的 Python IDE1.4.3 Python IDLE1.4.4 第三方库安装 1.5 Python 的运…...
【跟小嘉学 Rust 编程】二十九、Rust 中的零拷贝序列化解决方案(rkyv)
系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…...
路由器端口转发
什么是路由器端口转发 路由器端口转发是一种网络配置技术,用于将公共网络(如互联网)上的请求转发到私有网络中的特定设备或服务。它允许外部设备通过路由器访问内部网络中的设备或服务,实现网络上的通信和互动。 路由器端口转发…...
Redis模块一:缓存简介
目录 缓存的定义 应用 生活案例 程序中的缓存 缓存优点 缓存的定义 缓存是⼀个高速数据交换的存储器,使用它可以快速的访问和操作数据。 应用 1.CPU缓存:CPU缓存是位于CPU和内存之间的临时存储器,它的容量通常远小于内存࿰…...
【去除若依首页】有些小项目不需要首页,去除方法
第一步 // // // // // // // // // // // // // // // // // // 修改登录页 Login.vue 中 大概144行 ,注释掉原有跳转。替换为自己的跳转路径 // // // // // // // // // // // // // this.$router.push({ path: this.redirect || …...
Ardupilot — EKF3使用光流室内定位代码梳理
文章目录 前言 1 Copter.cpp 1.1 void IRAM_ATTR Copter::fast_loop() 1.2 void Copter::read_AHRS(void) 1.3 对象ahrs说明 2 AP_AHRS_NavEKF.cpp 2.1 void AP_AHRS_NavEKF::update(bool skip_ins_update) 2.2 void AP_AHRS_NavEKF::update_EKF3(void) 2.3 对象EKF3说…...
【Linux】自动化构建工具 —— make/makefileLinux第一个小程序 - 进度条
📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:Linux 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:Linux编译…...
tensorflow的unet模型
import tensorflow as tf from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, Dropout, UpSampling2D, concatenate# 定义 U-Net 模型 def unet(input_size(256, 256, 3)):inputs Input(input_size)# 编码器部分conv1 Conv2D(64, 3, activationrelu, padding…...
(2023 最新版)IntelliJ IDEA 下载安装及配置教程
IntelliJ IDEA下载安装教程(图解) IntelliJ IDEA 简称 IDEA,由 JetBrains 公司开发,是 Java 编程语言开发的集成环境,具有美观,高效等众多特点。在智能代码助手、代码自动提示、重构、J2EE 支持、各类版本…...
react 实现拖动元素
demo使用create-react-app脚手架创建 删除一些文件,创建一些文件后 结构目录如下截图com/index import Movable from ./move import { useMove } from ./move.hook import * as Operations from ./move.opMovable.useMove useMove Movable.Operations Operationse…...
旅游主题网站怎么做/平面设计培训费用一般是多少
搜集整理淘宝网关于热干面的100页商品数据,使用Python进行整理分析。整个数据分析的过程分为以下三步:数据获取、数据清洗、数据可视化。 数据获取 使用selenium抓取淘宝商品 首先确定爬虫的策略,淘宝的商品页面数据是通过Ajax加载的&#…...
如何做盗版小说网站/希爱力5mg效果真实经历
项目设计背景: 在我们以往的考试经历中,我们可以看到,每次考试都需要经过出试卷、印试卷、发卷、做卷、收卷、阅卷、统计等过程,这几个过程有着很强的先后次序,不能顺序颠倒。这些过程中,又以出卷、阅卷和…...
网站开发需要多少钱推荐/球队世界排名榜
var zTree1;var setting;//树配置setting {async:true,nameCol:"name",asyncUrl:getAsyncUrl, //获取节点数据的URL地址showIcon:false, //是否显示图标asyncParam:["name", "id"], //获取节点数据时的数据名称callback:{beforeAsync:beforeAsy…...
网站开发 自动生成缩略图/泰安百度推广代理商
JVM怎么判断对象是否存活 引用计数算法 引用计数算法比较简单,对每个对象保存一个整型的引用计算器属性。用于记录对象背应用的情况。对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1;当引用失效时,引用…...
安徽省经工建设集团网站/郑州seo优化
一、时间函数 在使用存储过程,sql函数的时候,会遇到一些对时间的处理。比如时间的获取与加减。这里就用到了sql自带的时间函数。下面我列出这些函数,方便日后记忆,使用。 --getdate 获取当前时间select getdate()--dateadd 原有时…...
网站开发模板word/长沙sem培训
rdbms 11.2.0.4 ,该库为备库,未使用asm,开启了flashback。 在检查alert log的时候,发现有很多“RVWR hung due to error when writing flashback database logs;” 这样的错误。然后是alert log中一直提示让关闭数据库࿰…...