10.07.2015 Views

MPLAB® C30 C 编译器用户指南

MPLAB® C30 C 编译器用户指南

MPLAB® C30 C 编译器用户指南

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.

MPLAB <strong>C30</strong> C 编 译 器 运 行 时 环 境4.5 启 动 和 初 始 化libpic30.a 归 档 / 库 中 包 含 两 个 C 运 行 时 启 动 模 块 。 这 两 个 启 动 模 块 的 入 口 点 都 是__reset。 链 接 描 述 文 件 在 程 序 存 储 器 的 地 址 0 存 放 了 一 条 GOTO __reset 指 令 , 在器 件 复 位 时 转 移 控 制 。默 认 情 况 下 链 接 主 启 动 模 块 并 进 行 以 下 操 作 :1. 使 用 链 接 器 或 用 户 定 义 链 接 描 述 文 件 提 供 的 值 对 堆 栈 指 针 (W15) 和 堆 栈 指 针限 制 寄 存 器 (SPLIM) 进 行 初 始 化 。 详 细 信 息 参 见 第 4.9 节 “ 软 件 堆 栈 ”。2. 如 果 定 义 了 .const 段 , 那 么 将 通 过 初 始 化 PSVPAG 和 CORCON 寄 存 器 将 其 映 射到 程 序 空 间 可 视 性 (PSV) 窗 口 。 注 意 , 当 在 MPLAB IDE 中 选 择 了“Constants in code space” 选 项 或 在 MPLAB <strong>C30</strong> 命 令 行 中 指 定 了 默 认 的-mconst-in-code 选 项 时 , 将 定 义 一 个 .const 段 。3. 读 取 .dinit 段 中 的 数 据 初 始 化 模 板 , 会 导 致 所 有 未 初 始 化 的 段 被 清 零 , 同 时 所有 已 初 始 化 段 被 初 始 化 为 从 程 序 存 储 器 中 读 取 的 值 。 数 据 初 始 化 模 板 由 链 接 器 创建 , 并 支 持 第 4.4 节 “ 代 码 段 和 数 据 段 ” 中 列 出 的 标 准 段 和 用 户 定 义 段 。注 : 持 久 数 据 段 .pbss 不 会 被 清 零 或 初 始 化 。4. 调 用 main 函 数 时 不 带 参 数 。5. 如 果 从 main 函 数 返 回 , 处 理 器 将 复 位 。当 指 定 -Wl、 --no-data-init 选 项 时 , 将 链 接 备 用 启 动 模 块 (crtl.o)。 它 执 行和 上 面 相 同 的 操 作 , 除 了 第 3 步 , 这 一 步 省 略 掉 。 备 用 启 动 模 块 比 主 启 动 模 块 小 , 所以 当 不 需 要 初 始 化 数 据 时 , 可 选 择 该 模 块 来 节 省 程 序 存 储 空 间 。这 两 个 模 块 的 源 代 码 ( 采 用 dsPIC 汇 编 语 言 ) 存 放 在 c:\pic30_tools\src 目 录中 。 如 果 需 要 , 可 以 对 启 动 模 块 进 行 修 改 。 例 如 , 如 果 应 用 需 要 在 调 用 main 函 数 时带 参 数 , 可 通 过 改 变 条 件 汇 编 伪 指 令 来 提 供 这 一 支 持 。© 2005 Microchip Technology Inc. DS51284C_CN 第 63 页

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

Saved successfully!

Ooh no, something went wrong!