ルモーリン

改良版ASSERTマクロ

投稿:2016-04-03

以前作ったASSERTマクロは、svc経由でワザと無茶なアドレスに飛んでハードフォルトを引き起こしてデバッガを止めていました。
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命令の解説