3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

STM32CubeIDEでTOPPERS/ASPカーネルとHALドライバを同居 - 本編

Last updated at Posted at 2019-09-26

はじめに

準備編 (1)準備編 (2)の続きで、、、

ついにASPカーネルとHALドライバを同居させます!

(本編の)本編

1. 準備

1-1. リアルタイムアプリケーション側の変更

1-1-1. サンプルコード書き換え

RTApp(RTOSではないので注意!)プロジェクトのsample.cに、LED2を点滅させるコードを追加してやります。
以下のdiffを参考にしてください。

user@user-VirtualBox:~/workspace/STM32CubeIDE/RTApp/application$ diff sample1.c.org sample1.c
114a115,116
> /* HALを使用したいので */
> #include "main.h"
152a155,156
> /* タスク1ならトグル */
> if (tskno == 1) HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);

しかしあまりにも雑なので、以下にコードを置いておきました。
https://github.com/imagou/QiitaSource/tree/master/STM32CubeIDE_ASP_HAL

1-1-2. Makefileの書き換え

includeパスを追加してやる必要があります。
こちらも以下diffを参考、またgithubにも配置済み。

user@user-VirtualBox:~/workspace/STM32CubeIDE/RTApp/application$ diff Makefile Makefile.org
148d147
< CDEFS := $(CDEFS) -DSTM32L475xx
150d148
< INCLUDES := $(INCLUDES) -I../../STM32App/Inc -I../../STM32App/Drivers/STM32L4xx_HAL_Driver/Inc -I../../STM32App/Drivers/CMSIS/Device/ST/STM32L4xx/Include -I../../STM32App/Drivers/CMSIS/Include

1-2. STM32アプリケーション側の変更

main()に、ASPカーネルのスタートアップを追加します。
以下同文。

user@user-VirtualBox:~/workspace/STM32CubeIDE/STM32App/Src$ diff main.c.org main.c
72a73,74
> void hardware_init_hook(void);
> void sta_ker(void);
77a80,81
> void _kernel__start(void) {}
> void software_term_hook(void) {}
117a122,123
>   hardware_init_hook();
>   sta_ker();

また、タイマハンドラに、ASPカーネルのティック関数呼び出しを追加。
以下同文。

user@user-VirtualBox:~/workspace/STM32CubeIDE/STM32App/Src$ diff stm32l4xx_it.c.org stm32l4xx_it.c
49a50
> void target_timer_handler(void);
171a173
>   target_timer_handler();

2. ビルド

2-1. リアルタイムアプリケーションのビルド

コンパイルさえ通っていればOKです。
(たぶんワーニングは出ます)

2-2. STM32アプリケーションのビルド

こちらは問題なく成功するはず。

3. 動作確認

ASPカーネル動作、及び0.4秒おきにLED2が点滅することを確認してください。

4. 解説

sample1.cのdiff、及び実動作から一目瞭然ですが、HALドライバを用いてLEDをトグルさせているだけです!

おわりに

単純に、ASPカーネルのスタートアップ関数を呼ぶだけでOKでした。
すっきり。

残課題

3つもプロジェクトがあるのは鬱陶しいので、RTAppはSTM32Appに統合したほうがいい気もしていますが、今後の課題とします。

参考

(特になし)

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?