スパイス  組み込み制御装置の受注製作

ライブラリの導入
平成26年10月16日

 MPLAB Harmonyの使い方(7) FreeRTOSの導入(2)
 MPLAB Harmony Configratorを使ってプロジェクトを作成した場合、Configratorの設定内容はFreeRTOSの設定ファイルであるFreeRTOSConfig.hにどの程度反映させるのかを試してみました。
結果は、全く反映されません。というかFreeRTOSConfig.hファイル自体作られません。
他のソースファイルにも特にFreeRTOSに関係した(初期化などの)コード追加は行われていないように見えます。

 これなら、プロジェクトの中にFreeRTOSのコードを含めるメリットは殆ど無いといってもいい。
自分でハードウェアの仕様をFreeRTOSConfig.hに反映させ、ライブラリを作った方が、その後のプロジェクトの管理が楽になります。


    MPLAB Harmony ConfigratorからFreeRTOSを外したプロジェクトを作成する
 こうすれば、プロジェクトのビルドに関する見通しが良くなります。
RTOSは完全にモジュール化されているので、ライブラリのAPIを介して使用する限り、そのソースコードを意識する必要性は限られます。
実際には、RTOSの中の使用する機能を追加・削除する時にはFreeRTOSConfig.hを書き換え再コンパイルする必要がありますが、そのような機会も限られます。
 これでプロジェクトに関連するファイルの数が減少し本来のプログラムに集中しやすくなります。

 基本的な雛形のプロジェクトを作って、それをMPLAB Harmony Configratorで修正しながら使えるようにします。
雛形のモデルは先に使用したbasic_freertos.Xプロジェクトを移植します。
プロジェクトは二つあり、一つはFreeRTOSのライブラリプロジェクト、もう一つは左記のライブラリをリンクして使用するアプリケーションプロジェクトです。
 まずはディレクトリ構成から。MPLAB Harmonyをインストールしたディレクトリ下にあるappsディレクトリにMPLAB Xの機能を使用してMPLAB Harmonyの新しいプロジェクトを作成します。名前はtest_rtosプロジェクトとします。
 今回使用するPIC32USBの仕様に合わせてConfigBitsの設定も変更します。
(プライマリ発信器が16MHzになっているので、それに関連した設定を変更します)
MPLAB Harmony機能で使用しているのは割り込み機能とデバイスコントロール機能(ROMへのウエイト数の設定などで使用)です。
設定周波数は、元の基板に習って80MHzと40MHzにします。



なお、実験基板の仕様を示すBSP Configrationは使用しません。自作の基板仕様をこのプログラムに追加するのは面倒なので、
アプリケーションの一部として追加するようにします。
この設定後、"Generate"キーを押して、2回ほど確認を済ませるとプロジェクトが作成されます。


    FreeRTOSライブラリを作成する。
 使用するディレクトリは、/apps/test_rtos/に仮にFreeRTOSとしてプロジェクトを作ります。今度はライブラリプロジェクトです。
FreeRTOSの関連するインクルードファイルとソースファイルの全てをプロジェクトに追加します。設定ファイルであるFreeRTOSConfig.hだけは/apps/test_rtos/firmware/sec/に置くことにします。


 このようにして、作成したプロジェクトをダウンロードできるようにしておきます。/apps/test_rtos/となるように解凍してください。
動作確認はLEDの出力信号で確認してあります。
  2014-10-16-test_rtos.zip へのリンク

    使用上の注意  MPLAB Harmony Configratorを使って設定を変更すると、人手でリンクに追加したライブラリは登録から削除されます。
FreeRTOSのライブラリを再びリンク用ライブラリに追加が必要です。  実験基板の初期化などをappsの中に移動したため、グローバル割り込み許可とAPPの初期化関数の実行順序を入れ替える必要があります。再設定するとその変更部分が確認画面として表示されます。この部分は、そのまま変更せずに処理してください。


    MPLAB Harmony Configratorのメリット・デメリット
 確かにMPLAB Harmony Configratorを使うことで標準仕様のライブラリなら簡単にセットアップできるメリットはあります。
が、そのメリットは主にCPUの周辺機能の使用に限られるようです。
今回のようにサードパーティ製のツールを使うなら、最初からライブラリ化してリンクした方が扱いやすいと感じます。


目次へ  前へ  次へ