あなたの天然記念物
ホーム更新雑談Perl鉄ゲタランドナーコースガイド自転車Linuxリンク経歴連絡先

改良版ASSERTマクロ (2016.04.03)

改良前はデバッガを強引に止めてた

以前作ったASSERTマクロは、svc経由でワザと無茶なアドレスに飛んでハードフォルトを引き起こしてデバッガを止めていました。

CPU備え付けの命令を使って簡単、的確に!

CPU命令にデバッガ用命令がちゃんとあるんですね。 今時のマイコンは素晴らしい。

コード

よく使うヘッダファイルに入れて置きます。
#ifdef DEBUG
#define KSRK_ASSERT(eval)	if (!(eval)) __asm ("bkpt	#0\n")
#else
#define KSRK_ASSERT(eval)	(void)(eval)
#endif

使い方

	KSRK_ASSERT(pTable);	// pTableにアドレスが入っているはず

種明かし

UM10360(LPC17xx User manual)ページ715に便利な命令がありました。
メーカーのページ(LPCマイコン情報:LPC1700 Cortex-M3)をどうぞ。
教訓:マニュアルを頭からしっぽまで良く読みましょう。
bkpt命令の解説