Windows10 における Ac6 System Workbench for STM32 のプロジェクト作成方法 V002 2017/06/23 Windows10 の PC で Ac6 System Workbench for STM32 のプロジェクトを新規に作成する方法について説明します tri-s CPU 基板用の LED 点滅プログラムの作成を例に説明します 目次 1. 新規プロジェクト作成の準備...3 2. 新規プロジェクトの作成...5 2.1. System Workbench for STM32 の起動...5 2.2. Workspace の選択...5 2.3. 新規プロジェクトの作成...8 2.4. プロジェクト名の設定...9 2.5. マイクロコントローラと基板およびデバッガの選択... 10 2.6. Library 使用の選択... 13 2.7. プロジェクトの初期画面... 16 3. ソースの編集... 17 3.1. ソースファイルを開く... 17 3.2. ソース フォルダの追加... 18 3.3. ファイルの追加... 21 1) 新規ソースファイルの追加... 21 2) 新規ヘッダファイルの追加... 24 3.4. 既存のソースフォルダとファイルの追加... 27 1) ソースフォルダとファイルの追加... 27 2) ソースフォルダの認識... 30 4. パスの設定... 32 1) パスの設定画面を開く... 32 2) パスの追加... 35 a) Configuration の選択... 35 b) パスの追加... 35 5. startup ファイルの変更... 39 6. 不要なファイルの削除... 42 1) 不要なヘッダファイルの削除... 42 2) User Manual の削除... 43 3) stm32f4xx_hal_msp_template.c の削除... 44 7. プログラムの開始番地を 0x08010000 に設定する方法... 45 7.1. LinkerScript.ld 内の ROM(rx) の値の変更... 45 7.2. ファイル stm32f405xx.h 内の定義の変更... 46 7.3. Vector table の設定... 47 7.4. りばいぶのサンプルプログラムの番地割り当てについて... 47 8. プロジェクトのビルド... 48 8.1. 内容を変更したファイルの保存... 48 8.2. ビルド... 49 1
9. デバッグ... 51 9.1. デバッグの準備... 51 1) ST-Link/V2 と tri-s CPU 基板との接続の様子... 51 2) ST-Link/V2 と tri-s CPU 基板との接続信号... 51 9.2. デバッグ... 52 1) プログラムの実行... 54 2) プログラム実行の中断... 54 3) ブレークポイントの設定... 56 4) ブレークポイントの解除... 57 10. Ac6 System Workbench の終了... 58 1) 実行の中断とデバッグの終了... 58 2) エディット画面に戻る... 58 3) Ac6 System Workbench の終了... 59 2
1. 新規プロジェクト作成の準備 tri-s CPU 基板の LED 点滅プログラムを例に説明します 新規プロジェクトのためのフォルダを作成して そこにプロジェクトを作成します そのフォルダが Workspace になります [ 新しいフォルダー ] のアイコンをクリックすると 次のように新しいフォルダーが作成されます フォルダーの名前を入力します この例では SfStS_Blink_LED_Status_10K とします 入力した結果は次ページのようになります 3
フォルダ名を入力して Enter キーを押すか 適当な場所でマウスの左クリックをすると確定します この SfStS_Blink_LED_Status_10K がプロジェクトの Workspace になります 4
2. 新規プロジェクトの作成 2.1. System Workbench for STM32 の起動 スタートメニューの {System Workbench for STM32} をクリックすると次の Workspace 選択のダイアログが開きます 2.2. Workspace の選択 [Browse...] ボタンをクリックして次の Select Workspace Directory ダイアログを開きます 5
先ほど作成したフォルダー SfStS_Blink_LED_Status_10K を選択して [OK] ボタンをクリックすると 次のようになります [OK] ボタンをクリックすると次ページのフォームが表示されます 6
フォームを最大化し Welcome は最小化して 次のようにします 次ページに続く 7
2.3. 新規プロジェクトの作成 メニューの {File} {New} {C Project} をクリックすると次のダイアログが開きます 次ページに続く 8
2.4. プロジェクト名の設定 Use default location にチェックがついていて Location は選択した Workspace になっています Project type に Ac6 STM32 MCU Project を選択して Project name に Blink_LED_Status_10K を入力して [Next >] ボタンを クリックすると次のダイアログが開きます [Next >] ボタンをクリックすると次ページの表示になります 9
2.5. マイクロコントローラと基板およびデバッガの選択 使用する MCU と基板を選択します 基板は custom boards になります Show custom boards 以外のチェックをはずします Series は STM32F4 を選択します 最初は custom boards がないので [Create a new custom board] ボタンをクリックして作成します [Create a new custom board] ボタンをクリックすると次ページのダイアログが開きます 10
次のように項目を選択します Enter new board name には F405 を入力しました [OK] ボタンをクリックすると F405 という名前で custom board が作成されます 次ページに続く 11
Board のところに F405 が表示されました 次からは Board のところで F405 を選択することができます [Next >] ボタンをクリックしてさらに設定を行います [Next >] ボタンをクリックすると次のダイアログが開きます 次ページに続く 12
2.6. Library 使用の選択 Hardware Abstraction Layer (Cube HAL) の Radio Button をクリックすると 次の表示になります 初めての場合 Target formware has not been found. Please download it. と表示されます [Download target firmware] ボタンをクリックしてダウンロードを行います [Download target firmware] ボタンをクリックすると次ページの License Agreement のダイアログが表示されます 13
I accept the agreement. にチェックを入れて [OK] ボタンをクリックするとダウンロードを開始します ダウンロードにはかなり時間がかかるので ゆっくり待ちましょう 14
Download が終了すると Extracting 処理が開始されます Extracting が終了すると次の表示になります 万が一 Library のダウンロードに失敗した場合は Extracting でエラーメッセージが表示されます その場合は 表示されているパスを確認して そのフォルダ内にあるダウンロードされたファイル stm32cube_fw_f4_vxxxx.zip (vxxxx はバージョン ) を削除して 再度 [Download target firmware] ボタンをクリックしてダウンロードを行ってください 15
Radio Button の As sources in the application project を選択して [Finish] ボタンをクリックします プロジェクトが作成されて 次のフォームが表示されます 2.7. プロジェクトの初期画面 16
3. ソースの編集 3.1. ソースファイルを開く main.c を開いてみます main.c をダブルクリックすると 次のように main.c の内容を表示します この状態は 先頭のコメントがたたまれている状態です 先頭の数字 3 の右横のプラスをクリックすると次ページのように コメント部分が表示されます 17
先頭のコメントの部分が表示されました 3.2. ソース フォルダの追加 Workspace にソース フォルダを追加するには以下のようにします Blink_LED_Status_10K の下に追加したいので Project Explorer の Blink_LED_Status_10K をクリックして選択状態にします 18
Blink_LED_Status_10K を選択した状態でメニューの {File} {New} {Source Folder} をクリックすると 次の New Source Folder のダイアログが開きます 次ページに続く 19
Folder name に Blink_LED_Status と入力して [Finish] ボタンをクリックすると 次のように左側の Project Explorer の Workspace の部分にソースフォルダ Blink_LED_Status が追加されます 20
エクスプローラでフォルダを確認すると Blink_LED_Status_10K の下に Blink_LED_Status が作成されています 3.3. ファイルの追加 1) 新規ソースファイルの追加 ソースフォルダ Blink_LED_Status にソースファイル Blink_LED_Status.c を追加する場合について説明します ソースフォルダ Blink_LED_Status をクリックして選択状態にします 21
ソースフォルダ Blink_LED_Status を選択した状態で {File} {New} {Source File} をクリックすると次の New Source File の ダイアログが開きます 次ページに続く 22
Source file の欄に Blink_LED_Status.c と入力して [Finish] ボタンをクリックします ソースフォルダ Blink_LED_Status の下に Blink_LED_Status.c が作成されて Editor には内容が表示されています 23
2) 新規ヘッダファイルの追加 ソースフォルダ Blink_LED_Status にヘッダファイル Blink_LED_Status.h を追加する場合について説明します ソースフォルダ Blink_LED_Status をクリックして選択状態にします ソースフォルダ Blink_LED_Status を選択した状態で {File} {New} {Header File} をクリックすると次の New Header File の ダイアログが開きます 24
Header file の欄に Blink_LED_Status.h と入力して [Finish] ボタンをクリックします 次ページに続く 25
ソースフォルダ Blink_LED_Status の下に Blink_LED_Status.h が作成されて Editor には内容が表示されています エクスプローラでフォルダ Blink_LED_Status を見てみると Blink_LED_Status.c と Blink_LED_Status.h が作成されています 26
3.4. 既存のソースフォルダとファイルの追加 プロジェクト Blink_LED_Status_10K にソースフォルダ HAL_Handle_F4 を追加する場合について説明します HAL_Handle_F4 には各周辺インターフェースごとの初期化と処理のためのファイルが収められています りばいぶが作成したモジュール群です 1) ソースフォルダとファイルの追加 エクスプローラを使用して Blink_LED_Status_10K の下にソースフォルダ HAL_Handle_F4 をコピーします フォルダ HAL_Handle_F4 の中を見てみると いろいろな周辺インターフェースのためのファイルが格納されています Ac6 System Workbench for STM32 の画面に戻って HAL_Handle_F4 を追加します 次ページに続く 27
Project Explorer の Blink_LED_Status_10K をクリックして選択状態にします Blink_LED_Status_10K を選択した状態で右クリックしてポップアップメニューを開き {Refresh} をクリックすると 次ページのようになります 28
HAL_Handle_F4 が追加されました HAL_Handle_F4 を展開すると 各周辺インターフェースのためのファイルが格納されています 29
2) ソースフォルダの認識 フォルダとして HAL_Handle_F4 が追加されましたが まだ ソースフォルダとしては認識されていません ソースフォルダとして認識させるためには 以下のようにします HAL_Handle_F4 をクリックして選択状態にし 右クリックにより開くポップアップメニューの {New} {Source Folder} を クリックすると次の New Source Folder のダイアログが開きます Folder name の [Browse...] ボタンをクリックすると次ページの Existing Folder Selector のダイアログが開きます 30
HAL_Handle_F4 をクリックして選択状態にして [OK} ボタンをクリックします Folder name の欄に HAL_Handle_F4 が入力されているので [Finish] ボタンをクリックします 次ページに続く 31
HAL_Handle_F4 にソースフォルダのマークがついてソースフォルダとして認識されたのがわかります 4. パスの設定ソースフォルダを追加した場合 パスの設定を行う必要があります ヘッダファイルが格納されているフォルダに対して パスの設定を行わないと ビルドエラーが発生します 1) パスの設定画面を開く まず Blink_LED_Status をクリックして選択状態にします 32
Blink_LED_Status を選択した状態で メニューの {Project} {Properties} をクリックすると次のダイアログが開きます 次ページに続く 33
C/C++ General の下の Path and Symbols をクリックすると次の表示になります 次ページに続く 34
2) パスの追加 a) Configuration の選択 Configuration の選択を [ Al configurations ] にすると Debug と Release の Path をいっぺんに設定できます b) パスの追加 GNU C をクリックして選択状態にし [Add...] ボタンをクリックすると次のダイアログが開きます 35
[Workspace...] ボタンをクリックすると次のダイアログが開きます 次ページに続く 36
Blink_LED_Status_10K を展開して HAL_Handle_F4 をクリックして選択状態にし [OK] ボタンをクリックします Directory に /Blink_LED_Status_10K/HAL_Handle_F4 が入力されているので [OK] ボタンをクリックします 次ページに続く 37
Path and Symbols の GNU_C においてスクロールバーを下にさげると HAL_Handle_F4 が追加されているのがわかります Blink_LED_Status と Common_Lib および Initialize_Peripheral も追加したら [OK] ボタンをクリックしてください ( プロジェクトサンプルとして SfStS_Blink_LED_Status_10K.zip を当サイトからダウンロードできます ) 確認メッセージが表示されるので [Yes] ボタンをクリックしてください これで パスの設定は終了です 38
5. startup ファイルの変更 デフォルトで設定されている startup_stm32.s はペクターが設定されていないので 割り込みなどが正常に動作しません エクスプローラでフォルダ startup 内に startup_stm32f405xx.s をコピーします startup_stm32f405xx.s は当サイトのプロジェクトサンプルのフォルダ startup 内にあります 次ページに続く 39
startup をクリックして選択した状態で 右クリックして開くポップアップメニューの {Refresh} をクリックしてください startup_stm32f405xx.s が追加されました 次に startup_stm32.s を削除します 40
startup_stm32.s をクリックして選択した状態で 右クリックで開くポップアップメニューから {Delete} をクリックします [OK] ボタンをクリックします 次ページに続く 41
startup_stm32f405xx.s だけになりました 6. 不要なファイルの削除プロジェクトの容量が非常に大きくなってしまうので不要なファイルを削除します 1) 不要なヘッダファイルの削除 エクスプローラでフォルダ CMSIS\device を見ると多くの MCU 用の定義ファイルが存在します stm32f405xx.h 以外は必要ないので削除します 42
stm32f405xx.h だけを残して 他の MCU の定義ファイルは削除しました 2) User Manual の削除 エクスプローラでフォルダ HAL_Driver をみると User_Manual が多数あります 必要ないので削除します 43
User_Manual のファイルを全て削除しました 3) stm32f4xx_hal_msp_template.c の削除 HAL_Handle_F4 内に stm32f4xx_hal_msp.c が存在するため HAL_Driver 内の stm32f4xx_hal_msp_template.c があると 同一名のモジュールが存在してビルドエラーが発生します stm32f4xx_hal_msp_template.c をクリックして選択した状態で右クリックにより開くポップアップメニューの {Delete} をクリックして 削除してください 44
7. プログラムの開始番地を 0x08010000 に設定する方法 tri-s CPU 基板はプログラムの開始番地を 0x08010000 にしています 7.1. LinkerScript.ld 内の ROM(rx) の値の変更 /*---------------------------------------------------------------*/ /* ROM (rx) : ORIGIN = 0x8000000, LENGTH = 1024K*/ /*---------------------------------------------------------------*/ /* 2016.05.30 : Revive */ ROM (rx) : ORIGIN = 0x08010000, LENGTH = 1024K-0x10000 /*---------------------------------------------------------------*/ ROM (rx) の開始番地を 0x08010000 に変更します 次ページに続く 45
7.2. ファイル stm32f405xx.h 内の定義の変更 stm32f405xx.h 内の 842 行目あたりの定義 #define FLASH_BASE の値を次のように変更します //---------------------------------------------------------------------------- //#define FLASH_BASE ((uint32_t)0x08000000u) /*!< FLASH(up to 1 MB) base address in the alias region */ //---------------------------------------------------------------------------- // 2016.05.30 : Revive #define FLASH_BASE ((uint32_t)0x08010000) /*!< FLASH(up to 1 MB) base address in the alias region */ //---------------------------------------------------------------------------- FLASH_BASE の定義を ((uint32_t)0x08010000) に変更します 次ページに続く 46
7.3. Vector table の設定 int main(void) の先頭に以下の Vector 設定を記述します //---------------------------------------------------------- // Set the Vector Table base address at 0x080x0000 //---------------------------------------------------------- SCB->VTOR = FLASH_BASE; // Vector Table Relocation in Internal FLASH 7.4. りばいぶのサンプルプログラムの番地割り当てについて a) 0x080010000 番地にユーザープログラムを書き込むためのプログラム格納番地 0x08000000-0x08007FFF には 更新したプログラムを 0x08010000 に書き込むためのプログラムが書き込まれています b) パラメータの格納番地 また 0x08008000-0x0800BFFF は Network 設定パラメータを格納するために使用しています 0x0800C000-0x0800FFFF は ユーザーが定義したパラメータを設定するためのエリアとして使用します c) JIS X 0208 の 16 x 16bit のフォントを格納する番地 0x08080000 0x080BFFFF 番地に LCD 接続時に漢字を表示するためのフォントを格納しています d) 飛石伝い のための振舞い方パラメータを格納する番地 0x080C0000 0x080FFFFF 番地に 飛石伝い のプログラムを実行する場合の振舞い方パラメータを格納しています この番地割り当ては あくまでも りばいぶの使用方法なので これに従う必要はありません 47
8. プロジェクトのビルド 8.1. 内容を変更したファイルの保存 ファイルの内容を変更すると ファイルの名前の左に * マークが表示されます ファイルを保存すると * マークは消えます Ac6 System Workbench では Build のアイコンをクリックしてビルドを開始するときにファイルが自動的に保存されません ファイルを保存しないとファイルの変更結果がビルドにも反映されません メニューの {File} {Save Al} をクリックして ファイルを全て保存してからビルドを行わなければなりません 48
8.2. ビルド Build のアイコンをクリックするとプロジェクトのビルドを行います ビルド中は上記のダイアログが表示されます 最初のビルドの場合 数分かかります ゆっくり待ちましょう 49
エラーがあると Blink_LED_Status_10K の左にエラーマークが表示されます また フォームの下部の Problems にはエラー内容が表示されます ファイル内容の表示画面のエラーの箇所にもエラーマークが 表示されます ビルドが OK になると それぞれのエラー表示はなくなります 50
9. デバッグ 9.1. デバッグの準備 tri-s CPU 基板に ST-LINK を接続し CPU 基板に電源を供給します 1) ST-Link/V2 と tri-s CPU 基板との接続の様子 2) ST-Link/V2 と tri-s CPU 基板との接続信号 ST-Link/V2 と tri-s CPU 基板のコネクタ P4 との接続信号を以下に示します ST-Link/V2 tri-s CPU 基板 線色 CN3-1 VAPP P4-1 VDD 橙 CN3-9 SWCLK P4-2 SWCLK PA14 緑 CN3-8 GND P4-3 GND 黒 CN3-7 SWDIO P4-4 SWDIO PA13 黄 CN3-15 NRST P4-5 NRST 青 51
9.2. デバッグ 虫のアイコンをクリックするとデバッグを開始します 初めて Debug のアイコン ( 虫のアイコン ) をクリックした場合 次のダイアログが表示されます 次ページに続く 52
Ac6 STM32 C/C++ Application を選択して [OK] ボタンをクリックします この例ではデバッグ情報をロード中のダイアログが表示されませんでしたが通常 次のようなダイアログが表示されます このメッセージが表示されたら [Yes] ボタンをクリックします 53
1) プログラムの実行 プログラムの開始位置が緑のマーカーで示されています 右向きの三角 [Resume] のアイコンをクリックするとプログラムを実行します 2) プログラム実行の中断 [Suspend] のアイコンをクリックするとプログラムの実行を中断します 54
この例では Blink_LED_Status.c 内の関数 Blink_LED_Status のなかで中断しました 次ページに続く 55
3) ブレークポイントの設定 Timer 割り込みのところにブレークポイントを設定してみます プログラム行の左側の行番号の左側をダブルクリックするとブレークポイントを設定できます また ブレークポイントを設定したい行をクリックして その行でカーソルが点滅している状態で メニューの {Run} {Toggle Line Breakpoint} をクリックしてもブレークポイントを設定できます ブレークポイントが設定されるとブレークポイントのマークが表示されます この状態で プログラムを実行すると次のようにブレークポイントのところでブレークします 56
ブレークポイントを設定した箇所でブレークしました 4) ブレークポイントの解除ブレークポイントのマークをダブルクリックするとブレークポイントを解除できます また ブレークポイントが設定されている行にカーソルを点滅させている状態でメニューの {Run} {Toggle Line Breakpoint} をダブルクリックすることによってもブレークポイントを解除できます 上記画面はブレークポイントを解除して 再びプログラムを実行している状態です 57
10. Ac6 System Workbench の終了 1) 実行の中断とデバッグの終了 [Suspend] のアイコンをクリックすると実行が中断されます この状態で [Terminate] のアイコンをクリックすると デバッグ状態を終了して次のようになります 2) エディット画面に戻る C/C++ のタブをクリックするとプログラム作成のエディットの画面に戻ります 58
3) Ac6 System Workbench の終了 [X] ボタンをクリックすると次のメッセージが表示されます [OK] ボタンをクリックすると Ac6 System Workbench が終了します 59
有限会社りばいぶ 電子工作のための 飛石伝い 改訂履歴 V002 2017/06/23 1) 誤記訂正 : 7. プログラムの開始番地を 0x08010000に設定する方法のユーザーが定義したパラメータを設定するためのエリアの番地を訂正 2) 番地割り当てについての説明を追加 V001 2016/06/01 初版 60