从零开始之uboot、移植uboot2017.01(四、uboot的重定位)

本文详细记录了在移植UBoot 2017.01过程中遇到的问题及解决方法,主要讨论了如何在确认_main函数执行后,因超过16K限制而将UBoot搬移到DDR并完成绝对跳转的过程。通过添加代码、更新Makefile以及编写测试脚本,最终实现了成功从16K IRAM跳转到DDR运行,但发现打印信息可能由于串口配置问题导致异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接着上一节的继续分析和实验


    bl  gpio_out
    bl  led1_on

    /* the mask ROM code should have PLL and others stable */
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
    bl  cpu_init_cp15
#ifndef CONFIG_SKIP_LOWLEVEL_INIT_ONLY
    bl  cpu_init_crit        /* 上一节分析到这里,面的lowlevel_init,我们初始化了ddr */
#endif
#endif

    /* 同时开发吧制锁和K都打印出来了,说明下一步要执行_main */
    /* 开发板制锁*/
    ldr r0, = 0xe010e81c
    ldr r1, = 0x301
    str r1, [r0]

    ldr     r1, =0xe2900020
    ldr     r2, =0x4b
    str     r2, [r1]
    
    bl  _main

上一节分析了跳转到打印出了K就死掉了,首先我们判断_main子程序是否在16K以内。

打开u-boot.map查看_main的地址,发现0xce0小于16k,所以在16k以内,所以继续分析。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的小刺猬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值