hiro99ma blog

何か技術的なこと

ncs: v2.7.0 対応 (1)

2024/11/21

v2.6.1 から v2.7.0 へ

ncs v2.6.1 から v2.7.0 へのアップグレードは ncs バージョンとツールチェーンのバージョンを変更するだけで済んだ。
機能的にも大したことをしていないおかげだとは思うが、まあそこはよかろう。

ただビルドログを見ると warning が出ている。

ボード定義ファイル

私が使っている開発用ボードは nRF5340 が載ったこちらである。
Raytac さんの MDBT53-1M が使われている。
ボード名を “MDBT53” にすると本家とわからなくなるかもしれないので商品コードから “SSCI086585” と呼んでいる。

---------------------------------------------------------------------
--- WARNING: Functionality to describe SoCs in HWMv1 is           ---
--- deprecated and should be replaced with HWMv2, including       ---
--- boards. HWMv1 SoCs support remains only to ease the migration ---
--- of out-of-tree SoCs and associated boards. It will not be     ---
--- possible to build using HWMv1 SoCs at all in future releases. ---
---------------------------------------------------------------------

これはプロジェクトのコードというよりも BOARD_ROOT に置くボード定義ファイルの話だ。
今までは boards/arm/ボード名/ のような構成だったのが boards/ベンダー名/ボード名/ のようなフォルダ構成になったのだが、 それだけでなく中身も少々変わっていた。
DTSファイルは変わっていなさそうだった。

これを書いている時点ではまだ DevAcademy Intermediate Lesson 3 は更新されていないようだ。
Fundamentals は更新されていたので、やってる最中なんだろう。
お手本がほしいので、今使っている開発ボードの元にした定義ファイルの差分を WinMerge で見ながらやっている。

image

グレーな行は片方にしかないファイルである。
Kconfig.board がなくなって board.ymlKconfig.名前 が増えている。
見ながらやっているのだが、Add Board Configuration で出てくるリストでの見え方が変わらない。
上側にある方が参考にしている Raytac さんのボードで、こちらはスラッシュで区切られている。

image

YAML ファイルにこういう差分があったので identifier をスラッシュで区切れば済むかと思ったのだが変わらないのだよなあ。

image

nRF Connect for VS Code に “Create a new board” があったので試す。

こちらはちゃんとスラッシュになっている。

image

まねして自作ボード定義ファイルを変更していく。
生成された方の YAML ファイルは拡張子が .yml で自作の方は .yaml なのだが、.yaml に統一すると生成した方もスラッシュではなくアンダーバーになってしまった。。
board.yml を変更するまではスラッシュだったので、何かルールがありそうだ。
拡張子が .yaml.yml で違うというよりは、同じ定義と見なされたとか? いや、それなら拡張子の変更ではないよなあ。

あ、BOARD_ROOT に置いている方の board.yamlboard.yml にするとスラッシュになった!
よくわからん。

その後、ビルドしても失敗してあれこれ調べた。
数時間かかって Kconfig のデフォルト値を書き間違えていることに気付く。。。
"ssci/ssci086585/nrf5340/cpuapp" などと最初にベンダー名を書いていたのだが、最初はボード名からなのでベンダー名をボード名と識別して「見つからない」とエラーになっていたのだった。
パス名のつもりで書いていたのか、まったく気付かなかった。

そのおかげであれこれ見ていたのだが、Raytac のボード定義ファイルと nRF5340DK の定義ファイルは細かいところが違っていた。
主に CMake 関係のファイルかな。

nRF5340DK の方はこことかこことかこことかで TFM の何かをしているので Raytac にもあってよいかと思うのだ。
CONFIG_BUILD_WITH_TFMCONFIG_TFM_FLASH_MERGED_BINARY などを見ているようだ。
説明はここか。
TF-M 自体を忘れているが、セキュアな実行環境があるからこそそこで動いていないアプリは Non-Secure(NS) として区別するんだったっけ。
DevAcademyの再履修だな。ははは。

ビルドして warning が出なくなり、実機でも動いたのでよしとする。

Child Image

これは sysbuild が使えるようになったので ncs v2.9 からは child_image/ 方式は使えなくなりますよ、という警告だろう。

---------------------------------------------------------------------
--- WARNING: Child and parent image functionality is deprecated   ---
--- and should be replaced with sysbuild. Child and parent image  ---
--- support remains only to allow existing customer applications  ---
--- to build and allow porting to sysbuild, it is no longer       ---
--- receiving updates or new features and it will not be possible ---
--- to build using child/parent image at all in nRF Connect SDK   ---
--- version 2.9 onwards.                                          ---
---------------------------------------------------------------------

めんどうそうなので次回にしよう。

< Top page