(57)【要約】【課題】ＣＰＵの動作状態をより簡単に確認できるマイクロコンピュータを提供する。【解決手段】マイクロコンピュータ１のＣＰＵ１０は、制御プログラムを実行すると、自身に内蔵されているプログラムカウンタ１０ａのデータを、命令を１ステップ実行するごとにスタックメモリ１５に記憶させ、外部機器１８よりスタックメモリ１５に対するデータ転送要求があると、ＤＭＡコントローラ１６を起動して入出力回路１３へのデータ転送を実行させる。【選択図】図１
2008262470.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、
外部機器との間で送受信するデータをパラレル／シリアル変換して、入出力可能に構成される入出力ポートと、
デバッグ用記憶手段と、
このデバッグ用記憶手段に記憶されたデータを、前記入出力ポートに転送するデータ転送手段とを備え、
前記ＣＰＵは、制御プログラムを実行すると、自身に内蔵されているプログラムカウンタのデータを所定のタイミングで前記デバッグ用記憶手段に記憶させ、
外部より前記デバッグ用記憶手段の記憶内容について転送要求があると、前記データ転送手段を起動して、前記入出力ポートに対するデータ転送を実行させることを特徴とするマイクロコンピュータ。
【請求項２】
前記デバッグ用記憶手段は、前記ＣＰＵに内蔵されるスタックメモリであることを特徴とする請求項１記載のマイクロコンピュータ。
【請求項３】
前記データ転送手段は、ＤＭＡ（Direct Memory Access）コントローラであることを特徴とする請求項１又は２記載のマイクロコンピュータ。
【請求項４】
前記ＣＰＵは、前記プログラムカウンタのデータを、前記制御プログラムの命令を１ステップ実行する毎に、前記デバッグ用記憶手段に記憶させることを特徴とする請求項１ないし３の何れかに記載のマイクロコンピュータ。
【請求項５】
前記ＣＰＵは、前記プログラムカウンタのデータを、前記制御プログラムの命令が分岐命令であり、当該命令において指定されている分岐先のアドレスが、前記プログラムカウンタにセットされた場合に、前記デバッグ用記憶手段に記憶させることを特徴とする請求項１ないし３の何れかに記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、簡単な構成でデバッグを容易に行うことを可能としたマイクロコンピュータに関する。
【背景技術】
【０００２】
近年、マイクロコンピュータに対する高品質化の要求はますます高くなっている。特に車載用マイクロコンピュータや航空宇宙用マイクロコンピュータでは高信頼性を有するものが要求されており、製造者側においてはたとえ１台でも不良品が生じると多大な信用の失墜となる。また、製造プロセスの微細化とマイクロコンピュータの高性能化に伴い不具合が多様化しており、従来より行われている検査手法を用いて所定の検査を組み合わせただけでは十分に検出できなくなってきている。
【０００３】
マイクロコンピュータの高機能化に伴いユーザの使用方法も多様化するため、製造者側では、ユーザの使用方法の組合せ全てを事前に想定しマイクロコンピュータを検査することが要求されつつある。しかしこのようなことは困難となってきており、発生した不良品を解析して不良原因を特定し製造プロセスや検査に対してフィードバックすることがますます重要となっている。
【０００４】
このように不良品を解析する上で、所定の検査を組み合わせた特定の組み合わせのときのみ異常となる不良品は、ユーザ側で用意したプログラムを実行させると結果的に不具合と判断されることがあり、実際に不具合となる組み合わせを事前に想定することが困難な場合が多い。そこで、マイクロコンピュータの内部に設けられたアドレスバスやデータバス等を外部に開放し外部から解析する手法がある。
【０００５】
上記のように、外部にアドレスおよびデータのパラレルバスを開放しているマイクロコンピュータでは、ユーザが作成したプログラム（ユーザプログラム）をステップ的に実行しながら動作を確認し、不具合に至る原因を解析すること（デバッグ作業）は容易に可能となる。しかし、外部入出力ポートを極力減らす必要がある場合はバスを外部に開放できず、斯様なマイクロコンピュータでは、ユーザプログラムの実行時における動作の解析が困難となる。
【０００６】
例えば、特許文献１には、パラレルバスを直接外部に開放しない構成のマイクロコンピュータについてデバッグ作業をより容易に行えるように、ＣＰＵがテスト用プログラムを実行すると、当該ＣＰＵのレジスタ情報を１ステップ毎にスタックメモリに記憶させ、出力指示されると、スタックメモリに記憶されたレジスタ情報をテスト用機器に出力する構成が開示されている。
【特許文献１】特開２００６−３９６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１の構成では、ＣＰＵをテストモードに切替えてテスト用プログラムを実行した場合にしか、スタックメモリに記憶されたレジスタ情報を読み出すことができず、ＣＰＵがユーザプログラムを実行している場合の動作状態を迅速に確認することが困難であった。
本発明は上記事情に鑑みてなされたものであり、その目的は、ＣＰＵの動作状態をより簡単に確認することができるマイクロコンピュータを提供することにある。
【課題を解決するための手段】
【０００８】
請求項１記載のマイクロコンピュータによれば、ＣＰＵは、制御プログラムを実行すると、自身に内蔵されているプログラムカウンタのデータを所定のタイミングでデバッグ用記憶手段に記憶させる。そして、マイクロコンピュータは、外部よりデバッグ用記憶手段の記憶内容について転送要求があると、データ転送手段を起動して入出力ポートに対するデータ転送を実行させる。
即ち、デバッグ用記憶手段に記憶されているプログラムカウンタのデータを外部より読み出す必要がある場合は、転送要求を与えることで、データ転送手段により転送されたデータを入出力ポートを介してシリアルに受信できる。従って、マイクロコンピュータのデバッグ作業をより簡単に行うことが可能となる。
【０００９】
請求項２記載のマイクロコンピュータによれば、デバッグ用記憶手段を、ＣＰＵに内蔵されるスタックメモリとするので、プログラムカウンタのデータを極めて短時間で書き込み記憶させることができる。
【００１０】
請求項３記載のマイクロコンピュータによれば、データ転送手段をＤＭＡコントローラとするので、マイコンが製品仕様としてリソースの１つにＤＭＡコントローラを備えている場合は、そのＤＭＡコントローラを利用してデバッグ用記憶手段のデータを転送することができる。
【００１１】
請求項４記載のマイクロコンピュータによれば、ＣＰＵは、プログラムカウンタのデータを、制御プログラムの命令を１ステップ実行する毎にデバッグ用記憶手段に記憶させるので、記憶されたデータを外部より読み出すことで、ＣＰＵの動作状態を詳細に解析することができる。
【００１２】
請求項５記載のマイクロコンピュータによれば、ＣＰＵは、プログラムカウンタのデータを、制御プログラムの命令が分岐命令であり、当該命令において指定されている分岐先のアドレスがプログラムカウンタにセットされた場合にデバッグ用記憶手段に記憶させる。即ち、マイコンのプログラム動作に不具合がある場合に問題となるのは、例えば、サブルーチンコールなどにより分岐命令を実行した場合が多い。従って、分岐先のアドレスをデバッグ用記憶手段に記憶させることで、記憶させるデータ量を削減した場合でも、ＣＰＵの動作状態の解析に資することができる。
【発明を実施するための最良の形態】
【００１３】
（第１実施例）
以下、本発明の第１実施例について図１ないし７を参照して説明する。図１は、マイクロコンピュータ１の概略的な構成を示すものである。マイクロコンピュータ１は、ＣＰＵ１０、ユーザ用記憶手段としてのユーザＲＯＭ２、揮発性記憶手段としてのＲＡＭ１１、入出力回路１３（ポートブロックＰ，入出力ポート）、周辺バス１４、デバッグ用記憶手段としてのスタックメモリ１５、データ転送手段としてのＤＭＡコントローラ１６、クロック制御部３０を備えている。ポートブロックＰは、（ｎ＋１）本の入出力汎用ポートＰＢ０〜ＰＢｎ、クロック入力端子ＣＬＫ、動作モード設定端子ＭＤ０およびＭＤ１を備えている。
【００１４】
ＣＰＵ１０は、プログラムカウンタ１０ａを内蔵しており、その他、レジスタとして図示しないが例えばアキュムレータ、スタックレジスタ、割り込みレジスタ、フラグレジスタやその他の汎用レジスタ等、内部情報を保持する回路を内蔵している。また、スタックメモリ１５は、実際にはＣＰＵ１０の一部として構成されており、ＤＭＡコントローラ１６は、そのスタックメモリ１５に対して、ＣＰＵ１０の外部よりアクセス可能となるように構成されている。
【００１５】
マイクロコンピュータ１は、ポートブロックＰに対して外部にアプリケーション機器（図示せず）が接続されることによりシリアル通信可能に構成されている。即ち、入出力回路１３は、マイコン１と外部との間で送受信されるデータをパラレル／シリアル変換し、例えば、クロック同期シリアルインターフェイス（ＣＳＩ）やＵＡＲＴ（Universal Asynchronous Receiver Transmitter）等に準拠したシリアル通信機能を備えている。
【００１６】
マイコン１には、動作モード設定端子ＭＤ０およびＭＤ１に与えられるハイロウ信号（「Ｈ」「Ｌ」）に応じて、ユーザモード，解析モードが設定されるようになっている。また、ＣＰＵ１０は、プログラムの命令を実行する毎に、プログラムカウンタ１０ａのデータをスタックメモリ１５に書き込むようにロジックが構成されている。そして、スタックメモリ１５の領域全てに書き込みを行なうと、最も古いデータから順次上書きするようになっている。
図３は、マイコン１のシステムアドレスマップの一例を示すものであり、このアドレスマップの一部として例えば０ｘ＊＊＊＊ＦＦＦ〜０ｘ＊＊＊＊０００に、スタックメモリ１５の領域が割り当てられている。
【００１７】
図４は、ＤＭＡコントローラ１６の内部構成を示すものである。ＤＭＡコントローラ１６は、データ制御部２１，アドレス制御部２２，カウント制御部２３，ＤＭＡ制御部２４などの各種制御部と、ソースアドレスレジスタ２５，デスティネーションアドレスレジスタ２６，転送カウントレジスタ２７，コントロールレジスタ２８，トリガ要因レジスタ２９などの各種レジスタを備えている。
また、図５は、トリガ要因レジスタ２９に対して、ＣＰＵ１０が書き込み設定するトリガ要因の一例を示している。トリガ要因は４ビットデータで指定され、その１つとして、データ１００１ｂがスタックメモリ１５の転送要求となっている。
【００１８】
図７は、クロック制御部３０の内部構成を示すものである。クロック制御部３０は、外部発振入力部３１，分周器３２，ＰＬＬ逓倍回路３３，セレクタ３４と、分周レジスタ３５，逓倍レジスタ３６，クロック切替え割込みレジスタ３７，クロック分周レジスタ３８，クロックセレクトレジスタ３９などのレジスタ群を備えている。外部発振入力部３１は、外部よりＣＫＩＮ端子（ＣＬＫ端子）を介して入力された信号を、分周器３２及びＣＫＯＵＴ端子に出力する。
【００１９】
分周器３２は、分周レジスタ３５に設定された分周比に応じて、外部発振入力部３１より与えられたクロック信号を分周すると、ＰＬＬ逓倍回路３３及びセレクタ３４に出力する。ＰＬＬ逓倍回路３３は、逓倍レジスタ３６に設定された逓倍率に応じて入力されクロック信号を逓倍するとセレクタ３４に出力し、セレクタ３４は、クロックセレクトレジスタ３９に設定されたデータに応じて、分周器３２，ＰＬＬ逓倍回路３３の何れか一方を選択し、クロック分周レジスタ３８に出力する。クロック分周レジスタ３８は、設定された分周比に応じてセレクタ３４より選択されたクロック信号を分周し、ＣＰＵクロックとしてＣＰＵ１０に出力する。
尚、クロック切替え割込みレジスタ３７は、ＰＬＬ逓倍回路３３において生成されるクロック信号の周波数が切替わった場合に、ＣＰＵ１０に対して割り込みを発生させるか否かを設定するためのレジスタである。
【００２０】
次に、本実施例の作用について図２，図６も参照して説明する。図２は、マイコン１の動作モードを切替えて使用する場合の各状態を示す。以下、各動作モードについて説明する。
【００２１】
（１）ユーザモード（ユーザ使用状態）
ユーザモードは、動作モード設定端子ＭＤ１およびＭＤ０にグランド電圧（ロウ信号）を与えることで設定される。ユーザＲＯＭ２には、予めユーザによりユーザ用プログラムが記憶されており、ＣＰＵ１０は、ユーザＲＯＭ２に記憶された内容に従って動作する。図２（ａ）は、ユーザモードにおけるマイクロコンピュータ１の使用例を示している。即ち、クロック入力端子ＣＬＫに対して発振器１７が接続されており、この発振器１７によりクロック入力端子ＣＬＫにクロック信号が与えられてマイクロコンピュータ１が動作する。
【００２２】
（２）ユーザモード（解析状態）
図２（ｂ）は、ユーザモードにおける動作状態について解析を行う場合を示している。すなわち、入出力汎用ポートＰＢｎ〜ＰＢ０に対してテスト用機器（ＬＳＩテスタなど）として外部機器１８を接続する。マイコン１は、基本的には（１）と同様のユーザモードで動作しているが、その動作中に、外部機器１８がマイクロコンピュータ１にデータ転送要求を与えることで、マイコン１にスタックメモリ１５のデータを送信させる。
即ち、ＣＰＵ１０は、上述したようにプログラムの命令を実行する毎にプログラムカウンタ１０ａのデータをスタックメモリ１５に書き込んでいる。尚、その他のレジスタのデータも併せて、スタックメモリ１５に書き込むようにしても良い。
【００２３】
そして、解析者は、マイコン１の動作に不具合が発生したことを認識すると、外部機器１８によりスタックメモリ１５のデータ転送を指示するコマンドを送信する。すると、ＣＰＵ１０は、ＤＭＡコントローラ１６を起動して、スタックメモリ１５のデータを読み出して入出力回路１３に転送させる。入出力回路１３は、転送されたデータを外部機器１８に対してシリアル送信する。そして、解析者は、外部機器１８が受信したデータを解析することで、ユーザモードにおけるＣＰＵ１０のプログラム実行状態を解析することが可能となる。
【００２４】
（３）解析モード
解析モードは、ＣＰＵ１０が１ステップ毎にプログラムを実行した結果、プログラムカウンタ１０ａ等のレジスタ情報がどのように変化しているのかを外部機器１８により解析可能なモードである。主に不良解析時に使用される。解析モードは、動作モード設定端子ＭＤ１にグランド電圧（ロウ信号）、動作モード設定端子ＭＤ０に電源電圧（ハイ信号）が与えられることにより設定される。図２（ｃ）は、解析モードの使用例を示している。解析モードにおいては、マイクロコンピュータ１のクロック入力端子ＣＬＫに、外部機器１８が出力するクロック信号を与えるようにする。
【００２５】
この場合、ＣＰＵ１０は、クロック入力端子ＣＬＫから与えられるクロック信号に同期して、ユーザＲＯＭ２に記憶されたユーザプログラムを１ステップ毎に実行し、上記と同様に、プログラムカウンタ１０ａの値をスタックメモリ１５に逐一記憶させる。そして、解析者は不具合になったことを認識した時点でプログラムの実行をストップさせる。
この後、解析者が、（２）と同様に外部機器１８が受信したデータを解析することで、ユーザモードにおけるＣＰＵ１０のプログラム実行状態を解析することが可能となる。従って、解析モードにおいては、膨大な量のユーザプログラムが記憶されていたとしてもステップ実行させることで効率よく解析できる。
【００２６】
次に、ユーザモード，解析モードの夫々に対応した、クロック制御部３０の設定について説明する。
（１）ユーザモード
ユーザモードの場合、クロック制御部３０における各レジスタの設定は以下のようになる。
分周レジスタ：１／２分周（分周比：２）
逓倍レジスタ：４０逓倍
クロックセレクトレジスタ：ＰＬＬ側選択
クロック分周レジスタ：１／１分周
従って、この場合のＣＰＵクロックは、外部より入力されるクロック信号の２０倍の周波数となる。例えば、外部発振周波数が４ＭＨｚであれば、ＣＰＵクロックは８０ＭＨｚとなる。
【００２７】
（２）解析モード
一方、解析モードの場合は以下のようになる。
分周レジスタ：１／１分周
逓倍レジスタ：−−−（未使用）
クロックセレクトレジスタ：分周器側選択
クロック分周レジスタ：１／１分周
従って、この場合のＣＰＵクロックは、外部より入力されるクロック信号そのままの周波数となる。
【００２８】
次に、外部機器１８よりスタックメモリ１５のデータ転送要求があった場合のデータ転送処理について図６も参照して説明する。ＣＰＵ１０は、図６に示すステップＳ１〜Ｓ４までの処理を、初期設定処理などにおいて予め行っておく。すなわち、ＤＭＡコントローラ１６のソースアドレスレジスタ２５に、スタックメモリ１５におけるデータ転送の開始アドレスを書き込み（ステップＳ１）、続いて、デスティネーションアドレスレジスタ２６に転送先のアドレスを書き込む（ステップＳ２）。この場合、転送先は、入出力回路１３となる。それから、転送カウントレジスタ２７にデータ転送サイズを書き込み（ステップＳ３）、トリガ要因レジスタ２９に、スタックメモリ転送要求を示すデータ１００１ｂを書き込む（ステップＳ４）。尚、ＣＰＵ１０が製品としての制御プログラムに基づく動作によってＤＭＡ転送要求を発行する場合には、トリガ要因レジスタ２９の設定は不要である。
【００２９】
そして、この状態からＣＰＵ１０に対して外部からのデータ転送要求割り込みが発生すると、ＣＰＵ１０は、コントロールレジスタ２８に転送開始を指示するコマンドを書き込む。すると、ＤＭＡ制御部２４はＤＭＡ転送を開始する（ステップＳ５）。即ち、ソースアドレスが示すスタックメモリ１５のアドレスよりデータを読み出すと、そのデータを、入出力回路１３の内部にある送信バッファ（図示せず）に書き込む。すると、入出力回路１３は、送信バッファに書き込まれたデータを外部機器１８に対してシリアルに送信する。
【００３０】
以上のように本実施例によれば、マイクロコンピュータ１のＣＰＵ１０は、制御プログラムを実行すると、自身に内蔵されているプログラムカウンタ１０ａのデータを所定のタイミングでスタックメモリ１５に記憶させ、外部機器１８よりスタックメモリ１５に対するデータ転送要求があると、ＤＭＡコントローラ１６を起動して入出力回路１３へのデータ転送を実行させる。
したがって、外部機器１８は、スタックメモリ１５に記憶されているプログラムカウンタ１０ａのデータを読み出す必要がある場合は、転送要求を与えることで、ＤＭＡコントローラ１６により転送されたデータをシリアルに受信できるので、マイクロコンピュータ１のデバッグ作業をより簡単に行うことが可能となる。そして、スタックメモリ１５はＣＰＵ１０に内蔵されているので、プログラムカウンタ１０ａのデータを極めて短時間で書き込み記憶させることができる。
【００３１】
また、マイクロコンピュータ１が製品仕様としてリソースの１つにＤＭＡコントローラ１６を備えている場合は、そのＤＭＡコントローラ１６を利用してスタックメモリ１５のデータを転送することができる。さらに、ＣＰＵ１０は、プログラムカウンタ１０ａのデータを、制御プログラムの命令を１ステップ実行する毎にスタックメモリ１５に記憶させるので、記憶されたデータを外部より読み出せばＣＰＵ１０の動作状態を詳細に解析することができる。
【００３２】
（第２実施例）
図８は本発明の第２実施例を示すものであり、第１実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分について説明する。図８は、ＣＰＵ１０に替わるＣＰＵ４０の内部構成を示すものである。ＣＰＵ４０は、プログラムカウンタ１０ａに加えて、例えばサブルーチンコールにより分岐命令をフェッチしてデコードした場合に、プログラムカウンタ１０ａの値を格納するためのリンクポインタ（レジスタ）４１を備えている。即ち、図示しない命令デコーダロジックにより書込み信号ＷＲ２が出力されると、プログラムカウンタ１０ａに書き込まれるデータと同じデータが、リンクポインタ４１にも書き込まれるようになっている。
【００３３】
そして、スタックメモリ１５に対するデータ転送を行う転送回路４２は、書込み信号ＷＲ２が出力された場合、プログラムカウンタ１０ａの値を格納してスタックメモリ１５に転送を行なう。即ち、マイコンのプログラム動作に不具合がある場合に問題となるのは、サブルーチンコールなどにより分岐命令を実行した場合が多いので、その分岐先のアドレスをスタックメモリ１５に記憶させればＣＰＵ４０の動作状態を解析できる。
【００３４】
以上のように第２実施例によれば、ＣＰＵ４０は、プログラムカウンタ１０ａのデータを、制御プログラムの命令が分岐命令であり、当該命令において指定されている分岐先のアドレスがプログラムカウンタ１０ａにセットされた場合にスタックメモリ１５に記憶させるので、記憶させるデータ量を削減した場合でも、ＣＰＵ４０の動作状態の解析に資することができる。
【００３５】
本発明は上記し且つ図面に記載した実施例にのみ限定されるものではなく、以下のような変形または拡張が可能である。
デバッグ用記憶手段は、スタックメモリ１５に限ることなく、例えば、レジスタ，ＳＲＡＭやＤＲＡＭ，デュアルポートＲＡＭなどでも良い。これらは記憶容量や読出し速度などの用途に応じて選択すれば良い。また、マイコン１の製品としての仕様上搭載されているリソースを使用することで、リソースの増設を抑制できる。
ＤＭＡコントローラ１６の起動は、ＣＰＵ１０等が行うものに限らない。例えば、外部機器１８が、入出力回路１３を介してＤＭＡコントローラ１６に転送要求を直接発行してもよい。また、スタックメモリ１５が容量いっぱいまで書き込まれた場合に、当該メモリ１５周辺のハードウエアロジックがＤＭＡコントローラ１６に転送要求を発行するように構成してもよい。
【００３６】
データ転送手段は、ＤＭＡコントローラ１６に限ることなく、もう１つのＣＰＵやコプロセッサなどでも良い。
ＣＰＵ１０に、例えばブレークポイントアドレスを格納するレジスタ，グラムカウンタ１０ａとブレークポイントアドレスとを比較する機能を設けて、ＣＰＵ１０を、上記ブレークポイントまではプログラムを通常通り実行させ、ブレークポイント以降は、必要に応じてステップ実行させるように構成しても良い。斯様に構成すれば、プログラム解析に要する時間を大幅に短縮することができる。
【００３７】
スタックメモリ１５に対するプログラムカウンタ１０ａのデータ書込み頻度を、レジスタなどを用いてユーザが設定可能としても良い。例えば、第２実施例では、デフォルトでは分岐命令のデコード時にだけ書込み、詳細なデバッグが必要である場合には、第１実施例と同様に各命令毎に書き込むようにしても良い。
マイクロコンピュータ１の動作モードが、ユーザモードと解析モードとの２種類のみの場合、動作モード設定端子は１つのみで良い。
【図面の簡単な説明】
【００３８】
【図１】本発明の第１実施例であり、マイクロコンピュータの構成を概略的に示す機能ブロック図
【図２】各モードに応じた使用例を示す図
【図３】システムアドレスマップの一例を示す図
【図４】ＤＭＡコントローラの内部構成を示す機能ブロック図
【図５】トリガ要因レジスタに、ＣＰＵが書込み設定する要因の一例を示す図
【図６】スタックメモリのデータ転送要求があった場合に、ＣＰＵが行う設定処理を示すフローチャート
【図７】クロック制御部の内部構成を示す機能ブロック図
【図８】本発明の第２実施例であり、ＣＰＵの内部構成を示す図
【符号の説明】
【００３９】
図面中、１はマイクロコンピュータ、１０はＣＰＵ、１０ａはプログラムカウンタ、１３は入出力回路（入出力ポート）、１５はスタックメモリ（デバッグ用記憶手段）、１６はＤＭＡコントローラ（データ転送手段）、１８は外部機器（テスト用機器）、４０はＣＰＵを示す。
【図１】
2008262470.tif 000003
【図２】
2008262470.tif 000004
【図３】
2008262470.tif 000005
【図４】
2008262470.tif 000006
【図５】
2008262470.tif 000007
【図６】
2008262470.tif 000008
【図７】
2008262470.tif 000009
【図８】
2008262470.tif 000010