<head><metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"/><metaname="viewport"content="width=device-width, initial-scale=1.0"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><metaname="description"content="通常内核的代码段放在 DRAM 的开始位置,U-Boot 的代码位置放到 DRAM 的末端。 但是由于不同项目所用的 DRAM 大小不一致,为了方便,将 U-Boot 的链接地址也定义在 DRAM 比较前面的固定位置。在加载 U-Boot 初始化完 DRAM 之后,U-Boot 读取当前平台的 DRAM 大小, 然后在加载 Kernel 之前将自身代码段和数据段等信息重定位到 DRAM ..."/><metaname="DC.rights.owner"content="(C) 版权 2025"/><metaname="copyright"content="(C) 版权 2025"/><metaname="generator"content="DITA-OT"/><metaname="DC.type"content="concept"/><metaname="DC.contributor"content="yan.wang"/><metaname="DC.date.modified"content="2024-12-04"/><metaname="DC.format"content="HTML5"/><metaname="DC.identifier"content="concept_e2z_gl3_pzb"/><metaname="DC.language"content="zh-CN"/><title>代码重定位</title><!-- Build number 2023110923. --><metaname="wh-path2root"content="../../../"/><metaname="wh-toc-id"content=""/><metaname="wh-source-relpath"content="topics/sdk/boot/uboot-code-relocate.dita"/><metaname="wh-out-relpath"content="topics/sdk/boot/uboot-code-relocate.html"/>
<divclass=" wh_topic_content body "><mainrole="main"><articleclass="- topic/topic concept/concept topic concept"role="article"aria-labelledby="ariaid-title1"><spanclass="edit-link"style="font-size:12px; opacity:0.6; text-align:right; vertical-align:middle"><atarget="_blank"href="http://172.16.35.88/tasks/jdssno1uvvbf2mltu9kb9v3if05d5gopuakboe8hlud18rma/edit/F:/aicdita/aicdita-cn/topics/sdk/boot/uboot-code-relocate.dita">Edit online</a></span><h1class="- topic/title title topictitle1"id="ariaid-title1">代码重定位</h1><divclass="date inPage">4 Dec 2024</div><divstyle="color: gray;">
Read time: 1 minute(s)
</div><divclass="- topic/body concept/conbody body conbody"><divclass="- topic/p p"data-ofbid="d276142e22__20250121171748">通常内核的代码段放在 DRAM 的开始位置,U-Boot 的代码位置放到 DRAM 的末端。 但是由于不同项目所用的 DRAM 大小不一致,为了方便,将 U-Boot
的链接地址也定义在 DRAM 比较前面的固定位置。在加载 U-Boot 初始化完 DRAM 之后,U-Boot 读取当前平台的 DRAM 大小, 然后在加载 Kernel
之前将自身代码段和数据段等信息重定位到 DRAM 的末端继续运行, 将 DRAM 的前端空间让给
Kernel。<preclass="+ topic/pre pr-d/codeblock pre codeblock language-c"id="concept_e2z_gl3_pzb__codeblock_pdf_jmr_c1c"data-ofbid="concept_e2z_gl3_pzb__codeblock_pdf_jmr_c1c">_start <emclass="hl-comment">// arch/riscv/cpu/start.S</em>