ファームウェアの書き換えについて (STマイクロ編)
PreenFM2は最近でもファームウェアのアップデートが行われているのですが、公式サイトではバージョンが2.07で止まっています。
最新版のファームウェアを書き込むためにはgithubからソースコードをダウンロードして自分でビルドして書き込むためのバイナリファイルを作成しなければなりません。
一方で、PreenFM2に使用されているマイコン(STM32F4シリーズ)はSTマイクロエレクトロニクス社製のもので、一般的にDIYシンセでよく使用されるマイコンです。
そこでせっかくなので今回のPreenFM2に限らず、ユーロラックのモジュールやスタンドアローン型のシンセのDIYにおいてプログラムの開発をやってみたい方に少しでも役に立てればと思い、STから出ている無料の総合開発環境(IDE)ソフトウェアであるAtollic TrueSTUDIOを使用して、ハック(デバッグ)する方法を備忘録として残しておきます。
オープンソースのソースファイルを眺めながら、マイコンの内部がどのように処理しているのか、またはどうやって信号処理として最終的に音として出力されるのかを学習するのも面白いのではないかと思っています。
IDEで開発する方法はピンからキリまであるので、ここに書かれているのが正解というわけではないので、一例として参考にしてください。
準備するもの
・ST-LINK/V2
・ジャンパワイヤ(メス・オス)
ソフトウェアのインストール
・gcc-arm-none-eabi-4_7-2014q2-20140408-win32のインストール
・msys2-x86_64のインストール
msys2のインストールにはいくつか手順があるので、MSYS2 MinGW GCC環境をつくる(その1)を参考にして、GCCパッケージとmakeパッケージをインストールしておいてください。
・Atollic TrueSTUDIOインストール
ST-LINKとPreenFM2の接続
PreenFM2の基板上にあるP1コネクタのピンアサインは以下の通りです。
一方で、ST-LINK/V2の20ピンのピンアサインは以下の通りです。
それぞれを以下の表の通り対応したPin No同士をジャンパーワイヤで接続します。
Pin No. | 名称 | Pin No. | 名称 |
1 | +3.3V | 1 | MCU VDD |
2 | SWD_CLK | 9 | SWCLK |
3 | GND | 20 | GND |
4 | SWD_IO | 7 | SWDIO |
5 | RESET | 15 | NRST |
PreenFM2用プロジェクトファイル作成およびビルド
Atollic TrueSTUDIOを起動する。
起動後、ファイルメニューからインポートを選択。
Select an import wizardで、C/C++カテゴリのExisting Code as Makefile Projectを選択して次へのボタンを押す。
BrowseボタンでMakefileのあるフォルダ(例:preenfm2-master)を選択し、Toolchain for Indexer SettingsでAtollic ARM Toolsを選択、終了ボタンを押す。
プロジェクト・エクスプローラーでpreenfm2-masterを選択し、プロジェクトメニューからC/C++ビルド設定を選択する。
最初にこのようなメッセージが表示される。
ターゲットで、STM32F4->MCUs->STM32F405VG (PreenFM2のマイコン型番)を選択して、適用ボタンを押す。
プロパティのC/C++ Build->Tool Chain Editor画面で、Current buiderをGNU Make Builderに選択し、適用ボタンを押す。
C/C++ Build画面のBuilder SettingsタブでMakefile generaionカテゴリにあるGenerate Makefiles automaticallyのチェックボックスを外す。
BehaviorタブのWorkbench Build BehaviorカテゴリにあるBuild (Incremental build)の項目でallからpfmに変更しておく。
プロパティのC/C++ Build->Environment画面でPATHを選択し、Editボタンを押す。
Valueの項目でデフォルトで入っていたパスを削除し、以下のパスを入力する。
C:\Program Files (x86)\GNU Tools ARM Embedded\4.7 2014q2\bin;C:\msys64\usr\bin;
このパスは先ほどインストールしたgcc-arm-none-eabi-4_7-2014q2-20140408-win32とmsys2-x86_64のbinフォルダのあるパスとなっています。とりあえずコンパイルする上で必要最低限のパスとなります。
それ以外の設定については基本的にデフォルトのままで構いません。
以上の設定を終えた後に、プロジェクトメニューのプロジェクトのリビルドを選択すると、ビルドが開始されます。
メイン画面にあるコンソールで、Build Finishedと表示されると正常に終了したことになります。
PreenFM2のハック
実行メニューのデバッグ構成を選択する。
デバッグ構成画面で、組み込みC/C++アプリケーションをダブルクリックすると以下のような画面になるので、名前に名称を入力します。
MainタブではProjectの項目にあるBrowseボタンでプロジェクト(preenfm2-master)を選択すると、C/C++ Applicationの項目に自動で実行ファイルが選択されます。
変更を終えたら適用ボタンを押します。
デバッガタブではデバックプローブをST-LINKに選択します。その他はデフォルトのままで構いません。
以上の設定を終えたら、適用ボタンを押した後、デバッグボタンを押すとデバッグが開始されます。
実行ファイルがダウンロードされ、デバッグが開始されると次の画面のようにmain関数でブレークが掛かった状態で実行が一旦停止します。
後は、ステップでソースコードを眺めながら一つ一つ実行するのもよし、再開ボタンを押すとプログラムが走りPreenFM2が起動します。
それでは、ハックを楽しんでください!