st-linkのインストールしてhexファイルを書き込みできるようにする
- 準備
- cmakeのインストール
- libusbのインストール
- st-linkのインストール
- hexファイルを用意する(Bwhoopでチェック)
- armコンパイラの準備
- hexファイル作成
- 書き込んでみる。
準備
Developer Toolsが必要なので、Xcodeをインストールしておく。Command line tools等必要に応じてソフトウェアアップデートをしておく。gitコマンドはこの時点で使えるようになっているはず?
作業ディレクトの設定
$ sudo mkdir /usr/local/src
$ sudo chown -R 自分:グループ /usr/local/src
cmakeのインストール
https://cmake.org/download/
より必要なtarボールをダウンロード
cmakeのmake&install
$ tar zxvf cmake-x.x.x.tar.gz
$ cd ./cmake-x.x.x
$ ./configure
$ make all
$ sudo make install
libusbのインストール
http://libusb.info/
より最新のtarボールをダウンロード
libusbのmake&install
$ tar zxvf libusb-x.x.x.tar.bz2
$ cd ./libusb-x.x.x
$ ./configure
$ make all
$ sudo make install
st-linkのインストール
st-linkのmake&install
$ git clone https://github.com/texane/stlink.git
$ cd stlink
$ make
$ cd build/Release
$ sudo make install
hexファイルを用意する
armコンパイラの準備
https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads
解凍したバイナリを適当な場所に置いて(ここでは内臓ストレージ直下のDeveloperフォルダ)
.bashrcの中で
.bashrc
export PATH=$PATH:/Developer/gcc-arm-none-eabi/bin
の様にbinフォルダにPATHを通す
hexファイル作成
$ git clone https://github.com/silver13/BoldClash-BWHOOP-B-03.git
$ cd BoldClash-BWHOOP-B-03/
$ cd gcc/
$ make bwhoop.hex
のようにサクッと作成できます。
書き込んでみる
st-flash --format ihex write /dev/tty.hogehge bwhoop.hex 0x8000000
こんな感じでいけるのかな。検証は後日。
ST-LINK V2を入手した
とりあえずST-LINK V2を繋がず実行
$ st-util
st-util 1.4.0-11-ga2a707e
2017-11-**T**:**:** WARN src/usb.c: Couldn't find any ST-Link/V2 devices
ST-LINK V2を繋いで再度実行
$ st-util
st-util 1.4.0-11-ga2a707e
2017-11-**T**:**:** INFO src/usb.c: -- exit_dfu_mode
2017-11-**T**:**:** INFO src/common.c: Loading device parameters....
2017-11-**T**:**:** WARN src/common.c: Invalid flash type, please check device declaration
2017-11-**T**:**:** INFO src/gdbserver/gdb-server.c: Chip ID is 00000000, Core ID is 00000000.
2017-11-**T**:**:** INFO src/gdbserver/gdb-server.c: Listening at *:4242...
どうやら正しく認識してるみたい。ということはst-flashコマンドもシリアルポートの指定は必要ないのかもしれない。マイコンボードが届いたら書き込み検証してみる。
書き込んでみた
$ st-util
st-util 1.4.0-11-ga2a707e
2017-11-**T**:**:** INFO src/usb.c: -- exit_dfu_mode
2017-11-**T**:**:** INFO src/common.c: Loading device parameters....
2017-11-**T**:**:** INFO src/common.c: Device connected is: F0 small device, id 0x10006444
2017-11-**T**:**:** INFO src/common.c: SRAM size: 0x1000 bytes (4 KiB), Flash: 0x4000 bytes (16 KiB) in pages of 1024 bytes
2017-11-**T**:**:** INFO src/gdbserver/gdb-server.c: Chip ID is 00000444, Core ID is 0bb11477.
2017-11-**T**:**:** INFO src/gdbserver/gdb-server.c: Listening at *:4242...
^C
繋がった!!STM32F0とのこと、ちゃんとIDも拾っている。
デバッグモードに入りポート番号4242でgdbの接続を待ち受けているらしい。とりあえず動いた。
$ st-flash --format ihex write ./bwhoop.hex
st-flash 1.4.0-11-ga2a707e
2017-11-**T**:**:** INFO src/common.c: Loading device parameters....
2017-11-**T**:**:** INFO src/common.c: Device connected is: F0 small device, id 0x10006444
2017-11-**T**:**:** INFO src/common.c: SRAM size: 0x1000 bytes (4 KiB), Flash: 0x4000 bytes (16 KiB) in pages of 1024 bytes
2017-11-**T**:**:** INFO src/common.c: Attempting to write 15504 (0x3c90) bytes to stm32 address: 134217728 (0x8000000)
Flash page at addr: 0x08003c00 erased
2017-11-**T**:**:** INFO src/common.c: Finished erasing 16 pages of 1024 (0x400) bytes
2017-11-**T**:**:** INFO src/common.c: Starting Flash write for VL/F0/F3/F1_XL core id
2017-11-**T**:**:** INFO src/flash_loader.c: Successfully loaded flash loader in sram
2017-11-**T**:**:** ERROR src/flash_loader.c: flash loader run error
2017-11-**T**:**:** ERROR src/common.c: stlink_flash_loader_run(0x8000000) failed! == -1
stlink_fwrite_flash() == -1
ぐぬぬぅ〜〜