您的位置:首页 > 其它

ARM预备知识

2017-03-09 18:39 169 查看
【1】半导体器件的开关特性

二极管:正向导通

三极管:区分NPN和PNP

NPN:B极高电平,三极管导通,电压方向C->E

PNP: B极低电平,三极管导通,电压方向E->C

MOS管:区分N沟道和P沟道

N沟道:G极高电平,MOS管导通,通常S极接地

P沟道:G极低电平,MOS管导通,通常S极接Vcc

 

【2】逻辑运算和位运算

与运算:与0清零

或运算:或1置1

异或:  异或1取反

 

位运算:(重点)

& | ~ << >>

int a;

 

1. 将a的第3位置1

   0000 0000 ... 1000   0x8  0x1<<3

   a = a | 0x8;     ==>  a = a | (0x1<<3);

 

        2. 将a的第三位清零

   1111 1111 ... 0111       ~(0x1<<3)

   a = a & 0xfffffff7;   ==> a = a & (~(0x1<<3));                // a = a & (0x0<<3); 错误

3. 将a的第2位和第3位置1   0000 0000 ... 1100       0x3<<2              

   a = a | (0x1<<2) | (0x1<<3);   ==>   a = a | (0x3<<2);

4. 将a的第2位和第3位清零      ~(0x3<<2)

   a = a & (~(0x1<<2));

   a = a & (~(0x1<<3));    ==>   a = a & (~(0x3<<2));

 

 

 

位运算练习:

    2. 将a的第2位和第3位先清零然后置1

a = a & (~(0x3<<2)) | (0x3<<2);                        [1]

 

    3. 将a的第5、4、3、2这四个位设置为   0101           位域   [5:2]: 0001  ....

                                         5432                         0111  .....

 

a = a & (~(0xf<<2));             *************0000**     先清零

a = a | (0x5<<2);                *************0101**     再设置

 

 

 

【3】计算机组成原理

存储器:
三级存储系统

主存储器(内存):
在cpu统一编址的范围内

存放正在运行的程序和数据

内存条  RAM SDRAM  SRAM DRAM

特点:掉电易失  速度快   价格贵  容量小   cpu可以直接访问

 

辅助存储器:

存放暂时不参加运行的程序和数据

硬盘、磁盘  ROM   flash  nandFlash  norflash  emmc

特点:掉电不易失  速度慢  价格便宜  容量大   cpu不可以直接访问

 

高速缓冲器(cache):

存放正在运行的程序中比较活跃的部分

特点:掉电易失  速度更快  价格更贵   容量更小

 

运算器:ALU

 

 

计算机的总线结构

总线是一组能为多个部件服务的公共信息传送线路,它能分时地发送与接收各部件的信息。

 

 

ARM体系结构

ARM 约定:

    Byte :  8 bits

    Halfword :  16 bits (2 byte)

            Word :  32 bits (4 byte)   字

 

 

 

所有处理器按照指令集架构进行分类:

1. 精简指令集处理器    RISC        指令少  功能弱   指令定长

arm

 

2. 复杂指令集处理器    CISC        指令多  功能多   指令不定长

x86

 

大部分ARM core 提供:

ARM 指令集(32-bit)             代码(指令)密度小

Thumb 指令集(16-bit )          代码(指令)密度大

 

 

【4】arm处理器的两种状态

当处理器执行在ARM状态:

所有指令 32 bits 宽

所有指令必须 word 对齐

所以 pc值由bits [31:2]决定, bits [1:0] 未定义 (所以指令不能halfword / byte对齐).

当处理器执行在Thumb状态:

所有指令 16 bits 宽

所有指令必须 halfword 对齐

所以 pc值由bits [31:1]决定, bits [0] 未定义 (所以指令不能 byte对齐).

 

 

 

第一条指令 0x0000 0000         ... 0000

第二条指令 0x0000 0004         ... 0100

第三条指令 0x0000 0008         ... 1000

   0x0000 000c         ... 1100

   0x0000 0010         ... 0000

 

【5】arm处理器工作模式

ARM 有8个基本工作模式:

User : 非特权模式,大部分任务执行在这种模式

        FIQ :   当一个高优先级(fast) 中断产生时将会进入这种模式

        IRQ :   当一个低优先级(normal) 中断产生时将会进入这种模式

        Svc :   当复位或软中断指令执行时将会进入这种模式

        Abort : 当存取异常时将会进入这种模式

Undef : 当执行未定义指令时会进入这种模式

        Sys : 使用和User模式相同寄存器集的特权模式

Cortex-A特有模式:

Monitor : 是为了安全而扩展出的用于执行安全监控代码的模式;

也是一种特权模式

 

1. user是非特权模式,其他7种模式都是特权模式

2. 除了user、sys、monitor其他5种模式称为异常模式

 

异常模式        fiq      irq         svc                   abort                          undef  

        异常源          FIQ      IRQ       Reset/SWI      Data Abort/Prefetch Abort         Undefined instruction

 

reset的优先级最高    FIQ的优先级比IRQ高

 

 

【7】arm处理器的工作寄存器 - 处理器内部的存储器

ARM 有37个32-Bits长的寄存器.    Cortex体系结构下有40个32-Bits长的寄存器

   1 个用作PC( program counter)

           1个用作CPSR(current program status register)

           5个用作SPSR(saved program status registers)

           30 个通用寄存器

 

相应的 r13 (the stack pointer, sp)  栈指针寄存器    存放本模式下的栈的栈顶地址

       r14 (the link register, lr)  链接寄存器      保存返回地址

相应的 r15 ( the program counter, pc) 保存下一条将要执行的指令的地址     pc = lr

相应的CPSR(current program status register, cpsr)  保存当前程序的状态  (当前工作模式,处理器状态,ALU的值)

相应的 spsr (saved program status register)   用来备份cpsr寄存器的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: