2.3.1. C ライブラリのターゲット変更

ターゲットハードウェアを利用し、C ライブラリの実装を優先してイメージに自動的にリンクされる C ライブラリ関数を独自に実装することができます。Figure 2.6 は、C ライブラリのターゲット変更と呼ばれるこのプロセスを示しています。

Figure 2.6. C ライブラリのターゲット変更

C ライブラリのターゲット変更

例えば、UART などのペリフェラル I/O デバイスがある場合、デバッガのコンソールへの書き込みを行う、ライブラリで実装された fputc() を、UART に出力する実装でオーバーライドしたい場合があります。この fputc() の実装は最終イメージにリンクされるため、printf() ファミリのすべての関数が UART への出力を行います。

Example 2.1 は、fputc() の実装例を示しています。この例では、fputc() の入力文字パラメータがシリアル出力関数 sendchar() に転送されます。このシリアル出力関数は、別のソースファイルで実装されていると仮定しています。このように、fputc() は、ターゲットに依存する出力と C ライブラリ標準出力関数との間の抽象レイヤとして機能します。

Example 2.1. fputc() の実装

extern void sendchar(char *ch);

int fputc(int ch, FILE *f)
{   /* e.g. write a character to an UART */
    char tempch = ch;
    sendchar(&tempch);
    return ch;
}

Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0203GJ
Non-Confidential