はじめに
こちらの記事の続き、準備編 (2) です。
本編
1. 準備
1-1. STM32プロジェクト追加
STM32CubeIDEから「STM32 project」を作成します。
- 「Project Name」は「STM32App」
- 他はデフォルトのまま
後は「Finish」押下。
以降も「Yes」押下でOKです。
1-2. 割り込み設定変更
ASPカーネルで(たぶん)ディスパッチ時に使用している、SVC割り込みのコード作成をやめます。
「STM32App.ioc」を開き、左側フレームから「Categories」 - 「System Core」 - 「NVIC」を選択。
次に右側フレームの「Code generation」タブより、「System service call via SWI instruction」行の「Generate IRQ handler」のチェックを外します。
保存後のコード生成も忘れずに!
1-3. ビルド設定変更
1-3-1. 浮動小数点リンケージの変更
STM32Appプロジェクトの上で右クリック - 「Properties」を開き、「C/C++ Build」 - 「Settings」を選択、更に「Tool Settings」タブを選択。
「MCU Settings」の「Floating-point ABI」を「Mix HW/SW Implementation (-mfloat-abi=softfp)」とします。
(ASPカーネルと設定値を合わせています)
1-3-2. ASPカーネルライブラリを取り込む
上記と同じく「Tool Settings」タブを選択。
「MCU GCC Linker」 - 「Libraries」の設定を以下とします。
- 「Libraries (-l)」に「kernel」を追加
- 「Library search path」に「"${workspace_loc:/RTOS}/asp/OBJ"」を追加
1-3-3. ASPカーネル・アプリケーションオブジェクトを取り込む
上記と同じく「Tool Settings」タブを選択。
「MCU GCC Linker」 - 「Miscellaneous」、「Additional object files」に以下の順で追加します。
- ${workspace_loc:/RTOS}/asp/OBJ/log_output.o
- ${workspace_loc:/RTOS}/asp/OBJ/vasyslog.o
- ${workspace_loc:/RTOS}/asp/OBJ/t_perror.o
- ${workspace_loc:/RTOS}/asp/OBJ/strerror.o
- ${workspace_loc:/RTOS}/asp/OBJ/target_inithook.o
- ${workspace_loc:/RTOS}/asp/OBJ/chip_serial.o
- ${workspace_loc:/RTOS}/asp/OBJ/banner.o
- ${workspace_loc:/RTOS}/asp/OBJ/syslog.o
- ${workspace_loc:/RTOS}/asp/OBJ/serial.o
- ${workspace_loc:/RTOS}/asp/OBJ/logtask.o
- ${workspace_loc:/RTApp}/application/sample1.o
- ${workspace_loc:/RTApp}/application/kernel_cfg.o
※手動でプロジェクトファイルを書き換えたほうがたぶん早い
2. ビルド確認
この段階でビルドが通り、STM32App.elfが生成されれば、設定は完了しています。
(略)
arm-none-eabi-size STM32App.elf
arm-none-eabi-objdump -h -S STM32App.elf > "STM32App.list"
text data bss dec hex filename
18432 20 3196 21648 5490 STM32App.elf
Finished building: default.size.stdout
Finished building: STM32App.list
(略)
3. 動作確認
この段階では単なる空のアプリケーションなので、ログも出なければLEDも点滅しませんが、
「ダウンロードでき、例外等が発生しない」
その程度は見たほうがいい(かも)です。
おわりに
次回以下記事で、いよいよHALドライバを使い、LEDを点滅させてみますさせました!
STM32CubeIDEでTOPPERS/ASPカーネルとHALドライバを同居 - 本編 - Qiita
https://qiita.com/imagou/items/f13ddfbccecafb8d3f1b
参考
(特になし)
![SnapCrab_Ubuntu [実行中] - Oracle VM VirtualBox_2019-10-21_13-45-44_No-00.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F447304%2F0a91c5d2-51b1-a00b-c989-95bf5ac84b77.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=9fcd46cbd3295f38358b98dd81ba553a)
![SnapCrab_Ubuntu [実行中] - Oracle VM VirtualBox_2019-10-21_13-51-16_No-00.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F447304%2Fe5fd3d44-b067-6e5c-4841-1e25da308ea9.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=78de32dbf26087179ce654405abdcb37)
![SnapCrab_Ubuntu [実行中] - Oracle VM VirtualBox_2019-10-9_11-46-56_No-00.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F447304%2F81f3bd86-f474-bb67-9dc6-7f6a9172fc9d.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=7419bfa729872b1dae96bf9a4c184e49)
![SnapCrab_Ubuntu [実行中] - Oracle VM VirtualBox_2019-10-21_13-55-28_No-00.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F447304%2Fa23fef84-0db9-10f0-88f1-688e6039f0a1.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=b2f6bde6f4eb7d7e57db2b2ba25e73b7)
![SnapCrab_Ubuntu [実行中] - Oracle VM VirtualBox_2019-10-21_13-59-20_No-00.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F447304%2F4170415a-5f69-a1ed-0803-2fdb2a786361.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=d95970c3b839fe0ece220ba7c4af09bd)
![SnapCrab_Ubuntu [実行中] - Oracle VM VirtualBox_2019-10-21_14-11-20_No-00.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F447304%2F63e91f1e-1f0d-7ffb-c89c-c52a5f22291e.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=9360a26c8025a5bfab7e6abdf967d1b9)