7540|16

67

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

arm 中断向量表 [复制链接]

请问中断向量表一定要放在flashrom的0地址吗?
如果可以放在别的地方例如SDRAM里,该如何做呢?
我想在sdram里运行程序,能把中断向量表也放到sdram里吗?
此帖出自ARM技术论坛

最新回复

1. ARM中断向量一般是放在0或者0xFFFF0000,由CP15的V(Bit13)控制 2. 现在的ARM11还可以用CP15的VE(Bit24)控制中断向量是固定地址(上面1条中所述),或者浮动地址(在中断控制器AVIC中有一组寄存器,能写如具体每一个中断的向量) 3. 中断向量的地址是指发生中断时CPU能访问到的地址,放在ROM中,Flash中(当然是NOR Flash), RAM中都不是问题。主要是其地址要处在0或者0xFFFF0000。因此早期的ARM芯片有ReMap功能,可以将RAM地址重映射到需要的地址。现在的芯片一般都有MMU,可以随自己的安排映射。   详情 回复 发表于 2010-1-22 14:20
点赞 关注
 

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
不大清楚  最近论坛人气很低...最近的回复都是两个多小时以前的....帮顶吧
此帖出自ARM技术论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
只能做到间接在SDRAM里实现二级的中断向量表。因为arm是产生中断就要跳转到0x0开始的rom区域中断向量表的。
可以将rom区域中断向量表的向量全部跳转到sdram的一个位置,然后在sdram构建一个动态的向量表。
此帖出自ARM技术论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
感谢楼上
1.是不是每个arm芯片片内都必须有一个rom用来存放启动代码,因为外部rom在没有被配置的时候是不能够被读的,还有在启动的时候,芯片的工作频率是多少,arm是工作在一个特殊的模式下吗?
2.当程序下载到外部flashrom中时,好像启动代码也被下载到了外部flashrom中,那么岂不是启动代码被下载到了两个地方,内部rom和外部rom中,岂不是有两段区域公用一块地址?还是说有一段地址被隐藏了?
此帖出自ARM技术论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
看flash怎么设计了, 基本上是放在0的位置,那里放的是flash reset中断代码。
大多arm板子起来后都会把image复制DRAM里去运行。
此帖出自ARM技术论坛
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

6
 
我的意思是中断向量表本身能否放到ram里去
此帖出自ARM技术论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

7
 
ram掉电以后丢失数据,不能做为原始存储。
此帖出自ARM技术论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

8
 
不用考虑掉电情况,每次上电的时候从rom读取向量表到ram,以后所有的中断直接从ram里执行可以吗?
也就是说只是第一次启动的时候从rom读,读完就把中断向量表remap到ram中可以吗?
此帖出自ARM技术论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

9
 
中断是分两种 一种是可屏蔽的 一种是不可屏蔽的 lz说的是可屏蔽中断,可屏蔽中断当中断发生的时候会进行压栈操作,然后pc指针指向固定的地址开始执行程序。
如果lz必须要在ram中运行程序也可以做一下跳转,将跳转语句编译到终端地址那里,然后在ram那里存放函数指针也可以。
我只用过arm7 不知道lz的实际需求是什么样的,可以参考一下思路
此帖出自ARM技术论坛
 
 
 

回复

97

帖子

0

TA的资源

一粒金砂(中级)

10
 
看看存储器重映射的知识
此帖出自ARM技术论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 7 楼 codesnail 的回复:
不用考虑掉电情况,每次上电的时候从rom读取向量表到ram,以后所有的中断直接从ram里执行可以吗?
也就是说只是第一次启动的时候从rom读,读完就把中断向量表remap到ram中可以吗?


当然可以,大家不都是这么做的吗?
此帖出自ARM技术论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 10 楼 showman 的回复:
引用 7 楼 codesnail 的回复:
不用考虑掉电情况,每次上电的时候从rom读取向量表到ram,以后所有的中断直接从ram里执行可以吗?
也就是说只是第一次启动的时候从rom读,读完就把中断向量表remap到ram中可以吗?


当然可以,大家不都是这么做的吗?

好像是不行,我从网上查资料得知 arm9可以通过设置某一个寄存器实现,arm7的中断向量表是不可以被remap的,楼上说可以,能否详细说明,不胜感激!
此帖出自ARM技术论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

13
 
只能放到rom或者norflash里面吧
此帖出自ARM技术论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

14
 
如果芯片支持,可以启动之后将ram映射到0x0000_0000.
此帖出自ARM技术论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

15
 
我对这个也不太清楚
此帖出自ARM技术论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

16
 
只能映射,不能转移的,LZ的意思是转移中断向量寻址的位置。
此帖出自ARM技术论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

17
 
1. ARM中断向量一般是放在0或者0xFFFF0000,由CP15的V(Bit13)控制
2. 现在的ARM11还可以用CP15的VE(Bit24)控制中断向量是固定地址(上面1条中所述),或者浮动地址(在中断控制器AVIC中有一组寄存器,能写如具体每一个中断的向量)
3. 中断向量的地址是指发生中断时CPU能访问到的地址,放在ROM中,Flash中(当然是NOR Flash), RAM中都不是问题。主要是其地址要处在0或者0xFFFF0000。因此早期的ARM芯片有ReMap功能,可以将RAM地址重映射到需要的地址。现在的芯片一般都有MMU,可以随自己的安排映射。
此帖出自ARM技术论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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