6836|10

81

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

ARM7中的中断返回地址和3级流水线问题 [复制链接]

        ARM7中的中断返回地址和3级流水线问题:
        (1)  ARM流水线
        由ARM7-TDMI-S技术参考手册P2可知,ARM的流水线结构为:
                      取指---------------->译码-------------------->执行
        ARM代码:   PC             PC- 4              PC - 8
                      0x1008         0x1004             0x1000
        在此页,还注明,PC是指向被取指的指令,而不是正在执行的指令。(也就是说在此 PC值为0x1008 ?)
        (2) 中断返回地址
        在参考书上看到关于ARM异常响应。第一点:将下一条指令的地址存入相应的连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。若异常是从ARM状态进入,LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常类型有关)
       
        问题:1
        即使产生的中断,执行阶段的指令还是会被执行,流水线其它指令将会被放弃,而处理器将会从向量表的适当入口填充流水线。
         要是这样的话,并且由人为的保存中断返回地址,应该是很有时间性的。或者说,所以有LR寄存器的出现,在清空流水线前,自动将下一条指令的地址保存到LR中,由(1)可以看出,就应该是PC - 4,即 0x1004。
         但是参考第(2)部份,“若异常是从ARM状态进入,LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常类型有关)” 在此都说的是保存下一条指令的地址,直接地址应该是0X1004,算法也应该是当前PC - 4,为什么要加4(PC+4)?
        问题:2
        SUB LR,LR,#4      ;计算返回地址
        在IRQ中断程序中,第一句话,都是这样。请问LR中的地址是什么,应该是由ARM core自动计算的吧。
        问题:3
        在很多参考资料上,都会有一个表,关于异常进入\退出。在这列出一项
                                                          以前状态
                                                  ARM R14_x    Thumb R14_x
        异常类型            返回指令        
        SWI          MOVS   PC, R14_svc       PC+4           PC+2
        FIQ           SUBS   PC,   R14_fiq,#4     PC+4           PC+4
       
        请问这里的以前状态是什么意思,在流水线里是什么了?
此帖出自ARM技术论坛

最新回复

应该是这样的: “将下一条指令的地址存入相应的连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。”这里的“将下一条指令的地址存入相应的连接寄存器LR”,说的把是寄存器pc当前值存入LR,也就是当前指令地址A+8存入了LR,那么如果处理完中断后照此返回的话,显然会跳过A+4这条指令而造成错误,因此需要人为将LR减4,也就是你在问题2中的这条语句: SUB LR,LR,#4 ;计算返回地址 注意sub是减法不是加法…… 另一方面,正如狗狗所说,某些异常是特殊的,对于这些特殊的异常而言,存入LR的值不是A+8而是A+4,那么这些异常处理函数就不需要再重新计算返回地址了。  详情 回复 发表于 2007-3-26 18:12
点赞 关注
 

回复
举报

82

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
自己先顶下
顺便再问个问题,在中断中保存相关寄存器
STMFD   SP!, {R0-R3, R12, LR}           ; 保存任务环境
其中R0-R3是传参数的寄存器,LR是连接寄存器,这里的R12是什么意思了?
此帖出自ARM技术论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
已经过了一天了,自己顶
此帖出自ARM技术论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

4
 
1. pc=0x1008,因为要回去执行0x1004, 所以要-4
2. lr 是得理自动计算的。
3. 以前状态, 是指它是ARM状态,或是THUMB状态。

STMFD   SP!, {R0-R3, R12, LR}         ; 保存任务环境
这是按ATPCS来的。按ATPCS,子程序不保证这些寄存器在退出时仍为原来内容,
你的ISR如果要调用C写的子程序,就必须保护它们。
此帖出自ARM技术论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
2. lr 是处理器自动计算的。
此帖出自ARM技术论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

6
 
谢谢楼上的兄弟关注。
不过,小弟还是有些不明白:

,“若异常是从ARM状态进入,LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常类型有关)” 在此都说的是保存下一条指令的地址,直接地址应该是0X1004,算法也应该是当前PC - 4,为什么要加4(PC+4)?

希望高手门能细心指导下吧。对于PC而言,下一条指令永远该是加四,不应该是减呀!!!!
此帖出自ARM技术论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

7
 
有偿求购MODBUS通讯的程序
要求:
1。把pc中的数据发送到一个MODBUS的设备中,您可以通过COM口(232C设备)或TCP/IP设备发送到这一个设备中.
2。PC机器也可以读取MODBUS的设备中的数据。
3。最好是用VB代码实现
4。交易地点在上海,以现场调试成功付款;
联系人:王刚领
联系电话:13636579369
MSN:wangganling@hotmail.com
qq:82268578
E_mail:wanggangling_1@sina.com
此帖出自ARM技术论坛
 
 
 

回复

101

帖子

0

TA的资源

一粒金砂(初级)

8
 
有些翻译可能会带来误解的,我不知道你那是什么书。

出现不同理解时,以ARM提供的范例代码为准。
此帖出自ARM技术论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

9
 
普通的+8,有几种特殊的中断是+4的
此帖出自ARM技术论坛
 
 
 

回复

94

帖子

0

TA的资源

一粒金砂(初级)

10
 
谢谢大家着的回复呀
其实小弟就想搞清楚一个问题:

返回地址,依我理解应该是PC - 4 或者PC - 8 才对,为什么书上,资料上都说的是PC + 4或者PC + 8


goodluckyxl(被人遗忘的狗) 普通的+8,有几种特殊的中断是+4的
这们兄弟也说的是+8 +4呀。

“若异常是从ARM状态进入,LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常类型有关)” 在此都说的是保存下一条指令的地址,直接地址应该是0X1004,当前PC应该是 0X1008,算法也应该是当前PC - 4,为什么要加4(PC+4)?

在此再谢谢大家 了

此帖出自ARM技术论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

11
 
应该是这样的:
“将下一条指令的地址存入相应的连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。”这里的“将下一条指令的地址存入相应的连接寄存器LR”,说的把是寄存器pc当前值存入LR,也就是当前指令地址A+8存入了LR,那么如果处理完中断后照此返回的话,显然会跳过A+4这条指令而造成错误,因此需要人为将LR减4,也就是你在问题2中的这条语句:
SUB LR,LR,#4 ;计算返回地址
注意sub是减法不是加法……

另一方面,正如狗狗所说,某些异常是特殊的,对于这些特殊的异常而言,存入LR的值不是A+8而是A+4,那么这些异常处理函数就不需要再重新计算返回地址了。
此帖出自ARM技术论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表