【问题标题】:Relationship between U-boot CONFIG_SYS_TEXT_BASE and SDRAMU-boot CONFIG_SYS_TEXT_BASE与SDRAM的关系
【发布时间】:2019-08-13 16:26:34
【问题描述】:

目前我对u-boot的理解如下

  1. ROM 代码加载 SPL
  2. SPL 初始化 RAM,并将 u-boot 加载到 CONFIG_SYS_TEXT_BASE RAM 地址
  3. u-boot 自行重新定位
  4. 启动内核

我检查了我的u-boot配置,CONFIG_SYS_TEXT_BASE0x80000000,但是我很好奇,我的内存只有1G,还是可以正常工作的。

1G等于0x40000000,小于0x80000000

那么,我想知道是我对CONFIG_SYS_TEXT_BASE有什么误解还是我的概念有误?

【问题讨论】:

    标签: linux-kernel arm ram bootloader u-boot


    【解决方案1】:

    我检查了我的u-boot配置,CONFIG_SYS_TEXT_BASE是0x80000000,但是我很好奇,我的RAM大小只有1G,它仍然可以正常工作。

    1G等于0x40000000,小于0x80000000

    那么,我想知道是我对CONFIG_SYS_TEXT_BASE有什么误解还是我的概念有误?

    你对CONFIG_SYS_TEXT_BASE的理解是正确的。错误在于 RAM 大小与 RAM 物理起始地址有关。 RAM 从 0x80000000 开始,到 0xC0000000 结束(1G 之后)。所以 0xC0000000-0x80000000 = 0x40000000 = 1G。

    如果您的 ram 位于 0xD0000000 且大小为 1G 或类似的大小,您就会遇到问题。通常人们不会建立这样的系统。

    【讨论】:

    • 所讨论芯片的手册可能有一个内存映射部分,它会说明各种事物在地址空间中的位置,例如 DRAM 从 0x80000000 开始,可以大到 ....东西。
    • 如何知道ram的起始地址?为什么不从 0 开始?当 u-boot 加载到 ram 中时,u-boot 看到的地址空间是从 0x00000000 到 0x40000000 或 0x80000000 到 0xC0000000?
    • U-boot 会看到 0x80000000-0xc0000000。这可以。像 linux 这样的操作系统使用 MMU,因此物理地址无关紧要。 U-boot 可能会打开 MMU,以便可以使用缓存。但是,没有技术原因将 RAM 映射到 0x0。事实上,如果 NULL 指针访问至少在开发过程中导致异常,这通常很有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 2017-01-09
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    相关资源
    最近更新 更多