[ZLG-ARM] lpc2131的remap功能理解与疑问!

[复制链接]
 楼主| 发表于 2008-1-10 14:17 | 显示全部楼层 |阅读模式
1,remap主要是针对异常向量表而言的,不管异常向量表是在Flash,ram还是boot&nbsp;block中,经过remap以后,我们看到的异常向量表的地址就都是从0x00000000开始的存储的,至于其他的程序代码都保持在原来的固定地址.也就是说remap只是从新映射中断向量表(32字节)和额外的32字节,一共64字节,与其他代码无关.<br />2,如果是在&quot;用户Flash模式&quot;,就没有必要进行remap,因为他的异常向量表本来就是从0x00000000开始的.<br />3,bootload中的load,是怎样把代码从flash中copy到ram中去执行的?<br />&nbsp;&nbsp;&nbsp;以上是我这两天看书对remap的理解,不对的地方肯请大家指出,同事希望对这个理解比较透彻的高手不吝赐教!谢谢!
发表于 2008-1-10 14:48 | 显示全部楼层

copy就是一系列的读flash地址,然后写RAM地址的命令啊

  
 楼主| 发表于 2008-1-10 16:12 | 显示全部楼层

谢谢computer00的回答.

谢谢computer00的回答,那么我前面对remap的理解是否正确呢?
 楼主| 发表于 2008-1-10 20:33 | 显示全部楼层

在深入浅出arm7

  
 楼主| 发表于 2008-1-10 20:40 | 显示全部楼层

储器映射模式处于RAM模式疑问?

在深入浅出arm7上册中,如果存储器映射模式处于RAM模式,在remap以后,怎么没有找到将中断向量表copy到RAM中的指令?那么即使地址映射了,也没有相关的跳转指令啊?
 楼主| 发表于 2008-1-11 09:41 | 显示全部楼层

怎么没有技术支持的解答啊?

怎么没有技术支持的解答啊?我一直都对zlg公司技术支持很有信心的啊
发表于 2008-1-11 11:17 | 显示全部楼层

remap

hasayakipw&nbsp;您好!<br />&nbsp;&nbsp;&nbsp;&nbsp;您的问题我们会在今天下午5:30之前给出详尽答复。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By&nbsp;zlgarm_ljt
发表于 2008-1-11 11:19 | 显示全部楼层

如果不需要用到向量表的话,就可以不复制。

如果你的程序中不发生中断,那么中断向量表也就无用,因此可以不复制也照样运行。
 楼主| 发表于 2008-1-11 13:40 | 显示全部楼层

谢谢大家的回复

前面的问题:<br />&nbsp;&nbsp;&nbsp;&nbsp;在深入浅出arm7上册中,如果存储器映射模式处于RAM模式,在remap以后,怎么没有找到将中断向量表copy到RAM中的指令?那么即使地址映射了,也没有相关的跳转指令啊?<br /><br />我现在的理解是:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在LPC2131的mem_b.scf文件中,已经把向量表和其他代码加载进去了,其中向量表放在的0x40000000地址开始,但是在这种情况下,一旦系统断电,程序也就都没有了啊?还有就是其中定义的系统&quot;堆空间&quot;和&quot;栈空间&quot;是做什么的?<br />
发表于 2008-1-11 15:41 | 显示全部楼层

堆空间是动态分配RAM使用的,而栈空间是程序运行时压栈操

  
发表于 2008-1-11 16:39 | 显示全部楼层

remap

hasayakipw&nbsp;您好!<br />&nbsp;&nbsp;&nbsp;&nbsp;
发表于 2008-1-11 17:07 | 显示全部楼层

我对映射这部分理解得也不够透彻

我想问一下:用户FLASH模式激活后,能否将中断向量表复制到RAM中,然后重新映射到RAM中呢
发表于 2008-1-11 17:14 | 显示全部楼层

可以。

  
发表于 2008-1-11 17:16 | 显示全部楼层

remap

biao.1&nbsp;您好!<br />&nbsp;&nbsp;&nbsp;&nbsp;您的想法是可以实现的,在那样操作之前只要使用MEMMAMP=0x02;就可以了。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By&nbsp;zlgarm_ljt
发表于 2008-1-11 17:16 | 显示全部楼层

再问一个问题

分散加载中<br /><br />ROM_EXEC&nbsp;0x00000000<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(vectors,&nbsp;+First)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(+RO)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />是否表示代码从0X00000000开始存放呢?如果不是,哪从什么地方开始存放,<br />如果是,不是将BOOT&nbsp;LOAD中的中断向量表给复盖了?因为下载程序的时候运行BOOT&nbsp;LOAD,将BOOT&nbsp;LOAD的中断向量表映射到0X00000000处
发表于 2008-1-11 17:18 | 显示全部楼层

先谢谢computer00 和周工的回答

  
发表于 2008-1-11 17:47 | 显示全部楼层

分散加载

biao.1&nbsp;您好!<br />&nbsp;&nbsp;&nbsp;&nbsp;1、上述程序就是表示代码从0X00000000开始存放;<br />&nbsp;&nbsp;&nbsp;&nbsp;2、Boot&nbsp;Load与加载程序的起始地址有不同的物理地址。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By&nbsp;zlgarm_ljt
发表于 2008-1-11 18:59 | 显示全部楼层

谢谢zlgarm

  
发表于 2008-1-15 14:29 | 显示全部楼层

很高兴能为你解答疑问

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

本版积分规则

7

主题

19

帖子

0

粉丝
快速回复 返回顶部 返回列表