12.07.2015 Views

RealView - ARM Information Center

RealView - ARM Information Center

RealView - ARM Information Center

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

使 用 分 散 加 载 描 述 文 件5.3 指 定 区 和 节 地 址 的 示 例本 节 介 绍 了 输 入 和 执 行 节 、 区 和 预 处 理 指 令 。 有 关 访 问 位 于 固 定 地 址 中 的 数 据和 函 数 的 示 例 , 请 参 阅 《 开 发 指 南 》 中 的 第 2 章 嵌 入 式 软 件 开 发 。5.3.1 在 分 散 加 载 描 述 中 选 择 胶 合 代 码 输 入 节胶 合 代 码 用 于 在 <strong>ARM</strong> 和 Thumb 代 码 之 间 切 换 , 或 者 执 行 比 一 条 指 令 中 指 定 的跳 转 范 围 更 大 的 程 序 跳 转 。 请 参 阅 第 3-18 页 的 胶 合 代 码 生 成 。 可 以 使 用 分 散 加载 描 述 文 件 来 放 置 链 接 器 生 成 的 胶 合 代 码 输 入 节 。 分 散 加 载 描 述 文 件 中 的 一 个执 行 区 最 多 可 以 包 含 *(Veneer$$Code) 节 选 择 器 。如 果 此 操 作 是 安 全 的 , 链 接 器 则 会 将 胶 合 代 码 输 入 节 放 到 *(Veneer$$Code) 节 选择 器 识 别 的 区 中 。 由 于 地 址 范 围 问 题 或 执 行 区 大 小 限 制 , 可 能 无 法 将 胶 合 代 码输 入 节 分 配 到 区 中 。 如 果 不 能 将 胶 合 代 码 添 加 到 指 定 的 区 中 , 则 会 将 它 添 加 到包 含 生 成 胶 合 代 码 的 重 定 位 输 入 节 的 执 行 区 中 。注 意在 以 前 版 本 的 <strong>ARM</strong> 工 具 中 , 分 散 加 载 描 述 文 件 中 的 *(IWV$$Code) 实 例 自 动 转 换为 *(Veneer$$Code)。 应 在 新 描 述 中 使 用 *(Veneer$$Code)。如 果 执 行 区 中 的 代 码 数 量 超 过 以 下 数 量 , 则 会 忽 略 *(Veneer$$Code):Thumb 代 码4Mb、Thumb-2 代 码 16Mb 以 及 <strong>ARM</strong> 代 码 32Mb。5.3.2 创 建 根 执 行 区如 果 指 定 了 映 像 的 初 始 入 口 点 , 或 者 由 于 仅 使 用 一 个 ENTRY 指 令 而 使 链 接 器 创 建初 始 入 口 点 , 则 必 须 确 保 入 口 点 位 于 根 区 中 。 根 区 是 指 加 载 地 址 和 执 行 地 址 相同 的 区 。 如 果 初 始 入 口 点 不 在 根 区 中 , 链 接 将 会 失 败 , 并 且 链 接 器 生 成 一 条 错 误消 息 , 例 如 :Entry point (0x00000000) lies within non root region ER_ROM要 在 分 散 加 载 描 述 文 件 中 将 区 指 定 为 根 区 , 您 可 以 执 行 以 下 任 一 操 作 :• 显 式 地 将 ABSOLUTE 指 定 为 执 行 区 属 性 ( 或 将 其 作 为 缺 省 设 置 ), 并 且 第 一 个执 行 区 及 其 所 在 的 加 载 区 使 用 相 同 的 地 址 。 要 使 执 行 区 地 址 与 加 载 区 地 址相 同 , 请 执 行 以 下 任 一 操 作 :— 为 执 行 区 基 址 和 加 载 区 基 址 指 定 相 同 的 数 值— 为 加 载 区 中 的 第 一 个 执 行 区 指 定 +0 偏 移 。<strong>ARM</strong> DUI 0349AC 版 权 所 有 © 2007 <strong>ARM</strong> 公 司 。 保 留 所 有 权 利 。 5-31

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

Saved successfully!

Ooh no, something went wrong!