拡張機能のアップデート
少し前のアップデート(おそらくnRF Connect SDK 2.7.0に正式対応したバージョン)で、Extra Kconfig fragmentsという項目が追加されました。端的に説明すると、Kconfigのオーバーレイです。
ビルドパターンを分ける
今までできなかったのかって?ええ、(それっぽい感じには)できなかったんですよ!!!
よくあるのはリリースビルドとデバッグビルドですよね。リリースビルドにはログ出力なんて要らないし、FOTAも有効にしておきたい。でもデバッグビルドではログ出力も必要だし、FOTAはmcubootをビルドする分だけ余分に時間がかかるからデバッグしているときは組み込みたくない。
なんか当たり前のことを言っているようですが、これができなかったんですよ。今までどうやってやっていたかと言うと、
こんな感じにデバッグビルドやエミュレータービルドの.confファイルを作って対応していました。このやり方の欠点はKconfigを変更した場合に全部の.confファイルを忘れずに変更しないといけないという点です。
WinMerge大活躍でした(笑)
何度も何度も全部のプロジェクトファイルをWinMergeで比較して眺めていました。
これが本来あるべき形でしょ!
prj.confはリリースビルドで使う機能が記載されていて、そこにデバッグ時にのみ使う機能や、デバッグ時には組み込みたくない機能を殺す形でデバッグビルド用のオーバーレイを作れるようになりました。
実際のデバッグビルド用のオーバーレイはこんな感じになるのではないでしょうか。
CONFIG_BOOTLOADER_MCUBOOT=n
CONFIG_DISABLE_FLASH_PATCH=n
CONFIG_DK_LIBRARY_LOG_LEVEL_OFF=y
CONFIG_USE_SEGGER_RTT=y
CONFIG_FLASH=y
CONFIG_WATCHDOG=n
CONFIG_TASK_WDT=n
CONFIG_LOG=y
CONFIG_LOG_PROCESS_THREAD_SLEEP_MS=100
CONFIG_FLASH_MAP=y
CONFIG_STREAM_FLASH=y
これでリリースビルドのみ設定を反映し忘れた!みたいなことはなくなりそうです。うぇーい!