一.家族检阅

1.名词分类:

(1)芯片名称:2440,210,6410,

(2)ARM核:a8,arm9,arm11

(3)指令架构:armv4,armv6,armv7

2.每一个芯片都包含了一个核,每一种类型的核都采用了一种具体的指令架构。而ARM公司就是出~~~~售arm核。芯片中最重要的是arm核,直接决定性能。

3.核历史演变

图片:1.png

cortex有三个系列:

(1)M系列,列工控领域:无操作系统,类单片机

(2)R系列,实时系统:可以运行操作系统

(3)A系列,多媒体和无线通信:性能及高

他们的性能对比可从上图横向对比

4.芯片对比

                                2440                              6410                         210

(1)处理速度:400-500                         533-667                    800-1000

(2)缓存:          16kB                                   16kB                         32 kB

(3)内存接口:SDRAM                       SDRAM/DDR                    DDR1/DDR2

(4)支持OS: WINCE/Linux               WinCE/Linux/ANDRIOD     WinCE/Linux/ANDRIOD

(5)其他:     三星停产                    正常生产                              正常生产

二.工作模式

1.请出大帮手:ARM指令手册

2.有七种工作模式,为的是形成不同的使用级别,以防造成对系统的破坏。不同模式可以访问的寄存器不同,可以运行的指令不同。

3.

(1)usr:普通应用程序运行的模式(应用程序)

(2)FIQ:快速中断模式,以处理快速情况,高速数据传输

(3)IRQ:外部中断模式,普通中断处理

(4)svc:保护模式(管理模式),操作系统使用的特权模式(内核)

(5)abt:数据访问中止模式,用于虚拟存储和存储保护

(6)und:未定义指令终止模式,用于支持通过软件仿真硬件的协处理器

(7)sys:系统模式,用于运行特权级的操作系统任务(armv4以上版本才具有)

4.usr是普通模式

其他六种是特权模式

而除了usr和sys模式以外的五种模式是异常模式

三.寄存器和寻址

1.寄存器分类:

图片:2.png

2.一共37个寄存器,31个通用寄存器,6个状态寄存器

图片:3.png

其中usr和sys的寄存器很类似

3.通用寄存器:

(1)不分组寄存器0--7(2)分组寄存器:8--14

(3)PC指针:r15

4状态寄存器:只有在异常模式下,才会既有cpsr又有spsr,usr和sys模式下只有cpsr,为的是保护现场

图片:4.png

(1)N:表示符号,1表示负数,0表示正数。如两个数进行比较和减法操作
(2)Z:当两个数相等,为1,否则为0,也是比较和加法操作居多(3)I:当他为1的时候,处理器不能产生中断,即中断屏蔽
(4)F:快速中断屏蔽,为1生效(5)M【4:0】:表明不同的工作模式,可读可写,及变换工作模式,一般用读,修改,写的方式来切换工作模式。
5.特殊寄存器
(1)r13:sp指针,堆栈寄存器(2)r14:LR链接寄存器。有两个特殊功能,每一种模式下都可以用于保存函数的返回地址,另外就是异常处理后的返回地址,如中断。
(3)r15:PC指针,程序计数器
6.寻址方式:处理器根据指令提供的信息找到所需要的操作数的过程,针对源操作数
7.立即寻址:操作数直接给出,以#作为前缀
               add     r0,r0,#0x3f
8.寄存器寻址:操作数存放在寄存器中,以寄存器直接出现在指令中               add     r0,r1,r2
9.寄存器间接寻址:操作数在内存中,其对应的地址存放在寄存器中,以【寄存器】的形式出现在指令中
               ldr     r0,[r2]
10.基址变址寻址:操作数在内存中,其对应的地址由基址寄存器里的值作为基地址,然后加上偏移量,从而得到操作数在内存中实际的物理地址,以【基址寄存器,偏移量】形式出现在指令中               ldr     r0,[r1,#4]
11.相对寻址:和基址变址相似,只不过以当前PC指针的值作为基地址,然后加上标号偏移量,从而得到实际的操作数地址,常用于程序的跳转和返回。
                              bl     next(相对寻址)
               ...     ...               next
               ...     ...               mov     pc,lr