ARM嵌入式学习--第一天

server/2024/10/4 12:55:35/

-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指针指向标签表示的地址


http://www.ppmy.cn/server/126943.html

相关文章

北京数字孪生工业互联网可视化技术,赋能新型工业化智能制造工厂

随着北京数字孪生工业互联网可视化技术的深入应用,新型工业化智能制造工厂正逐步迈向智能化、高效化的全新阶段。这项技术不仅实现了物理工厂与数字世界的精准映射,更通过大数据分析、人工智能算法等先进手段,为生产流程优化、资源配置合理化…

Tomcat监控与调优:比Tomcat Manager更加强大的Psi-Probe

这是一款 Tomcat 管理和监控工具,前身是 Lambda Probe。由于 Lambda Probe 2006不再更新,所以 PSI Probe 算是对其的一个 Fork 版本并一直更新至今。 Probe psi-probe是在相同的开源许可证(GPLV2)下分发的社区驱动的 Lambda Probe ,psi-pro…

深入理解网络通信: 长连接、短连接与WebSocket

在现代网络应用开发中,选择合适的通信方式对于应用的性能、效率和用户体验至关重要。本文将深入探讨三种常见的网络通信方式:长连接、短连接和WebSocket,分析它们的特点、区别以及适用场景。 1. 短连接 © ivwdcwso (ID: u012172506) 1.1 定义 短连接是指客户端和服务器…

基于Hive和Hadoop的用电量分析系统

本项目是一个基于大数据技术的用电量分析系统,旨在为用户提供全面的电力消耗信息和深入的用电量分析。系统采用 Hadoop 平台进行大规模数据存储和处理,利用 MapReduce 进行数据分析和处理,通过 Sqoop 实现数据的导入导出,以 Spark…

Unity3D播放GIF图片 插件播放

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、效果图👉二、使用方法1.代码如下👉三、壁纸分享👉总结👉前言 unity播放gif图片,本身是不支持的,但是可以使用其他方法来实现,有一种使用System.Drawing来实现播放的,一种是让UI把图片导出成帧动画图片,…

推荐 uniapp 相对好用的海报生成插件

插件地址:自定义canvas样式海报 - DCloud 插件市场 兼容性也是不错的:

端侧Agent系列 | 端侧AI Agent任务拆解大师如何助力AI手机?(详解版)

引言 简介 Octo-planner 规划和执行Agent框架 规划数据集 基准设计 实验设计 结果 全量微调与LoRA 多LoRA训练与合并 不同基础模型的全量微调 不同数据集大小的全量微调 总结 实战 英文 中文示例1: 中文示例2: 0. 引言 人生到处知何似&a…

TCP 流量控制 - 滑动窗口和拥塞控制算法解析

滑动窗口主要管理数据流动的速率,对单个连接较好,拥塞控制则防止网络出现过载,对提高整体的网络通畅较好。下面详细解析两者的原理和作用。 1. TCP 滑动窗口算法 TCP 使用滑动窗口机制来控制数据的发送和接收,以实现流量控制&…