DevAcademy “Adding custom board support” (3)
2024/07/24
引き続き DevAcademy IntermediateのAdding custom board supportを見ていく。
Exercise 1 – Custom board for single-core SoC
スルーしようかと思っていたが Exercise 2 は既にある board 定義をコピーして改造するようになっていたので、一から作るこちらも見ておくことにした。
Exercise 1 の最初に「Important」としてこんなことが書かれていた。
This exercise assumes you have installed the latest nRF Connect for the VS Code extension pack (>= Version 2024.2.214).
いま(2024/07/23)の時点でnRF Connect for VS Code Extension Packの最新版は 2023.11.3 になっている。 ExtensionではないnRF Connect for VS CodeのChangelogには Version 2024.2.214 が載っていたので、たぶん誤記だろう。
- “Create a new board”で生成されたファイルは自分でやった場合と同じだった
- “mandatory”といわれていたファイルが生成されていなかったので最近になって変わったのか気になっていたので
- defconfigファイルが2種類あるのに新たに
Kconfig
を追加しているのはなぜだ?Kconfig.defconfig
はデフォルト値、<boardID>_defconfig
はKconfig fragmentファイルという説明- ただの
Kconfig
は board menu の作成とデフォルト値の設定などらしい - “nRF Kconfig GUI”では”Board Options”の中にあった
- これはnRF52333DKのKconfigにも同じファイルがある
- LEDの追加
- GPIOは
GPIOTE
もアクティブにしないとビルド時にエラーが起きた - 最初、ノード名
led_0
で追加する - ラベル名は
led0
にする - エイリアス名も
led0
にするled0 = &led0
となっていたので、左辺がエイリアス名、右辺がラベル名か
- GPIOは
pinctrl.dtsi
は自分で作成して追加する- 単なるファイルなので
#include
も自分で追加する- いっそのことテンプレートで作成してほしいものだ。そのうちそうなるだろう。
- UART, I2C, SPI, PWMのピン設定を追加しているが、MDBT53では今のところ使わない
- LEDの追加で
&gpio0
などを追加したりchosen
でピンのアサインを書いたりしたが、そういうのとはまた違いそうだ。 - というか、これはGUIで設定できないのか?
- LEDの追加で
- 単なるファイルなので
やっていったところ、MDBT53で動かすことができた。
ncs-blinky-sample/devacademy_nrf5340
MCUboot無しでnon-secure版もできるのだろうか?と思ってcpuspp_ns
を使ってみると動いた。
ncs-blinky-sample/devacademy_nrf5340_ns
名前の違い以外はCONFIG_TRUSTED_EXECUTION_NONSECURE=y
があるくらいか?
nRF Connect for Desktop の Programmer で様子を見てみる。 えっ、こんなに細かく分かれてるの??
と思って一度Eraseしてからやり直すときれいになりました。 Eraseせずに焼けるのは何でだろうと思っていたが、空いたところに焼いているのだろうか。 しかしブートローダはどうやって見分けてるのか? Eraseして焼いても動いたので、実はnon-secureの方は動いてなかった、ということはなさそうだ。
オレンジ色の部分があるということは MCUboot も焼かれている? あるいは immutable なブートローダなのだろうか。
zephyr_final.map
には”mcuboot”が見つからないので載っていないのだろう。
まだまだ分からんことが多いな。