5243|12

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

上电后FLASH地址0,代码开始在0地址处运行-〉执行重映射将FLASH映射到0x7F000000,将SDRAM映射到0。跳转到0x7f000000+偏移量处运 [复制链接]

上电后FLASH地址0,代码开始在0地址处运行-〉执行重映射将FLASH映射到0x7F000000,将SDRAM映射到0。跳转到0x7f000000+偏移量处运行,会没有效果?看到书上说在这映射和跳转执行之间需要IMB,请大家指教指教

最新回复

是呀,绝对地址就是重新映射后的地址。  详情 回复 发表于 2007-5-18 06:43
点赞 关注

回复
举报

53

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你这个过程写的不清不楚的……

要做到程序在地址remap前后连贯执行,至少要把映象复制一份到sdram里从0地址开始的地方吧?
 
 

回复

74

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
其实问题是remap前和后执行的代码是一个汇编文件里面的
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
不知道是不是我理解有问题,我怎么看不懂你想问什么呢??
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
我也没明白怎么回事.
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

6
 
一旦硬件设计好了,存储器被映射的地址是不可以重新设置的。

一般的设计是:
FLASH地址空间:0x0-0x* 要看你的flash大小,或者多片flash。
SDRAM地址空间:0xC000000-0x* 还是要看你的SDRAM大小。

上电后,首先从0x0处加载代码并引导执行(片外启动方式)。
代码一般会将FLASH中的0x0-0x40000(bootloader代码)复制(映射)
到SDRAM中的0xC700000开始处,然后运行bootloader。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

7
 
存储器映射地址确实是可以更改的,例如arm芯片就是典型的例子。
在arm芯片系统中,起始时刻flash被映射到0地址开始的空间中(bootloader就在flash中)。之后由于中断表要放在0地址处,因此必须把sdram给映射到0地址处,同时把flash地址“挪”到高地址去。在设计这个过程的时候,如果不想复制启动映象,还要用到arm的三级流水线的特性才行。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

8
 
“一旦硬件设计好了,存储器被映射的地址是不可以重新设置的。”
我说错了,应该是:
“一旦硬件设计好了,存储器的地址是不可以重新设置的。”
为了加快访问速度,一般需要把Flash数据映射到SDRAM中,
以后如果要读Flash,就可以直接读SDRAM中映射的地址就可以了。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

9
 
楼上这位说的应该是另一个意思吧,你的这个“把flash数据映射到sdram中”其实就是把flash数据复制一份到sdram吧?

但是我们说的“映射”是指改变flash或sdram的物理地址哦,这是由cpu提供的功能。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

10
 
哦,我知道了,需要芯片支持才行。
我用过三星的S3C44B0X,不知道有没有这个功能?
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

11
 
回复人:yzx1983(捕风捉影) ( 一级(初级)) 信誉:100         2007-5-15 23:51:45         得分:0
?        

存储器映射地址确实是可以更改的,例如arm芯片就是典型的例子。
在arm 芯片系统中,起始时刻flash被映射到0地址开始的空间中(bootloader就在flash中)。之后由于中断表要放在0地址处,因此必须把 sdram给映射到0地址处,同时把flash地址“挪”到高地址去。在设计这个过程的时候,如果不想复制启动映象,还要用到arm的三级流水线的特性才行。


就是这样的,我的ARM可以指定FLASH,SDRAM为任意0-ffe00000内的地址
stmia r0, {r1,r6}
mov pc, lr
ldr r0, =xxxx
你说要用的ARM的三级流水线的特性也是的。就是我一句 STMIA r0, {r1,r6}完成所有地址的重新映射后,下句话就是 mov pc, lr(lr是前面计算好的重新映射后的一个地址,也就是ldr r0,=xxx),照说mov pc, lr已经被预取了,应该被正确执行才对.但是事实是PC的值并没有被改变.
现在我将stmia r0, {r1-r6}, mov pc, lr 锁到cache中就可以了.
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

12
 
你flash里面程序编译是否用的绝对地址?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

13
 
是呀,绝对地址就是重新映射后的地址。
 
 
 

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

随便看看
查找数据手册?

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