LoginSignup
5
4

More than 5 years have passed since last update.

macOSでst-linkを利用してSTMなマイコンにhexファイルを書き込みたい

Last updated at Posted at 2017-10-30

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

ぐぬぬぅ〜〜

5
4
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
5
4