【デバッグライブラリの概要】
PICROSでリアルタイムマルチタスクシステムを開発する時のデバッグを手助けする
ためのツールライブラリです。
PICのUSARTを使って、パソコンとシリアルインターフェースで接続し、PC側の通信ソフト
を使って、データメモリのダンプ、変更、タスク起動、停止などの操作が出来ます。
PICのUSARTを使いますので、ハードウェアでUSARTのインターフェースを用意して
おく必要があります。
PIC16F87xシリーズとPIC18シリーズの両方に対応できます。
【デバッガの構成と機能】
デバッグは下図のような構成で行います。つまりパソコンとターゲットPICシステムを
シリアルインターフェースで接続し、PC側はハイパーターミナルなどの通信ソフトを
使います。
このデバッガで提供される機能は下記のようになっています。
種類 機能概要 コマンドフォーマット 機能内容 データメモリダンプ レジスタファイルの内容を
バンク単位で表示する。
dx↓
例 d0
d31バンクxの内容を表示する
16バイト8行の16進数で表示
PIC18シリーズの場合には31バンク
が存在するデータメモリ変更 指定したドレスのレジスタ
ファイルの内容を変更するcaaaa,xxx↓
例
c100,25
c0x1fc,0xbdaaaaで指定したアドレスのレジス
タファイルの内容をxxxに変更する。
10進数、16進数での表現可能
16進数の時は0xを付加する。
アドレスは全バンクを連続空間とし
て扱う(0〜1FF)タスク起動 指定したタスクをReadyに
するrxxx↓
例
r2
r10単純に強制的にReady状態にする。
メッセージ「Ready Task xxx」と表示タスク停止 指定したタスクを停止させる kxxx↓
例
k3
k11単純に強制的にタスクを停止状態に
する。
メッセージ「Kill Task xxx」と表示タスク待ち 指定したタスクをイベント
待ち状態にするwxxx↓
例
w4単純に強制的にタスクをイベント0
待ち状態にする。
解除はrxxxコマンドによるEERPOMダンプ
(PIC18には無い)EEPROMのデータを128バイト
単位で表示するex↓
例
e0
e1EEPROMの128バイトを表示する
16バイト8行の16進数で表示
xは0か1で前半128バイトか後半
128バイトの指定EEPROM変更
(PIC18には無い)EEPROMの指定されたアドレス
の内容を変更するmaaa,xxx↓
例
m100,33
m0xcd,0xbbaaaで指定されたアドレスのEEPROM
の内容をxxxに変更する。
10進数、16進数での表現可能
16進数の時は0xを付加する
アドレスは0〜FFまで
デバッグライブラリは、USART割込み処理部とデバッグタスクの2つのモジュールから
構成されています。
USART割込み処理部はCCSコンパイラの通常の割込み処理と全く同じで、USARTの
受信割込みで1文字を取り込みバッファに格納します。
そして受信したデータが改行コードの時に、入力コマンドの終了と判定して、デバッグ
タスクを起動します。
デバッグタスクは、優先順位0のタスクとなっていて、ユーザーコンフィギュレーション
でデバッグモードに設定されると、自動的にリンクされます。
【リンク方法】
デバッガの2つのモジュールはユーザーコンフィギュレーション(usrconf.h)で
デバッグモードを指定すると、自動的にリンクされますので、特にリンクに
気を使う必要はありません。
下記のファイルをダウンロードすると展開される2つのファイルをプロジェクトと
同じフォルダにコピーしておけば大丈夫です。
デバッグモードにするには、
#DEFINE DEBUG_MODE TRUE とします。
デバッグモードの解除には
#DEFINE DEBUG_MODE FALSE とします
★デバッガ関連モジュール(usart_isr.c と debug77.c)
【使い方】
PIC側はUSARTを使いますのでUSARTのピンにRS232Cインターフェース用の
ICを接続しておく必要があります。
パソコン側はハイパーターミナルを使います。そして通信モデムの設定で下記の
のようにします。
<ハイパーターミナルの設定>
COM : 通常はCOM2だがパソコン環境による
ビット/秒 : 19200
データビット : 8
パリティ : なし
ストップビット: 1
フロー制御 : なし
(1) データメモリの変更とダンプ
実際に表示された例は下記のようになります。
16進数で0x110番地のデータメモリを0xAAに変更したあとダンプ表示で
確認したところです。
アドレス0x110番地の内容が確かに0xAAに変更されています。
このようにアドレスは全バンクを連続空間として扱うので、PIC16F87xの
場合には、アドレス = 0〜0x1FF となります。
PIC18ファミリの場合には アドレス = 0〜0x1FF と 0xF80〜0xFFF と
なります。
(2) タスクの制御
実際にタスクの起動停止コマンドを実行した結果は下記のようになります。
(3) EEPROMメモリの変更とダンプ
上記の例は、タスク2を停止、タスク3を待ち状態にしています。
この後、両者をレディ状態に戻して再実行を開始させています。
PIC16F87xシリーズにあるEEPROMメモリのデータの変更とダンプ表示
の実行例です。
上記の例では、アドレス0xEO番地の内容を0xABに、0xE1番地の
内容を0xACに書き換え、その後ダンプして内容が更新されている
ことを確認しています。
上記のように、mでアドレスを指定しますが、この時のアドレスは
PICの種類により、アドレス = 0〜0x7F か 0〜0xFF となります。