JP4716929B2 - プログラムデバッグ支援処理装置及び通信用アダプタ並びにプログラムデバッグ支援処理プログラム - Google Patents

プログラムデバッグ支援処理装置及び通信用アダプタ並びにプログラムデバッグ支援処理プログラム Download PDF

Info

Publication number
JP4716929B2
JP4716929B2 JP2006158482A JP2006158482A JP4716929B2 JP 4716929 B2 JP4716929 B2 JP 4716929B2 JP 2006158482 A JP2006158482 A JP 2006158482A JP 2006158482 A JP2006158482 A JP 2006158482A JP 4716929 B2 JP4716929 B2 JP 4716929B2
Authority
JP
Japan
Prior art keywords
program
debug
data
command
processing
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.)
Active
Application number
JP2006158482A
Other languages
English (en)
Other versions
JP2007328501A (ja
Inventor
山彦 伊藤
繁樹 鈴木
淑子 落合
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2006158482A priority Critical patent/JP4716929B2/ja
Publication of JP2007328501A publication Critical patent/JP2007328501A/ja
Application granted granted Critical
Publication of JP4716929B2 publication Critical patent/JP4716929B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

この発明は、例えば、組み込み機器に機能を実行させるために搭載するプログラムのデバッグ(バグ(プログラムの誤り)の修正)を支援するための処理装置及びその処理を実現するためのプログラムに関するものである。
従来のプログラムデバッグ装置は、プログラム本体のほか、デバッグ支援処理(メモリに記憶された変数等の値の出力、レジスタの参照等)を行うためのコマンドのデータ(以下、デバッグコマンドという)を受信し、解釈し、実行し、その結果を返答する機能(プログラム)を行う手段を付加し、機能動作を行わせることにより、エミュレータ等を用いずにプログラム本体のデバッグ支援処理を直接行うことができるように構成している(例えば特許文献1参照)。
特開平11−167501号公報(第1頁〜4頁、第1図)
従来のプログラムデバッグ支援処理装置では、デバッグコマンドの受信・解釈・実行・返答を実行する手段が予めファームウェア内に組み込まれる構成となっており、プログラム本体のデバッグのために必要な情報を得る(出力させる)ためには、レジスタやメモリ内の特定のアドレス値等、ハードウェアのリソースを直接指定する必要があった。従って、例えば高級言語等でプログラムが記述されているような、変数の値の参照など、直接どのハードウェアのリソースを参照すべきかを指定できない場合には、このような処理が困難であるという問題点があった。
また、デバッグ支援処理に係る各手段の機能が固定され、変更が容易でないため、例えば、デバッグコマンドについても、プログラム本体の処理に係るコマンド等のデータに応じて変更することが困難である。このため、プログラム本体の受信インタフェース(受信部)と、デバッグ用の手段の受信インタフェースが共有されている場合、インタフェースの違いにより特定できないため、プログラム本体の処理に係るデータ(コマンド等の制御信号)とデバッグコマンドとが(データの内容として)重ならないように通信しなければならないが、その設定が容易に行えないという問題点があった。
この発明は、上記のような問題点を解決するためになされたもので、エミュレータ等の高価な装置を利用しなくても、機器に組み込まれた高級言語で記述されたプログラム、主としてインタプリタで解釈されるスクリプト言語のプログラムについてもデバッグ支援処理を可能にするプログラムデバッグ支援処理装置を得るものである。
さらに、プログラムの処理に係るコマンドが拡張されたり書き換えられたりしたとき、プログラム本体の受信インタフェースとデバッグ用の手段の受信インタフェースが共有されている場合でも、デバッグコマンドに関する定義の設定を容易に変えることができ、プログラムの処理に係るデータとデバッグコマンドとが重ならないようにするプログラムデバッグ支援処理装置を得るものである。
この発明に係るプログラムデバッグ支援装置は、データを含む信号の送受信処理を実行する通信処理部と、デバッグ対象となる本体プログラムと、少なくともデバッグ支援処理に係るデバッグコマンドに関するデータが設定されており、本体プログラムの誤りを検出するデバッグ支援処理を行うためのデバッグプログラムを記憶する、書き換え可能な記憶部に記憶されているデバッグコマンドに関するデータに基づいて、通信処理部が受信した信号に係るデータがデバッグコマンドであるかどうかを判定するコマンド判定部及びデバッグコマンドに関するデータに規定された本体プログラムの所定実行位置におけるデバッグ情報のデータを検出して記録するデバッグ情報格納部を有し、本体プログラムに基づく処理を実行中に、所定実行位置におけるデバッグ情報のデータを本体プログラムから検出してデバッグ情報格納部に記録し、コマンド判定部が受信した信号に係るデータがデバッグコマンドであると判定すると、そのデバッグコマンドに対応するデバッグ情報のデータを含む信号を通信処理部に送信させる処理を行う記述プログラム解釈部とを備える。
この発明によれば、本体プログラムだけでなく、デバッグプログラムについてもデータ変更可能な記憶部にデータとして記憶するようにしたので、本体プログラムのプログラム記述形式等に対応したデバッグプログラムを容易に記憶させ、記述プログラム解釈部に実行させることが可能になり、エミュレータ等の高価な装置を用いなくても、例えば、高級言語により記述されたプログラムに対応したデバッグプログラムに基づいてデバッグ支援処理を行うことができる。
実施の形態1.
図1はこの発明の実施の形態1によるプログラムデバッグ支援装置を中心とする構成を示すブロック図である。本実施の形態では、家電機器とホームネットワークとを接続するための通信用アダプタ100(以下、アダプタ100という)の機能を実現するために組み込まれるプログラム(以下、本体プログラムという)をデバッグ対象のプログラムとして説明する。したがってアダプタ100が、本体プログラムの処理を実行する装置であるとともに、実行装置自体が本体プログラムに係るデバッグを支援するためのプログラムデバッグ支援装置の役割を果たす。さらに具体的には、家電機器であるエアコンの制御を行うプロトコルと、家電機器同士を連携させつつ制御を行うホームネットワークの規格であるECHONET (ECHONET はECHONET コンソーシアムの商標)で規定されたプロトコルとの相互変換を行う本体プログラムのデバッグを支援する装置を例に説明する。
図2はアダプタ100を利用して家電機器をECHONET に接続したホームネットワークの構成を示す図である。例えば、家電機器では、機種ごとの独自のプロトコルに従って動作の制御を行い、一方で、ECHONET では、規格化されたプロトコルに従って電文(各種データ等を含む信号)の送受信を行う。そのため、家電機器をホームネットワークに接続するアダプタ機能を実現する場合等において、プロトコル変換処理が必要になる。ここで、各家電機器のプロトコルに対応してプロトコル変換処理の手順をプロトコル変換プログラムとしておけば、プロトコル変換プログラムのみを書き換えて記憶手段に記憶させることで、(例えば物理的構成が)同じアダプタであれば異なる種類の家電機器に対応させることができ、ホームネットワークに各家電機器を接続することができる。そのため、プロトコル変換プログラムは、家電機器本体や、パーソナルコンピュータ、インターネット上に公開されたサーバなどの外部装置110からダウンロードできるようにし、アダプタ100を外部装置110と接続すると、記憶部101の書き換え可能な記憶領域に書き込まれるようにする。
また、本実施の形態で例とするプロトコル変換プログラムは、アダプタ100を構成するハードウェア(特に記述プログラム解釈部105等の機能を実現するCPU(Central Processing Unit )等のデータ処理手段)に依存しないスクリプト言語(高級言語)で記述されているものとする。そのため、アダプタ100がハードウェア的に異なっても同じプログラムで対応させることができる。
図1において、アダプタ100は、プログラムを記憶する記憶部101、そのプログラムを外部装置110からダウンロード処理するプログラムダウンロード管理部102、記憶部101に記憶されたプログラムに記述された内容に基づいて処理を実行する記述プログラム解釈部105、及び、記述プログラム解釈部105と、電文中のデータを一時的に家電機器シミュレータ112(家電機器)、ECHONET のコントローラ116とが電文を送受信するための処理を行う通信処理部106から構成される。
ここで、アダプタ100内の各部(特にプログラムダウンロード管理部102、記述プログラム解釈部105)に関しては、機器(ハードウェア)として独立して構成することもできるが、例えば、CPU(Central Processing Unit )を中心とするデータ処理手段(コンピュータ)でハードウェアを構成し、後述する各部によるフローチャートの手順(本体プログラム、デバッグプログラムに従って処理を行うための前段階としての手順)をあらかじめプログラム化してソフトウェア、ファームウェア等としてアダプタ100内に記憶し、コンピュータに処理させることもできる。
記憶部101には、前述した本体プログラムが例えばファイル形式のデータとして記憶される(以下、記憶された本体プログラムの記述内容を本体プログラム記述部103という)。また、本体プログラムをデバッグするためのデバッグプログラムも同様にファイル形式のデータとして記憶される(以下、記憶されたデバッグプログラムの記述内容をデバッグプログラム記述部104という)。そして、デバッグプログラム記述部104は、さらに、デバッグコマンドの定義や処理に基づいて出力すべきデバッグ情報の指定に係る記述がなされたデバッグコマンド設定記述部107と、デバッグ情報を出力する実行手順が記述されたデバッグコマンド実行記述部108とからなる。後述するように、デバッグコマンド設定記述部107に記述された内容は、記述プログラム解釈部105が行う処理により、デバッグに係る処理を行う際に参照とするデータとしてデバッグ情報格納部109に登録され、格納される。そして、デバッグ情報格納部109は、通信処理部106が受信した電文内のデバッグコマンドに関して、その定義等に関するデータをデバッグコマンドデータとして登録したデバッグコマンド登録部116と、出力すべきデバッグ情報の指定等に関するデータをデバッグデータとして登録したデバッグデータ登録部117から構成される。これらについては後述する。
電文送受信部114から送信された電文を、アダプタ100の通信処理部106が受信する。記述プログラム解釈部105のデバッグコマンド判定部105aは、デバッグコマンド登録部116に登録したデバッグコマンドデータを参照して、電文中のデータがデバッグコマンドであるか否かを判定する。デバッグコマンドであると判定すると、デバッグプログラムによる処理を行うものと判定して、記述プログラム解釈部105は、デバッグコマンド実行記述部108の記述に従った処理を実行する。一方、デバッグコマンドでないと判定すると、本体プログラム記述部103の記述に従った処理を実行する。ここで、記述プログラム解釈部105が各プログラムの記述に基づく処理を行う際、後述するように辞書を参照して処理を行う。辞書記憶部105cは、この辞書に関するデータが登録され、記憶されている。また、記述プログラム解釈部105には、例えば、処理を実行中に、その処理に係る指示命令、データを例えば一時的に記憶しておくキャッシュメモリ(RAM)、レジスタ等の処理記憶部105bを有するものとする。デバッグ支援処理においては、特に本体プログラムに基づく処理実行時における処理記憶部105bに記憶された変数、配列(バッファ等)の値をデバッグ情報として出力する等の処理が行われる。
家電機器シミュレータ112は、実際の家電機器の代わりに、デバッグ段階において、その家電機器に対応した通信電文、デバッグコマンド等のデータを含む電文を送受信するための装置であり、例えばパーソナルコンピュータ等によって構成される。ここで、家電機器シミュレータ112は、アダプタ100に送信する電文を作成する電文作成部113と、アダプタ100との間で電文の送受信電文を行う電文送受信部114及びアダプタ100との間で送受信を行った電文内容を表示する電文表示部118から構成される。
コントローラ115は、ECHONET の電文を送受信する装置である。特に限定はしないが、家電機器シミュレータ112と同様に、パーソナルコンピュータ等によって構成されるシミュレータでも良い。以下、家電機器シミュレータ112とアダプタ100(通信処理部106)との間を家電機器側とし、コントローラ115とアダプタ100との間をECHONET 側とする。
図3は、プログラムダウンロード管理部102の処理動作を表すフローチャートを示す図である。接続端子(図示せず)等を介して、プログラムを保持した外部装置110にアダプタ100が接続されると、ステップST301において、プログラムダウンロード管理部102は、例えば電圧の変化等により外部装置110との接続を検知する。接続により、プログラムダウンロード管理部102(アダプタ100)とプログラム保持部(外部装置110)との間で通信が可能となる。次に、ステップST302で、プログラム保持部111に保持されたプログラムをダウンロード処理する。本体プログラム及び/又はデバッグプログラムは、それぞれ例えばファイル形式のデータとしてアダプタ100の記憶部101に記憶される。そして、ステップST303において、記述プログラム解釈部105に処理を引き継ぎ実行させる。
図4は、アダプタ100のプロトコル変換と通信処理における動作を記述した本体プログラムの例を示す図である。ここで、プログラムは1又は複数の実行コードで構成される。実行コードは、記述プログラム解釈部105においてインタプリタにより逐次に実行処理を行う際の単位となる。本実施の形態においては、プログラムを記述する言語としてForth を用いる。Forth はスタック(LIFO(Last In First Out)によるデータ構造)を利用した逆ポーランド記法に基づく言語であり、構文解析が不要なため、処理系が小さく、省資源(記憶容量を必要としない)でインタプリタが動作するという特徴を持つ。このため、家電機器に接続する通信用のアダプタのように、低コストで実現することが要求される機器に搭載するインタプリタとしては最適な言語である。
Forth では、実行すべき処理を表すデータをWordと呼ぶ。実行コードは、Wordと、Wordに基づく処理のためのデータとで構成され、データ、Wordの順に記述される。各Wordについては、その処理内容のデータとあらかじめ定義づけられて(関連づけられて)、辞書として辞書記憶部105cに登録され、管理されている。実行コードに記述された文字列等のデータにおいて、辞書として登録されていればWordであり、登録されていなければ処理のためのデータとなる。また、Wordはあらかじめ決められたものだけではなく、さらに処理内容を定義して辞書として辞書記憶部105cにデータとして登録することで、新たな処理機能を追加できる。プログラムの解釈・実行において、記述プログラム解釈部105は、プログラムを処理する際、読み込んだ文字列が辞書に存在しない場合は処理のためのデータとみなしてスタックに積み、辞書に存在する場合は、Wordとみなして(その時点において)スタックに積まれた各データに対して処理を実行する。
例えば、図4では、ANS規格で規定されたForthのWord(Programming Languages-Forth X3J14 dpANS-6 -June 30,1993)に加え、プロトコル変換用の拡張Wordとして、「SET_SEND_EPC」、「GET_EPC 」、「FROM_ECHONET」、「TO_EQUIPMENT」、及び「FROM_EQUIPMENT 」というWordを定義し、登録して用いるものとする。
「SET_SEND_EPC」は、ECHONET プロパティとその値のデータを、ECHONET 規格の電文に変換してECHONET 側に送信する処理を記述プログラム解釈部105に行わせるためのWordである。「GET_EPC 」は、ECHONET 側からの受信からECHONET プロパティの値を取得する処理を行わせるためのWordである。ここで、ECHONET プロパティとは、例えば、エアコンにおける風量設定状態等、家電機器に応じて設定可能なプロパティのコードを表すものとする。そして、そのコードに対する値はそれぞれECHONET の規格で定められている。
「FROM_ECHONET」は、ECHONET 側からの電文の受信の有無をチェックする処理を行わせるWordである。「TO_EQUIPMENT」は、送信バッファに格納されたデータを含む電文を家電機器側に送信処理させるWordである。「FROM_EQUIPMENT」は、家電機器側から受信した電文中のデータ(コマンド等。以下、受信データという)を受信バッファに格納させる処理を行わせる、受信処理を行うためのWordである。
次に、記述プログラム解釈部105が行う処理内容について図4の本体プログラムに基づいて説明する。ここで、アダプタ100と接続する家電機器がエアコン(空気調和装置)であるものとして説明する。1行目は、このプログラムで扱う数値が16進数であることを示している。2行目と3行目は、受信バッファとなる「RV_BUF」と送信バッファとなる「TR_BUF」とがそれぞれ22バイトの配列であることを宣言している。4行目と5行目は、「IDT 」と「EDT 」がそれぞれ整数型の変数であることを宣言している。
7行目から14行目は、エアコン(家電機器)側からの受信電文を解釈するWord「PROC_RV_DATA」の処理内容を定義している。9行目から12行目は、エアコン側からの受信電文が格納された受信バッファ「RV_BUF」の8バイト目の値が、電源ON/OFFの状態を示すことを仮定して記述したコードである。例えば「RV_BUF」の8バイト目の値が「0 」のときはエアコンの電源がOFFであり、「1 」のときはエアコンの電源がONを表すものとする。9行目で、受信バッファ「RV_BUF」の8バイト目を取り出し、変数「IDT 」に代入処理する。10行目で、「IDT 」の値が「0 」であれば、変数「EDT 」に「31」を代入処理し、11行目で、「IDT 」の値が「1 」であれば、変数「EDT 」に「30」を代入処理する。12行目で、Word「SET_SEND_EPC」を実行処理し、「EDT 」の値を電文に含み、ECHONET 側に送信する処理を行う。ここで、12行目の「80」はECHONET 規格で規定された電源ON/OFFを表すECHONET プロパティである。ECHONET 規格では、ECHONET プロパティ「80」における値が「31」のときは電源OFFを、「30」のときは電源ONを表すことが規定されている。つまり、12行目は、ECHONET 規格の仕様に変換されたプロパティの値をデータとして送信電文に含み、ECHONET 側に送信する処理を行うことになる。
16行目から25行目は、エアコン側に送信する電文を設定する処理を行うWord「PROC_TR_DATA」の処理内容を定義している。17行目では、エアコンに送信する電文を格納する送信バッファ「TR_BUF」の0バイト目に値「FC」を代入処理する。18行目では「TR_BUF」の1バイト目に値「41」を代入処理する。20行目から23行目は「TR_BUF」の8バイト目の値が、エアコンの電源ON/OFFの状態を示すことを仮定して記述したコードである。「TR_BUF」の8バイト目の値が「0 」のときはエアコンの電源をOFFに設定し、「1 」のときはエアコンの電源をONに設定するものとする。20行目で、Word「GET_EPC 」によって、ECHONET 側から受信したECHONET プロパティ「80」に対する値を取得して、変数「EDT 」に代入処理する。21行目で、「EDT 」の値が「31」であれば、変数「IDT 」に「0 」を代入処理し、22行目で、「EDT 」の値が「30」であれば、変数「IDT 」に「1 」を代入処理する。23行目で、「IDT 」の値を送信バッファ「TR_BUF」の8バイト目に代入処理する。
27行目から39行目のメイン処理は、無限ループになっており、ECHONET 側から電文を受信したら、ECHONET プロパティ及びその値をエアコン側に送信する電文に変換してエアコン側に送信し、エアコン側から電文を受信したら、ECHONET プロパティに変換して電文をECHONET 側に送信する、という処理を行う。
30行目では、Word「FROM_ECHONET」によって、ECHONET 側からの受信をチェックしている。「FROM_ECHONET」は、受信があった場合は値「1 」をスタックに積み、受信がなかった場合は値「0 」をスタックに積む。31行目から34行目は、ECHONET 側から受信があった場合の処理内容を表す。32行目でWord「PROC_TR_DATA」を呼び出して、16行目から25行目に記述された内容に基づく処理を実行し、エアコン側への送信電文の内容を送信バッファ「TR_BUF」に格納する。33行目で、Word「TO_EQUIPMENT」によって、「TR_BUF」の内容を送信電文としてエアコン側に送信処理する。
一方、35行目では、受信処理のためのWord「FROM_EQUIPMENT」によって、エアコン側からの受信をチェックする。「FROM_EQUIPMENT」は、受信があった場合は受信電文を受信バッファ「RV_BUF」に格納して値「1 」をスタックに積み、受信がなかった場合は値「0 」をスタックに積む。36行目から38行目は、エアコン側から受信があった場合の処理を表す。37行目でWord「PROC_TR_DATA」を呼び出して、7行目から14行目に記述された内容に基づく処理を実行し、送信バッファ「RV_BUF」の各バイトの値をECHONET プロパティに変換してECHONET 側に送信電文として送信する。
図5は本体プログラムの別例を表す図である。図4では、説明のために、本体プログラムにコメントを付与してインデントを施したが、実際にダウンロードされる本体プログラムの記述としては、図5のように、コメントや余分な空白を削除した形式であっても良い。
図6は、デバッグプログラムの例を示す図である。本実施の形態では、デバッグプログラムについても、本体プログラム同様、プログラムの記述をForth によって行い、デバッグ用の拡張Wordを加えた言語を用いて記述している。本例で用いる「SET_DBG_CMD 」は、本体プログラム上の指定された位置で受信するデバッグコマンドに関するデータをデバッグコマンド登録部116に登録する処理を記述プログラム解釈部105に行わせるためのWordである。また、「SET_DBG_DATA」は、本体プログラム上の指定された位置におけるデータの値を記録する処理を行わせるため、デバッグデータをデバッグデータ登録部118に登録処理するためのWordである。「GET_DBG_CMD 」は、アダプタ100が受信した電文がデバッグコマンドであった場合に、デバッグコマンドを取得する処理を行わせるためのWordである。「DUMP_DATA 」は、デバッグ情報に係るデータの内容を出力する処理を行わせるためのWordである。
次に、記述プログラム解釈部105が行うデバッグ処理内容について図6のデバッグプログラムの記述に基づいて説明する。1行目は、このプログラムで扱う数値が16進数であることを示している。2行目は、「CODE」が整数型の変数であることを示している。
3行目から11行目は、デバッグコマンド設定記述部107であることを示すWordである「RGST_DBG_CMD」の処理内容を定義している。4行目の「SET_DBG_CMD 」の1つ右のデータ「1 」は、デバッグコマンド情報を識別するコマンドIDのデータである。2つ右の「64」は、本体プログラム上において、デバッグコマンドの受信を確認(チェック)する位置(ポイント)を表すデータである。本実施の形態では、本体プログラム上の位置を、先頭から何番目のシンボル(名前)であるかという値で示すものとする。ここでは、「64」は図4のLOC401の位置を示すものとする。3つ右の「2 」は、デバッグコマンドの長さを表すものとする。5つ右と4つ右の「FF 1」は、デバッグコマンドのバイト列を示すものとする。4行目の記述は、図4のLOC401の位置における受信チェックによって得られるバイト列「FF 1」のデバッグコマンドのコマンドIDを「1 」と定義したことを示す。
同様に、5行目の記述は、図4のLOC402の位置における受信チェックによって得られるバイト列「FF 2」のデバッグコマンドのコマンドIDを「2 」と定義したことを示す。6行目の記述は、図4のLOC403の位置における受信チェックによって得られるバイト列「FF 3」のデバッグコマンドのコマンドIDを「3 」と定義したことを示す。
7行目において、Word「SET_DBG_DATA」の1つ右の「1 」は、出力すべきデバッグ情報のデバッグデータを識別するデータIDである。2つ右の「1 」は記録すべきデータのタイプを表す値である。「1 」のときは変数の値を、「2 」のときは配列の値を、「3 」のときはスタックの状態を記録するものとする。3つ右の「78」は、本体プログラム上でデバッグ情報を記録する位置である。本実施の形態では、プログラム上の位置を、先頭から何番目のシンボルであるかという値で示すものとする。ここでは、「78」は図4のLOC402の位置を示すものとする。5つ右と4つ右の「C"EDT"」は「EDT 」というシンボルを表す記述である。7行目の記述は、図4のLOC402の位置における変数「EDT 」の値の記録をデータID「1 」と定義したことを示す。
8行目は、記録するデータが配列の場合の記述である。「SET_DBG_DATA」の4つ右の「16」は、配列長(10進数では22バイト)を示す。8行目の記述は、図4のLOC401の位置における22バイトの配列「RV_BUF」の値の記録をデータID「2 」と定義したことを示す。9行目と10行目は、記録するデータがスタックの場合の記述である。本体プログラムがスタックを利用した逆ポーランド記法に基づいた言語で記述されている場合、スタックの内容を確認する機能を設けることにより、スタックのオーバーフローなど、入出力される電文内容の確認だけでは検出しにくいバグも検出可能となる。スタックの状態を記録する場合は、シンボルの指定は不要である。9行目の記述は、図4のLOC403の位置におけるスタックの状態の記録をデータID「3 」と定義し、10行目の記述は、図4のLOC404の位置におけるスタックの状態の記録をデータID「4 」と定義したことを示す。
13行目から25行目は、デバッグコマンド実行記述部108であることを示すWordである「EXEC_DBG_CMD」の処理内容を定義している。このデバッグコマンド実行記述部108の記載に基づいて記述プログラム解釈部105が行う処理内容については後述する。
なお、プログラム保持部111は、必ずしも本体プログラムとデバッグプログラムの両方を保持している必要はない。例えば本体プログラムのデータのみ保持している場合は、そのデータを記憶部101に記憶させてもよい。このときは本体プログラム記述部103の記述内容が変更される。また、同様に、デバッグプログラムのデータのみ保持している場合は、デバッグプログラム記述部104の記述内容が変更される。また、本体プログラム記述記憶部103とデバッグプログラム記述記憶部104を、物理的に別の記憶手段で記憶させるようにしてもよい(この場合、プログラムダウンロード管理部102は、ダウンロードしたプログラムが本体プログラムであるかデバッグプログラムであるかを判断してそれぞれの記憶手段に記憶させる必要がある)。また、本体プログラムとデバッグプログラムとをそれぞれ別のファイル形式のデータとして記憶させているが、別のファイルである必要は無く、同一のファイル中に記述してもよい(この場合、記述プログラム解釈部105は、Wordによって機能実行の処理かデバッグに係る処理かの区別を行う)。
プログラムダウンロード管理部102により、上記のような本体プログラムとデバッグプログラムが、それぞれ本体プログラム記述記憶部103とデバッグプログラム記述記憶部104に格納された後、ステップST303によって、記述プログラム解釈部105が処理を実行する。
図7は、記述プログラム解釈部105の処理動作のフローチャートを表す図である。まず、ステップST701において、記述プログラム解釈部105は、例えば、ファイル名等により、デバッグプログラムが記述された部分のデータを記憶部101から検索し、デバッグプログラムに記述された処理を開始する。記述プログラム解釈部105は、Word「RGST_DBG_CMD」に基づいて、そのWordに係る実行コードに記述されたデータを、デバッグコマンドデータとしてデバッグコマンド登録部116に登録させる。また、Word「SET_DBG_DATA」が記述されていると判断すると、そのWordに係る実行コードに記述されたデータを、デバッグデータとしてデバッグデータ登録部117に登録させる。
図8は、図6のデバッグコマンド設定記述部107の記述に基づいて登録処理されたデバッグコマンド登録部116の内容を示す図である。ここで、各データについてはテーブル形式で登録されるものとする。コマンドID格納欄801は、各デバッグコマンドを識別するコマンドIDのデータを格納する欄である。デバッグコマンド受信ポイント格納欄802は、デバッグコマンドの受信確認をする本体プログラム上のポイント(位置)のデータを格納する欄である。コマンド長格納欄803は、登録されるデバッグコマンドの長さのデータを格納する欄である。デバッグコマンドバイト列格納欄804は、デバッグコマンドのバイト列のデータを格納する欄である。
図9は、図6のデバッグコマンド設定記述部107の記述に基づいて登録処理されたデバッグデータ登録部117の内容を示す図である。ここでも、各データについてテーブル形式で登録されているものとする。データID格納欄901は、出力すべき各デバッグ情報のデバッグデータを識別するデータIDのデータを格納する欄である。デバッグ情報設定ポイント格納欄902は、デバッグ情報を記録する処理を行う本体プログラム上の位置のデータを格納する欄である。データ種別格納欄903は、デバッグ情報が、変数であるか、シンボルであるか、スタックであるかの種別を表すデータを格納する欄である。デバッグシンボル格納欄904は、デバッグ種別が変数または配列のときに設定され、変数または配列のシンボルを格納する欄である。型格納欄905は、デバッグ種別が変数または配列のときに設定され、変数または配列のデータ型(type)のデータを格納する欄である。配列サイズ格納欄906は、デバッグ種別が配列のときに設定され、配列のサイズのデータを格納する欄である。データ内容格納欄907は、デバッグ情報の内容のデータを格納する欄である。
図10は、ST702を詳細化した、記述プログラム解釈部105が行うデバッグ支援に係る本体プログラムの実行処理時に行う処理動作を示したフローチャートを表す図である。ST701によってデバッグを行う際に参照するデータをデバッグ情報格納部109に登録処理した後、ST702によって、デバッグ支援のために本体プログラムの処理を実行する。まず、デバッグ支援処理段階を実行する。ステップST1001で、本体プログラムの読み込み位置を更新(設定)する。登録処理の直後であれば、読み込み位置は本体プログラム記述記憶部103の先頭に設定し、その他の場合であれば、処理を実行したシンボルの次のシンボルに更新する。
次に、ステップST1002で、読み込み位置がデバッグ情報設定ポイントであるか否かを判定する。デバッグ情報設定ポイントは、デバッグデータ登録部117のデバッグ情報設定ポイント格納部902に格納されているため、記述プログラム解釈部105は、判定の際にデバッグ情報設定ポイント格納欄902に登録されたデータを参照する。
「YES 」と判定すれば、ステップST1003で処理記憶部105bに記憶されたデータのうち、対応するデバッグ情報を記録する処理を行う。例えば図9のデバッグデータ登録部117に従うと、読み込み位置が「64」(図4のLOC401)であれば配列「RV_BUF」の値を、読み込み位置が「78」(図4のLOC402)であれば変数「EDT 」の値を、読み込み位置が「12C 」(図4のLOC403)であればスタックの状態を、読み込み位置が「134 」(図4のLOC404)であればスタックの状態を、デバッグデータ登録部117のデータ内容格納欄907にデバッグ情報として記録する。
図11はデバッグ情報設定ポイントにおける最新の値が、データ内容格納欄907にデータとして記録されたデバッグデータ登録部117の例を示す図である。ST1003の処理を行った結果、デバッグデータ登録部117のデータ内容格納欄907には、常に各デバッグ情報について、デバッグ情報設定ポイントにおける最新の値がデータとして記録された状態となる。
次に、ステップST1004で、読み込み位置がデバッグコマンド受信ポイントであるか否かを判定する。デバッグコマンド受信ポイントのデータは、デバッグコマンド登録部116のデバッグコマンド受信ポイント格納欄802に格納されており、判定の際には登録されたデバッグコマンドデータを参照する。
「YES 」と判定すれば、ステップST1005で、デバッグコマンド判定部105aが、受信電文に基づく未処理の受信データをチェック処理する。ステップST1006において、デバッグコマンド判定部105aは、デバッグコマンド登録部116に登録されているデバッグコマンド受信ポイント欄802とデバッグコマンドバイト列欄804のデータを参照し、未処理の受信データと比較する。そして、受信データがデバッグコマンド登録部116に登録されているデバッグコマンドと合致したかどうかを条件にして判定を行う。「YES 」と判定すれば、ステップST1007において、デバッグプログラム中のデバッグコマンド実行記述部108に記述された実行コードに基づいて処理を実行する。
図6の13行目から25行目は、デバッグコマンド実行記述部108を示すWordである「EXEC_DBG_CMD」の処理内容を定義している。まず、Word「GET_DBG_CODE」によって、デバッグコマンド登録部116を参照して、受信データに基づくコマンドIDのデータを返す処理を実行する。「DUMP_DATA 」は、データID901に対応するデータを出力するWordである。図6のデバッグコマンド実行記述部108の記述に従うと、受信したデバッグコマンドのコマンドIDが「1 」のときは、データIDが「2 」に対応するデータである読み込み位置が図4のLOC401のときの配列「RV_BUF」の値(データ内容格納欄907に記録されたデバッグ情報のデータ。以下同じ)をデータとして出力する。コマンドIDが「2 」のときは、データIDが「1 」に対応するデータである読み込み位置が図4のLOC402のときの変数「EDT 」の値をデータとして出力する。コマンドIDが「3 」のときは、データIDが「3 」に対応するデータである図4の読み込み位置がLOC403のときのスタックの状態と、データIDが4に対応するデータである図4の読み込み位置がLOC404のときのスタックの状態をデータとして出力する。通信処理部106は、出力したデータを含む信号を送信電文として家電機器シミュレータ112(家電機器側)に送信する。
図12は電文表示部118に表示された電文の内容を示す図である。アダプタ100へ送信する電文内容と、アダプタ100から受信した電文内容を表示する。図12は本実施の形態において、デバッグデータ登録部117の状態が図11である状態で、電文「FF 03 」を送信したときにアダプタ100から送信された電文を受信し、電文表示部118に表示した状態の例を示したものである。ここで、読み込み位置が「12C 」(図4のLOC403)及び「134 」(図4のLOC404)のスタックの状態「00」「01」が電文として送信されるが、スタックの要素のサイズは2バイトのリトルエンディアンで、スタックデータの始まりには、「FFFF」が付与されるものとする。また、Word「DUNP_DATA 」によって、アダプタ100から出力する電文は、データの内容そのままではなく、データの区切りや、データの種別となる情報を付与した形式であってもよい。
一方、ステップST1006において「NO」と判定すると、受信データを未処理にしたままステップST1008に進む。これにより、デバッグ支援処理段階は終了する。
次に、本体プログラム処理段階を実行する。ステップST1008で、本体プログラムの読み込み位置におけるシンボル(文字列)を読み込む。次にステップST1009で、シンボルが受信処理用のWordであるか否かを判定する。本実施の形態では、家電機器側の受信インタフェースからデバッグコマンドを受信する可能性があるので、ST1009の判定が「YES」となるのは、読み込んだ文字列が「FROM_EQUIPMENT」の場合である。
ステップST1009において「YES 」と判定すると、ステップST1010で、受信データがデバッグコマンド登録部116に登録されているデバッグコマンドであるか否かをデバッグコマンド判定部105aがチェックする。デバッグコマンドの場合はステップST1011の判定が「YES 」となる。ここは本体プログラム処理段階であるため、デバッグコマンドに基づいて処理を行わない。そこで、以後の読み込み位置におけるデバッグ支援処理段階で処理させるため、ステップ1014で受信データなしとみなし、受信データを未処理のままにする。
一方、ステップST1011において「NO」と判定すれば、受信データは本体プログラムに基づく処理を行うために用いられるデータであるため、ステップST1013で、本体プログラムに従って受信データの処理等を行う。
また、ステップST1008で読み込んだ文字列が「FROM_EQUIPMENT」以外の場合は、ステップST1009において「NO」と判定することになる。ステップST1012で、シンボルに対する通常の処理を行う。次に、ステップST1015で本体プログラムが終了したか否かを判定し、終了していない場合は、ステップ1001に戻って、本体プログラムの読み込み位置を更新する。以上のようにして、デバッグ支援処理を行い、例えば、電文表示部118に表示された電文の内容に基づいて本体プログラムのバグを発見することによりデバッグが行われる。
このようなデバッグの段階を経て、バグのない本体プログラムに基づくアダプタ100の機能を実用段階で用いる場合、例えば、デバッグ情報格納部109に格納するデータを空にしたり、デバッグプログラム自体を記憶部101から消去したりすれば、記述プログラム解釈部105は、デバッグ支援処理を実行することなく、本体プログラムだけに基づいた処理を実行することができる。
以上のように、本実施の形態の装置(アダプタ100)では、プログラムダウンロード管理部102により、本体プログラムだけでなく、デバッグプログラムについても外部装置110からダウンロード可能にし、従来のようなファームウェア形式ではなく、データ変更(書き換え)可能な記憶部101に記憶するようにしたので、本体プログラムのプログラム記述形式等に対応したデバッグプログラムを容易に記憶させ、記述プログラム解釈部105に実行させることが可能になり、エミュレータ等の高価な装置を用いなくても、例えば、高級言語により記述された本体プログラムに対応したデバッグプログラムに基づいてデバッグ支援処理を行うことができる。また、デバッグ情報格納部109にデバッグ支援処理に関するデータを格納することで、デバッグコマンドの判断、デバッグ情報を取得する本体プログラムの実行位置をデバッグプログラムに基づいて容易に設定することができる。さらに、プログラムダウンロード管理部102により、例えば、家電機器、サーバ等に接続することにより、機能実行、デバッグ支援処理等に必要なプログラムをダウンロードすることができる。
また、デバッグプログラムのデータ内容の変更が容易に行えるので、デバッグコマンド設定記述部107の記述に基づいて、デバッグ支援処理を行うためのデバッグコマンドの設定(定義)変更も容易に行うことができる。そのため、例えば通信処理部106において受信インタフェースが共有され、本体プログラムの処理に係るコマンド等の受信データとデバッグコマンドとの内容に重なりが認められない場合でも、重ならないように振り分けできる設定を容易に行うことができる。このため、特にデバッグ支援処理の対象装置が通信用のアダプタ100のような場合、搭載する本体プログラムを実機で動作検証可能となる。
さらに、処理記憶部105bに記憶された変数や配列の値をデバッグ情報として出力するだけでなく、本体プログラムを記述する言語がスタックを利用した逆ポーランド記法に基づいた言語の場合には、スタックの状態もデバッグ情報として出力できるようにしたので、例えば、スタックのオーバーフローなど、入出力の信号を確認しただけでは検出しにくいバグも検出可能となる。
実施の形態2.
上述の実施の形態では、外部装置110から本体プログラム、デバッグプログラムをダウンロードし、記憶部101に記憶させるようにしたが、これに限定するものではない。例えば、装置から着脱可能なメモリカード等の記憶手段を記憶部101として、別の装置で各プログラムを記憶させることもできる。
以上のように、この発明に係るアダプタ(変換装置)は、小型軽量化、省スペース化、低コストを図るのに、さらに製品の品質向上するのに有用である。
この発明のプログラムデバッグ支援装置を中心とするブロック図である。 アダプタ100を利用したホームネットワークの構成を示す図である。 プログラムダウンロード管理部102の処理動作のフローチャートである。 この発明の実施の形態の本体プログラムの例である。 コメントや余分な空白を削除した本体プログラムの例である。 この発明の実施の形態のデバッグプログラムの例である。 記述プログラム解釈部105の処理動作のフローチャートである。 この発明の実施の形態のデバッグコマンド登録部116の例である。 この発明の実施の形態のデバッグデータ登録部117の例である。 本体プログラムの処理時における処理動作のフローチャートである。 最新の値が記録されたデバッグデータ登録部117の例を示す図である。 電文表示部118に表示された画面の例である。
符号の説明
100 アダプタ、101 記憶部、102 プログラムダウンロード管理部、103 本体プログラム記述部、104 デバッグプログラム記述部、105 記述プログラム解釈部、105a デバッグコマンド判定部、105b 処理記憶部、105c 辞書記憶部、106 通信処理部、107 デバッグコマンド設定記述部、108 デバッグコマンド実行記述部、109 デバッグ情報格納部、110 外部装置、111 プログラム保持部、112 家電機器シミュレータ、113 電文作成部、114 電文送受信部、115 コントローラ、116 デバッグコマンド登録部、117 デバッグデータ登録部、118 電文表示部、801 コマンドID格納欄、802 デバッグコマンド受信ポイント格納欄、803 コマンド長格納欄、804 デバッグコマンドバイト列格納欄、901 データID格納欄、902 デバッグ情報設定ポイント格納欄、903 データ種別格納欄、904 デバッグシンボル格納欄、905 型格納欄、906 配列サイズ格納欄、907 データ内容格納欄。

Claims (7)

  1. データを含む信号の送受信処理を実行する通信処理部と、
    デバッグ対象となる本体プログラムと、少なくとも前記デバッグ支援処理に係るデバッグコマンドに関するデータが設定されており、前記本体プログラムの誤りを検出するデバッグ支援処理を行うためのデバッグプログラムを記憶する、書き換え可能な記憶部に記憶されている前記デバッグコマンドに関するデータに基づいて、前記通信処理部が受信した信号に係るデータが前記デバッグコマンドであるかどうかを判定するコマンド判定部及び前記デバッグコマンドに関するデータに規定された前記本体プログラムの所定実行位置におけるデバッグ情報のデータを検出して記録するデバッグ情報格納部を有し、前記本体プログラムに基づく処理を実行中に、前記所定実行位置における前記デバッグ情報のデータを前記本体プログラムから検出してデバッグ情報格納部に記録し、前記コマンド判定部が前記受信した信号に係るデータが前記デバッグコマンドであると判定すると、そのデバッグコマンドに対応する前記デバッグ情報のデータを含む信号を前記通信処理部に送信させる処理を行う記述プログラム解釈部と
    を備えることを特徴とするプログラムデバッグ支援装置。
  2. デバッグ対象となる本体プログラムと、少なくとも前記デバッグ支援処理に係るデバッグコマンドに関するデータが設定されており、前記本体プログラムの誤りを検出するデバッグ支援処理を行うためのデバッグプログラムを記憶する、書き換え可能な記憶部と、
    データを含む信号の送受信処理を実行する通信処理部と、
    前記通信処理部が受信した信号に係るデータが前記デバッグコマンドであるかどうかを、前記記憶部に記憶された前記デバッグコマンドに関するデータに基づいて判定するコマンド判定部及び前記デバッグコマンドに関するデータに規定された前記本体プログラムの所定実行位置におけるデバッグ情報のデータを検出して記録するデバッグ情報格納部を有し、前記本体プログラムに基づく処理を実行中に、前記所定実行位置における前記デバッグ情報のデータを前記本体プログラムから検出してデバッグ情報格納部に記録し、前記コマンド判定部が前記受信した信号に係るデータが前記デバッグコマンドであると判定すると、そのデバッグコマンドに対応する前記デバッグ情報のデータを含む信号を前記通信処理部に送信させる処理を行う記述プログラム解釈部と
    を備えることを特徴とするプログラムデバッグ支援装置。
  3. 前記通信処理部は、前記本体プログラムの処理に係るデータを含む信号と前記デバッグコマンドのデータを含む信号とを共通の入力インタフェースを介して受信することを特徴とする請求項1又は2記載のプログラムデバッグ支援装置。
  4. 前記本体プログラムは、スタックによるデータ構造を利用する逆ポーランド記法に基づく言語で記述されたデータで構成され、
    前記記述プログラム解釈部は、前記本体プログラムの所定位置における記述の処理を実行する際に、前記スタックに基づくデータをデバッグ情報のデータとして検出して記録し、前記デバッグコマンドに基づいて、前記検出したデバッグ情報のデータを含む信号を通信処理部に送信させることを特徴とする請求項1〜のいずれかに記載のプログラムデバッグ支援装置。
  5. 前記本体プログラム及び/又はデバッグプログラムをダウンロード処理して前記記憶部にプログラムを記憶させるダウンロード管理部をさらに備えることを特徴とする請求項1〜のいずれかに記載のプログラムデバッグ支援装置。
  6. 請求項1〜のいずれかに記載のプログラムデバッグ支援装置を有し、前記本体プログラムに基づいて、前記通信処理部に接続される2以上の通信回線の間のプロトコル変換処理を行うことを特徴とする通信用アダプタ。
  7. 少なくとも前記デバッグ支援処理に係るデバッグコマンドに関するデータが設定されており、また書き換え可能な記憶部に記憶された、デバッグ対象となる本体プログラムの誤りを検出するためプログラムデバッグ支援処理プログラムであって、
    前記本体プログラムに基づく処理を実行中に、前記デバッグコマンドに関するデータに規定された前記本体プログラムの所定実行位置におけるデバッグ情報のデータを検出して記録する処理と、
    通信処理部が受信した信号に係るデータが前記デバッグコマンドであるかどうかを前記デバッグコマンドに関するデータに基づいて判定し、前記デバッグコマンドであると判定すると、そのデバッグコマンドに対応する前記デバッグ情報のデータを含む信号を前記通信処理部に送信させる処理と
    コンピュータに実行させることを特徴とするプログラムデバッグ支援処理プログラム。
JP2006158482A 2006-06-07 2006-06-07 プログラムデバッグ支援処理装置及び通信用アダプタ並びにプログラムデバッグ支援処理プログラム Active JP4716929B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006158482A JP4716929B2 (ja) 2006-06-07 2006-06-07 プログラムデバッグ支援処理装置及び通信用アダプタ並びにプログラムデバッグ支援処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006158482A JP4716929B2 (ja) 2006-06-07 2006-06-07 プログラムデバッグ支援処理装置及び通信用アダプタ並びにプログラムデバッグ支援処理プログラム

Publications (2)

Publication Number Publication Date
JP2007328501A JP2007328501A (ja) 2007-12-20
JP4716929B2 true JP4716929B2 (ja) 2011-07-06

Family

ID=38928938

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006158482A Active JP4716929B2 (ja) 2006-06-07 2006-06-07 プログラムデバッグ支援処理装置及び通信用アダプタ並びにプログラムデバッグ支援処理プログラム

Country Status (1)

Country Link
JP (1) JP4716929B2 (ja)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62267841A (ja) * 1986-05-16 1987-11-20 Omron Tateisi Electronics Co プログラムデバツグ装置
JPS63189948A (ja) * 1987-02-03 1988-08-05 Fujitsu Ltd 対話形デバツガにおけるバツチ形デバツグ方式
JPH08221297A (ja) * 1995-02-16 1996-08-30 Chiyoufu Seisakusho:Kk プログラムデバッグ装置
JPH09319727A (ja) * 1996-05-31 1997-12-12 Hitachi Ltd データプロセッサ及びデータ処理システム
JPH11167501A (ja) * 1997-12-04 1999-06-22 Oki Tsushin System Kk プログラムデバッグシステムとそのデバッグ方法
JP2003323317A (ja) * 2002-05-08 2003-11-14 Nec Corp ネットワーク監視システムにおけるシステムデバッグ方式、システムデバッグ方法及びプログラム

Also Published As

Publication number Publication date
JP2007328501A (ja) 2007-12-20

Similar Documents

Publication Publication Date Title
US8898638B1 (en) Method and system for remote software debugging
JP5423830B2 (ja) 更新データ送信方法、ファームウェア更新システム及びホスト装置
JP4525681B2 (ja) プログラマブルコントローラ用プログラム生成装置、プログラマブルコントローラ用プログラム生成方法およびその方法のプログラムを記録した記録媒体
CN100489777C (zh) 智能平台管理接口韧体架构及其建立方法
JP2010015240A (ja) 検証システム及び検証装置
US20120011490A1 (en) Development system
US11573784B2 (en) Electronic device for updating on-board data of power off status and electronic device package assembly
JP2008293076A (ja) エラー判定プログラム、エラー判定方法、及び、電子機器
US8291270B2 (en) Request processing device, request processing system, and access testing method
JP4716929B2 (ja) プログラムデバッグ支援処理装置及び通信用アダプタ並びにプログラムデバッグ支援処理プログラム
US20060080636A1 (en) Method of building intelligent platform management interface firmware architecture
JP4967881B2 (ja) 更新データ送信方法、ファームウェア書き換えシステム及び更新データ送信プログラム
JP2010086318A (ja) デバッグシステム
CN110187897B (zh) 一种固件升级方法及装置
WO2020129324A1 (ja) モジュール及びこれを備える情報処理装置、並びにモジュールのプログラムデータを更新するプログラムデータ更新方法
CN101562007A (zh) 可自动更新韧件的显示控制装置及其更新方法
JP2005115440A (ja) コンピュータにアンインストールを行わせるためのコンピュータプログラム
JP2005010912A (ja) プログラムおよびコンピュータ
CN111367538B (zh) 免开机更新在板数据的电子装置
US11714608B2 (en) Device and method for handling programming language function
CN114416444A (zh) 一种PCIe板卡固件调试的方法、系统、设备和存储介质
JP2009123134A (ja) Usbホスト装置、及びusbホスト装置の製造方法
KR100224865B1 (ko) 로봇 제어방법
CN116069349A (zh) 板卡的参数修改方法、装置及系统
JP2604066B2 (ja) テキストファイル修正格納方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080718

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100423

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100518

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100706

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110322

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110329

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140408

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250