STM32でNUTTXを使ってみる

Task Synchronization Interfaces


Task Control Interfaces Task Scheduling Interfacesに続いて、Task Synchronization Interfacesを紹介します。
Task Synchronization Interfacesではタスクの待ち合わせを行うことができます。

この動作を確認するためのサンプルアプリを公開しています。
こちらの手順でapps/examplesディレクトリに追加してくださ い。
以下の手順でサンプルアプリをファームに組み込みます。
$ make clean
$ make menuconfig

Application Configuration > Examples で以下のアプリを追加してください。


新規アプリを追加したらひたすらExitで抜けます。
最後に以下の画面で[.config]を上書きします。


新しい[.config]を使ってファームウェアをビルドし、新しいファームウェアをマイコンに書き込みます。
nshに接続するとtask_test4アプリが追加されています。




test1の引数で実行すると、myTask1とmyTask2のタスクを並列で実行します。
task_test4はこれらの終了を待たずに終了します。
nsh> task_test4 test1
task_create name:myTask1 priority:100
task_create name:myTask2 priority:100
task_test4 Finish
myTask1 start PID:7 loop:50000000 wait:0 system_timer:1656
myTask2 start PID:9 loop:50000000 wait:0 system_timer:1676
nsh> myTask1 end PID:7 system_timer:2185
myTask2 end PID:9 system_timer:2194



test2の引数で実行すると、myTask1の終了を待って、myTask2を起動します。
myTask1とmyTask2の終了コードを取得することができます。
タスクを関数の様に扱うことができます。
task_test4はこれらの終了を待ちます。
nsh> task_test4 test2
task_create name:myTask1 priority:100
myTask1 start PID:12 loop:50000000 wait:0 system_timer:4303
myTask1 end PID:12 system_timer:4572
myTask1 exit code=0
task_create name:myTask2 priority:100
myTask2 start PID:13 loop:50000000 wait:0 system_timer:4573
myTask2 end PID:13 system_timer:4841
myTask2 exit code=0
task_test4 Finish
nsh>



APIの使い方に間違いがあるかもしれません。
こ ちらのドキュメントで確認してください。

ファームの書き込み方法と、nshへの接続方法はこちらに紹介しています。
STM32F4 Discovery
STM32F3 Discovery
STM32F103RB Nucleo
STM32F103 BluePill/BlackPill
STM32F103 VEボード
STM32F407 VGボード

続く...