ARM嵌入式学习--第一天

news2024/11/26 4:19:49

-ARM核介绍

    -CPU核

        CPU又叫中央处理器,其主要功能是进行算数运算逻辑运算,内部结构大概可以分为控制单元,算术逻辑单元和储存单元等几个部分

-ARM核

    工作模式:

user mode:用户模式是用户程序的工作模式,他运行在操作系统的用户态,没有权限去操作其他硬件资源,只能执行自己的数据,也不能切换到其他模式下,想要访问硬件只能通过软中断产生异常 

system mode:系统模式是特权模式,不受用户模式的限制,用户模式与系统模式共用一套寄存器,操作系统在该模式下可以方便的访问用户模式的寄存器,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源

IRQ mode:IRQ模式是采用IRQ中断的默认模式一般中断模式也叫普通中断模式,用于处理一般的中断请求,通常在硬件产生中断信号之后自动进入该模式,该模式为特权模式,可以自由访问系统资源

FIQ mode:FIQ模式是采用FIQ中断的默认模式快速中断模式是相对与一般中断模式而言的,它是用来处理时间相对比较紧急的中断请求,主要用于高速数据传输及通道处理

-ARM核的寄存器资源

    寄存器是中央处理器内的组成部分,寄存器是有限存贮容量的高速存贮部件,它们可以用来暂存指令、数据和地址,在中央处理器的控制部件中,包含的寄存器有指令寄存器IR)和程序计数器(PC)

寄存器用途分析

    R0 -R10用来存放用户的数据

    R11(fp用来记录一个栈空间的开始地址

    R12(ip用来临时存储sp

    R13(sp栈指针寄存器

    R14(lr在发生跳转的时候,用来保存PC寄存器的值

    R15(pc):用来存放CPU需要执行的指令所在内存的地址

CPSR    

 mode[0:4]记录当前ARM核所在的模式

 TARM状态执行32bit指令),thumb状态执行16bit指令

 FFIQ禁止(1)使能(0)

 IIRQ禁止(1)使能(0)

 N计算的结果为负数,则置1

 Z计算的结果为,则置1

 C产生进位则置1产生借位则置0

 V超过一个范围溢出

SPSR异常产生的时候,用来保存CPSR的值

-ARM指令格式

立即数

    立即数为一个常数,该常数必须对应8位位图,即一个8位的常数通过循环右移偶数位得到该数,该数位合法立即数 ;在指令中表示方法:#数字,例如#100

快速判定是否为合法立即数:

    1.首先将这个数转换为32bit的16进制形式

    2.除零外,仅有一位数为合法立即数

    3.除零外,仅有二位数,并且相邻(包括首尾,例如0x1000000A)的为合法立即数

    4.除零外,仅有三位数,并且相邻(包括中间有0相间,例如0x10800000;包括首尾相邻,例如0x14000003),这三位数中,最高位取值仅能为1,2,3最低位取值仅能为4,8,C,中间位任意,这种组合为合法立即数 

寄存器移位

    将寄存器值读取之后,进行移位运算后,作为操作2参与运算,支持的移位方式如下:

        1.LSL逻辑右移

        2.LSR逻辑左移

-常用ARM核指令

数据传送指令
MOV指令

    格式:mov  目标寄存器,操作数2

    功能:将操作2的值赋值给目标寄存器

MVN指令

    格式:mvn  目标寄存器,操作数2

    功能:将操作2取反的值给目标寄存器

LDR指令

    格式:ldr  目标寄存器,=数据

    功能:完成任意的数据传送到目标寄存器

    注意:数据前面不能加#因为此时数据不按立即数来处理

数据计算指令
ADD指令

    格式:add  目标寄存器,操作数1,操作数2

    功能:将操作数1加上操作数2的结果给目标寄存器

SUB指令

    格式:sub  目标寄存器,操作数1,操作数2

    功能:将操作数1减去操作数2的结果给目标寄存器

    注意:如果值为负数会影响到CPSR寄存器的N

MUL指令

    格式:mul  目标寄存器,操作1,操作2

    功能:将操作数1乘以操作数2的结果存放在目标寄存器

    注意:操作数1和操作数2必须都是寄存器,并且操作数1的寄存器编号不能和目标寄存器一样

位运算
AND指令

    格式:and  目标寄存器,操作数1,操作数2

    功能:将操作数1按位与操作数2的结果存放在目标寄存器

ORR指令

    格式:orr  目标寄存器,操作数1,操作数2

    功能:将操作数1按位或操作数2的结果存放在目标寄存器

EOR指令

    格式:eor  目标寄存器,操作数1,操作数2

    功能:将操作数1按位异或操作数2的结果存放在目标寄存器

BIC指令(位清零操作)

    格式:bic  目标寄存器,操作数1,操作数2

    功能:将操作数1按位与操作数2取反的结果存放在目标寄存器

    注意:目标寄存器=操作数1&~操作数2

比较指令--CMP指令

    格式:cmp  寄存器,操作数2

    功能:将寄存器的值与操作数2比较比较的结果会自动影响CPSR的NZCV

跳转指令--B/BL指令

    格式:B/BL  标签

    功能:跳转到一个指定的标签,BL跳转之前,将跳转前的PC的值保存在LR,跳转范围+/-32M

给PC赋值

    格式:ldr  pc,=标签名

    功能:将pc指针指向标签表示的地址

 内存访问指令

单个数据访问(LDR,STR)

    格式:ldr  r0,[r1]    //r0=*r1

    功能:将内存中的值加载到寄存器读内存

    格式:str  r0,[r1]    //*r1=r0

    功能:将寄存器的内容写入内存写内存

 基址变址寻址

        将基地址寄存器加上指令中给出的偏移量,得到数据存放的地址

前索引

    格式:str  r0,[r1,#4]    //*(r1+4)=r0

后索引

    格式:str  r0,[r1],#4    //*r1=r0 && r1=r1+4 

自动索引

    格式:str  r0,[r1,#4]!    //*(r1+4)=r0 && r1=r1+4

多个数据访问(LDM,STM)

    格式:stm/ldm{条件}  r1!,{r5-r7}

    功能:ldm将一块内存的数据,加载到多个寄存器中

               stm将多个寄存器的值,存储到一块内存中

栈操作指令

    进栈:stmfd  sp!,{寄存器列表}

    出栈:ldmfd  sp!,{寄存器列表}

    注意:在对栈操作之前,必须设置sp的值,进栈和出栈的方式一样,ATPCS标准规定向下增长长满减栈

CPSR/SPSR操作指令

    读操作:mrs  寄存器,cpsr/spsr

    写操作:msr  cpsr/spsr,寄存器

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

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

相关文章

Python并发编程(3)——Python多线程详解介绍

左手编程,右手年华。大家好,我是一点,关注我,带你走入编程的世界。 公众号:一点sir,关注领取python编程资料 Python 的多线程入门是非常简单的,直接导入threading模块就可以开始多线程之旅了。模…

[C++]使用纯opencv部署yolov11-seg实例分割onnx模型

【算法介绍】 在C中使用纯OpenCV部署YOLOv11-seg进行实例分割是一项具有挑战性的任务,因为YOLOv11通常是用PyTorch等深度学习框架实现的,而OpenCV本身并不直接支持加载和运行PyTorch模型。然而,可以通过一些间接的方法来实现这一目标&#x…

使用statsmodels解锁Python中的统计分析力量

使用 Python 中的 statsmodels 解锁统计分析的力量 引言 在不断发展的数据科学世界中,statsmodels 作为一个专为统计分析和计量经济学应用设计的 Python 库而脱颖而出。与更广泛的机器学习库不同,statsmodels 提供了专门设计的工具,用于深入…

Origin正态分布检验

在spass中用Shapiro-Wilk检验--正态分布检测 Shapiro-Wilk检验--正态分布检测_spss shapiro-wilk检验-CSDN博客

【路径规划】多机器人路径规划

摘要 多机器人路径规划在现代自动化、仓储管理及智能交通系统中有着广泛的应用。本文提出了一种基于A*算法的多机器人路径规划方法,旨在解决多机器人在同一环境中的路径冲突问题。通过采用启发式搜索和路径优化策略,机器人能够在保持避障的前提下实现最…

《Linux从小白到高手》理论篇:Linux的资源监控管理

本篇介绍Linux的资源监控管理。 1、CPU 资源管理 进程调度: Linux 采用公平的进程调度算法,确保每个进程都能获得合理的 CPU 时间。调度算法会根据进程的优先级、等待时间等因素来决定哪个进程获得 CPU 使用权。 可以通过调整进程的优先级来影响其获得…

wpf实现新用户页面引导

第一步 第二部 部分代码: private void show(int xh, FrameworkElement fe, string con, Visibility vis Visibility.Visible) {Point point fe.TransformToAncestor(Window.GetWindow(fe)).Transform(new Point(0, 0));//获取控件坐标点RectangleGeometry rg new Rectangl…

【Linux】进程详解:命令行参数、环境变量及地址空间

✨ 一生如牛不得闲,得闲已与山共眠 🌏 📃个人主页:island1314 🔥个人专栏:Linux—登神长阶 ⛺️ 欢迎关注:👍点赞 &…

如何注册西柚云服务器账号?渠道优惠下单获得立减200优惠

1.什么是生信云服务器? 生信云服务器是一种专门为生物信息学领域打造的一体化服务解决方案,旨在满足生信科研群体的多样化需求。无论你是生物信息学的初学者,还是已经具备丰富经验的生信专家,这个平台都能够提供帮助。 满足不同…

【算法笔记】滑动窗口算法原理深度剖析

【算法笔记】滑动窗口算法原理深度剖析 🔥个人主页:大白的编程日记 🔥专栏:算法笔记 文章目录 【算法笔记】滑动窗口算法原理深度剖析前言一.长度最小的子数组1.1题目1.2思路分析1.3算法流程1.4正确性证明1.5代码实现 二.无重复…

C题(六) 1到 100 的所有整数中出现多少个数字9

场景:编写程序数一下 1到 100 的所有整数中出现多少个数字9 控制循环的变量不可以随意改动!!! 控制循环的变量不可以随意改动!!! 控制循环的变量不可以随意改动!!&#x…

【PyCharm】Ubuntu20.04 卸载 PyCharm 并安装激活 Professional

【PyCharm】Ubuntu20.04 卸载 PyCharm 并安装激活 Professional 1 卸载2 安装激活 1 卸载 参考文档: Link 删除安装目录 删掉之前压缩包解压出来的目录,例如:我之前是放在家目录下 rm -rf ~/pycharm-community-2023.2.1删除配置文件 rm -rf ~/.config…

JAVA运用中springBoot获取前端ajax提交参数方式汇总

本篇文章主要讲解springboot获取前端提交的参数信息,后端进行接受的常见方法汇总,通过本篇文章你可以快速掌握对表单和连接参数获取的能力。 作者:任聪聪 日期:2024年10月5日 一、delete、get等url参数获取方式 前台提交&#xf…

linux下yum安装时出现Loaded plugins: fastestmirror的解决办法

一、centos7修改源 在CentOS 7中,修改系统软件源可以通过编辑/etc/yum.repos.d/目录下的.repo文件来实现。以下是一个基本的步骤和示例代码,用于将默认的软件源修改为阿里云的源。 备份当前的CentOS-Base.repo文件: sudo cp /etc/yum.repos.…

使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…

【可视化大屏】echarts介绍

使用echarts的步骤: 1.下载并引用echarts.js文件 2.准备一个具体宽高的容器 3.初始化echarts实例对象 // 实例化对象var myChart echarts.init(document.querySelector(".bar .chart"));4.指定配置项和数据 // 指定配置和数据var option {color: [&qu…

系统架构设计师⑥:知识产权与标准化

系统架构设计师⑥:知识产权与标准化 知识产权保护的范围与对象 知识产权保护期限 知识产权人确定 侵权判定 中国公民、法人或者其他组织的作品,不论是否发表,都享有著作权。 开发软件所用的思想、处理过程、操作方法或者数学概念不受保护。 …

信号检测理论(Signal Detection Theory, SDT)

信号检测理论(Signal Detection Theory, SDT)模拟是一种实验设计,用于研究和理解在存在噪声或不确定性的情况下如何做出决策。在心理学、认知科学、工程学和许多其他领域,信号检测理论都非常重要。 一、基础概念: 在信…

Mac ToDesk 无法连接网络

描述 网络连接的是 Wi-Fi,打开浏览器能跟正常浏览内容,说明 Wi-Fi 是正常的。 现象:显示网络连接失败,一直无法登陆! 检查防火墙是没有阻止ToDesk 的任何连接,说明防火墙也是正常的。 解决 检查登录项&a…

3dsMax添加天空盒

点击渲染,环境 , 点击位图 找到要设置的天空HDR,可以使用HDR(EXR)贴图 一个可以下载HDR贴图的网站 https://polyhaven.com/hdris在渲染的时候不要使用使用微软输入法,3dsmax会卡死, 在渲染的时候不要使用使用微软…