10.07.2015 Views

MPLAB® C30 C 编译器用户指南

MPLAB® C30 C 编译器用户指南

MPLAB® C30 C 编译器用户指南

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

MPLAB ® <strong>C30</strong> 用 户 指 南4.9 软 件 堆 栈段 属 性 指 定 将 变 量 存 放 到 名 为 .myDataSection 的 段 中 , 而 不 是 默 认 的 .data 段中 。 它 没 有 指 定 用 户 定 义 的 段 存 放 在 哪 里 。 同 样 地 , 这 必 须 在 一 个 自 定 义 的 链 接 描 述文 件 中 指 定 , 如 下 所 示 。 以 特 定 器 件 的 链 接 描 述 文 件 为 基 础 , 加 入 如 下 段 定 义 :.myDataSection 0x1000 :{*(.myDataSection);} >data这 指 定 了 输 出 文 件 应 包 含 一 个 名 为 .myDataSection 的 段 , 这 个 段 位 于 地 址0x1000, 包 含 所 有 名 为 .myDataSection 的 输 入 段 。 在 这 个 例 子 中 , 由 于 该 段 中 仅包 含 一 个 变 量 Mabonga, 那 么 该 变 量 将 被 存 放 到 数 据 存 储 器 的 地 址 0x1000 中 。dsPIC 器 件 的 寄 存 器 W15 专 门 用 作 软 件 堆 栈 指 针 。 所 有 处 理 器 堆 栈 操 作 , 包 括 函 数 调用 、 中 断 和 异 常 都 使 用 软 件 堆 栈 。 堆 栈 是 向 上 增 长 的 , 向 高 存 储 地 址 增 长 。dsPIC 器 件 也 支 持 堆 栈 溢 出 检 测 。 如 果 堆 栈 指 针 限 制 寄 存 器 SPLIM 已 被 初 始 化 , 器 件将 对 所 有 堆 栈 操 作 的 溢 出 进 行 检 测 。 如 果 发 生 溢 出 , 处 理 器 将 启 动 一 个 堆 栈 错 误 异 常处 理 。 默 认 情 况 下 , 这 将 引 起 处 理 器 复 位 。 应 用 还 可 通 过 定 义 一 个 名 为_StackError 的 中 断 函 数 来 安 装 一 个 堆 栈 错 误 异 常 处 理 程 序 。 详 细 信 息 请 参 阅 第 7章 “ 中 断 ”。C 运 行 时 启 动 模 块 在 启 动 和 初 始 化 过 程 中 对 堆 栈 指 针 (W15) 和 堆 栈 指 针 限 制 寄 存 器(SPLIM) 进 行 初 始 化 。 初 值 通 常 由 链 接 器 提 供 , 链 接 器 尽 可 能 在 未 使 用 的 数 据 存 储 器中 分 配 最 大 的 堆 栈 。 链 接 映 射 输 出 文 件 中 给 出 堆 栈 的 地 址 。 通 过 -stack 链 接 器 命 令行 选 项 , 应 用 可 确 保 至 少 可 获 得 一 个 最 小 的 堆 栈 。 详 细 信 息 请 参 阅 MPLAB ASM30,MPLAB LINK30 and Utilities User’s Guide (DS51317)。另 外 , 可 以 通 过 自 定 义 链 接 描 述 文 件 中 的 用 户 定 义 段 来 分 配 指 定 大 小 的 堆 栈 。 在 下 面的 示 例 中 , 0x100 字 节 的 数 据 存 储 区 保 留 给 了 堆 栈 。 声 明 了 用 于 C 运 行 时 启 动 模 块 的两 个 符 号 , __SP_init 和 __SPLIM_init。.stack :{__SP_init = .;. += 0x100__SPLIM_init = .;. += 8} >data__SP_init 定 义 了 堆 栈 指 针 (W15) 的 初 值 , 而 __SPLIM_init 定 义 了 堆 栈 指 针 限制 寄 存 器 (SPLIM) 的 初 值 。 __SPLIM_INIT 的 值 应 比 物 理 堆 栈 限 制 小 至 少 8 个 字节 , 以 便 允 许 堆 栈 错 误 异 常 处 理 。 如 果 安 装 了 堆 栈 错 误 中 断 处 理 程 序 , 由 于 要 考 虑 到中 断 处 理 程 序 本 身 的 堆 栈 使 用 , __SPLIM_INIT 的 值 应 该 更 小 。 默 认 的 中 断 处 理 程 序不 需 要 额 外 使 用 堆 栈 。DS51284C_CN 第 68 页© 2005 Microchip Technology Inc.

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

Saved successfully!

Ooh no, something went wrong!