セミホスティングとは?
ARMマイコンでprintfデバッグをする場合、デバッグ用UART等に出力するのではなくデバッガのコンソールに出力する仕組み。標準出力だけでなく標準入力にも対応する。ターゲットにデバッグ用UARTが無い場合や、ソフトウェアを用意できてないときに有用。ただし速度がものすごく遅いのが難点。またデバッガが接続されていないときはprintf関数でスタックしてしまう。
LPCXpressoでセミホスティングの設定
(1) 標準入出力をUARTへリダイレクトしない
ボードライブラリのプロジェクトのboard.c内の #include "retarget.h" をコメントアウトする。
#include <string.h> #include "board.h" // #include "retarget.h"
または、ボードライブラリのプロジェクトの[Properties] > [C/C++ Build] > [Settings] > [Tools Settings]タブ > [MCU Compiler] > [Symbols] (MCUXpressoでは[Preprocessor])で DEBUG_SEMIHOSTING を定義してもよいが、めんどくさいので上記の方法でよかろう。