6203|11

60

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

ARM9200的中断问题 [复制链接]

固化在Flash中的代码是先搬移到SDRAM中运行的,但是中断的时候它好象又跑回Flash中运行了,这是怎么回事,怎样才能让中断也在SDRAM中运行?我用的是非操作系统代码。
此帖出自ARM技术论坛

最新回复

因为每个位置只够放一条指令,所以还要在后面放一个表,那才是真正的目标---一般会是在SDRAM中. 这样的话你至少要保留56个字节---如果中断向量的未用位置也可以放一个目标地址的话. 你的代码要从FLASH或SDRAM中复制这一小块到SRAM,然后发出REMAP指令. 你的编译器和链接器要生成合适的代码才可以的.  详情 回复 发表于 2010-1-12 14:54
点赞 关注
 

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
要对中断向量进行重映射
此帖出自ARM技术论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
能说的具体点吗?怎么重映射
此帖出自ARM技术论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
9200可以把内部的SRAM映射到向量地址上....如果要异常处理的快,你要把中断向量复制到内部的SRAM,然后重映射SRAM.

好像没有办法把中断向量映射到SDRAM.
此帖出自ARM技术论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
怎样把中断向量复制到内部的SRAM,然后重映射SRAM?我是个新手,希望能说具体点,谢谢!
此帖出自ARM技术论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

6
 
从ATMEL的AT91RAM9200的DATASHEET抄来的:
16.3.3 Remap Command
   After execution, the Remap Command causes the Internal SRAM to be accessed through the Internal Memory Area 0.
   As the ARM vectors (Reset, Abort, Data Abort, Prefetch Abort, Undefined Instruction, Interrupt, and Fast Interrupt) are mapped from address 0x0 to address 0x20, the Remap Command allows the user to redefine dynamically these vectors under software control.
   The Remap Command is accessible through the Memory Controller User Interface by writing the MC_RCR (Remap Control Register) RCB field to one.
The Remap Command can be cancelled by writing the MC_RCR RCB field to one, which acts as a toggling command. This allows easy debug of the user-defined boot sequence by offering a simple way to put the chip in the same configuration as just after a reset.
它说向MC_RCR寄存器的RCB位写1,就启用了REMAP指令,可以在地址0访问内部的SRAM. 再向MC_RCR的RCB位写0,又会恢复到初始状态.

如果你要用这个功能,把你的代码复制到SDRAM,把中断向量复制到内部SRAM,然后发出一个REMAP指令就可以了. 你要知道怎样配置LINKER来产生正确的代码. 新手的话,建议不要弄这么复杂的东西,就让你的代码在FLASH里面跑好了.
此帖出自ARM技术论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 
它说向MC_RCR寄存器的RCB位写1,就启用了REMAP指令,可以在地址0访问内部的SRAM. 再向MC_RCR的RCB位写0,又会恢复到初始状态.

如果你要用这个功能,把你的代码复制到SDRAM,把中断向量复制到内部SRAM,然后发出一个REMAP指令就可以了. 你要知道怎样配置LINKER来产生正确的代码. 新手的话,建议不要弄这么复杂的东西,就让你的代码在FLASH里面跑好了.

刚才弄错了
此帖出自ARM技术论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

8
 
它说向MC_RCR寄存器的RCB位写1,就启用了REMAP指令,可以在地址0访问内部的SRAM. 再向MC_RCR的RCB位写1,又会恢复到初始状态.

如果你要用这个功能,把你的代码复制到SDRAM,把中断向量复制到内部SRAM,然后发出一个REMAP指令就可以了. 你要知道怎样配置LINKER来产生正确的代码. 新手的话,建议不要弄这么复杂的东西,就让你的代码在FLASH里面跑好了.

刚才弄错了~~~~晕...连续错

此帖出自ARM技术论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

9
 
先帮顶下。

MARK,一会好好看下、
此帖出自ARM技术论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

10
 
单独把中断向量复制到内部SRAM是怎么实现的?只是把中断的那段代码吗?
此帖出自ARM技术论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

11
 
仔细看一下usermannual吧,里面应该有说明的
此帖出自ARM技术论坛
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

12
 
因为每个位置只够放一条指令,所以还要在后面放一个表,那才是真正的目标---一般会是在SDRAM中.
这样的话你至少要保留56个字节---如果中断向量的未用位置也可以放一个目标地址的话.

你的代码要从FLASH或SDRAM中复制这一小块到SRAM,然后发出REMAP指令.

你的编译器和链接器要生成合适的代码才可以的.
此帖出自ARM技术论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表