关于启动地址的疑问

本帖最后由 secondid 于 2017-1-22 11:37 编辑

上电后RK3288把2k的代码复制到内部sram中运行,请问sram的地址映射在0吗,uboot中start.s的代码如下,

.globl        reset
reset:
/*
 * check loader tag
 */
#ifdef CONFIG_ROCKCHIP
        ldr        r0, =__loader_tag
        ldr        r1, [r0] /*疑问:这里访问链接地址,链接地址是从0开始,而sarm地址是在FF70_0000附近,启动后代码应当在sram中,访问链接地应该出错啊,如果是在ddr中运行或者sarm地址映射到0附近才可以解释*/
        ldr        r0, =LoaderTagCheck /*在__image_copy_start到end之间*/
        ldr        r0, [r0]
        cmp        r1, r0
        movne        pc, r14/*两个链接地址存的都是0x4B415351*/
#endif

在lowlevel_init.s中把临时栈地址设在了128M的位置,ldr sp, =CONFIG_SYS_INIT_SP_ADDR/设置sp指向128M/ 也是ddr的地址,难道这时候DDR已经初始化完了?或者是BOOTROM已经把DDR初始化了?

自己回复下,发现uboot未初始化串口时,串口收到如下内容,bootrom已经完成DDR的初始化。
DDR Version 1.00 20160530
In
Channel a: DDR3 200MHz
Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB
Channel b: DDR3 200MHz
Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB
Memory OK
Memory OK
OUT