免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1395 | 回复: 1

[BootLoader] uboot 问题求救 [复制链接]

论坛徽章:
0
发表于 2012-06-03 11:15 |显示全部楼层
最近看在看uboot,可始终搞不清这个地址的问题,例如下面这段初始化内存的代码,希望前辈们指导一下
lowlevel_init:
        /* memory control configuration */
        /* make r0 relative the current location so that it */
        /* reads SMRDATA out of FLASH rather than memory ! */
        ldr     r0, =SMRDATA
        ldr        r1, _TEXT_BASE
        sub        r0, r0, r1
        ldr        r1, =BWSCON        /* Bus Width Status Controller */
        add     r2, r0, #13*4
0:
        ldr     r3, [r0], #4
        str     r3, [r1], #4
        cmp     r2, r0
        bne     0b

第一句ldr     r0, =SMRDATA,是伪指令给r0传送地址,也就是要传送的寄存器值的地址,第二句ldr        r1, _TEXT_BASE传送的是text_base的内容应该是0x33F80000,我的疑惑是为什么要进行sub        r0, r0, r1,其实我觉得我不明白的还是这个text_base到底是个什么东东

论坛徽章:
0
发表于 2012-06-05 08:36 |显示全部楼层
本帖最后由 fuliangcheng 于 2012-06-05 08:42 编辑

ldr     r0, =SMRDATA
        ldr        r1, _TEXT_BASE
        sub        r0, r0, r1

这几句是进行地质变换,这时候的代码数据都保存在norflash中,内存中还没有数据,不能使用链接程序时使用的链接地质来读取数据,
SMRDATA表示那13个寄存器的值存放的开始地址,这个地址处于内存中,而TEXT_BASE根据你的设置应该等于0x33F80000之类的东西,
也在内存中,这两个值相减,就是那13个寄存器在Norflash中存放的开始地址
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP