Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

2
1

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をNUCLEO-F401REで動作させる準備を行ったので、
今回は、NUCLEO-F401REでwolfBootを動作させてみます。

使用機器

機器 バージョン
STM32CubeIDE 1.14.0
STM32CubeProgrammer 2.14.0
NUCLEO-F401RE -

手順

実行ファイルの作成

wolfBootの実行ファイルにデバッグ情報を追加するためにコンフィグレーションファイルを編集します。
ルートディレクトリにコピーしたコンフィグレーションファイル .config に
DEBUG?=1
を追加します。

.config
ARCH?=ARM
TARGET?=stm32f401
DEBUG?=1
(以下省略)

再度makeします。

ターミナル
wolfBoot $> make clean
wolfBoot $> make

wolfBootの書き込み

STM32CubeProgrammerを使用してwolfBootをNUCLEO-F401REに書き込みます。
書き込むファイルはwolfBoot/factory.binです。
STM32CubeProgrammerとNUCLEO-F401REを接続します。
Erasing & Programmingウィンドウに移動してfactory.binをNUCLEO-F401REに書き込みます。
Start address 0x08000000
として、Start Programmingボタンを押します。
書き込みが完了したら、STM32CubeProgrammerとNUCLEO-F401REを切断します。
書き込み1

プロジェクトの作成

STM32CubeIDEでプロジェクトを作成します。
STM32CubeIDEのメニューから
File -> New -> STM32 Project を選択します。
手順1

Target Selectionというウィンドウが表示されるので、NUCLEO-F401REに搭載されているマイコンを選択します。
MCU/MPU Selectorタブで、PRODUCT INFOのSeriesでSTM32F4をチェックします。
MCUs/MPUs Listの中にあるSTM32F401RET6を選択して、Nextボタンを押します。
手順2

STM32 Projectウィンドウが表示されるので、Project Nameを入力します。
Targeted Project TypeEmptyを選択して、Finishボタンを押します。
手順3

作成したプロジェクトを使用して、NUCLEO-F401REに接続します。
パソコンにNUCLEO-F401REを接続して、プロジェクトを右クリックして、Debug AsからSTM32 C/C++ Applicationを選択します。
手順5

Edit Configurationウィンドウが表示されるので、OKボタン押します。
接続できたらNUCLEO-F401REから切断します。
手順6

実行の準備

wolfBootをSTM32CubeIDEで動作させるために必要なファイルを登録します。
必要となるファイルは下記になります。

  • wolfBoot/wolfboot.elf
  • test-app/image.elf
  • wolfBoot/src
    boot_arm.c image.c keystore.c loader.c spi_flash.c string.c update_flash.c
  • wolfBoot/test-app
    startup_arm.c app_stm32f401.c led.c system.c timer.c
    led.h system.h timer.h
  • lib/wolfssl/wolfcrypt/src
    ed25519.c fe_low_mem.c ge_low_mem.c misc.c sha256.c sha512.c

wolfBootからSTM32CubeIDEで作成したプロジェクトのディレクトリに必要なファイルをコピーします。

ディレクトリ構成
wolfBoot
├─ Debug
│  ├─ wolfboot.elf
│  └─ image.elf
├─ Inc
│  ├─ image.h
│  ├─ loader.h
│  ├─ spi_flash.h
│  └─ target.h
├─ Src
│  ├─ boot_arm.c
│  ├─ image.c
│  ├─ keystore.c
│  ├─ libwolfboot.c
│  ├─ loader.c
│  ├─ spi_flash.c
│  ├─ startup_arm.c
│  ├─ string.c
│  └─ update_flash.c
├─ lib
│  ├─ ed25519.c
│  ├─ fe_low_mem.c
│  ├─ ge_low_mem.c
│  ├─ misc.c
│  ├─ sha256.c
│  └─ sha512.c
├─ test-app
│  ├─ app_stm32f401.c
│  ├─ led.c
│  ├─ led.h
│  ├─ system.c
│  ├─ system.h
│  ├─ timer.c
│  └─ timer.h

デバッグの設定

wolfBootをNUCLEO-F401REで、実行するためのデバッグの設定を行います。

プロジェクトを右クリックして、Debug AsからDebug Configurationsを選択します。
debug1

Debug Configurationsウィンドウが表示されるので、Mainタブの設定を行います。
C/C++ Applicationを先ほどDebugディレクトリに登録したwolfboot.elfとします。
また、ビルドは必要ないので、Disable auto buildをチェックします。

プロジェクト名をwolfBootとしたため、デフォルトで作成されるelfファイルのファイル名がwolfBoot.elfとなっています。
WSL2のUbuntuでmakeして作成されるelfファイルのファイル名はwolfboot.elfとなります。
大文字のBと小文字のbのみの違いとなります。
紛らわしいのでプロジェクト名を考えて付けるべきでした。

debug2

次にStartupタブに移動します。
プロジェクトを作成したときにデフォルトで登録されているelfファイルは使用しません。
デフォルトで登録されているelfファイルを選択して、Editボタンを押します。
debug3

Add/Editウィンドウが表示されるので、DownloadLoad symbolsのチェックを外して、OKボタンを押します。
debug4

Startupタブで、Load Image and Symbolsリストの設定がDownloadLoad symbolsfalseになっていることを確認します。
続いて、wolfBootの実行ファイルを追加します。Addボタンを押します。
debug5

プロジェクトのDebugフォルダに登録したwolfboot.elfを追加します。
Program pathDebug/wolfboot.elfとします。
Load symbolsのみをチェックして、OKボタンを押します。

STM32CubeProgrammerでfactory.binを書き込んでいるため、Downloadのチェックは外します。

debug6

続けてプロジェクトのDebugフォルダに登録したimage.elfを追加します。
Program pathDebug/image.elfとします。
Load symbolsのみをチェックして、OKボタンを押します。

debug7

Load Image and Symbolsリストの設定が下表のようになっていることを確認します。

File Build Download Load symbols
Debug/image.elf false false true
Debug/wolfboot.elf false false true
Debug/wolfBoot.elf false false false

Set breakpoint at: mainSet breakpoint at: isr_resetとします。
Debugボタンを押すと、NUCLEO-F401REでwolfBootのデバッグが始まります。

debug8

ソースフィルが見つからないとのメッセージが出ると思いますので、Locate Fileをクリックして、先に登録したファイルから指定されたファイルを選択します。
下記の場合は、Srcディレクトリに登録したboot_arm.cを選択します。
debug9

編集後記

NUCLEO-F401REで、wolfBootを動作させる環境が整ったので、これからは、どのような処理が行われているのかを理解していきたいと思います。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?