PICCで最初にプログラムを書いた際には、そのIDEであるHI-TIDEのメニューに、VisualStudioなどで見慣れたコンパイルやビルドのボタンやメニュー項目がなく、途方にくれてしまいました。しかしながら、調べてみると編集しているソースファイルを保存すると、自動的に依存関係を調べてコンパイル・リンクをやってくれることがわかりました。要するに、ファイルを保存すると、勝手にmakeしてくれるということです。
コンパイルが成功すると、HEXファイルが作成されると共に、左下のペインに表示されているフラッシュやSRAMの使用量などが更新され、選択しているチップの容量に対して、現状のプログラムサイズがどの程度であるかということが一目瞭然になっています。
また、コンパイルが失敗すると、下側のペインの[Problems]というタブにエラーやウォーニングのリストが表示されると共に、エディタのペインで、該当行が赤くハイライトされます。
HI-TIDEとPICkit 2プログラムライタを組み合わせて利用すると、とっても簡単に開発が行えます。PICkit 2no ライティングソフトには、[Auto Import Hex + Write Device]という機能があって、それを設定しておくと、プログラムを修正してHEXファイルが更新されると、自動的にターゲットのチップにプログラムのライティングを行わせることが出来ます。
PICCでは、プログラムのビルドと共に、他のシステム同様マップファイルが生成されます。マップファイルは、変数や関数、あるいはライブラリがどのアドレスにどのぐらい配置されているかということを具体的に確認するうえで重要なファイルではありますが、通常はあまり気にして見ていないというのも事実でしょう。しかしながら、PICのプログラムにとっては、非常に重要な情報がマップファイルに出力されているので、ちょくちょく確認しておくとよいでしょう。
マップファイルには、コールグラフという情報が出力されています。これは、C言語の関数の呼び出し関係と、その深さを示すものです。PICはハードウェアスタックを利用しており、さらには8レベルしか保持できないため、関数の呼び出し深さを常に確認し、8レベル以下に収まるようにしなければなりません。
PIC-PICO-2Sのプログラム例では、以下のようなコールグラフが出力されます。
これを見ると、ハードウェアスタックが最大で3レベルの使用に抑えられているため、問題なく実行できることがわかります。また、最大の深さの部分は、ソースファイルには明示的に記述されていないaldivという関数の呼び出しで生じていることもわかります。この関数は、割り算を行うためにCコンパイラが内部的に利用しているライブラリ関数です。このように、プログラムには明示的に記述されていない関数呼び出しが、Cコンパイラによって追加される可能性もあるので、ソースファイルの目視によるコールグラフの確認だけではなく、マップファイの確認が不可欠です。