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-1 fputc() 的 实 现<br />

extern void sendchar(char *ch);<br />

int fputc(int ch, FILE *f)<br />

{ /* e.g. write a character to an UART */<br />

char tempch = ch;<br />

sendchar(&tempch);<br />

return ch;<br />

}<br />

2.3.2 避 免 C 库 半 主 机<br />

在 一 独 立 应 用 程 序 中 , 您 不 太 可 能 支 持 半 主 机 SWI 操 作 。 因 此 , 必 须 确 保 您 的<br />

应 用 程 序 中 没 有 链 接 C 库 半 主 机 函 数 。<br />

为 确 保 没 有 从 C 库 链 接 使 用 半 主 机 SWI 的 函 数 , 必 须 引 入 符 号<br />

__use_no_semihosting_swi。 可 在 您 项 目 的 任 何 C 或 汇 编 语 言 源 文 件 中 执 行 此 操<br />

作 , 如 下 所 述 :<br />

• 在 C 模 块 中 , 使 用 #pragma 命 令 :<br />

#pragma import(__use_no_semihosting_swi)<br />

• 在 汇 编 语 言 模 块 中 , 使 用 IMPORT 命 令 :<br />

IMPORT __use_no_semihosting_swi<br />

如 果 仍 然 链 接 了 使 用 半 主 机 SWI 的 函 数 , 链 接 程 序 会 报 告 下 列 错 误 :<br />

Error : L6200E: Symbol __semihosting_swi_guard multiply defined (by use_semi.o<br />

and use_no_semi.o).<br />

为 找 出 这 些 函 数 , 请 使 用 -verbose 选 项 链 接 。 在 输 出 结 果 中 , C 库 函 数 被 标 以<br />

如 __I_use_semihosting_swi 的 标 记 。<br />

Loading member sys_exit.o from c_a__un.l.<br />

definition: _sys_exit<br />

reference : __I_use_semihosting_swi<br />

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

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

Saved successfully!

Ooh no, something went wrong!