DAPLinkファームウェアのビルド
基本的には下記ページに従って作業すれば良いのですが、Macで作業する場合いくつか留意点がありますので備忘録として手順を記しておきます。
- Homebrewのインストール:
1$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"XCode Command Line Toolsがインストールされていなければ同時にインストールします。
Homebrewがインストール済みの場合は念の為下記をお忘れなく。12$ brew update$ brew upgrade - python3のインストール:
公式サイトからインストーラをダウンロードしても良いが、Homebrewからもインストール出来る1$ brew install python3 - gitのインストール:
Homebrewから1$ brew install git - GNU Arm Embedded Toolchainのインストール:
Homebrewから12$ brew tap ArmMbed/homebrew-formulae$ brew install arm-none-eabi-gcc - cmakeのインストール:
Homebrewから1$ brew install cmake
ここまで準備出来ましたら下のコマンドを実行します。公式サイトにはpip とありますが、ここまででpip3にてインストールされています。もしpipのupdateのメッセージが出た場合は画面の指示に従いアップデートを行います。
- 作業ディレクトリを~/workとします
12345$ cd ~/work$ git clone https://github.com/mbedmicro/DAPLink$ cd DAPLink$ pip3 install virtualenv$ virtualenv venv - ~/work/DAPLink/venv フォルダが出来ていることを確認したら、下記コマンドにてVirtual Environmentを起動します。公式サイトにはMac用のコマンドとして記載されていません。
1source ./venv/bin/activateターミナルのプロンプトが (venv) になれば成功です。この後のビルドは全てこの (venv) にて行いますのでターミナルは閉じないように注意して下さい。もしもターミナルを再起動した場合は上記のコマンドを再実行して (venv) を起動して下さい。
- ビルド準備として下記コマンドを実行します
1(venv) $ pip3 install -r requirements.txt - ビルドするプロジェクトは「stm32f103xb_bl」(ブートローダ)と「stm32f103xb_stm32l476rg_if」(インターフェースプログラム)の2つです。インターフェースプログラム側は使用する機材に合わせて選びます。DAPLink/projects.yamlに現時点のサポートボードがまとまっています。まずはブートローダです。
12(venv) $ progen generate -t make_gcc_arm -p stm32f103xb_bl(venv) $ make -C projectfiles/make_gcc_arm/stm32f103xb_bl all VERBOSE=1エラー無く完了すればビルドメッセージの最後に下記のように表示されます。StartとLengthはボードへの書込みの際に必要になるので覚えておきます。
12345678Converting build/stm32f103xb_bl.hexConverting build/stm32f103xb_bl.bin../../../tools/post_build_script_gcc.pybuild/stm32f103xb_bl_crcboard_id Nonefamily_id Nonebin_offset NoneStart 0x8000000, Length 0xbc00, CRC32 0xa501567a - 続けてインターフェースプログラムをビルドします。
12(venv) $ progen generate -t make_gcc_arm -p stm32f103xb_stm32l476rg_if(venv) $ make -C projectfiles/make_gcc_arm/stm32f103xb_stm32l476rg_if all VERBOSE=1
こちらもメッセージを覚えておきます。
12345678Converting build/stm32f103xb_stm32l476rg_if.hexConverting build/stm32f103xb_stm32l476rg_if.bin../../../tools/post_build_script_gcc.pybuild/stm32f103xb_stm32l476rg_if_crcboard_id Nonefamily_id Nonebin_offset NoneStart 0x800c000, Length 0x13c00, CRC32 0x6e5af5c4 - ~/work/DAPLink/projectfiles/に各プロジェクトのフォルダと.binファイルが出来ています。
_crc の付いているファイルと付いていないファイルがありますが、どちらも書込み可能です。1234567891011121314work/└── DAPLink/└── projectfiles/└── make_gcc_arm/├── stm32f103xb_bl/│ └── build/│ ├── stm32f103xb_bl.bin│ ├── stm32f103xb_bl_crc.bin│ :├── stm32f103xb_stm32l476rg_if/│ └── build/│ ├── stm32f103xb_stm32l476rg_if.bin│ ├── stm32f103xb_stm32l476rg_if_crc.bin│ :
ビルド環境の準備を含め、相当に重い(複雑な)手順に感じました。次は書込むターゲット=ハードウェア側の準備を行い、実際にファームウェアの変更を行います。
コメント