2009年09月28日
exeGCCのVLINK機能
今日は弊社の製品であるexeGCCのVLINK(Virtual Link)機能について紹介します。
これはターゲットボードに弊社のPARTNER-Jetがつながっていれば、CPUとRAMしか動いていない状況でも使うことができます。
exeGCCのVLINKとは
弊社のJTAGデバッガ PARTNER-Jetと弊社のgccコンパイラ製品のexeGCCを連携して実現している機能です。
まずは、これで何ができるかを見ていきましょう。
#include <stdio.h> int main() { printf("Hello, world\n"); }
このプログラムはC言語の初歩でとても有名なもので、パソコン上では簡単にコンパイルして動かすことができます。
しかし、立ち上げたばかりのターゲットボードでこれを動かすためには、普通ならばまずシリアルなどのI/Oのデバイスドライバを動くようにする必要があります。その最初のデバイスドライバのデバッグでは「printfデバッグ」はできません。ベテランの方ならば造作もないことかもしれませんが、あまり慣れていない人では予想以上に時間がかかってしまうこともあります。
ターゲットボードにJTAGのケーブルしかつながっていない状態で、まだ何もデバイスドライバが動いていなくても、VLINKの機能を使うことで、このプログラムはPARTNER-Jetのコマンドウインドウに"Hello, world\n" を表示することができます。
しかもソースプログラムはこのまま変更する必要がありません。必要なのはexeGCCを使ってコンパイルするときに、ライブラリにVLINK機能付きのものを選択することと、PARTNER-Jetの設定でVLINKの機能を有効にすることだけです。
このプログラムをPARTNER-Jetでロードしてターゲット上で実行したときのスクリーンショットです。
VLINKでできること
exeGCCについているVLINK機能付きの標準Cライブラリでは、printfやputcで使う標準出力がJTAGケーブルを経由してPARTNER-Jetのコマンドウィンドウにつながっています。PARTNER-Jetではコマンドウィンドウへ出力された内容をログファイルに保存することもできます。
逆にコマンドウィンドウへのキー入力はターゲット上のプログラムからgetcなどの標準入力で拾うことができます。なので、これらを利用すると対話的なコンソールアプリケーションを動かすことができます。
さらに、ターゲット上のプログラムから
fp = fopen("c:\temp\log.txt", "w");
のようにPARTNER-Jetのつながっているパソコン上のファイルを直接オープンして読み書きすることができます。これによってターゲット上のメモリにとても置いておけないような大きなファイルも扱うことができるようになります。テストプログラムでは重宝すると思います。例えば、LCDの表示のテストプログラムではパソコン上に置いてあるビットマップ形式の画像ファイルをLCDデバイスに転送してみることができます。
まとめ
- exeGCCのVLINK機能は標準Cライブラリの入出力をJTAGを経由してパソコンに接続する。
- 標準入出力だけでなくファイルも扱える。
- ターゲットのデバッグの初期段階やテストプログラムの実行に便利。