打印
[ZLG-ARM]

lpc2131的remap功能理解与疑问!

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

相关帖子

沙发
computer00| | 2008-1-10 14:48 | 只看该作者

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

使用特权

评论回复
板凳
hasayakipw|  楼主 | 2008-1-10 16:12 | 只看该作者

谢谢computer00的回答.

谢谢computer00的回答,那么我前面对remap的理解是否正确呢?

使用特权

评论回复
地板
hasayakipw|  楼主 | 2008-1-10 20:33 | 只看该作者

在深入浅出arm7

使用特权

评论回复
5
hasayakipw|  楼主 | 2008-1-10 20:40 | 只看该作者

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

在深入浅出arm7上册中,如果存储器映射模式处于RAM模式,在remap以后,怎么没有找到将中断向量表copy到RAM中的指令?那么即使地址映射了,也没有相关的跳转指令啊?

使用特权

评论回复
6
hasayakipw|  楼主 | 2008-1-11 09:41 | 只看该作者

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

怎么没有技术支持的解答啊?我一直都对zlg公司技术支持很有信心的啊

使用特权

评论回复
7
zlgarm| | 2008-1-11 11:17 | 只看该作者

remap

hasayakipw 您好!
    您的问题我们会在今天下午5:30之前给出详尽答复。
                                 By zlgarm_ljt

使用特权

评论回复
8
computer00| | 2008-1-11 11:19 | 只看该作者

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

如果你的程序中不发生中断,那么中断向量表也就无用,因此可以不复制也照样运行。

使用特权

评论回复
9
hasayakipw|  楼主 | 2008-1-11 13:40 | 只看该作者

谢谢大家的回复

前面的问题:
    在深入浅出arm7上册中,如果存储器映射模式处于RAM模式,在remap以后,怎么没有找到将中断向量表copy到RAM中的指令?那么即使地址映射了,也没有相关的跳转指令啊?

我现在的理解是:
     在LPC2131的mem_b.scf文件中,已经把向量表和其他代码加载进去了,其中向量表放在的0x40000000地址开始,但是在这种情况下,一旦系统断电,程序也就都没有了啊?还有就是其中定义的系统"堆空间"和"栈空间"是做什么的?

使用特权

评论回复
10
computer00| | 2008-1-11 15:41 | 只看该作者

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

使用特权

评论回复
11
zlgarm| | 2008-1-11 16:39 | 只看该作者

remap

hasayakipw 您好!
    

使用特权

评论回复
12
biao.l| | 2008-1-11 17:07 | 只看该作者

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

我想问一下:用户FLASH模式激活后,能否将中断向量表复制到RAM中,然后重新映射到RAM中呢

使用特权

评论回复
13
computer00| | 2008-1-11 17:14 | 只看该作者

可以。

使用特权

评论回复
14
zlgarm| | 2008-1-11 17:16 | 只看该作者

remap

biao.1 您好!
    您的想法是可以实现的,在那样操作之前只要使用MEMMAMP=0x02;就可以了。
                                          By zlgarm_ljt

使用特权

评论回复
15
biao.l| | 2008-1-11 17:16 | 只看该作者

再问一个问题

分散加载中

ROM_EXEC 0x00000000
    {
        Startup.o (vectors, +First)
        * (+RO)
    }

是否表示代码从0X00000000开始存放呢?如果不是,哪从什么地方开始存放,
如果是,不是将BOOT LOAD中的中断向量表给复盖了?因为下载程序的时候运行BOOT LOAD,将BOOT LOAD的中断向量表映射到0X00000000处

使用特权

评论回复
16
biao.l| | 2008-1-11 17:18 | 只看该作者

先谢谢computer00 和周工的回答

使用特权

评论回复
17
zlgarm| | 2008-1-11 17:47 | 只看该作者

分散加载

biao.1 您好!
    1、上述程序就是表示代码从0X00000000开始存放;
    2、Boot Load与加载程序的起始地址有不同的物理地址。
                                         By zlgarm_ljt

使用特权

评论回复
18
biao.l| | 2008-1-11 18:59 | 只看该作者

谢谢zlgarm

使用特权

评论回复
19
zlgarm| | 2008-1-15 14:29 | 只看该作者

很高兴能为你解答疑问

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

19

帖子

0

粉丝