ARM学习笔记
- 格式:pdf
- 大小:420.27 KB
- 文档页数:25
2012-2-9
ARM流水线
指令集写一些汇编程序. ARM的异样:与中断的区别
片内外设,2410ARM9.
AT:ARM926E-SAM9645.
ARM是一家英国的公司,生产RISC:精简指令集的.(CISC:复杂指令集)对入嵌入式行业来说,主频高不是一切.同样主频下,CISC的执行效率要远远低于RISC,ARM的指令长度是固
定的4个字节.而CISC对取来的命令还要进行指令长度的判断(主频不是一切论据1).
比较流行的:51,PIC,430,AVR,MIPS,SUN,PPC,ARM的CPU.
架构更换:指令集,开发环境.会浪费大量的时间与金钱.
ARM后来居上的原因是:指令集完全兼容,但是外设的操作不同,但依然降低了很多公司的前期投入.
ARM公司技术研讨会,5月1,10月1,一年两次.
ARM约定:
Byte: 8bit
HALFWORD: 16bit 2Byte WORD: 32bit 4Byte
大部分ARMcore提供:
ARM指令集 32bit
Thumb指令集 16bit
Jazelle cores支持Java bytecode :意味着使用此类CPU之后不再需要JAVA虚拟机,就有更高的效率,(主频不是一切,论据2)
7个基本工作模式:划分模式是了资源控制.最主要的资源是寄存器的资源.(牢记)
寄存器是存在与核内:CORE->寄存器->cache->存储器.寄存器的资源很少.而内核访问
内存必须通过中间的寄存器 (猜测,若ADD R2,R2,R1指令,如果全写地址没有办法得到32位的指令长度)
USER:应用程序90%
FIQ:[快速中断]中断是有外设提出的请求,高优先级, (中断的优先级:当低优先级
的中断在执行时,高优先级的中断可以打断)而在ARM中则FIQ只能有一个,不允许有一个更
高优先级的打断,FIQ里面资源独立,与IRQ不重复,所以进入中断时要置位FIQ禁止. IRQ:[中断]低优先级中断,同上,IRQ也只能有一个,资源独立.
Supervison:管理模式,当复位或软件中断指令执行时将会进入这种模式,CPU复位
涵盖外设复位与内核复位.复位后CPU内的所有资源全部回到原始状态(管理模式,ARM状
态),
会引起复位的是: 上电复位
人为复位
欠压/过压复位 CPU的工作电压. 依赖片内外设
看门狗复位: 也依赖片内外设,是由看门狗的定时器来产生复位源.
软件中断:系统调用是通过软件中断实现的,软件中断是拿SWI实现的,一个系统调用一个SWI,有对应的软件中断号,C库在用户空间,应用程序都在用户模式下工作的,而要陷入内核(LINUX)是切换到管理模式,因为user模式下不能访问到管理模式下的资源,
所以要有SWI指令来使得能进入管理模式来做一些必须进入此模式下才能访问的资源,软
件中断为用户访问受限资源提供接口. Abort:终止模式,存取异常时进入,是内核存取数据,内核需要的数据有两种,用户
数据,指令数据
指令数据失败:指令终止模式
用户数据失败:用户数据终止模式
Undef:未定义指令不等于错误的指令,如2410使用的是V4T的指令集版本,而编写指令是用V5TE的指令集来编写的,或多或少有独有的指令集,在仅支持V4T的内核上跑,
System:使用和User模式相同寄存器集的特权模式,虽然共用相同的资源,但能访
问在user模式下不能访问的资源
异常不能被屏蔽,而中断可以.中断是异常的一种,异常的范围更广,涵盖了中断. 异常产生时,必须为ARM状态,由内核自动转换.
非特权模式不能由异常(异常包括中断,未定义命令等)进入,特权模式由特定异常
产生时进入,
1非特权,6特权(5异常,1非异常system)
寄存器 R0~R15+CPSR+SPSR,其中R0~R7+R15在物理上与其他模式共享,而R8~R14为
SPSR用来保存产生异常前的CPSR(当前程序的状态)
SP:堆栈指针
LR:链接寄存器,用来保存PC的,为了返回进入异常前状态.
Thumb
低位寄存器:R0~R7
高位寄存器:R8~R14
CPSR: USER模式下不具备往CPSR写的权限
31:N = 1时,说明ALU结果是一个负数,ALU:算数逻辑单元. 30:Z = 1时,说明ALU结果是0.
29:C = 1时,说明ALU加法时有进位或减法时有借位,都会置1.
28:V = 1时,说明ALU结果溢出时.
默认情况下不影响标志位,在命令后加S来让结果影响标志位.
27:Q = 1时,表示DSP扩展运算饱和状态 ARM 5TE/J架构支持. 24:J = 1时,表示在Jazelle状态. ARM 5TE/J架构支持.
7:IRQ = 1时,置1时,屏蔽所有IRQ中断.
6:FIQ = 1时,置1时,屏蔽所有FIQ中断.
5:T = 1时,ARM处理器的状态,等于0时处理器处于ARM状态,等于1时为Thumb状态,
此值不由人为更改. 4~0:Mode,表示了处理器处于哪种模式下,编程人员可以读,可以写,USER模式下不具备
往CPSR写的权限,只能读,在特权模式下可以通过写此处的值来改变工作模式.
程序指针PC:
在ARM状态下,所有指令32bits宽,所以指令必须word字对齐,所以PC值由bits[31:2]决定,而bits[1:0]内的值目前无效(因为word对齐,一起跳转1个字长的长度,所以要加4,bits[1:0]里的值无效).0000 0000->0000 0100->0000 1000->0000 1100……
在Thumb状态,所有指令16bits宽,所以指令必须halfword半字对齐,所以PC值由
[31:1]决定,bits[0]无效 在Jazelle状态,所有指令8bits宽.处理器会按字一次去4跳指令
异常的处理(第三天的一个重点):以下均在ARM状态下.
ARM core实现:内核自动实现,不用自己编写.并发执行,一个周期内完成.
拷贝cpsr到spsr_mode 设置适当的cpsr位:
改变处理器状态进入ARM模式,异常模式内只能在此模式下工作,因为Thumb
没有返回原状态的指令(操作spsr)
改变处理器模式进入相应的异常模式
设置中断禁止位进制相应中断 保存返回地址到LR_mode
设置PC为相应的异常向量, 异常向量表是一个公共的入口,(有一部分高端映射没
听明白,只有ARM9以上支持,以及ARM720T支持)(一般写的裸机系统从0x0开始放,而有了
linux启动过之后用高端映射,到了0xffff0000开始放.)
返回时:人为编写操作.也是一个周期内完成,并发执行 从SPSP_mode恢复cpsr.
从LR_mode恢复PC.
字节序:
小端:低地址存低位数据. 大端:低地址存高位数据.
在2006年之后使用了新的命名方法
contex
A:app,应用处理器.A5,A9都是双核. R:real-time实时.硬盘,
M:MCU微控制单元.轻量级CPU.M0,M3,M4,核能跑50MH,而51只能1MH(F ost = 24M/12).
高性能方向:
TI(德州仪器)DSP出名:非对称式双核(ARM+DSP双核,DSP由ARM分配任务),SMP(对称式双核)
Samsung:
Freescale:moto原来的半导体部门.
Marvell:
Qualcomm高通: Nvidia:
低功耗低成本的微控制器:
M3:STM32系列 意法半导体.第一个获得M3授权的公司.
实时: R4
所有ARM指令均为32bits,大部分为单周期指令,所有指令都可以条件执行,采用Load/Store架构(Load:数据从存储器到寄存器,store:数据从寄存器到存储器).
EEPROM与FLASHROM具有通用ROM的特点,掉电不丢失数据,但是还具有可写功能.
DMA直接内存访问,不用经过内核,源与目的的数据交流.但是需要DMA设备.
B:PC+_32Mbyte,一跳转就不关心返回. BL:保存返回地址到LR,返回地址为当前执行指令的下一条指令的地址.
对于非叶子结点的函数,LR必须压栈保存,否则只能返回一次跳转前的状态,而不能多
次返回.
协处理器:多达16个可定义协处理器,2410上有cp15,是有16个32位的寄存器,常用协处理器来作为ARM cache控制器,高端映射等.协处理器不在核内,属于片内外设.
Thumb是16bits指令集:
优化代码密度.
提高窄内存操作性能. 是ARM指令集的一个功能子集.
缺点:
条件执行不可用.
源和目的寄存器相同
只有地段寄存器可用 常量大小受限制.
内嵌的桶形移位不可用.
Jazelle:
是的ARM cores执行8bits的Java字节码 95%的字节码执行使用硬件门电路(说明效率非常高).
更高的性能
增加的门电路<12K
SOC概念,片上系统,是信息系统核心的芯片集成.是一个微小型的系统. BUS:总线,考点:AMBA先进的微处理器架构总线,衍生出了两个分支,AHB(类似北桥)总
线,先进的高性能总线,APB(类似南桥)先进的外设总线.绝大部分是按照他们的速度来划分
的,由PPT的图知道,APB类似一个AHP的外设.
计算机中:
北桥:离CPU较近,挂着CPU,内存 南桥:键盘鼠标等,对速度要求不高.
ARM处理器的内核:
尾缀:
T:表示支持16为的Thumb指令集. D:支持片上调试测试.