嵌入式学习52-ARM1

知识零散:

1.flash: nor flash 可被寻地址 nand flash 不可寻地址

指令:

add 加 Sub 减 cmp 比较大小 orr 置1 bic 清0

ASR 算数右移 LSL逻辑左移 Ldv 伪指令

16G+128G RAM ROM(flash)

mov 后加s nvcv位 moveq

1、ARM的工作模式有哪些?(7种User非特权模式 ,大部分任务执行 在这种模式 FIQ : 当一个高优先级(fast)中断产生时将会进入这种模式 IRQ :当一个低优先级(normal)中断产生时将会进入这种模式 Supervisor :当复位软中断 指令执行时将会进入这种模式 Abort :当存取异常 时将会进入到这种模式 Undef : 当执行 未定义指令 时会进入这种模式 System :使用和User模式相同 寄存器集的特权模式

2、ARM9的通用寄存器有几个?

ARM9通用寄存器有 37个 r0-r12 存数据

Cortex通用寄存器有 40个

3、异常向量表中irq的异常向量是多少? 0x18

4、cpsr中的那几位是用来设置工作模式的?

切换arm内核的工作模式**(低5位 M)**

由于内核的工作模式是由cpsr寄存器的低5位来设置的,那么就可以先把cpsr读出来,更改低5位之后再设置进去。这里读取cpsr使用mrs 指令,cpsr寄存器用msr指令,需要注意的是在keil环境下写cpsr需要写成: msr cpsr_c r0;将r0的值写入到cpsr寄存器

psr分为

cpsr:当前程序状态寄存器

spsr:保存程序状态寄存器(保护现场)

5、r13,r14,15别名是什么?有什么作用?

R15(PC):

程序计数器,用于存储当前取址指令 的地址
R14(LR):

链接寄存器,一般有以下两种用途:

1.执行跳转指令(BL/BLX)时,LR会自动保存跳转指令下一条指令的地址

程序需要返回时将LR的值复制到PC即可实现

2.产生异常时,对应异常模式下的LR会自动保存被异常打断的指令的下

一条指令的地址,异常处理结束后将LR的值复制到PC可实现程序返回
R13(SP ):
栈指针,用于存储当前模式下的栈顶地址(栈里都是临时数据)

6.那么是什么立即数呢?

指令要操作的数据以常量的形式出现在指令中,称为立即数

12位立即数的条件是?

  1. 如果某个数的数值范围是0~255之间,那么这个数一定是立即数;
  2. 把某个数展开成2进制,这个数的最高位1最低位 1之间的二进制数序列的位数不能超过8位;
  3. 这个数的二进制序列的右边必须为偶数个连续的 0

例如:0x234 = 0000 0000 0000 0000 0000 0010 0011 0100

最高位1至最低位1之间的二进制数序列:1000 1101没有超过8位

末尾1的右边有2个0,所以0x234是立即数

最高位1至最低位1之间的二进制数序列:0011 1110 1010 1101 从第一个1开始到最后一个1之间超过8位,不满足条件1,所以这个数不是立即数

这是因为ARM中将这 12bits 分为 8bit 常数(0~255)和 4bit 循环右移位值(0~15)

8bit 常数范围(0~255),位移的步进值是以2为单位(即实际位移 2 * rotate 位),可以表示循环有以(0~30)偶数位: 0、2、4、6、8、10、12、14、16、18、20、22、24、26、28、30。在实际存储这个数值的时候,要想办法把这个数压缩到这12位中去。压缩的方法就是找一个数,这个数必须是一个8bit数,之后循环右移2 * rotate位。如果能找打这个数,那么待保存的数就是立即数,否则就不是。

7.RAM 1. sram 2. dram 3. sdram 4. ddr ram

8.ROM

1.rom 2.prom 3.eprom 4.eeprom 5.flash闪存 新一代非易失性存储器

存储大小比较

相关推荐
潮汐退涨月冷风霜40 分钟前
机器学习之非监督学习(四)K-means 聚类算法
学习·算法·机器学习
GoppViper1 小时前
golang学习笔记29——golang 中如何将 GitHub 最新提交的版本设置为 v1.0.0
笔记·git·后端·学习·golang·github·源代码管理
羊小猪~~1 小时前
深度学习基础案例5--VGG16人脸识别(体验学习的痛苦与乐趣)
人工智能·python·深度学习·学习·算法·机器学习·cnn
Charles Ray2 小时前
C++学习笔记 —— 内存分配 new
c++·笔记·学习
我要吐泡泡了哦3 小时前
GAMES104:15 游戏引擎的玩法系统基础-学习笔记
笔记·学习·游戏引擎
骑鱼过海的猫1233 小时前
【tomcat】tomcat学习笔记
笔记·学习·tomcat
贾saisai5 小时前
Xilinx系FPGA学习笔记(九)DDR3学习
笔记·学习·fpga开发
北岛寒沫5 小时前
JavaScript(JS)学习笔记 1(简单介绍 注释和输入输出语句 变量 数据类型 运算符 流程控制 数组)
javascript·笔记·学习
铁匠匠匠6 小时前
从零开始学数据结构系列之第六章《排序简介》
c语言·数据结构·经验分享·笔记·学习·开源·课程设计
架构文摘JGWZ8 小时前
Java 23 的12 个新特性!!
java·开发语言·学习