0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

wolfBootを使ってみた

Posted at

はじめに

前回までは、wolfBootをNUCLEO-F401REで動作させるための準備を進めてきました。
今回は、wolfBootのメモリ配置について調べてみました。

メモリマップ

メモリマップは、wolfSSL社が公開しているGitHubの以下のドキュメントに詳細が書かれています。
ファームウェアイメージ
ファームウェアイメージヘッダー

ファームウェアイメージ

ドキュメントから今まで行ってきた準備の結果をメモリマップに割り当ててみると、下図のようになると思われます。

wolfBootはSecotr0からSector2までの全てを使用していません。
0x0800_0000 から必要なサイズ使用しています。

map1

factory.bin

STM32CubeProgrammerでNUCLEO-F401REに書き込んだ/wolfBoot/factory.binは、wolfBootとtest-appを含んだものになります。
wolfBootの本体とtest-appに使われていないセクタがありますが、ここはmakeしたときにwolfboot.binとimage_v1_signed.binを結合するときに0xFFで埋めてくれています。

ターミナル
Output image(s) successfully created.
[MERGE] factory.bin
Added  20952 bytes at 0x8000000 from wolfboot.bin
Added 110120 bytes of 0xff fill
Added   7428 bytes at 0x08020000 from test-app/image_v1_signed.bin

arch.mk

準備のときにarch.mkに下記を追加しましたが、これはwolfboot.binの先頭アドレスを指定していたことになります。

arch.mk
ifreq ($(TARGET),stm32f401)
    ARCH_FLASH_OFFSET=0x08000000
    SPI_TARGET=stm32
endif

elfファイル

STM32CubeIDEで、wolfBootを実行するときに、wolfboot.elfとimage.elfのシンボルをダウンロードする設定をしましたが、wolfBootとPrimary(BOOT) partitionでステップ実行するための設定になります。

その他のパーテーション

Secondary(UPDATE) partition, Swapping(SWAP) partitionは、ファームウェアの書き換えのときに使われるようです。
ファームウェアの書き換えについて調べたときに詳細を確認しようと思っています。

ファームウェアイメージヘッダー

ファームウェアの先頭から256バイトには、ファームウェアの情報を格納するためのファームウェアイメージヘッダーが配置されています。
使用方法は分かりませんが、終端の4バイトはパーテーションのマジックナンバーになっているようです。

map2

ファームウェアイメージヘッダーの詳細はドキュメントより下記のようになります。
現在の実装では、ファームウェアイメージヘッダーの内容はドキュメントの内容から少し変わっているようです。

map3

タグタイプ、タグサイズのサイズはドキュメントでは1バイトとなっていますが、実装では2バイト(リトルエンディアン)になっているようです。
パティングの位置も変更されているようです。また、最後の"タグの終了"は現在はないようです。

タグタイプ 意味 サイズ
0x0001 バージョン 4バイト
0x0002 タイムスタンプ 8バイト
0x0003 SHA256ダイジェスト 32バイト
0x0004 ? 2バイト
0x0010 ? 32バイト
0x0020 署名 64バイト

編集後記

今後は、内部の処理についての理解を進めていきたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?