




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于ARM寄存器组及工作模式知识(周方辉)2012/8/10编改记录编写日期内容概要2012-08-10创建目 录1参考文献21.1内部参考文献21.2外部参考文献22名词解释23ARM核工作模式23.1程序状态寄存器33.2寄存器分组43.3何为特权(异常)模式63.4各种模式工作机制73.5各种模式工作返回用户模式机制94ARM核工作模式初始化参考代码111 参考文献1.1 内部参考文献内部参考文献指的是周方辉自生的百度博文中的文件。无内部参考文献。1.2 外部参考文献外部参考文献指的是相对于上述内部参考文献以外的文件。ARMv8_ISA_PRD03-GENC-24-0.pdfcortex_a8_r3p2_trm.pdfCortexA8TechRefManul.pdf2 名词解释CPSR:当前程序状态寄存器,其数值反映出当前程序运行的一些状态指示。SPSR:保存程序状态寄存器,在程序调用等情况下,需要保存一下当前程序状态寄存器的值(SPSR=CPSR),便于日后回复。SP:堆栈指针寄存器,其值用于执行当前堆栈栈顶(或栈底)位置。PC: 程序指针寄存器,其值用于指向要执行的程序代码地址。LR:连接返回寄存器,保存要返回的地址,PC=(无符号数)0011CCC=1(无符号数)1001LSC=0,且Z=1=(带符号数)1011LTN!=V(带符号数)1101LEZ=1,或N!=VSB,静态基地址寄存器。R10-SL,数据堆栈限制指针。R11-FP,(frame pointer) 帧指针。R12-IP,(Intra-Procedure-call Scratch Register)子程序内部调用暂存寄存器。R13-SP,堆栈指针stack pointerR14-LR,连接寄存器linker register,用于跳转后返回(PCPC,程序计数器program counter,用于指向程序执行代码。ATPCS规则就使用了上述别名。3.3 何为特权(异常)模式这8组寄存器中,处理User外,其余7中都为特权模式或异常模式。我们可以给特权模式作如下规定:1、 对PSR寄存器中的模式位组有修改能力。2、 除了能访问共用寄存器外,还有自己的一些专用寄存器(System特权模式除外)。目前为止,除了User模式外,其它的都属于特权模式。何为异常模式:1、 异常模式都属于特权模式的类别。2、 都有自己的专用模式处理程序入口地址(又称异常向量表),为CPU提供实时高效和智能服务。虽然也是8(8x4=32字节)个地址(存放指令,仅有一条,多数为跳转指令),但是它们与8种工作模式不是一一对应的。对应表异常地址表名称工作模式名称0x0000_0000ResetSupervisor0x0000_0004Undefined instructionUndefined0x0000_0008Software InterruptSupervisor0x0000_000CAbort PrefetchAbort0x0000_0010Abort DataAbort0x0000_0014Reserved在Cortex A8中可能归属Monitor模式,需确认。0x0000_0018IRQIRQ0x0000_001CFIQFIQ我们发现,8中模式中Supervisor和Abort各占用了两个表项,而User、System和Monitor没有任何关联,这是为什么?其一User模式是程序正常运行模式,它不需要进行特殊的异常处理,即User不是异常模式,所以它没有占任何表项;另外System是特权模式,但是它不是异常模式,所以也不需要占用任何表项,System与User完全共用寄存器,同时有能力进行模式切换(修改PSR寄存器的模式位),所以它是其它特权模式与User模式的交互桥梁。对于Secure Monitor模式来说,是安全模式,需要协处理器来启动该模块,方能工作。同时又并在8种模式之中,我推测,Reserved会留给该异常模式使用,但是需要认证。何为中断模式:1、 属于异常模式。2、 ARM核用来接入核外部的异常事件,称之为中断,FIQ和IRQ两种。各种模式关系图:3.4 各种模式工作机制工作模式切换2种方式:1、 程序手动切换,在某种特权模式下,可以切换到另外一个特权模式下,不过User用户模式没有这个能力,因为它不是特权模式。2、 异常切换,异常事件发生,可从User模式下切换到异常模式下,或从另外一种异常模式下切换到该异常事件模式下。CPSR、PC和SPSR_xxx、LR_xxx寄存器工作关系:当发生异常时:LR_xxx将保存但前PC值,SPSR_xxx将保存CPSR,因为PC会继续存放异常模式下的指令地址,CPSR将继续反应异常模式下程序运行状态,所以要保存。发生异常时,这些动作硬件自动完成。同理:当异常程序结束时,CPSR=SPSR_xxx,PC=LR_xxx,恢复正常程序运行。各种SPSR_xxx进入模式时备份CPSR用,各种LR_xxx用来保存PC。退出异常时,用户在异常程序的末尾写入一条完成PC=lr指令,就自动完成CPSR=SPSR_xxx动作。CPSRSPSR_xxx和PC+4LR_xxx为一条指令完成,并非两条指令;同理SPSR_xxxCPSR和LR_xxxPC也是一同指令一气呵成完成。R13_xxx寄存器用途(sp_xxx堆栈指针):指示相应异常模式下,私有堆栈空间,该堆栈可以完成异常模式下函数程序的切换参数传递。FIQ和IRQ特权模式(异常或叫中断模式):这两个特权模式是为Cortex-A8核以外的异常提供了处理接口。如按键、ADC转换成功和RTC等,这类相对Cortex-A8核来说(虽然这所有模块可能跟CortexA8一起都在一颗芯片上,如S5PC100)是外部打断了Cortex-A8核的正常运行,所以又称之为FIQ和IRQ中断模式。Cortex-A8对FIQ和IRQ中断是否响应,在CPSR中有F和I位来控制,它们值为0表示允许响应,为1表示禁止响应,即FIQ和IRQ是可屏蔽中断,但是不能禁止中断事件发生,只是Cortex-A8内核不做响应而已。Supervisor特权模式(异常):进入Supervisor异常模式,一般有两种方式:硬件方式芯片复位(上电复位和复位引脚引发)和软件方式执行swi指令。Abort特权模式(异常):Abort异常模式,有Cortex-A8内部硬件自动引发,对内存数据的存取和指令预取失败会引发该异常。Undefined特权模式(异常):Undefined异常,由Cortex-A8内部硬件自动引发,当执行一条无法识别的指令时,将发生该异常。Secure Monitor特权(异常)模式:Secure monitor异常,当有私密的数据程序(如货币交易)要执行时,用户软件调用SMI(SMC替代SMI指令)指令即可进入该模式。System特权模式:System特权模式是Cortex-A8的7个特权模式中唯一一个没有自己的程序入口地址,所以它不属于异常概念。Systemt特权模式有两个特点:1、 System特权模式下的工作寄存器与User用户模式下的寄存器完全一样,不多一个,也不少一个。2、 System特权模式能操作CPSR_mod权限,也就是说可以切换各种特权模式,访问他们的资源。上述特点使得System特权模式为其它6种特权(异常)模式下访问User模式下的资源。也就是说,在6种异常特权模式下,通过将CPSR_mod设置成System模式下,来访问User模式下资源,完成后,再将CPSR_mod改回去就恢复原有异常模式。默认嵌套是禁止的。Thumb Execution Environment(ThumbEE),在Thumb-2基础上发展起来的,2005年发布,为Java之类服务。进阶SIMD(NEON)64bit和128bit单指令多重指令集(SIMD)。期中用户模式和系统模式共用寄存器组,为用户模式进入伪特权提供机制。ARM中各个异常处理响应优先级:Reset(Supervisor),优先级最高。Data Abort,优先权次之。FIQ,优先级排到第3位。IRQ,优先级排到第4位。Prefetch Abort,优先级排到第5等级SWI,优先级排到第6等级。Undefined,优先级低7位。Secure Monitor,优先级最低。3.5 各种模式工作返回用户模式机制异常程序相关的代码行为原则:1.MOVS PC,LR 当PC作为目的寄存器时,S 表示pc给lr的同时,恢复SPSR_到CPSR2.从SWI(管理模式)和undef异常返回:MOVS PC,LR3.从FIQ, IQR和预取异常(prefect abort)返回:subs pc, lr, #44.从数据异常(Data Abort)返回:SUBS PC, LR, #85.如果LR之前被压栈的话使用LDM “”: LDMFD SP ! , PC1、 发生中断时,将CPSR保存到SPSR_xxx中,改变CPSR_mod,将返回地址保存到LR_xxx中,将PC指向相应的中断向量地址。2、 中断返回程序中:中断类型返回指令说明SWI、SMC和UndefMOVS pc,lr执行中断后的程序,为什么没有-4?swi和smc指令产生,不同于其它异常方式,下一步指令就是要执行的指令,所以没有返回指令-4行为。FIQ、IRQ和Prefetch Abort SUBS pc,lr,#4执行中断后的程序,注意,Prefetch Abort属于指是在指令即将被执行时发生,所以其只要-4尔不是-8,就重新取该指令。Data AbortSUB pc,lr,#8执行中断前的程序,重新存取数据。下图就是对两个异常中断返回偏移量的解析。注意:如果LR之前是被压入栈的,就用LDMxx sp!,pc指令返回。3、 同时将SPSR_xxx恢复到CPSR中。来自CortexA8TechRefManul.pdf文件如此描述:ARM_UAL.pdf中给出,现在版本中使用SMC来替代SMI,同时也用SVC替代SWI4 ARM核工作模式初始化参考代码以S5PC100的芯片内核为代表:/* *文档作用:A8芯片启动程序,使用汇编编写。*/.equELFIN_CLOCK_POWER_BASE,0XE.equGPG3CON,0XE03001C0.equAPLL_MASK_OFFSET,0x00.equMPLL_MASK_OFFSET,0X04.equEPLL_MASK_OFFSET,0X08.equHPLL_MASK_OFFSET,0X0C.equCLK_DIV0_OFFSET,0X300.equCLK_DIV0_MASK,0X3FFF.equ CLK_DIV0_VAL, (10)|(04)|(38)|(112)|(116).equAPLL_CON_OFFSET,0X100.equCLK_DIV1_VAL,(116)|(112)|(18)|(14).equ CLK_DIV1_OFFSET,0x304.equAPLL_VAL,(131 | 44516 | 48 | 0).equMPLL_VAL,(131 | 8916 | 28 | 1).equEPLL_VAL,(131 | 9016 | 38 | 3).equHPLL_VAL,(131 | 13316 | 68 | 2).equ CLK_SRC0_OFFSET,0x200.equGPG3DAT,0XE03001C4.equMPLL_CON_OFFSET, 0X104.equEPLL_CON_OFFSET, 0X108.equHPLL_CON_OFFSET, 0X10c.extern mmu_setmtt;.text.global _start_start:bresetldrpc,_undefined_instructionldrpc,_software_interruptldrpc,_prefetch_abortldrpc,_data_abortldrpc,_not_usedldrpc,_irqldrpc,_fiq_undefined_instruction: .word _undefined_instruction空操作_software_interrupt: .word _software_interrupt空操作_prefetch_abort:.word _prefetch_abort空操作_data_abort:.word _data_abort空操作_not_used:.word _not_used空操作_irq:.word IRQ_Handler_fiq:.word _fiq空操作reset:加载基地址DDIO344k_cortex_A8_r3p2_tra.pdf中P94ldrr0,=0x34000mcrp15,0,r0,c12,c0,0设置处理器访问权限,能访问特权和用户模式 movr0, #0xfffffff mcrp15, 0, r0, c1, c0, 2设置EN=1,使用NEON和VFP模块 movr0, #0x fmxrfpexc, r0进入SVC模式mrs r0,cpsrbicr0,r0,#0x1forrr0,r0,#0xd3msrcpsr,r0ldrr0,=GPG3CON init gpio for ledldrr1,=0x1111strr1,r0 /* 关闭WTD */ldrr0,=0xeamovr1,#0strr1,r0/* * 初始化 core clock 和 bus clock. */P166输入时钟12MHz,屏蔽时间参数3600(0xE10)=300uSldrr0, =ELFIN_CLOCK_POWER_BASE/*0xe*/加载时钟配置寄存器的基地址movr1, #0xe00orrr1, r1, #0x10r1=0x310屏蔽时间值0.3mSstrr1, r0, #APLL_MASK_OFFSET APLL_MASK=0xE10strr1, r0, #MPLL_MASK_OFFSET MPLL_MASK=0xE10strr1, r0, #EPLL_MASK_OFFSET EPLL_MASK=0xE10strr1, r0, #HPLL_MASK_OFFSET HPLL_MASK=0xE10设置CLK_DIV0(0xE010_0300)寄存器P173分频设置DOUTAPLL=MOUTapll/2ARMCLK = DOUTapll / 1,HCLK0 = DOUTarm / 4,PCLK0 = HCLK0 / 2,HCLK0_SECSS=DOUTd0_bus/2ldr r1, r0, #CLK_DIV0_OFFSETldrr2, =CLK_DIV0_MASKbicr1, r1, r2ldrr2, =CLK_DIV0_VAL(116 | 112 | 38 | 04 | 10)orrr1, r1, r2strr1, r0, #CLK_DIV0_OFFSET 设置APLL_CON(0xE010_0100)寄存器P167将0x81bd0400(MDIV=0x1bd(445),SDIV=0,PDIV=4)值赋给APLL_CON寄存器实现FOUTAPLL=(MDIV*(FIN/PDIV)/2SDIV=1335MHz(50MHz到2000MHz)ldrr1, =APLL_VAL(131 | 0x1bd16 | 0x48 | 0)strr1, r0, #APLL_CON_OFFSET设置CLK_DIV(0xE010_0304)寄存器P174DOUTAPLL2 = MOUTAPLL / 1DOUTMPLL = MOUTAMPLL / 2DOUTMPLL2 = MOUTAMPLL / 2DOUTD1_BUS= MOUTAMPLL / 2PCLK = DOUTD1_BUS / 2ldr r1, r0, #CLK_DIV1_OFFSETldrr2, =CLK_DIV1_VALCLK_DIV1_VAL=(116)|(112)|(18)|(14)=0x11110orrr1, r1, r2strr1, r0, #CLK_DIV1_OFFSET设置MPLL_CON(0xE010_0104)寄存器P168将0x(MDIV=0x59(89),SDIV=1,PDIV=2)值存入到MPLL_CON寄存器中实现FOUTMPLL=(MDIV*(FIN/PDIV)/2SDIV=267MHz(10MHz到600MHz之间)ldrr1, =MPLL_VALMPLL_VAL=(131 | 8916 | 28 | 1)=0xstrr1, r0, #MPLL_CON_OFFSET设置EPLL_CON(0xE010_0108)寄存器P168将0x805a0303(MDIV=0x5A(90),PDIV=3,SDIV=3)值保存到EPLL_CON寄存器中FOUTEPLL=(MDIV*(FIN/PDIV)/2SDIV=45MHzldrr1, =EPLL_VALEPLL_VAL=(131 | 9016 | 38 | 3)=0x805a0303strr1, r0, #EPLL_CON_OFFSET设置HPLL_CON(0xE010_010C)寄存器P168将0x(MDIV=0x85(133),PDIV=6,SDIV=2)值保存到HPLL_CON寄存器中FOUTHPLL=(MDIV*(FIN/PDIV)/2SDIV=66MHzldrr1, =HPLL_VALHPLL_VAL=(131 | 13316 | 68 | 2)=0xstrr1, r0, #HPLL_CON_OFFSET设置CLK_SRC0(0xE010_0200)寄存器P169CLK_SRC00=1:FOUTAPLL MOUTAPLL =1335MHzCLK_SRC04=1:FOUTMPLL MOUTM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美容化妆人员综合提升测试卷及完整答案详解(名校卷)
- 2024-2025学年注册公用设备工程师考前冲刺练习题附完整答案详解【网校专用】
- 驾驶员考试考试黑钻押题及参考答案详解【综合题】
- 执业药师之《西药学专业一》强化训练题型汇编及参考答案详解(完整版)
- 2025年上海市商业学校工作人员招聘笔试高频难、易错点备考题库带答案详解
- 商用密码服务平台安全应用策略研究
- 长江中下游地区主栽水稻品种的钾高效筛选及其生理生化特性研究
- 水利遥感监测系统地表水体智能识别技术与应用
- 班班通管理:实施策略与步骤
- 公共空间多语标识对语言习得的促进作用研究
- 高压配电抢修方案范本
- 2025-2030中国茶酒行业市场发展现状及发展趋势与投资研究报告
- 北美128个护理诊断
- 2025高考英语全国II卷试题分析及备考策略指导课件
- 2025年度宠物赛事组织与赞助合同4篇
- 2025年发展对象考试题库附含答案
- 物流公司驾驶员管理的规章制度
- 35KV集电线路安全施工措施
- 机场监控施工方案
- 北京餐厨垃圾收运合同范本
- 压力容器使用单位安全员题库
评论
0/150
提交评论