JP2004234497A - リモートデバッグ装置 - Google Patents
リモートデバッグ装置 Download PDFInfo
- Publication number
- JP2004234497A JP2004234497A JP2003024298A JP2003024298A JP2004234497A JP 2004234497 A JP2004234497 A JP 2004234497A JP 2003024298 A JP2003024298 A JP 2003024298A JP 2003024298 A JP2003024298 A JP 2003024298A JP 2004234497 A JP2004234497 A JP 2004234497A
- Authority
- JP
- Japan
- Prior art keywords
- task
- time
- debug
- real
- remote debugging
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【目的】組み込み機器内の開発対象プログラムの動作を制御する一般的なリモートデバッガにおいて、組み込み機器内にデバッグ環境を持たない任意のリアルタイムOSを搭載しても、リアルタイムOS上で動作する各タスクの状態等の情報を獲得することを可能にするリモートデバッグ装置を提供すること。
【構成】リモートデバッグ装置に係り、開発ホストと接続されたリアルタイムOS搭載のデバッグ対象機器内において、リモートデバッグのために組み込まれたモニタから、ステップ実行完了時、又はユーザ操作によるデバッグストップ時、又はプログラム実行中予め設定してあるブレイクポイントに到達したブレイク時に起動される例外処理ルーチンに、リアルタイムOSで管理している各タスク情報を開発ホストへ通知する機構をリモートデバッグ装置に付加する。
【選択図】 図1
【構成】リモートデバッグ装置に係り、開発ホストと接続されたリアルタイムOS搭載のデバッグ対象機器内において、リモートデバッグのために組み込まれたモニタから、ステップ実行完了時、又はユーザ操作によるデバッグストップ時、又はプログラム実行中予め設定してあるブレイクポイントに到達したブレイク時に起動される例外処理ルーチンに、リアルタイムOSで管理している各タスク情報を開発ホストへ通知する機構をリモートデバッグ装置に付加する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、組み込み機器を開発するために、組み込み機器内にモニタを搭載し、開発ホスト上でこのモニタと通信しながら、組み込み機器内の開発対象プログラムの動作を制御する一般的なリモートデバッガにおいて、組み込み機器内にデバッグ環境を持たない任意のリアルタイムOSを搭載しても、リアルタイムOS上で動作する各タスクの状態等の情報を獲得することを可能にするリモートデバッグ装置に関するものである。
【0002】
【従来の技術】
従来、一般的なリモートデバッガは、開発対象となる組み込み機器内にモニタを搭載し、開発ホスト上のデバッガがこのモニタと通信しながら、組み込み機器内のRAMエリアに開発対象のプログラムをダウンロードし、開発ホスト上のデバッガからユーザ操作により、組み込み機器内のモニタを介し、ダウンロードされたプログラムの実行、停止、ステップ実行、ブレイクポイントの設定、ブレイクポイント到達による停止を実現することで、プログラムをデバッグしていた。
【0003】
デバッグ効率を上げるため様々なデバッグ方法が提案されている。例えば、通常開発ホスト上のデバッガからのユーザ操作によるコマンド実行は、組み込み機器内にダウンロードされたプログラムが停止している状態の時のみ可能であった。デバッグの利便性を上げるために、プログラムを停止させずに、開発ホスト上のデバッガからのユーザ操作によるコマンド実行を可能にする方法が提案されている(特開平9−259004号公報参照)。
【0004】
又、組み込み機器内にマルチタスクOS(リアルタイムOS)を搭載した環境において、タスク間でやり取りされるデータの内容やタイミングを確認できる方法も提案されている(特開平5−204664号公報参照)。
【0005】
【発明が解決しようとする課題】
しかしながら、上記の方法では、以下のような問題点があった。
【0006】
a)プログラムを停止させずに、開発ホスト上のデバッガからのユーザ操作によるコマンド実行を可能にする方法(特開平9−259004号)では、リアルタイムOSを搭載したマルチタスク環境のデバッグが考慮されていない。
【0007】
b)組み込み機器内にマルチタスクOS(リアルタイムOS)を搭載した環境において、タスク間でやり取りされるデータの内容やタイミングを確認できる方法(特開平5−204664号)では、既存のリモートデバッガ(開発ホスト上のデバッガ+組み込み機器内に搭載されたモニタ)を使用して上記リアルタイムOSに対応したデバッグ機能を実現することが考慮されていない。
【0008】
本発明の目的は、組み込み機器を開発するために組み込み機器内にモニタを搭載し、開発ホスト上でこのモニタと通信しながら、組み込み機器内の開発対象プログラムの動作を制御する一般的なリモートデバッガにおいて、組み込み機器内にデバッグ環境を持たない任意のリアルタイムOSを搭載しても、リアルタイムOS上で動作する各タスクの状態等の情報を獲得することを可能にするリモートデバッグ装置を提供することである。
【0009】
【課題を解決するための手段】
上記目的を達成するため、本発明は、リモートデバッグ装置に係り、開発ホストと接続されたリアルタイムOS搭載のデバッグ対象機器内において、リモートデバッグのために組み込まれたモニタから、ステップ実行完了時、又はユーザ操作によるデバッグストップ時、又はプログラム実行中予め設定してあるブレイクポイントに到達したブレイク時に起動される例外処理ルーチンに、リアルタイムOSで管理している各タスク情報を開発ホストへ通知する機構をリモートデバッグ装置に付加したことを特徴とする。
【0010】
【発明の実施の形態】
以下に本発明の実施の形態を添付図面に基づいて説明する。
【0011】
<実施の形態1>
本発明の実施の形態1では、請求項1及び2に対応して、課題a及び課題bを解決するための手段の実現方法について説明する。
【0012】
図1において、ROM220には、モニタ410及びリモートデバッグ装置430が存在している。CPU210にリセットが掛かると、モニタ410が起動され、通信デバイス220を介して開発ホストマシン600のデバッガ610とデバッグのための通信の初期化が行われる。デバッガ610に対するユーザ操作(ダウンロードボタン670のマウス690によるクリック)により、RAM300にリアルタイムOS350及びタスク1(310)及びタスク2(320)及びタスク3(330)及びタスク4(340)のプログラムコードが、開発ホストマシン600のハードディスク680からダウンロードされる。
【0013】
ダウンロード後、デバッガ610に対するユーザ操作で、実行ボタン640をマウス690によってクリックすると、リアルタイムOS350の初期化が開始され、リアルタイムOSタスク情報360を初期化し、タスク1(310)及びタスク2(320)及びタスク3(330)及びタスク4(340)が実行される。
【0014】
デバッガ610に対するユーザ操作で、実行ボタン640をマウス690によってクリックした後、ストップボタン660をマウス690によってクリックすると、モニタ410からデバッグストップ例外処理機構450が起動され、ストップされた時点のソースコード及び行番号(621 )をデバッグソースコードウィンドウ620に表示する。更に、デバッグストップ例外処理機構450は、タスク情報通知機構470をコールし、リアルタイムOSタスク情報360を読み取り、デバッグコンソール出力機構420に出力を依頼する。デバッグコンソール出力機構420は、デバッグコンソールウィンドウ630にリアルタイムOSタスク情報を表示する。
【0015】
デバッガに対するユーザ操作で、ステップ実行ボタン650をマウス690によってクリックすると、モニタ410からステップ実行完了例外処理機構440が起動され、ステップ実行が完了された時点のソースコード及び行番号(621 )をデバッグソースコードウィンドウ620に表示する。更に、ステップ実行完了例外処理機構440は、タスク情報通知機構470をコールし、リアルタイムOSタスク情報360を読み取り、デバッグコンソール出力機構420に出力を依頼する。デバッグコンソール出力機構420は、デバッグコンソールウィンドウ630にリアルタイムOSタスク情報を表示する。
【0016】
デバッグソースコードウィンドウ620に表示されているソースコードの行番号(621 )をマウス690によってクリックすると、その行にブレイクポイントが設定される。その後、デバッガ610に対するユーザ操作で、実行ボタン640をマウス690によってクリックした後、指定されたブレイクポイントに到達すると、モニタ410からブレイクポイント到達例外処理機構460が起動され、ブレイクポイントが設定された前後のソースコード及び行番号(621 )をデバッグソースコードウィンドウ620に表示する。
【0017】
更に、ブレイクポイント到達例外処理機構460は、タスク情報通知機構470をコールし、リアルタイムOSタスク情報360を読み取り、デバッグコンソール出力機構420に出力を依頼する。デバッグコンソール出力機構420は、デバッグコンソールウィンドウ630にリアルタイムOSタスク情報を表示する。
【0018】
以上の結果、リアルタイムOS360を搭載したマルチタスク環境のデバッグが可能となる(課題aの解決)。又、既存のリモートデバッガ(開発ホスト上のデバッガ610+組み込み機器内に搭載されたモニタ420)を使用してリアルタイムOS360に対応したデバッグ機能を実現することが可能となる(課題bの解決)。
【0019】
以下、本発明の実施の形態1を図面に基づいて詳細に説明する。
【0020】
図2は図1中のリアルタイムOSタスク情報360を示す図である。リアルタイムOSタスク情報360は、リアルタイムOS350の初期化時に初期化される。以降、リアルタイムOS350は、リアルタイムOSタスク情報360を参照し、タスク1(310)及びタスク2(320)及びタスク3(330)及びタスク4(340)をマルチタスクで実行するためのスケジューリングに使用する。
【0021】
リアルタイムOSタスク情報360は、先頭TCB ポインタ361から情報を辿れるリスト構造になっている。TCB[0]362 に含まれる次のTCB へのポインタ372をTCB[1]373と辿って行くと、システム上に存在する全タスクの情報を参照できる。終端では、次のTCB へのポインタ361がNULL374を指し示す。
【0022】
各タスクのTCB (タスクコントロールブロック)内には、以下の情報が含まれている。タスクID(TID )363は、タスクの識別子である。タスク状態(STAT)364は、タスクの状態を示す。タスクの状態遷移は図3で示す。
【0023】
タスク状態(STAT)364には、強制中断(0x01)、セマフォ待ち(0x02)、イベント待ち(0x04)、メッセージ待ち(0x08)、時間待ち又はタイムアウト待ち(0x10)、実行待(0x20)382の状態がある。タイマ待ち時間(DTIME )365は、時間待ち又はタイムアウト待ちのタスクの待ち時間を示す。タスク優先順位(PRI )366は、タスクの実行優先順位を示す。実行待382状態のタスクが複数ある時、タスク優先順位366の高い(本実施の形態では値の大きい)タスクがCPU210を占有し実行383状態に遷移する。
【0024】
タスクプログラムカウンタ値(PC)367は、該当タスクが実行状態383から中断状態384に遷移した際に、CPU210のPCレジスタの値を退避したものである。タスクプログラムカウンタ値(PC)367は、次に実行状態383に遷移する際にCPU210のPCレジスタに復帰され、該当タスクの実行が再開される。タスクスタックポインタ値(SP)368は、該当タスクが実行状態383から中断状態384に遷移した際に、CPU210のSPレジスタの値を退避したものである。タスクスタックポインタ値(SP)368は、次に実行状態383に遷移する際にCPU210のSPレジスタに復帰され、該当タスクの実行が再開される。
【0025】
待ち行列の前方TCB ポインタ(TO_OLD)369は、該当タスクが中断状態384に遷移し、強制中断(0x01)、セマフォ待ち(0x02)、イベント待ち(0x04)、メッセージ待ち(0x08)、時間待ち又はタイムアウト待ち(0x10)の何れかの待ち行列に該当TCB が加わっている際、該当TCB より以前にその待ち行列に繋がれたタスクが存在すれば、そのTCB へのポインタを示す。待ち行列の後方TCBポインタ(TO_NEW)370は、該当タスクが中断状態384に遷移し、強制中断(0x01)、セマフォ待ち(0x02)、イベント待ち(0x04)、メッセージ待ち(0x08)、時間待ち又はタイムアウト待ち(0x10)の何れかの待ち行列に該当TCB が加わっている際、該当TCB より以降にその待ち行列に繋がれたタスクが存在すれば、そのTCB へのポインタを示す。待ち管理ブロック(CB_PTR)371は、強制中断(0x01)、セマフォ待ち(0x02)、イベント待ち(0x04)、メッセージ待ち(0x08)の各待ち行列を管理するブロックのアドレスを示す。
【0026】
図3はタスクの状態遷移を示す図である。
【0027】
タスクは、初期状態380、実行待状態(READY) 382、実行状態(EXECUTE) 383、中断状態(SUSPEND) 384の状態を取り得る。それぞれの間の遷移は、初期化処理381、中断処理385又は387、中断解除処理386の起動によって発生する。タスクの状態は各タスク毎にタスク状態(STAT)364に保持される。但し、実行状態(EXECUTE) 383という状態は保持されず、実行待(0x20)382状態のタスクが複数ある場合、その中でタスク優先順位(PRI )366が最高のタスクが実行状態(EXECUTE) 383を表す。
【0028】
初期状態380は、リアルタイムOSタスク情報360が初期化された直後の立ち上がり時の状態である。
【0029】
実行状態(EXECUTE) 383は、タスクがCPU210を占有し実行している状態でタスク優先順位(PRI )366が最高で最も早く実行待状態(READY) 382に遷移している1タスクのみがなり得る。
【0030】
実行待状態(READY) 382は、実行可能であるが優先順位等の関係で他のタスクがCPUを占有しているためこれが空くのを待っている状態である。
【0031】
中断状態(SUSPEND) 384は、他のタスクやI/O240等からのイベント待ちの状態で、この状態の間はCPUが空いても実行されることはない。中断状態(SUSPEND) 384の要因は、タスク状態(STAT)364に保持され、強制中断(0x01)、セマフォ待ち(0x02)、イベント待ち(0x04)、メッセージ待ち(0x08)、時間待ち又はタイムアウト待ち(0x10)の種類がある。
【0032】
図4はタスク情報通知機構470を示す流れ図である。
【0033】
最初に、デバッグコンソール出力機構420を起動し、図5に示す項目631を出力する(ステップ471)。項目631は、リアルタイムOSタスク情報360に含まれる情報に対応する。デバッグコンソール出力機構は420、一般的なリモートデバッガがサポートしている組み込み機器(ターゲット)側からの標準出力を開発ホスト側の標準出力ウィンドウに出力する機構である(シミュレーテッドI/Oとも言う)。デバッグコンソール出力機構は420、通信デバイス220を介し、出力要求を開発ホストマシン600上のデバッガ610が解釈できるコマンド形式に含めるように変換する。デバッガ610は、受け付けたコマンド形式を解釈し、コマンドに含まれる出力要求内容をデバッガ600上のデバッグコンソールウィンドウ630にそのまま出力する。
【0034】
次に、変数TCB に先頭TCB ポインタ361を代入する(ステップ472)。次に、変数TCB がNULLであるか判断する(ステップ473)。変数TCB がNULLと等しかった場合、処理を終了する。変数TCB がNULLと等しくなかった場合、変数TCB がNULLになるまで、以下の処理を繰り返す(ステップ472)。
【0035】
デバッグコンソール出力機構420を起動し、変数TCB 及びタブを出力する(ステップ475)。次に、デバッグコンソール出力機構420を起動し、変数TCB−> タスクID363 及びタブを出力する(ステップ476)。次に、デバッグコンソール出力機構420を起動し、変数TCB−> タスク状態364及びタブを出力する(ステップ477)。次に、デバッグコンソール出力機構420を起動し、変数TCB−> タイマ待ち時間365及びタブを出力する(ステップ478)。
【0036】
次に、デバッグコンソール出力機構420を起動し、変数TCB−> タスク優先順位366及びタブを出力する(ステップ479)。次に、デバッグコンソール出力機構420を起動し、変数TCB−> タスクプログラムカウンタ値367及びタブを出力する(ステップ480)。次に、デバッグコンソール出力機構420を起動し、変数TCB−> タスクスタックポインタ値及びタブを出力する(ステップ481)。
【0037】
次に、デバッグコンソール出力機構420を起動し、変数TCB−> 待ち行列の前方TCB ポインタ369及びタブを出力する(ステップ482)。次に、デバッグコンソール出力機構420を起動し、変数TCB−> 待ち行列の後方TCB ポインタ370及びタブを出力する(ステップ483)。次に、デバッグコンソール出力機構420を起動し、変数TCB−> 待ち管理ブロック371及びタブを出力する(ステップ484)。最後に、変数TCB に変数TCB−> 次のTCB へのポインタ372を代入する(ステップ485)。
【0038】
図5はデバッグコンソールウィンドウ630を示す図である。
【0039】
例えば、最初の行は、TCB_ADDRが20120 、TID が1、STATが0x20なので実行待状態を表し、DTIME が0、PRI が0なのでタスク優先順位は最低を表し、PCが31DA、SPが21364 、TO_OLD及びTO_NEWが0 、CB_PTRが0というようにタスクの情報を読み取ることができる。STATが0x20のタスクが他に存在しないので、このタスクはCPU210を占有し実行状態383であることが分かる。
【0040】
又、5行目は、TCB_ADDRが20320 、TID が5、STATが0x08なのでメッセージ待ちの中断状態384を表し、DTIME が0、PRI が3なので0よりは高いタスク優先順位を表し、PCが2522、SPが2338A である。更に、TO_OLDが202A0 、T_NEW が203A0 、CB_PTRが207C0 なのでメッセージ待ちの管理ブロックを表す。TID が4のタスクとTID が6のタスクも同様にCB_PTRが207C0 なので同じメッセージ待ちの管理ブロックを使用していることになり、同じメッセージを待っていることを表す。待ち順は、TO_OLDとTO_NEWを参照することにより、TID4−TID5−TID6であることが分かる。
【0041】
<実施の形態2>
本発明の実施の形態2では、請求項3に対応した実現方法について説明する。
【0042】
実施の形態2では、実施の形態1の方法を用いて、タスク情報通知機構470からの通知をデバッグコンソール出力機構420を介し、デバッグコンソールウィンドウ630に表示した後、デバッガ610の機能を使用し、デバッグコンソールウィンドウ630に表示された各タスクの情報をハードディスク680にファイルとして保存する。デバッガ610に保存機能がない場合は、通常、開発ホストマシン上に搭載されているOS(ウィンドウシステム)の機能を使用し、デバッグコンソールウィンドウ630の内容のスクリーンダンプ等を取ってハードディスク680に保存することが可能である。
【0043】
以上の機構を設けることで、デバッグ時のログが残り、より効率的なマルチタスクデバッグが可能となる。
【0044】
【発明の効果】
以上の説明で明らかなように、本発明によれば、リアルタイムOSを搭載したマルチタスク環境のデバッグが可能となる。これにより、マルチタスクプログラムのデバッグの効率を向上させ製品開発期間が短縮される。
【0045】
又、既存のリモートデバッガ(開発ホスト上のデバッガ+組み込み機器内に搭載されたモニタ)を使用してリアルタイムOSに対応したデバッグ機能を実現することが可能となる。これにより、本発明を実装するために、専用のハードウェアを新規に開発する必要はなく、既存のリモートデバッッガにおける組み込み機器内のモニタに簡単に組込むことが可能であるので、既存システムであっても低コストで開発効率を向上させることができる。
【図面の簡単な説明】
【図1】本発明の実施の形態1を示す構成図である。
【図2】図1中のリアルタイムOSタスク情報を示す図である。
【図3】図2中のタスク状態の状態遷移を示す図である。
【図4】図1中のタスク情報通知機構を示す図である。
【図5】図1中のデバッグコンソールウィンドウの外観を示す図である。
【符号の説明】
100 組込機器
200 CPUバス
210 CPU
220 通信デバイス
300 RAM
310 タスク1
320 タスク2
330 タスク3
340 タスク4
350 リアルタイムOS
360 リアルタイムOSタスク情報
400 ROM
410 モニタ
420 デバッグコンソール出力機構
430 リモートデバッグ装置
440 ステップ実行完了例外処理機構
450 デバッグストップ例外処理機構
460 ブレイクポイント到達例外処理機構
470 タスク情報通知機構
500 RS232C又はイーサネット等
600 開発ホストマシン
610 デバッガ
620 デバッグソースコードウィンドウ
621 行番号
630 デバッグコンソールウィンドウ
640 デバッグ実行ボタン
650 ステップ実行ボタン
660 デバッグストップボタン
670 ダウンロードボタン
680 ハードディスク
660 マウス
【発明の属する技術分野】
本発明は、組み込み機器を開発するために、組み込み機器内にモニタを搭載し、開発ホスト上でこのモニタと通信しながら、組み込み機器内の開発対象プログラムの動作を制御する一般的なリモートデバッガにおいて、組み込み機器内にデバッグ環境を持たない任意のリアルタイムOSを搭載しても、リアルタイムOS上で動作する各タスクの状態等の情報を獲得することを可能にするリモートデバッグ装置に関するものである。
【0002】
【従来の技術】
従来、一般的なリモートデバッガは、開発対象となる組み込み機器内にモニタを搭載し、開発ホスト上のデバッガがこのモニタと通信しながら、組み込み機器内のRAMエリアに開発対象のプログラムをダウンロードし、開発ホスト上のデバッガからユーザ操作により、組み込み機器内のモニタを介し、ダウンロードされたプログラムの実行、停止、ステップ実行、ブレイクポイントの設定、ブレイクポイント到達による停止を実現することで、プログラムをデバッグしていた。
【0003】
デバッグ効率を上げるため様々なデバッグ方法が提案されている。例えば、通常開発ホスト上のデバッガからのユーザ操作によるコマンド実行は、組み込み機器内にダウンロードされたプログラムが停止している状態の時のみ可能であった。デバッグの利便性を上げるために、プログラムを停止させずに、開発ホスト上のデバッガからのユーザ操作によるコマンド実行を可能にする方法が提案されている(特開平9−259004号公報参照)。
【0004】
又、組み込み機器内にマルチタスクOS(リアルタイムOS)を搭載した環境において、タスク間でやり取りされるデータの内容やタイミングを確認できる方法も提案されている(特開平5−204664号公報参照)。
【0005】
【発明が解決しようとする課題】
しかしながら、上記の方法では、以下のような問題点があった。
【0006】
a)プログラムを停止させずに、開発ホスト上のデバッガからのユーザ操作によるコマンド実行を可能にする方法(特開平9−259004号)では、リアルタイムOSを搭載したマルチタスク環境のデバッグが考慮されていない。
【0007】
b)組み込み機器内にマルチタスクOS(リアルタイムOS)を搭載した環境において、タスク間でやり取りされるデータの内容やタイミングを確認できる方法(特開平5−204664号)では、既存のリモートデバッガ(開発ホスト上のデバッガ+組み込み機器内に搭載されたモニタ)を使用して上記リアルタイムOSに対応したデバッグ機能を実現することが考慮されていない。
【0008】
本発明の目的は、組み込み機器を開発するために組み込み機器内にモニタを搭載し、開発ホスト上でこのモニタと通信しながら、組み込み機器内の開発対象プログラムの動作を制御する一般的なリモートデバッガにおいて、組み込み機器内にデバッグ環境を持たない任意のリアルタイムOSを搭載しても、リアルタイムOS上で動作する各タスクの状態等の情報を獲得することを可能にするリモートデバッグ装置を提供することである。
【0009】
【課題を解決するための手段】
上記目的を達成するため、本発明は、リモートデバッグ装置に係り、開発ホストと接続されたリアルタイムOS搭載のデバッグ対象機器内において、リモートデバッグのために組み込まれたモニタから、ステップ実行完了時、又はユーザ操作によるデバッグストップ時、又はプログラム実行中予め設定してあるブレイクポイントに到達したブレイク時に起動される例外処理ルーチンに、リアルタイムOSで管理している各タスク情報を開発ホストへ通知する機構をリモートデバッグ装置に付加したことを特徴とする。
【0010】
【発明の実施の形態】
以下に本発明の実施の形態を添付図面に基づいて説明する。
【0011】
<実施の形態1>
本発明の実施の形態1では、請求項1及び2に対応して、課題a及び課題bを解決するための手段の実現方法について説明する。
【0012】
図1において、ROM220には、モニタ410及びリモートデバッグ装置430が存在している。CPU210にリセットが掛かると、モニタ410が起動され、通信デバイス220を介して開発ホストマシン600のデバッガ610とデバッグのための通信の初期化が行われる。デバッガ610に対するユーザ操作(ダウンロードボタン670のマウス690によるクリック)により、RAM300にリアルタイムOS350及びタスク1(310)及びタスク2(320)及びタスク3(330)及びタスク4(340)のプログラムコードが、開発ホストマシン600のハードディスク680からダウンロードされる。
【0013】
ダウンロード後、デバッガ610に対するユーザ操作で、実行ボタン640をマウス690によってクリックすると、リアルタイムOS350の初期化が開始され、リアルタイムOSタスク情報360を初期化し、タスク1(310)及びタスク2(320)及びタスク3(330)及びタスク4(340)が実行される。
【0014】
デバッガ610に対するユーザ操作で、実行ボタン640をマウス690によってクリックした後、ストップボタン660をマウス690によってクリックすると、モニタ410からデバッグストップ例外処理機構450が起動され、ストップされた時点のソースコード及び行番号(621 )をデバッグソースコードウィンドウ620に表示する。更に、デバッグストップ例外処理機構450は、タスク情報通知機構470をコールし、リアルタイムOSタスク情報360を読み取り、デバッグコンソール出力機構420に出力を依頼する。デバッグコンソール出力機構420は、デバッグコンソールウィンドウ630にリアルタイムOSタスク情報を表示する。
【0015】
デバッガに対するユーザ操作で、ステップ実行ボタン650をマウス690によってクリックすると、モニタ410からステップ実行完了例外処理機構440が起動され、ステップ実行が完了された時点のソースコード及び行番号(621 )をデバッグソースコードウィンドウ620に表示する。更に、ステップ実行完了例外処理機構440は、タスク情報通知機構470をコールし、リアルタイムOSタスク情報360を読み取り、デバッグコンソール出力機構420に出力を依頼する。デバッグコンソール出力機構420は、デバッグコンソールウィンドウ630にリアルタイムOSタスク情報を表示する。
【0016】
デバッグソースコードウィンドウ620に表示されているソースコードの行番号(621 )をマウス690によってクリックすると、その行にブレイクポイントが設定される。その後、デバッガ610に対するユーザ操作で、実行ボタン640をマウス690によってクリックした後、指定されたブレイクポイントに到達すると、モニタ410からブレイクポイント到達例外処理機構460が起動され、ブレイクポイントが設定された前後のソースコード及び行番号(621 )をデバッグソースコードウィンドウ620に表示する。
【0017】
更に、ブレイクポイント到達例外処理機構460は、タスク情報通知機構470をコールし、リアルタイムOSタスク情報360を読み取り、デバッグコンソール出力機構420に出力を依頼する。デバッグコンソール出力機構420は、デバッグコンソールウィンドウ630にリアルタイムOSタスク情報を表示する。
【0018】
以上の結果、リアルタイムOS360を搭載したマルチタスク環境のデバッグが可能となる(課題aの解決)。又、既存のリモートデバッガ(開発ホスト上のデバッガ610+組み込み機器内に搭載されたモニタ420)を使用してリアルタイムOS360に対応したデバッグ機能を実現することが可能となる(課題bの解決)。
【0019】
以下、本発明の実施の形態1を図面に基づいて詳細に説明する。
【0020】
図2は図1中のリアルタイムOSタスク情報360を示す図である。リアルタイムOSタスク情報360は、リアルタイムOS350の初期化時に初期化される。以降、リアルタイムOS350は、リアルタイムOSタスク情報360を参照し、タスク1(310)及びタスク2(320)及びタスク3(330)及びタスク4(340)をマルチタスクで実行するためのスケジューリングに使用する。
【0021】
リアルタイムOSタスク情報360は、先頭TCB ポインタ361から情報を辿れるリスト構造になっている。TCB[0]362 に含まれる次のTCB へのポインタ372をTCB[1]373と辿って行くと、システム上に存在する全タスクの情報を参照できる。終端では、次のTCB へのポインタ361がNULL374を指し示す。
【0022】
各タスクのTCB (タスクコントロールブロック)内には、以下の情報が含まれている。タスクID(TID )363は、タスクの識別子である。タスク状態(STAT)364は、タスクの状態を示す。タスクの状態遷移は図3で示す。
【0023】
タスク状態(STAT)364には、強制中断(0x01)、セマフォ待ち(0x02)、イベント待ち(0x04)、メッセージ待ち(0x08)、時間待ち又はタイムアウト待ち(0x10)、実行待(0x20)382の状態がある。タイマ待ち時間(DTIME )365は、時間待ち又はタイムアウト待ちのタスクの待ち時間を示す。タスク優先順位(PRI )366は、タスクの実行優先順位を示す。実行待382状態のタスクが複数ある時、タスク優先順位366の高い(本実施の形態では値の大きい)タスクがCPU210を占有し実行383状態に遷移する。
【0024】
タスクプログラムカウンタ値(PC)367は、該当タスクが実行状態383から中断状態384に遷移した際に、CPU210のPCレジスタの値を退避したものである。タスクプログラムカウンタ値(PC)367は、次に実行状態383に遷移する際にCPU210のPCレジスタに復帰され、該当タスクの実行が再開される。タスクスタックポインタ値(SP)368は、該当タスクが実行状態383から中断状態384に遷移した際に、CPU210のSPレジスタの値を退避したものである。タスクスタックポインタ値(SP)368は、次に実行状態383に遷移する際にCPU210のSPレジスタに復帰され、該当タスクの実行が再開される。
【0025】
待ち行列の前方TCB ポインタ(TO_OLD)369は、該当タスクが中断状態384に遷移し、強制中断(0x01)、セマフォ待ち(0x02)、イベント待ち(0x04)、メッセージ待ち(0x08)、時間待ち又はタイムアウト待ち(0x10)の何れかの待ち行列に該当TCB が加わっている際、該当TCB より以前にその待ち行列に繋がれたタスクが存在すれば、そのTCB へのポインタを示す。待ち行列の後方TCBポインタ(TO_NEW)370は、該当タスクが中断状態384に遷移し、強制中断(0x01)、セマフォ待ち(0x02)、イベント待ち(0x04)、メッセージ待ち(0x08)、時間待ち又はタイムアウト待ち(0x10)の何れかの待ち行列に該当TCB が加わっている際、該当TCB より以降にその待ち行列に繋がれたタスクが存在すれば、そのTCB へのポインタを示す。待ち管理ブロック(CB_PTR)371は、強制中断(0x01)、セマフォ待ち(0x02)、イベント待ち(0x04)、メッセージ待ち(0x08)の各待ち行列を管理するブロックのアドレスを示す。
【0026】
図3はタスクの状態遷移を示す図である。
【0027】
タスクは、初期状態380、実行待状態(READY) 382、実行状態(EXECUTE) 383、中断状態(SUSPEND) 384の状態を取り得る。それぞれの間の遷移は、初期化処理381、中断処理385又は387、中断解除処理386の起動によって発生する。タスクの状態は各タスク毎にタスク状態(STAT)364に保持される。但し、実行状態(EXECUTE) 383という状態は保持されず、実行待(0x20)382状態のタスクが複数ある場合、その中でタスク優先順位(PRI )366が最高のタスクが実行状態(EXECUTE) 383を表す。
【0028】
初期状態380は、リアルタイムOSタスク情報360が初期化された直後の立ち上がり時の状態である。
【0029】
実行状態(EXECUTE) 383は、タスクがCPU210を占有し実行している状態でタスク優先順位(PRI )366が最高で最も早く実行待状態(READY) 382に遷移している1タスクのみがなり得る。
【0030】
実行待状態(READY) 382は、実行可能であるが優先順位等の関係で他のタスクがCPUを占有しているためこれが空くのを待っている状態である。
【0031】
中断状態(SUSPEND) 384は、他のタスクやI/O240等からのイベント待ちの状態で、この状態の間はCPUが空いても実行されることはない。中断状態(SUSPEND) 384の要因は、タスク状態(STAT)364に保持され、強制中断(0x01)、セマフォ待ち(0x02)、イベント待ち(0x04)、メッセージ待ち(0x08)、時間待ち又はタイムアウト待ち(0x10)の種類がある。
【0032】
図4はタスク情報通知機構470を示す流れ図である。
【0033】
最初に、デバッグコンソール出力機構420を起動し、図5に示す項目631を出力する(ステップ471)。項目631は、リアルタイムOSタスク情報360に含まれる情報に対応する。デバッグコンソール出力機構は420、一般的なリモートデバッガがサポートしている組み込み機器(ターゲット)側からの標準出力を開発ホスト側の標準出力ウィンドウに出力する機構である(シミュレーテッドI/Oとも言う)。デバッグコンソール出力機構は420、通信デバイス220を介し、出力要求を開発ホストマシン600上のデバッガ610が解釈できるコマンド形式に含めるように変換する。デバッガ610は、受け付けたコマンド形式を解釈し、コマンドに含まれる出力要求内容をデバッガ600上のデバッグコンソールウィンドウ630にそのまま出力する。
【0034】
次に、変数TCB に先頭TCB ポインタ361を代入する(ステップ472)。次に、変数TCB がNULLであるか判断する(ステップ473)。変数TCB がNULLと等しかった場合、処理を終了する。変数TCB がNULLと等しくなかった場合、変数TCB がNULLになるまで、以下の処理を繰り返す(ステップ472)。
【0035】
デバッグコンソール出力機構420を起動し、変数TCB 及びタブを出力する(ステップ475)。次に、デバッグコンソール出力機構420を起動し、変数TCB−> タスクID363 及びタブを出力する(ステップ476)。次に、デバッグコンソール出力機構420を起動し、変数TCB−> タスク状態364及びタブを出力する(ステップ477)。次に、デバッグコンソール出力機構420を起動し、変数TCB−> タイマ待ち時間365及びタブを出力する(ステップ478)。
【0036】
次に、デバッグコンソール出力機構420を起動し、変数TCB−> タスク優先順位366及びタブを出力する(ステップ479)。次に、デバッグコンソール出力機構420を起動し、変数TCB−> タスクプログラムカウンタ値367及びタブを出力する(ステップ480)。次に、デバッグコンソール出力機構420を起動し、変数TCB−> タスクスタックポインタ値及びタブを出力する(ステップ481)。
【0037】
次に、デバッグコンソール出力機構420を起動し、変数TCB−> 待ち行列の前方TCB ポインタ369及びタブを出力する(ステップ482)。次に、デバッグコンソール出力機構420を起動し、変数TCB−> 待ち行列の後方TCB ポインタ370及びタブを出力する(ステップ483)。次に、デバッグコンソール出力機構420を起動し、変数TCB−> 待ち管理ブロック371及びタブを出力する(ステップ484)。最後に、変数TCB に変数TCB−> 次のTCB へのポインタ372を代入する(ステップ485)。
【0038】
図5はデバッグコンソールウィンドウ630を示す図である。
【0039】
例えば、最初の行は、TCB_ADDRが20120 、TID が1、STATが0x20なので実行待状態を表し、DTIME が0、PRI が0なのでタスク優先順位は最低を表し、PCが31DA、SPが21364 、TO_OLD及びTO_NEWが0 、CB_PTRが0というようにタスクの情報を読み取ることができる。STATが0x20のタスクが他に存在しないので、このタスクはCPU210を占有し実行状態383であることが分かる。
【0040】
又、5行目は、TCB_ADDRが20320 、TID が5、STATが0x08なのでメッセージ待ちの中断状態384を表し、DTIME が0、PRI が3なので0よりは高いタスク優先順位を表し、PCが2522、SPが2338A である。更に、TO_OLDが202A0 、T_NEW が203A0 、CB_PTRが207C0 なのでメッセージ待ちの管理ブロックを表す。TID が4のタスクとTID が6のタスクも同様にCB_PTRが207C0 なので同じメッセージ待ちの管理ブロックを使用していることになり、同じメッセージを待っていることを表す。待ち順は、TO_OLDとTO_NEWを参照することにより、TID4−TID5−TID6であることが分かる。
【0041】
<実施の形態2>
本発明の実施の形態2では、請求項3に対応した実現方法について説明する。
【0042】
実施の形態2では、実施の形態1の方法を用いて、タスク情報通知機構470からの通知をデバッグコンソール出力機構420を介し、デバッグコンソールウィンドウ630に表示した後、デバッガ610の機能を使用し、デバッグコンソールウィンドウ630に表示された各タスクの情報をハードディスク680にファイルとして保存する。デバッガ610に保存機能がない場合は、通常、開発ホストマシン上に搭載されているOS(ウィンドウシステム)の機能を使用し、デバッグコンソールウィンドウ630の内容のスクリーンダンプ等を取ってハードディスク680に保存することが可能である。
【0043】
以上の機構を設けることで、デバッグ時のログが残り、より効率的なマルチタスクデバッグが可能となる。
【0044】
【発明の効果】
以上の説明で明らかなように、本発明によれば、リアルタイムOSを搭載したマルチタスク環境のデバッグが可能となる。これにより、マルチタスクプログラムのデバッグの効率を向上させ製品開発期間が短縮される。
【0045】
又、既存のリモートデバッガ(開発ホスト上のデバッガ+組み込み機器内に搭載されたモニタ)を使用してリアルタイムOSに対応したデバッグ機能を実現することが可能となる。これにより、本発明を実装するために、専用のハードウェアを新規に開発する必要はなく、既存のリモートデバッッガにおける組み込み機器内のモニタに簡単に組込むことが可能であるので、既存システムであっても低コストで開発効率を向上させることができる。
【図面の簡単な説明】
【図1】本発明の実施の形態1を示す構成図である。
【図2】図1中のリアルタイムOSタスク情報を示す図である。
【図3】図2中のタスク状態の状態遷移を示す図である。
【図4】図1中のタスク情報通知機構を示す図である。
【図5】図1中のデバッグコンソールウィンドウの外観を示す図である。
【符号の説明】
100 組込機器
200 CPUバス
210 CPU
220 通信デバイス
300 RAM
310 タスク1
320 タスク2
330 タスク3
340 タスク4
350 リアルタイムOS
360 リアルタイムOSタスク情報
400 ROM
410 モニタ
420 デバッグコンソール出力機構
430 リモートデバッグ装置
440 ステップ実行完了例外処理機構
450 デバッグストップ例外処理機構
460 ブレイクポイント到達例外処理機構
470 タスク情報通知機構
500 RS232C又はイーサネット等
600 開発ホストマシン
610 デバッガ
620 デバッグソースコードウィンドウ
621 行番号
630 デバッグコンソールウィンドウ
640 デバッグ実行ボタン
650 ステップ実行ボタン
660 デバッグストップボタン
670 ダウンロードボタン
680 ハードディスク
660 マウス
Claims (3)
- リモートデバッグ装置に係り、開発ホストと接続されたリアルタイムOS搭載のデバッグ対象機器内において、リモートデバッグのために組み込まれたモニタから、ステップ実行完了時、又はユーザ操作によるデバッグストップ時、又はプログラム実行中予め設定してあるブレイクポイントに到達したブレイク時に起動される例外処理ルーチンに、リアルタイムOSで管理している各タスク情報を開発ホストへ通知する機構を付加したことを特徴とするリモートデバッグ装置。
- 開発ホスト上で通知された各タスク情報を表示する機構を具備することを特徴とする請求項1記載のリモートデバッグ装置。
- 開発ホスト上で通知された各タスク情報を保存する機構を具備することを特徴とする請求項1記載のリモートデバッグ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003024298A JP2004234497A (ja) | 2003-01-31 | 2003-01-31 | リモートデバッグ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003024298A JP2004234497A (ja) | 2003-01-31 | 2003-01-31 | リモートデバッグ装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004234497A true JP2004234497A (ja) | 2004-08-19 |
Family
ID=32952866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003024298A Withdrawn JP2004234497A (ja) | 2003-01-31 | 2003-01-31 | リモートデバッグ装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004234497A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008518286A (ja) * | 2004-09-09 | 2008-05-29 | ソニー エレクトロニクス インコーポレーテッド | リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器 |
-
2003
- 2003-01-31 JP JP2003024298A patent/JP2004234497A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008518286A (ja) * | 2004-09-09 | 2008-05-29 | ソニー エレクトロニクス インコーポレーテッド | リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR930000592B1 (ko) | 타스크 추적장치 | |
US5721922A (en) | Embedding a real-time multi-tasking kernel in a non-real-time operating system | |
US5630049A (en) | Method and apparatus for testing software on a computer network | |
US5903752A (en) | Method and apparatus for embedding a real-time multi-tasking kernel in a non-real-time operating system | |
US5872909A (en) | Logic analyzer for software | |
US8370841B2 (en) | Optimizing deterministic event record and replay operations | |
US5889988A (en) | Debugger for debugging tasks in an operating system virtual device driver | |
US7987393B2 (en) | Determining operating context of an executed instruction | |
EP1736871A2 (en) | System for executing code during operating system initialization | |
US20050015767A1 (en) | Operating system configuration tool | |
US20010034751A1 (en) | Real-time OS simulator | |
JP2006277115A (ja) | 異常検出プログラムおよび異常検出方法 | |
US5619697A (en) | Inter-processor communication system for performing message communication between processors and multi-processor real time system for communicating amoung a plurality of processors at real time with the inter-processor communication system | |
JP2002082816A (ja) | 障害監視システム | |
JP2000066904A (ja) | マルチタスク制御方法及び記憶媒体 | |
CN109800166B (zh) | 一种嵌入式实时操作系统的调试方法及装置 | |
JP2004234497A (ja) | リモートデバッグ装置 | |
des Places et al. | Linux on the OSF Mach3 microkernel | |
JP2010224812A (ja) | ジョブ管理システムおよび方法 | |
EP0796466B1 (en) | An improved method and apparatus for embedding a real-time multi-tasking kernel in a non-real-time operating system | |
JP3207564B2 (ja) | イベント記録方法及び装置 | |
US20240129255A1 (en) | Server delay control device, server delay control method, and program | |
JP2000242522A (ja) | マルチタスクデバッグ装置及びその方法 | |
JP2003005987A (ja) | エミュレーション装置 | |
JPH06161817A (ja) | スレッドオンラインデバッグ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060201 |
|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060404 |
|
A072 | Dismissal of procedure |
Free format text: JAPANESE INTERMEDIATE CODE: A072 Effective date: 20061003 |