嵌入式底层(1)

本文主要介绍了ARM嵌入式开发的基础知识,包括ARM架构、指令、异常、裸机开发和中断机制。深入讲解了ARM的寄存器、指令集如搬移指令和条件执行,以及中断处理和PWM波形的原理。
摘要由CSDN通过智能技术生成

嵌入式底层(1)


一、ARM基础

1 不同的ARM体系采用不同的指令集

2 哈弗结构是数据和指令分开存储并行的

3 冯诺依曼结构是混合存储的

在这里插入图片描述

在这里插入图片描述
30个通用寄存器是进行存储的
特殊寄存器
PC寄存器是用于存储当前指令和下一条指令(知道程序现在运行在哪里)
CPSR当前运行程序运行的状态存储寄存器
SPSR状态在切换过程中保存原有状态的寄存器
在这里插入图片描述
一个寄存器就占32个字节,寄存器内容有限,数据如果过大,放在外面的flash或者内存里面

r15 PC寄存器是指明当前寄存器运行的位置
r14 LR寄存器是调用函数是返回的地址
r13 SP寄存器进栈出栈

有三角形的寄存器是多的空间,FIQ是空间换区时间去中断执行

在这里插入图片描述
1 ARM状态是CPU解析flash中的数据和指令的时候,发送的指令占四个字节的。而为了节省空间Thumb所占的空间为两个字节。

2 NZSV是运算的位

3 mrs r0,CPSR
将CPSR写到r0寄存器里面
msr CPSR ,r0
将r0寄存器的值读到CPSR中
在这里插入图片描述
5 user和system模式使用寄存器最少
7 T和J位反应了处理器处于ARM和Thumb位

二、ARM指令

1 搬移指令
mov r1 ,#3
赋值r1为3
mov r0, r1
将r1的值移到r0
mov r0,r1,LSL#2
将r1的值移到r0并且还需要左移两位(移一位*2)
mov r0,r1 LSR#2
右移两位

2 条件执行
if(a==0) x=0;
if(a>0) x=x+3;

cmp r0,#0(判断相等)
moveq r1,#0
addgt r1,r1,#3
在这里插入图片描述
C语言编译编程汇编然后在flash中变成计算机可以识别的机器码。CPU中的 控制器读取flash中的数据指令,然后ALu运算器进行译码
在这里插入图片描述
机器码解析
rs源寄存器
rd目标寄存器
cond条件判断选择
opcode操作码是进行什么指令命令的选择
立即数合法性(赋值时不能超过32位)
在这里插入图片描述
逻辑指令<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值