01.12.2014 Views

RealView Compilation Tools Developer Guide - ARM Information ...

RealView Compilation Tools Developer Guide - ARM Information ...

RealView Compilation Tools Developer Guide - ARM Information ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

嵌 入 式 软 件 开 发<br />

2.6.2 在 分 散 加 载 描 述 文 件 中 放 置 堆 和 栈<br />

多 数 情 况 下 , 在 描 述 文 件 中 指 定 堆 和 栈 的 位 置 是 更 可 取 的 做 法 。 它 有 两 个 主 要<br />

优 点 :<br />

• 有 关 存 储 器 映 射 的 所 有 信 息 保 存 在 一 个 文 件 中 。<br />

• 改 变 堆 和 栈 只 要 求 重 新 链 接 , 而 不 需 要 重 新 编 译 。<br />

本 节 介 绍 了 实 现 该 功 能 的 如 下 几 个 方 法 :<br />

• 显 式 放 置 符 号 , 两 种 方 法 中 最 简 单 的 方 法 ;<br />

• 第 2-35 页 的 使 用 链 接 程 序 生 成 符 号 ;<br />

• 第 2-37 页 的 使 用 分 散 文 件 的 EMPTY 属 性 。<br />

显 式 放 置 符 号<br />

第 2-29 页 的 栈 指 针 初 始 化 作 为 可 放 置 在 描 述 文 件 中 的 参 照 符 号 引 用 符 号<br />

stack_base 和 heap_base。 为 此 , 需 在 名 为 stackheap.s 的 汇 编 模 块 中 创 建 标 有<br />

stack_base 和 heap_base 的 符 号 。 对 于 双 区 存 储 器 模 型 的 堆 和 栈 限 制 也 可 执 行 同<br />

样 的 操 作 。<br />

可 在 描 述 文 件 的 各 自 执 行 区 中 定 位 每 个 符 号 , 如 示 例 2-15 所 示 。<br />

示 例 2-15 在 stackheap.s 中 显 式 地 放 置 符 号<br />

AREA stacks, DATA, NOINIT<br />

EXPORT stack_base<br />

stack_base SPACE 1<br />

AREA heap, DATA, NOINIT<br />

EXPORT heap_base<br />

heap_base SPACE 1<br />

END<br />

第 2-35 页 的 示 例 2-16 和 第 2-35 页 的 图 2-14 说 明 了 如 何 在 0x20000 放 置 堆 基 址 ,<br />

如 何 在 0x40000 放 置 栈 基 址 。 堆 基 址 和 栈 基 址 的 位 置 可 通 过 分 别 编 辑 其 执 行 区 予<br />

以 改 变 。<br />

该 方 法 的 缺 点 是 在 该 栈 区 的 上 部 占 用 SPACE (stack_base) 的 一 个 字 。<br />

2-34 © 2002、 2003 <strong>ARM</strong> Limited 版 权 所 有 。 保 留 所 有 权 利 。 <strong>ARM</strong> DUI 0203BSC

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!