JP4725240B2 - データトレース方法およびトレースモジュール - Google Patents

データトレース方法およびトレースモジュール Download PDF

Info

Publication number
JP4725240B2
JP4725240B2 JP2005238029A JP2005238029A JP4725240B2 JP 4725240 B2 JP4725240 B2 JP 4725240B2 JP 2005238029 A JP2005238029 A JP 2005238029A JP 2005238029 A JP2005238029 A JP 2005238029A JP 4725240 B2 JP4725240 B2 JP 4725240B2
Authority
JP
Japan
Prior art keywords
trace
instruction
data
memory access
trace data
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.)
Expired - Fee Related
Application number
JP2005238029A
Other languages
English (en)
Other versions
JP2007052676A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2005238029A priority Critical patent/JP4725240B2/ja
Publication of JP2007052676A publication Critical patent/JP2007052676A/ja
Application granted granted Critical
Publication of JP4725240B2 publication Critical patent/JP4725240B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、プログラム組み込み機器等の開発の際に実施されるデバッグに必要なデータアクセスを記録するデータトレース方法およびトレースモジュールに関する。
マイクロプロセッサは、半導体技術の進歩に伴い、より高速化、大規模化が図られており、また、オン・チップでのキャシュメモリが内蔵されているものも多い。このような従来の高速化、大規模化が図られたマイクロプロセッサでは、組込み用の応用システムの開発段階ではインサーキットエミュレータ(ICE)を用いてマイクロプロセッサの実行履歴をみながらディバグする手法がとられている。
その際、効率よくデバッグを行う環境が必要であるが、メモリアクセスをすべて記録すると、描画処理などのメモリをコピーする処理もトレースの対象となるため、トレース用のメモリが大量に必要になり、コストアップの要因となる。また、出力するデータの量によっては、データの欠損やCPUの動作を止める必要があった。
このように単純にデータトレースをすべて取得した場合は、トレース容量が増大し、また、仮想メモリを使用したOS下では、アドレスによるフィルタもかけられないという問題もある。そのため、デバッグに必要なメモリアクセスを効率良くトレースする仕組みが要求されている。
そのため従来のデータトレース方式として、例えば、あらかじめトレースエリアを設けておき、どの関数が呼ばれたかをトレースするために、トレースを実施したい関数の先頭で、関数を識別するための番号及び関数に渡された引数をトレースエリアに書込む処理を追加してデータトレースを行う方式(例えば特許文献3〜4参照)が知られている。
また、特許文献1には、マイクロコンピュータで実行されるプログラムのデバッグを行うためのプログラムデバッグ装置において、マイクロコンピュータの実行が実行アドレスの分岐を伴うものであるか否かを判別し、分岐動作である場合には分岐実行信号を出力する判別手段と、この分岐実行信号が入力された場合に、この命令およびこの命令の前後所定ステップの命令のみを記憶する記憶手段とを備え、デバッグ上必要なトレース情報のみをトレースメモリに格納させることにより、デバッグ装置のメモリの記憶容量を小さくしてコストの低下と、デバッグ作業の効率を向上させる技術が記載されている。
また、特許文献2には、CPUコアとキャシュメモリを接続するCPU内部バスに、分岐命令の種類を解読する分岐命令デコーダと、解読された分岐命令の分岐アドレスをラッチする分岐アドレスラッチを接続し、また、前記分岐命令の種類と分岐アドレスを一時的に蓄えるバッファメモリと、この蓄えた情報を外部に出力するパラレルシリアル変換回路とを備え、前記バッファメモリに蓄えられた情報を、CPUのクロックに同期してトレース用のメモリに記憶させることにより、キャッシュメモリにヒットしたプログラムの実行中もプログラムの流れをトレース可能とする技術が記載されている。
特開平06−187193号公報 特開平11−039193号公報 特開平10−124350号公報 特開平11−065885号公報
しかし、プログラム内部にトレースを行うプログラムを埋め込み、どの関数がどのような引数で呼び出されたかをトレースするデータトレース方式では、そのプログラムが実行された時のデータしかトレースできず、特定のエリア(特定の変数)へのリードライトアクセスを行うプログラムのトレースを行うことはできないという問題がある。
また、特許文献1に記載の発明では、デバッグ上必要なトレース情報のみをトレースメモリに格納させることにより、デバッグ装置のメモリの記憶容量を小さくすることができ、コストの低減、デバッグ作業効率の向上を図っているが、通常、デバッグ対象のプログラムは、自らPCでコンパイル、リンクしてデバッグ対象のハードウェアのROMやRAMに転送して実行され、PC上には、デバッグ対象のプログラムがあるので、アドレスさえ分かれば、前後の命令は後から判別可能であって特にトレースする必要はなく、従って、分岐実行命令の前後所定ステップの命令を記憶するのは無駄なトレースである。さらに特許文献1に記載の発明では、関数の引数は後から解析することができないという問題がある。
また、特許文献2に記載の発明の場合、CPUが分岐命令を実行することを検出し、マイクロプロセッサ外部に分岐命令と分岐アドレスを出力してトレース可能としているため、例えば、マイクロプロセッサ内部のキャッシュメモリとCPU間でアクセス処理されて外部からは見えない命令が実行された場合でも、プログラムの実行順序を外部でトレースすることが可能となるが、この発明では、トレース機能を利用してデバッグをしているため、例えば、何かの処理でエラーが返ってきたとしても、エラー処理に走ったことは分かるが、エラーの要因が分からない、あるいは関数への引数が不正でエラーとなったが、どのように不正であったのかが分からない等、分岐トレース、つまりプログラムの流れ方が分かるだけであって、デバッグのための情報が不足する場合が生ずるという問題がある。
そのため、デバッグの際にメモリアクセス命令(何番地にどういう値を読み書きしたか)のトレースも必要となる場合が多くなっているが、前記したようにデータアクセスを全てトレースしたのでは、不要なデータも沢山トレースしてしまうことになり、メモリの容量を大きくする必要が生じ、また、デバッグ作業の効率も悪くなるという問題がある。
本発明の目的は、上記の問題点に鑑み、デバッグ用の特別な命令を埋め込むことなく特定のケースのみメモリアクセスをトレースする事により、デバッグにさほど有効でないメモリアクセスのトレースを省き、リアルタイム性を損なうことなく少量のメモリで、効果的なデバッグ環境を実現することにある。
一般に関数の呼び出しは、まずレジスタの退避が行われ、次に目的の関数の引数がセットされたのち、目的の関数のあるアドレスへ分岐し、分岐後に、フレームポインタの操作をした後、リンクレジスタやスタックポインタをスタックに積む動作が実行される。しかし、これらは直近のメモリアクセスのトレースデータおよび分岐トレースデータがあれば復元可能である。即ち、分岐命令のトレースと、メモリアクセス(何番地にどういう値を書いたか?何番地からどういうデータを読んだか?)のトレースがあれば、プログラムがどのように動いたのかを後から解析することが可能である。
本発明はこの点に着目し、フェッチしたプログラムコードが、メモリアクセス命令の内のフレームポインタ操作であり、かつ直前のトレースデータが分岐命令であるときには、前記フレームポインタ操作直後のトレースデータ出力をマスクすることにより、トレースデータを圧縮することを特徴とする。このトレースデータは、分岐命令直後のフレームポインタ操作から関数の入口にジャンプしてきたと考えられるので、直後のトレースデータをマスクしても、LR(リンクレジスタ:戻り先アドレス)は分岐命令のトレースから復元可能であり、また、SP(スタックポインタ)は直前のスタック回避操作のデータトレースから復元可能である。
本発明のトレースモジュールは、フェッチしたプログラムコードからトレース対象命令を判定する第1の判定手段と、該判定されたトレース対象命令がメモリアクセスであるか否かを判定する第2の判定手段と、該第2の判定手段によりメモリアクセスと判定された前記トレース対象命令がフレームポインタ操作であるか否かを判定する第3の判定手段と、該第3の判定手段によりフレームポインタ操作であると判定された前記トレース対象命令の直前のトレースデータが分岐命令であるか否かを判定する第4の判定手段と、該第4の判定手段により直前のトレースデータが分岐命令であると判定された直後のトレースデータ出力をマスクする手段を備えていることを特徴とする。
また本発明のデータトレース用プログラムは、コンピュータにデバッグ対象プログラムからトレースデータを出力する処理を実行させるためのプログラムであって、フェッチしたプログラムコードが分岐命令であるとき、当該分岐命令の分岐トレースデータを出力する処理と、フェッチしたプログラムコードがメモリアクセス命令であるが、フレームポインタ操作ではないとき、当該メモリアクセスのトレースデータを出力する処理と、フェッチしたプログラムコードがメモリアクセス命令であって、かつフレームポインタ操作であるとき、直前のトレースデータが分岐命令であるか否かを判定する処理と、該判定の結果、直前のトレースデータが分岐命令ではないとき、前記メモリアクセスのトレースデータを出力する処理と、前記判定の結果、直前のトレースデータが分岐命令であるとき、前記フレームポインタ操作直後のトレースデータ(データアクセス)出力をマスクする処理を実行させることを特徴とする。
本発明では、フェッチされたプログラムコードがトレース対象命令であっても、それがメモリアクセス命令であり、フレームポインタ操作であり、かつ直前のトレースデータが分岐命令である場合には、直後のトレースデータ出力をマスク(抑止)する事により、関数コールの度に行われるレジスタ退避のトレースデータを圧縮することができる。従って、デバッグ用の特殊な命令を使用しなくても、特定の命令の組み合わせをトリガーとすることにより、トレースデータ出力を制御してデバッグに支障なくトレースデータを圧縮することが可能となる。
本発明は、特定の命令の組み合わせをトリガーとして出力すべきトレースデータを制御しているので、デバッグ用の特殊な命令を使用することなく、関数コールの度に行われるレジスタ退避のトレースデータを圧縮することが可能となり、リアルタイム性を損なうことなく少量のメモリで、効果的なデバッグ環境を実現することができる。
即ち、フェッチされたプログラムコードが、分岐命令直後かつフレームポインタの操作後のメモリアクセスに該当するときには、該データは、戻り元の番地であるリンクレジスタのデータ、スタックポインタをスタックに退避する動作を実行するためのデータであるので、分岐情報のトレースデータやメモリアクセストレース情報から復元可能である。本発明では、この復元可能な分岐命令直後かつフレームポインタの操作後のメモリアクセスデータを、トレースデータの対象から除外(マスク)するので、トレースするデータ量を減らすことができ、トレースデータを記憶するメモリ容量を減らすことが可能となる。
図1は、本発明の実施形態を示すトレースシステムのブロック図である。
図1において、CPU201は、CPUコア202、トレースモジュール203、キャッシュメモリ204からなり、トレースモジュール203は、外部のI/F205と接続され、I/F205はトレースデータ表示装置206と接続されている。通常、I/F205はICEであり、トレースデータ表示装置206はデバッガソフトがインストールされたPCである。CPU201は、外部メモリ207と接続されている。プログラムは、外部メモリ207に保存されており、キャッシュメモリ204を通じてアクセスされる。
図2は、本実施形態におけるトレースモジュール203の動作を示すフローチャートである。この動作はハードウェア構成、あるいはトレースモジュール203に実装された制御プログラム構成のいずれでも実行可能である。以下図1〜図2を参照して、本実施形態の動作について説明する。
トレースモジュール203は、CPUコア202のバスを監視し、トレース対象命令となる分岐命令とメモリアクセス命令を検出すると、以下の処理を実行する。なお、本実施形態では、キャッシュメモリ204の内側にトレースモジュール203が接続されているため、トレースモジュール203はCPUコア202のバスを直接監視することができるので、キャッシュメモリ204の影響は受けない。
トレースモジュール203は、外部メモリ207より読み出されてフェッチされたプログラムコードがトレース対象命令であるか否かを判定し(S101)、トレース対象命令でなければ(S101、NO)、次にフェッチされるプログラムコードの監視に移行する(S108)。一方、フェッチされたプログラムコードがトレース対象命令である場合(S101、YES)には、メモリアクセス命令と分岐命令の何れであるかを判定する(S102)。
分岐命令であれば(S102、NO)、分岐トレースデータ(ジャンプ元アドレス、ジャンプ先アドレス)をI/F205へ出力して(S103)、次にフェッチされるプログラムコードの監視に移行する(S108)。一方、フェッチされたプログラムコードのトレース対象命令がメモリアクセス命令である場合(S102、YES)には、次に当該命令が、フレームポインタ操作(フレームポインタの退避操作)であるか否かを判定する(S104)。フレームポインタ操作でない場合(S104、NO)には、このメモリアクセストレースデータをI/F205へ出力して(S105)、次にフェッチされるプログラムコードの監視に移行する(S108)。
一方、メモリアクセス命令がフレームポインタ操作である場合(S104、YES)には、次に直前のトレースデータが分岐命令であるか否かを判定する(S106)。フレームポインタの操作の直前のトレースデータが分岐命令ではないとき(S106、NO)には、このメモリアクセストレースデータ(読み込みの場合は読み取り元アドレスおよび値、書き込みの場合は書き込み先アドレスおよび値)をI/F205へ出力して(S105)、次にフェッチされるプログラムコードの監視に移行する(S108)。
一方、フレームポインタ操作の直前のトレースデータが分岐命令であるとき(S106、YES)には、このトレースデータは、分岐命令直後のフレームポインタ操作から関数の入口にジャンプしてきたものと考えられ、その内容はLR(リンクレジスタ:戻り先アドレス)またはSP(スタックポインタ)である。しかし、関数の入口にジャンプしてきた後の最初のメモリアクセスを除くこれらのトレースデータは、分岐命令のトレースデータおよび直前のスタック回避操作のデータトレースから復元可能である。
そこでこの直後のトレースデータ出力については、これをマスクして外部のI/F205には出力しないように制御する(S107)。そして次にフェッチされるプログラムコードの監視に移行する(S108)。これにより、後で復元可能なLR(リンクレジスタ:戻り先アドレス)またはSP(スタックポインタ)のデータはトレースデータ対象から除外され、デバッグに支障なくトレースデータの圧縮が行われる。
本実施形態によれば、トレースモジュール203によりフェッチされたプログラムコードがトレース対象命令であっても、それがメモリアクセス命令であり、フレームポインタ操作であり、かつ直前のトレースデータが分岐命令である場合には、直後のトレースデータは、関数コールの度に行われるレジスタ退避のトレースデータであって、再現可能であるので、その出力をマスク(抑止)する。従って、その分メモリに記録すべきトレースデータ量を圧縮することができる。
なお、上記実施例では、ステップ102,104,106を満足するトレース対象命令については、全てマスク対象としているが、図1のステップ107において、マスクするメモリアクセス命令の数を指定する事も可能である。
また、コンパイラと協調して、スタックポインタ、リンクレジスタ、フレームポインタ、プログラムカウンタなどは必ず同じ場所に置く様にして、不要なデータを効率的に出さないようにすることもできる。
例えば、関数の入口に以下のようなアセンブラが生成されている場合、
mov r12,sp
push {fp,r12,lr,pc}
( fp:フレームポインタ、r12:汎用レジスタ、 sp:スタックポインタ、 lr:リンクレジスタ、 pc:プログラムカウンタ、 mov:代入命令、 push:スタック退避)、
{}に入っているレジスタをスタックに退避するが、直前にスタックポインタをr12レジスタに入れているので、毎回毎回上記のようなコードであれば、マスク可能なデータが分かる。即ち、fpの次のr12,lr,pcはマスクしても、全て後から推測可能となる。
しかし、時にコンパイルの結果が
mov r12,sp
push
となる場合には固定的な処理が出来なくなり、その場合にはr3,r4はマスクできない。
本発明の実施形態を示すブロック図である。 本実施形態の動作を示すフローチャートである。
符号の説明
201 CPU
202 CPUコア
203 トレースモジュール
204 キャッシュメモリ
205 I/F
206 トレースデータ表示装置
207 外部メモリ

Claims (6)

  1. 分岐命令とメモリアクセス命令をトレース対象命令として分岐トレースデータ及びメモリアクセストレースデータを出力するデータトレース方法において、
    フェッチしたプログラムコードが、メモリアクセス命令の内のフレームポインタをスタックに退避するフレームポインタ操作であり、かつ直前のトレースデータが分岐命令であるとき、前記フレームポインタ操作直後の、スタックに退避する動作を実行するための命令のトレースデータ出力をマスクすることにより、トレースデータを圧縮することを特徴とするデータトレース方法。
  2. 前記メモリアクセス命令が前記フレームポインタ操作ではないとき、または前記メモリアクセス命令が前記フレームポインタ操作であって且つ直前のトレースデータが分岐命令ではないときには、メモリアクセストレースデータとして出力することを特徴とする請求項1に記載のデータトレース方法。
  3. 分岐命令とメモリアクセス命令をトレース対象命令として分岐トレースデータ及びメモリアクセストレースデータを出力する手段を備えたトレースモジュールにおいて、
    フェッチしたプログラムコードから前記トレース対象命令を判定する第1の判定手段と、該第1の判定手段によりトレース対象命令と判定されたプログラムコードがメモリアクセスであるか否かを判定する第2の判定手段と、該第2の判定手段によりメモリアクセスと判定された前記トレース対象命令がフレームポインタをスタックに退避するフレームポインタ操作であるか否かを判定する第3の判定手段と、該第3の判定手段により前記フレームポインタ操作であると判定された前記トレース対象命令の直前のトレースデータが分岐命令であるか否かを判定する第4の判定手段と、該第4の判定手段により直前のトレースデータが分岐命令であると判定された前記フレームポインタ操作直後の、スタックに退避する動作を実行するための命令のトレースデータ出力をマスクする手段を備えていることを特徴とするトレースモジュール。
  4. 前記第2の判定手段でメモリアクセスではないと判定されたトレース対象命令から分岐トレースデータを出力する手段を備えていることを特徴とする請求項3に記載のトレースモジュール。
  5. 前記第3の判定手段で前記フレームポインタ操作ではないと判定されたメモリアクセス命令、および前記第3の判定手段で前記フレームポインタ操作であると判定され且つ前記第4の判定手段で前記フレームポインタ操作直前の命令が分岐命令ではないと判定されたトレース対象命令からメモリアクセストレースデータを出力する手段を備えていることを特徴とする請求項3または4に記載のトレースモジュール。
  6. コンピュータにデバッグ対象プログラムからトレースデータを出力する処理を実行させるためのプログラムであって、
    フェッチしたプログラムコードが分岐命令であるとき、当該分岐命令の分岐トレースデータを出力する処理と、フェッチしたプログラムコードがメモリアクセス命令であるが、フレームポインタ操作ではないとき、当該メモリアクセスのトレースデータを出力する処理と、フェッチしたプログラムコードがメモリアクセス命令であって、かつフレームポインタをスタックに退避するフレームポインタ操作であるとき、直前のトレースデータが分岐命令であるか否かを判定する処理と、該判定の結果、直前のトレースデータが分岐命令ではないとき、前記メモリアクセスのトレースデータを出力する処理と、前記判定の結果、直前のトレースデータが分岐命令であるとき、前記フレームポインタ操作直後の、スタックに退避する動作を実行するための命令のトレースデータ(データアクセス)出力をマスクする処理を実行させることを特徴とするデータトレース用プログラム。
JP2005238029A 2005-08-18 2005-08-18 データトレース方法およびトレースモジュール Expired - Fee Related JP4725240B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005238029A JP4725240B2 (ja) 2005-08-18 2005-08-18 データトレース方法およびトレースモジュール

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005238029A JP4725240B2 (ja) 2005-08-18 2005-08-18 データトレース方法およびトレースモジュール

Publications (2)

Publication Number Publication Date
JP2007052676A JP2007052676A (ja) 2007-03-01
JP4725240B2 true JP4725240B2 (ja) 2011-07-13

Family

ID=37917071

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005238029A Expired - Fee Related JP4725240B2 (ja) 2005-08-18 2005-08-18 データトレース方法およびトレースモジュール

Country Status (1)

Country Link
JP (1) JP4725240B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7870541B1 (en) * 2004-11-01 2011-01-11 Wind River Systems, Inc. Context tracing for software with a frame pointer and a stack pointer and with a stack pointer but without a frame pointer
JP4846493B2 (ja) * 2006-09-05 2011-12-28 富士通セミコンダクター株式会社 デバッグシステム及びデバッグ回路

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06274369A (ja) * 1993-03-19 1994-09-30 Hitachi Ltd 最適化プログラムのデバッグ方式
JPH08161195A (ja) * 1994-12-05 1996-06-21 Matsushita Electric Ind Co Ltd アドレストレース格納装置及びアドレストレース生成方法
JP4088379B2 (ja) * 1999-01-29 2008-05-21 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイル方法及び装置、並びにスタック・トレース方法及び装置
JP2003085000A (ja) * 2001-09-10 2003-03-20 Mitsubishi Electric Corp トレース情報生成装置およびその方法

Also Published As

Publication number Publication date
JP2007052676A (ja) 2007-03-01

Similar Documents

Publication Publication Date Title
US8266608B2 (en) Post-compile instrumentation of object code for generating execution trace data
US8478948B2 (en) Method and system for efficient tracing and profiling of memory accesses during program execution
US6708326B1 (en) Method, system and program product comprising breakpoint handling mechanism for debugging and/or monitoring a computer instruction sequence
JP5523872B2 (ja) プログラムの動的分析方法及びその装置
JP3731887B2 (ja) 繰返し命令の追跡許可
JP5905911B2 (ja) シングルステップ実行を用いる診断コード
TWI461908B (zh) 於即時指令追蹤紀錄中之除錯動作的選擇性紀錄技術
US8037363B2 (en) Generation of trace elements within a data processing apparatus
CN113742119A (zh) 嵌入式系统的调用栈回溯方法、装置和计算机设备
US20070006158A1 (en) Instruction execution device, debugging method, debugging device, and debugging program
US7353500B2 (en) Suppressing execution of monitoring measurement program pointed to by inserted branch after threshold number of coverage to reduce instruction testing overhead
KR20110070468A (ko) 인스트루먼테이션 실행 장치 및 방법
US20120036501A1 (en) Method and System for Capturing System and User Events Using Hardware Trace Devices
JP4725240B2 (ja) データトレース方法およびトレースモジュール
US7496899B2 (en) Preventing loss of traced information in a data processing apparatus
JP5532144B2 (ja) プロセッサ、電子制御装置、作成プログラム
CN111931191A (zh) Linux平台二进制软件堆溢漏洞动态检测方法及系统
US8499285B2 (en) Method of logging stack trace information
US6615368B1 (en) System and method for debugging highly integrated data processors
KR20190076217A (ko) 멀티 코어를 이용한 동적 바이너리 인스트루멘테이션 장치 및 방법
JP2007172414A (ja) 組込機器向けのコンパクトコアダンププログラム及びコンパクトコアダンプを用いた方法
JP2009230479A (ja) マイクロプロセッサ
JPH1165885A (ja) ソフトウェアディバッグ装置及びソフトウェアディバッグ方法
CN111045658B (zh) 访问类的静态成员的方法和装置
KR101225577B1 (ko) 어셈블리 언어 코드의 분석 장치 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080711

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20090702

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: 20100525

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101207

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110203

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110315

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110328

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: 20140422

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees