uboot引导kernel - 2-> uboot/kernel需要放在DDR什么位置的问题

uboot启动Linux内核过程分为4大步骤:

在这里插入图片描述

问题2: uboot阶段DDR的分区的问题

上述步骤2和步骤4中,有将uboot/kernel拷贝纸DDR的步骤,具体要拷贝到DDR的什么位置呢?
分清楚这两个概念:
链接地址:链接时指定的地址(指定方式为:Makefile中用-Ttext,或者链接脚本)
运行地址:程序实际运行时地址(指定方式:由实际运行时被加载到内存的哪个位置说了算)
此问题中的提及的位置是链接地址,在由Makefile中用-Ttext,或者链接脚本指定的

  1. Uboot放在DDR中的什么位置
    是用Makefile中的-Ttext指定的。查看code:
    在这里插入图片描述
    TEXT_BASE是将来我们整个uboot链接时指定的链接地址。因为uboot中启用了虚拟地址映射,这个虚拟地址0xC3E0 0000地址对应的物理地址就等于0x33E0 0000,所以我们会将uboot加载到DDR中的起始位置是0x33E0 0000,加载调用的code 如下:
    在这里插入图片描述
    0表示通道0;MOVI_BL2_POS是uboot的第二部分在SD卡中的开始扇区,这个扇区数字必须和烧录uboot时烧录的位置相同;MOVI_BL2_BLKCNT是uboot的长度占用的扇区数;CFG_PHY_UBOOT_BASE是重定位时将uboot的第二部分复制到DDR中的起始地址(0x33E00000).

  2. Kernel 镜像要放在DDR的什么地址?
    内核一定要放在链接地址处,链接地址去内核源代码的链接脚本或者Makefile中去查找。X210中是0x30008000。
    遗留问题: 内核的链接脚本后续要截屏放在这里
    在uboot中通过执行如下命令将kernel加载到DDR中:
    movi read kernel 30008000
    (其中kernel指的是uboot中的kernel分区)

  3. 总结
    Uboot/kernel要拷贝到DDR中的物理地址;
    链接脚本或-Ttext 指定的是程序运行的虚拟地址;

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值