2014/09/24

[nrf51]softdevice_assertion_handler()の嫌なところ

nRF51 SDK v6.1.0を使っている。

nrf_assert.hで、ASSERTマクロが定義されている(assertじゃなくて)のだけれど、判定が偽の時にassert_nrf_callback()を呼び出すようになっている。
assert_nrf_callback()はユーザアプリ、つまり私とかが定義せんといかん。

これが有効なのは、DEBUG_NRFかDEBUG_NRF_USERが定義されているとき。
前者はMakefile.commonが、後者はアプリのMakefileが定義する。
makeを引数無しで実行すると、という話を前回したのがこれで、make debugのときにはDEBUG_NRFが定義されるようになっている。

じゃあ、make releaseとしたときにはassert_nrf_callback()が不要、と思ったのだけど、そうではなかった。
softdevice_assertion_handler()が使っているのだ。
これは#ifdefとかじゃないので、softdevice_handler.cをリンクするならば定義が必要になってくる。

 

app_error_handler()も同じようなものなんだから、こっちも定義してしまえばいいんだけど、なんかちょっと抵抗があるのよねぇ。
なんでだろう・・・。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。