嵌入式学习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闪存 新一代非易失性存储器

存储大小比较

相关推荐
小弥儿5 小时前
GitHub今日热榜 | 2026-09-18:腾讯双项目上榜
学习·开源
知识分享小能手7 小时前
深度学习学习教程,从入门到精通,深度生成模型 —— 知识点详解与代码实现(20)
人工智能·深度学习·学习
m4Rk_8 小时前
【论文阅读】Agent 记忆机制(74):CompassMem——从相似度检索走向事件图上的记忆导航
论文阅读·人工智能·学习·开源·github
小李不想当小白8 小时前
DMA直接存储器存取(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·分享
2601_9499506310 小时前
练题簿在线练题全流程:从资料导入到模拟考试与错题复盘
学习·考研·小程序·刷题·小程序推荐
别动我齐刘海10 小时前
ROS2 Jazzy + C++ 实战路线——基础学习2
c++·人工智能·vscode·python·学习·机器学习·机器人
水云桐程序员12 小时前
量子力学概论,量子力学概念总结
笔记·科技·学习·量子计算
三克的油14 小时前
java-学习1
java·开发语言·学习
j7~14 小时前
【C++微服务项目开发脚手架】(接口篇一)gflags + gtest + spdlog 接口学习笔记
c++·学习·gtest·项目开发·spdlog·gflags·c++项目微服务开发脚手架
彧azz14 小时前
图的最短路径:Dijkstra与Floyd算法
数据结构·笔记·学习