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

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

 MPLAB Harmonyの使い方(5) 割り込み機能の設定内容検証
 前回の検証で割り込み機能ライブラリによるプログラムの動作検証が出来ました。
基本的には、下記のコードさえ書いておけばいいようです(ISRはタイマ1の例)。
 なお、下のリストは非常に極端な前提で記述してあります。実際のmain()関数と同じではありません。あくまでも実行順序が同じになっている程度の同一性です。実際のプログラムリストでは複数の関数に分散して処理されています。
int main(void)
{
    <省略>     SYS_INT_Initialize();     <ハードウェアの初期化>     SYS_INT_Enable();
    <省略> }
void __ISR(_TIMER_1_VECTOR, ipl1) _IntHandlerDrvTmrInstance0(void) {     <省略> }
初期化部でSYS_INT_Initialize()を呼び出した後、ハードウェアの初期化完了を待ってグローバル割り込み許可SYS_INT_Enable()を実行するだけです。

 しかし、PIC32デバイスデータシートを見るとPIC32の割り込み処理には複数の選択肢があり、多くのレジスタ設定が必要です。
実際には、どの選択肢で動作していて、どこでレジスタの設定をしているんだろうか?

 このような考え方はひょっとすると「良くない考え方」なのかもしれません。
というのは、このような煩雑になりがちな処理内容に気をとられること無く、本来の仕事であるアプリケーションの設計に集中させるためにライブラリが作られているという見方もあるためです。

    少し脱線します
 他人が作ってくれたライブラリを使うなら正しく動作している内は詳細には踏み込まないという姿勢が必要かもしれません。
もしそうだとしても、もう少しだけでも文書(Helpファイル)に注力して欲しい気がします。文書を書く側の立場になればとんでもなく大変なのは分かっている上で、それでも文書の内容が不十分では結果として使う側もプログラムリストを最初から追跡することになります。
ゼロからコードを起こすよりははるかにマシですが、それでも相当な負担増です。
無料で配布されているツールである以上、あまり多くは望むべきではないのですが、メーカー以外からでも日本語での翻訳文書を期待したくなります。


 後は各自の考え方と前提となる知識の主体が何処にあるかで決まります。
プログラム主体でやっていくなら、ハードウェアに関することは出来るだけ省略して進めればいい。
反対に基板設計やごく初期のハードウェアの動作検証までを行うなら、ライブラリの内部で行われている処理について多少の知識は必要です。
 ここでは後で苦労しないために、先にハードウェアに近い部分まで見ておきます。

 PIC32の割り込み機能は下記のようになっています。
PIC32の日本語マニュアルには下記のほかにもっと多くの機能が記載されていますが、PIC32MXシリーズの中では最上位であるPIC32MX795F512Lでも下記の機能までが搭載されているようです。
日本語資料の原文が作成された後に何かの不都合が見つかって本来の機能の一部が削除されたのかもしれません。  優先度の指定に関してはMPLAB Harmony Configratorで設定しています。
それ以外の処理は何処で行われているのかを見ていきます。
まず、ベクタ方式の選択では無条件にマルチベクタ方式が選択されます。実際の処理はSYS_INT_Initialize()関数で行っています。
残り二つの処理は共にCのスタートアップルーチンcrto.s内で行われています。
設定値はリンカスクリプトに記述があります。スクリプトの場所は<コンパイラディレクトリ>\pic32-libs\proc\<デバイス名>です。
割り込みベクタの先頭アドレスはデバイスによって異なるようです。ベクタの間隔は'1'(32バイト)が設定されています。ベクタ自体は4バイト長ですので随分と無駄の多い設定です。とはいえベクタ間隔の最小バウンダリが32バイトなのでどうしようもないのですが。

 PIC32では特にRAMの使用量が多いのが気になっていました。こんな単純なプログラムでさえ10kB近いRAMを消費しています。実際にはデバッガ用のワークも含んでいるのですが、それにしても多いなあと感じていました。それ以外にも、このような部分で大量にメモリが消費されていることが分かりました。ベクタ領域だけで4kBものRAMが必要です。

 このようなハード寄りの検証はそれなりに時間が掛かります。
それを嫌ってソフトウェア主体のOS管理下でプログラムを書くという選択肢もあって良い。
ただし、基板生産を含めた生産メーカーではどうしても生産ラインにおけるハードウェアの検証が必要になるので、このような泥臭い作業も必要です。

目次へ  前へ  次へ