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

存储大小比较

相关推荐

  1. 嵌入学习-ARM

    2024-04-14 10:00:04       42 阅读
  2. 嵌入学习-ARM

    2024-04-14 10:00:04       38 阅读
  3. 嵌入学习57-ARM6(内核编译)

    2024-04-14 10:00:04       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-14 10:00:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-14 10:00:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-14 10:00:04       82 阅读
  4. Python语言-面向对象

    2024-04-14 10:00:04       91 阅读

热门阅读

  1. x265中量化函数neon汇编实现分析

    2024-04-14 10:00:04       32 阅读
  2. 安卓逆向之-Xposed RPC

    2024-04-14 10:00:04       33 阅读
  3. 为什么ClickHouse查询速度快

    2024-04-14 10:00:04       41 阅读
  4. [RK-Linux] RK3399使用官方固件rkbin方式加载U-Boot

    2024-04-14 10:00:04       33 阅读
  5. 学习R语言第三天

    2024-04-14 10:00:04       35 阅读
  6. 【Apache2】彻底删除 Apache2 服务器

    2024-04-14 10:00:04       40 阅读
  7. leetcode最长有效括号

    2024-04-14 10:00:04       36 阅读