- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
S3C2440A_编程模式
第二章 编程模式
从编程者的角度看,ARM920T可以处于下面两种状态中的一种:
● ARM状态:执行32位字对齐的ARM指令集
● THUMB状态:可以执行26位半字对齐的THUMB指令集。在这种状态下PC用位1在半字间选
择。
注意:在两种状态间切换不影响处理器状态和寄存器的内容。
转换状态
进入THUMB状态
a、在操作数寄存器状态位(bit0)置位的情况下执行BX指令可以进入THUMB状态
b、如果在THUMB状态发生中断,从中断返回时将自动进入THUMB状态
进入ARM状态
a、在操作数寄存器状态位(bit0)清零的情况下执行BX指令可以进入THUMB状态
b、在处理器进入中断时。此时,PC值被放在中断模式连接寄存器中,然后跳到中断的
向量地址执行命令
存储格式
ARM920T将存储体堪称是从0开始的字节集合。0~3字节放第一个储存字,4~7字节放第二
个等等。字的存储方式有Big-Endian (大端)和Little-Endian (小端)两种类型。
指令长度:
32位的ARM指令或16位的THUMB指令。
七种操作模式User、FIQ、IRQ、Supervisor、Abort mode、System、Undefined
ARM状态寄存器分配
THUMB状态寄存器分配
ARM和THUMB状态寄存器对应关系
CPSR寄存器
V、C、Z、N为条件位,算术和逻辑运算可以改变它的值,其值也用来做指令的执行条件。
控制位:
T:反映操作的状态
1:THUMB状态
I、F:中断禁止位
1:禁止IRQ,FRQ中断响应
M0~M4:不同的组合决定处理器的操作模式
注意改变PSR中标志时不要改变了保留位。
关于寄存器更具体的说明可以查看杜雷春编的 《ARM体系结构与编程》
异常
处理器暂时中止正常的流水线。
进入异常处理的步骤:
1、保存下一条指令地址到相应的连接寄存器。
2、将CPSR拷贝到SPSR
3、设置CPSR中模式位为相应的模式
4、从相关中断向量中取得下一条指令地址
若发生异常时处理器正处在THUMB状态,将自动切换到ARM状态。
离开异常状态:
1、将LR减去一个适 的偏移量后放入PC
2、拷贝SPSR到CPSR
3、清除进入异常时设置的终端禁止
注意从THUMB进入异常返回后不需要转换回THUMB状态,因为从SPSR恢复的CPSR已经设置了T位。
Table2-2总结了进入异常时保存在R14中的PC值,和推荐的从异常返回的指令。
FIQ
快速中断请求
通过保持nFIQ输入引脚的低电平可以产生FIQ中断。ISYNC引脚能决定nFIQ和nIRQ的同步异步
状态。ISYNC为低时nFIQ和nIRQ被看作是异步的。 CPSR中F标志为0’时ARM920T在每条指令的结
束检查FIQ同步器输出的低电平。
IRQ
普通中断请求
通过拉低nIRQ输入引脚产生,有限级低于FIQ。
RESET
重启
nRESER为低电平时,ARM920T放弃执行的指令,然后接着从增加的字 址取指令。
nRESER回到高电平时,ARM920T拷贝当前PC、CPSR到R14_svc和SPSR_svc,然后将M[4:0]
设为10011 (特权模式),置位I,F标志位,PC从0x00开始取指令,恢复到ARM状态。
中断向量表:
中断优先级:
从高到低为:重启,数据中止,FIQ,IRQ,指令中止,未定义指令和SWI
文档评论(0)