Chinaunix首页 | 论坛 | 博客
  • 博客访问: 242766
  • 博文数量: 49
  • 博客积分: 2591
  • 博客等级: 少校
  • 技术积分: 515
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-15 00:03
文章分类

全部博文(49)

文章存档

2009年(3)

2008年(46)

我的朋友

分类:

2008-05-07 15:12:28

/*  copy */
mov     r0, #0
add     r2, r0, #CFG_MONITOR_LEN  

这里需要注意的:
#define CFG_MONITOR_LEN 0x00040000 /*启动映像文件长度,必须大于u-boot.bin*/
mov     r1, #0x10000000  这里r1也为一段ram的地址(IXP425的SDRAM地址最大为256M,在地址空

间的前1G内都是256M的重复)

30:
ldr     r3, [r0], #4
str     r3, [r1], #4
cmp     r0, r2
bne     30b
这里是把flash中的前256k的东西(u-boot.bin小于256k)拷贝到ram中,这样在执行remap的时候(

将falsh地址从0x0移到0x50000000)

 

接下来有一段remap的语句,接下来的执行都是在ram中了

 /* move flash to 0x50000000 */
 ldr  r2, =IXP425_EXP_CFG0
 ldr     r1, [r2]
 bic     r1, r1, #0x80000000
 str     r1, [r2]

这样,remap后的指令是连续的,pc取指不会出现问题

阅读(1017) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~