天嵌 ARM开发社区

 找回密码
 注册
查看: 1331|回复: 2

关于uboot中start.s里重定位问题,求大神赐教啊

[复制链接]
luowei3 发表于 2013-5-24 20:24:56 | 显示全部楼层 |阅读模式
     最近在看uboot里的start.s文件,对立面的代码重定位有些迷惑,代码如下

relocate:    /* relocate U-Boot to RAM     */
adr r0, _start  /* r0 <- current position of code   */  //此处_start是0
ldr r1, _TEXT_BASE  /* test if we run from flash or RAM */
cmp     r0, r1                  /* don't reloc during debug         */
beq     clear_bss

ldr r2, _armboot_start  //此处_start为何又是0x33d00000?
ldr r3, _bss_start
sub r2, r3, r2  /* r2 <- size of armboot            */
#if 1
bl  CopyCode2Ram  /* r0: source, r1: dest, r2: size */
其中  对_armboot_start ,前面有定义:
 楼主| luowei3 发表于 2013-5-24 20:27:30 | 显示全部楼层
接上面。。。。
对_armboot_start ,前面有定义:
.globl _armboot_start
_armboot_start:
        .word _start


我的问题是,如果从Norflash启动,两个_start为什么地址不同呢??
Wesson 发表于 2013-5-24 20:41:19 | 显示全部楼层
luowei3 发表于 2013-5-24 20:27
接上面。。。。
对_armboot_start ,前面有定义:
.globl _armboot_start

既然你提到norflash,我就认为你这是2440的板子了哦,TQ210好像是没有norflash的,其实是这样的,我们说的从Norflash启动,并不是一直再norflash中运行着,在norflash中运行一段后,会将norflash中的uboot还有内核什么的都拷贝到sdram中去运行,所以_start地址为0,表明uboot的存储开始地址为0,而_armboot_start是其运行地址,即其在sdram中的运行的地址,这样就有个问题,为什么可以在norflash中直接运行程序,为什么还有拷贝到sdram中呢,因为ram运行的速度肯定是比flash的速度快的,所以就`````
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-9-29 06:22 , Processed in 1.041926 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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