(57)【要約】【課題】簡単な構造で差分プログラムの転送を行うことが可能なマイクロコントローラ等を提供する。【解決手段】プログラムを格納するプログラムメモリ１５と、プログラムを実行するＣＰＵ１３とを備えたマイクロコントローラ１０において、プログラムメモリ１５に格納されたプログラムの差し替え対象部分のアドレスＢ，Ｅの範囲を保持するアドレスレジスタ１１，１２と、アドレスレジスタ１１，１２に保持された範囲のアドレスを生成し、外部から受け取る差分プログラムを書き込むアドレスとしてプログラムメモリ１５に供給するアドレス生成回路１４とを備え、外部から差分プログラムを受け取り、差分プログラムをプログラムメモリ１５の、アドレス生成回路１４によって生成されたアドレスに書き込むことによってプログラムの書き換えを行う。【選択図】        図１
2008299420.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを格納するプログラムメモリと、該プログラムメモリに格納されたプログラムを実行するＣＰＵとを備えたマイクロコントローラにおいて、
前記プログラムメモリに格納されたプログラムの差し替え対象部分のアドレスの範囲を保持するアドレスレジスタと、
前記アドレスレジスタに保持された差し替え対象部分のアドレスの範囲のアドレスを生成し、外部から受け取る差分プログラムを書き込むアドレスとして前記プログラムメモリに供給するアドレス生成回路とを備え、
外部から差分プログラムを受け取り、該差分プログラムを前記プログラムメモリの、前記アドレス生成回路によって生成されたアドレスに書き込むことによって前記プログラムの書き換えを行うことを特徴とするマイクロコントローラ。
【請求項２】
外部からの信号の入力により前記アドレスレジスタをクリアするクリア回路を備えたことを特徴とする請求項１記載のマイクロコントローラ。
【請求項３】
プログラムを格納するプログラムメモリと、該プログラムメモリに格納されたプログラムを実行するＣＰＵと、前記プログラムメモリに格納されたプログラムの差し替え対象部分のアドレスの範囲を保持するアドレスレジスタと、前記アドレスレジスタに保持された差し替え対象部分のアドレスの範囲のアドレスを生成するアドレス生成回路とを備えるマイクロコントローラに、
差分プログラムを入力するとともに、前記アドレス生成回路が生成したアドレスを、該入力した差分プログラムの書き込みアドレスとして前記プログラムメモリに供給し、該入力した差分プログラムを前記プログラムメモリの前記アドレス生成回路が生成したアドレスに書き込むことによって前記プログラムの書き換えを行うことを特徴とするプログラム書き換え方法。
【請求項４】
前記入力した差分プログラムが、次に入力すべき差分プログラムを書き込むアドレス範囲を示す情報を含んでおり、前記ＣＰＵが、該入力した差分プログラムの書き込みによって書き換えられたプログラムを実行することによって前記次に入力すべき差分プログラムを書き込むアドレス範囲を取得し、前記アドレスレジスタに書き込むことを特徴とする請求項３記載のプログラム書き換え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムメモリに格納されたプログラムを実行するＣＰＵを備えたマイクロコントローラ、およびマイクロコントローラのプログラムメモリに格納されたプログラムを書き換えるプログラム書き換え方法に関する。
【背景技術】
【０００２】
ＣＰＵとプログラムを格納するプログラムメモリとを内蔵し、外部から供給されるプログラムをプログラムメモリに転送する機能を有するマイクロコントローラの製造テストにおいては、実使用に即した出荷テストとして、ＬＳＩテスタを用いた機能テストが実施される。
【０００３】
機能テストで使用されるＬＳＩテスタは、プログラム転送部分とプログラム実行部分とで構成されるテストパターンを有している。プログラム転送部分には、ＣＰＵに実行させるテストプログラムが含まれており、プログラム実行部分には、マイクロコントローラに供給する信号の入力値と出力期待値のデータが含まれている。
【０００４】
機能テストでは、まず、テストパターンのプログラム転送部分に基づいて、ＬＳＩテスタがテストプログラムをマイクロコントローラに転送してプログラムメモリに格納させる。マイクロコントローラがシリアル通信インターフェースを有する場合には、このシリアル通信インターフェースがテストプログラムの転送に利用される。次に、ＬＳＩテスタは、プログラムメモリに格納されたテストプログラムをＣＰＵに実行させるとともに、テストパターンのプログラム実行部分に基づいて、マイクロコントローラの各入力ピンに対しＬＳＩテスタから所定の入力値を表わす信号を供給し、マイクロコントローラの各出力ピンから出力される信号を受信して出力期待値と比較する。
【０００５】
複雑な機能を有するマイクロコントローラのテストを行うためには、テストする機能に応じて、上述したテストプログラムの転送、入力信号の供給、および、出力信号と出力期待値との比較を繰り返す必要があり、長時間を要する。特に、ＬＳＩテスタからマイクロコントローラへのテストプログラムの転送時間はＣＰＵによるテストプログラムの実行時間よりも長い場合が多く、テスト時間においてテストプログラムの転送時間の占める割合が支配的となる。製造テストにおけるテスト時間の増大は、マイクロコントローラの製造コストの増大に繋がる。そこで、テストプログラムの転送時間を短縮するため、２回目以降のテストプログラムを転送する場合に、差分、すなわち前回転送したテストプログラムとは異なる部分だけを転送する技術が提案されている。
【０００６】
例えば、特許文献１には、製造テストの場面とは異なるが、インサーキットエミュレータを用いたプログラムのディバグ方式が示されている。このディバグでは、ホストコンピュータがメモリを内蔵するエミュレータに対し、プログラムの差分と転送先の編集情報を含む差分情報を転送し、エミュレータは、内蔵ファームウェアに基づいてメモリ上のプログラムを書き換え、プログラムを実行する。
【０００７】
また、特許文献２には、ＯＳが搭載された端末装置が示されている。端末装置は、ＯＳに基づきプログラム更新処理の前半で差分データを受信して記憶手段に格納し、差分データ配置情報を取得して格納する。次に、動作モード切替えを行い、後半でプログラム更新処理を行う。
【０００８】
また、特許文献３には、高速メモリと低速メモリを有するＤＳＰシステムにおいて、低速メモリには複数のプログラム差分と、これらプログラム差分の転送先アドレス等を含む差分テーブルとを格納し、低速メモリに格納されたプログラム差分を差分テーブルにしたがって高速メモリに転送し、高速メモリのプログラムを書き換えることが示されている。
【特許文献１】特開平１１−３２２１号公報
【特許文献２】特開２００６−１３３８８９号公報
【特許文献３】特開平１１−３２２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１または２に示された技術をマイクロコントローラのテストに適用しようとすると、マイクロコントローラ内部にＯＳまたは専用のファームウェアが必要となり、これらを内蔵するためのメモリおよび制御回路も必要となる。このため、製造コストが増大する。また、特許文献３に示された技術では、外部に差分テーブルのような情報を管理する手段を設ける必要があり、この方式をマイクロコントローラのテストに適用しようとすると、ＬＳＩテスタ側に、プログラム転送部分およびプログラム実行部分の他に、差分テーブルのような情報を管理するための手段を必要とする。したがって、マイクロコントローラのテストに適用することは困難である。
【００１０】
本発明は、上記事情に鑑み、簡単な構造で差分プログラムの転送を行うことが可能なマイクロコントローラおよびプログラム書き換え方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成する本発明のマイクロコントローラは、プログラムを格納するプログラムメモリと、このプログラムメモリに格納されたプログラムを実行するＣＰＵとを備えたマイクロコントローラであって、
上記プログラムメモリに格納されたプログラムの差し替え対象部分のアドレスの範囲を保持するアドレスレジスタと、
上記アドレスレジスタに保持された差し替え対象部分のアドレスの範囲のアドレスを生成し、外部から受け取る差分プログラムを書き込むアドレスとして上記プログラムメモリに供給するアドレス生成回路とを備え、
外部から差分プログラムを受け取り、この差分プログラムを上記プログラムメモリの、上記アドレス生成回路によって生成されたアドレスに書き込むことによって上記プログラムの書き換えを行うことを特徴とすることを特徴とする。
【００１２】
本発明のマイクロコントローラでは、アドレス生成回路がアドレスレジスタに保持された差し替え対象部分の範囲のアドレスを生成し、外部から受け取った差分プログラムは、プログラムメモリのうち生成されるアドレスに書き込まれる。したがって、アドレスレジスタにアドレスの範囲を設定し、差分プログラムを供給するだけで、プログラムメモリの差し替えが行われるため、専用ファームウェアやＯＳの格納のためのメモリを搭載せず、簡単な構成でテストプログラムの転送を行うことができる。
【００１３】
ここで、上記本発明のマイクロコントローラは、外部からの信号の入力により上記アドレスレジスタをクリアするクリア回路を備えたことが好ましい。
【００１４】
クリア回路を設けることにより、マイクロコントローラ内の他の部分に供給されるリセット信号ではアドレスレジスタが初期化されない構成とすることができる。これにより、リセット信号を他の目的、例えば、差分プログラムの転送開始を指示する信号として利用することができる。
【００１５】
また、上記目的を達成する本発明のプログラム書き換え方法は、プログラムを格納するプログラムメモリと、このプログラムメモリに格納されたプログラムを実行するＣＰＵと、上記プログラムメモリに格納されたプログラムの差し替え対象部分のアドレスの範囲を保持するアドレスレジスタと、上記アドレスレジスタに保持された差し替え対象部分のアドレスの範囲のアドレスを生成するアドレス生成回路とを備えるマイクロコントローラに、
差分プログラムを入力するとともに、上記アドレス生成回路が生成したアドレスを、この入力した差分プログラムの書き込みアドレスとして上記プログラムメモリに供給し、この入力した差分プログラムを上記プログラムメモリの上記アドレス生成回路が生成したアドレスに書き込むことによって上記プログラムの書き換えを行うことを特徴とする。
【００１６】
ここで、上記プログラム書き換え方法において、上記入力した差分プログラムが、次に入力すべき差分プログラムを書き込むアドレス範囲を示す情報を含んでおり、上記ＣＰＵが、この入力した差分プログラムの書き込みによって書き換えられたプログラムを実行することによって上記次に入力すべき差分プログラムを書き込むアドレス範囲を取得し、上記アドレスレジスタに書き込むことが好ましい。
【００１７】
ＣＰＵが差分プログラムで書き換えられたプログラムを実行すると、プログラムに含まれたアドレス範囲の情報をアドレスレジスタに書き込む。このアドレス範囲は、次に入力すべき差分プログラムを書き込むアドレス範囲である。したがって、ＬＳＩテスタ側では差分プログラムを転送するだけでアドレスレジスタの設定も行われることとなり、ＬＳＩテスタ側にアドレスレジスタの書込みのための特別の機能を設ける必要がない。
【発明の効果】
【００１８】
以上説明したように、本発明によれば、簡単な構造で差分プログラムの転送を行うことが可能なマイクロコントローラおよびプログラム書き換え方法が実現する。
【発明を実施するための最良の形態】
【００１９】
以下図面を参照して本発明の実施形態について説明する。
【００２０】
図１は、本発明の実施形態であるマイクロコントローラの機能テストを行うためのテストシステムの構成を示すブロック図である。
【００２１】
図１に示すテストシステム１は、マイクロコントローラ１０と、このマイクロコントローラの機能テストを行うＬＳＩテスタ２０とを有している。
【００２２】
マイクロコントローラ１０は、プログラムを実行するＣＰＵ１３と、プログラムを格納する内部ＲＡＭ１５と、外部のＬＳＩテスタ２０からプログラムを受け取り内部ＲＡＭ１５に書き込む、プログラム書込部としての送受信バッファ１７と、書き込みアドレスを生成するアドレス生成回路１４と、アドレス生成回路１４が生成する書き込みアドレスの範囲を保持する開始アドレスレジスタ１１および終了アドレスレジスタ１２と、開始アドレスレジスタ１１および終了アドレスレジスタ１２の保持内容を初期化するクリア回路１６とを有している。内部ＲＡＭ１５は、本発明にいうプログラムメモリの一例に相当する。
【００２３】
内部ＲＡＭ１５、開始アドレスレジスタ１１、および終了アドレスレジスタ１２は、マイクロコントローラ１０内に設けられたアドレスバスおよびデータバスによってＣＰＵ１３と相互に接続されている。開始アドレスレジスタ１１、および終了アドレスレジスタ１２は、ＣＰＵ１３によって書き換え可能となっている。また、内部ＲＡＭ１５は、ＣＰＵ１３によって読出しおよび書き込み可能となっている。なお、図１では、情報の流れを見やすくするため、アドレスバスおよびデータバスの図示を省略し、情報の流れを矢印で図示している。また、マイクロコントローラ１０には、機能テスト時にはＬＳＩテスタ２０に接続される汎用の入出力ピン、入出力ピンを介して外部との信号のやり取りを行う入出力回路、およびタイマ等の各種ペリフェラルも備えられているが、これらは公知の機能であり、詳細な説明や図示は省略する。
【００２４】
マイクロコントローラ１０のＣＰＵ１３は、内部ＲＡＭ１５に格納されたプログラムを読み出して実行する。ＣＰＵ１３は、ＬＳＩテスタ２０からリセット信号（Ｒｅｓｅｔ）を受信すると、内部状態を初期化する。また、ＣＰＵ１３は、プログラムに基づいて、開始アドレスレジスタ１１、および終了アドレスレジスタ１２にデータを書き込む。
【００２５】
開始アドレスレジスタ１１および終了アドレスレジスタ１２は、内部ＲＡＭ１５のうち、外部から転送されるプログラムで差し替えられる範囲を保持するためのものであり、それぞれが内部ＲＡＭ１５のアドレスを示す値を保持する。開始アドレスレジスタ１１および終了アドレスレジスタ１２は、ＣＰＵ１３によって書き込まれた値を保持する。
【００２６】
クリア回路１６は、ＬＳＩテスタ２０からクリア信号（Ｃｌｅａｒ）を受信すると、開始アドレスレジスタ１１および終了アドレスレジスタ１２が保持する値をクリア、すなわち所定の初期値に初期化する。例えば、開始アドレスレジスタ１１の値を内部ＲＡＭ１５の先頭アドレスの値に初期化し、終了アドレスレジスタ１２の値を内部ＲＡＭ１５の最終アドレスの値に初期化する。
【００２７】
アドレス生成回路１４は、内部ＲＡＭ１５と図示しないアドレスバスで接続されており、ＬＳＩテスタ２０からリセット信号を受信すると、アドレスを生成して内部ＲＡＭ１５に供給する。アドレス生成回路１４は、開始アドレスレジスタ１１に保持された値から、終了アドレスレジスタ１２に保持された値まで、連続する値を順次出力する。
【００２８】
送受信バッファ１７は、シリアル通信インターフェースの機能を有しており、シリアルデータ信号（Ｓｅｒｉａｌ  Ｄａｔａ）の形式でＬＳＩテスタ２０からプログラムを受信する。送受信バッファ１７は、内部ＲＡＭ１５と図示しないデータバスで接続されており、ＬＳＩテスタ２０から受信したシリアルデータ信号をバッファリングし、パラレル形式に変換した状態で内部ＲＡＭ１５に入力する。送受信バッファ１７から出力されたプログラムのデータは、内部ＲＡＭ１５のうち、アドレス生成回路１４が出力する値のアドレスに格納される。プログラムのデータは、アドレス生成回路１４がアドレスの値を順次出力するのに合わせて、ＬＳＩテスタ２０から送受信バッファ１７に順次送信される。ＬＳＩテスタ２０から送信されてくるプログラムは、内部ＲＡＭ１５のうち、開始アドレスレジスタ１１に保持された値が示すアドレスから、終了アドレスレジスタ１２に保持された値が示すアドレスまでの範囲に格納されることとなる。
【００２９】
また、アドレス生成回路１４は、順次出力した値が終了アドレスレジスタ１２に保持された値に達すると、アドレスの生成を停止するとともに、ＣＰＵ１３に対し転送終了信号を供給する。ＣＰＵ１３は、転送終了信号を受信すると、内部ＲＡＭ１５の所定の位置、例えば先頭アドレスからプログラムを読出して実行していく。機能テストにおいて、内部ＲＡＭ１５に格納されるプログラムは、マイクロコントローラ１０の各種機能をテストするためのテストプログラムであり、例えば、図示しない入力ピンに供給される信号の値を入出力回路を介して読込み、この値に基づいて演算を行い、演算結果の値を入出力回路を介して出力ピンから出力するといったものである。
【００３０】
図１に示すＬＳＩテスタ２０は、プログラム転送部分とプログラム実行部分とで構成されたテストパターンを有している。プログラム転送部分には、マイクロコントローラ１０のＣＰＵに実行させるテストプログラムが含まれており、プログラム実行部分には、マイクロコントローラの入力ピン（図示しない）に供給する信号の入力値と、出力ピン（図示しない）から出力される出力期待値とが含まれている。ＬＳＩテスタ２０は、従来公知の汎用ＬＳＩテスタであり、内部のより詳細な説明や図示は省略する。
【００３１】
マイクロコントローラ１０のすべての機能を網羅的にテストするためには、テストする機能毎に複数のテストプログラムを用意し、複数のテストプログラムで内部ＲＡＭ１５を書き換えながら機能のテストを行う。これら複数のテストプログラムには、マイクロコントローラ１０の内部状態の初期化や信号の入出力手続きといった共通の部分と、個々のテストに応じて互いに異なる部分とがある。マイクロコントローラ１０の機能テストを行うテストシステムでは、機能テストの開始後に最初のテストプログラムの全体を内部ＲＡＭ１５に書き込み、次のテストプログラムの書き込みでは前回のテストプログラムと異なる部分だけを差分プログラムとし、差分プログラムによって異なる部分を差し替える。これによって、２回目以降のテストプログラムの転送時間を短縮し、機能テストを効率的に行う。
【００３２】
図２、図３および図４は、図１に示すテストシステムにおいて、マイクロコントローラの機能テストを行う手順を示すフローチャートである。機能テストのうち、図２が第１のテストプログラム１（以降、第１のプログラム１と称する）によるテストに対応し、図３が第２のテストプログラム（以降、第２のプログラム２と称する）によるテストに対応し、図４が第３のテストプログラム（以降、第３のプログラム３と称する）によるテストに対応している。また、図５および図６は、図１に示す内部ＲＡＭに格納されるテストプログラムの、機能テストの進行に伴う変化を説明するメモリマップである。図５のパート（ａ）からパート（ｃ）まで、そして、図６のパート（ｄ）からパート（ｆ）までには、内部ＲＡＭに格納されるプログラムがこの順に変化する様子が示されている。
【００３３】
図２から図６までも参照して、図１に示すテストシステムによる機能テストの手順を説明する。
【００３４】
機能テストが開始すると、まず、ＬＳＩテスタ２０がマイクロコントローラ１０にクリア信号を供給する（図２のステップＳ１１）。これによって、クリア回路１６が、開始アドレスレジスタ１１の値を内部ＲＡＭ１５の先頭アドレスの値に初期化し、終了アドレスレジスタ１２の値を内部ＲＡＭ１５の最終アドレスの値に初期化する。図５のパート（ａ）に示す例では、ＣＰＵ１３のアドレス空間において内部ＲＡＭ１５がアドレス０ｘ００００（１６進表示）から０ｘｆｆｆｆまでに配置されており、また、開始アドレスレジスタ１１の値は０ｘ００００に初期化されて内部ＲＡＭ１５の先頭のアドレスＢ１を示し、終了アドレスレジスタ１２の値は０ｘｆｆｆｆに初期化されて内部ＲＡＭ１５の最後のアドレス値Ｅ１を示している。
【００３５】
次に、ＬＳＩテスタ２０がマイクロコントローラ１０にリセット信号を供給する（図２のステップＳ１２）。これによって、アドレス生成回路１４がアドレスを生成して内部ＲＡＭ１５に供給する。アドレス生成回路１４は、開始アドレスレジスタ１１に保持された値から、終了アドレスレジスタ１２に保持された値まで、連続する値を順次出力する。図５のパート（ａ）に示す例の場合には、０ｘ００００から０ｘｆｆｆｆまで順次増加していくアドレスの値を出力する。一方、ＬＳＩテスタ２０は、アドレス生成回路１４がアドレスの値を順次出力するのに合わせて、第１のプログラム１のデータを送受信バッファ１７に順次送信する。これによって、ＬＳＩテスタ２０から送信されてくる第１のプログラム１のデータは、内部ＲＡＭ１５の先頭アドレス（０ｘ００００）から最終アドレス（０ｘｆｆｆｆ）までの範囲に格納されることとなる。このようにして、第１のプログラム１が内部ＲＡＭ１５に転送される（ステップＳ１３）。なお、第１のプログラム１の大きさが、開始アドレスレジスタ１１の値から終了アドレスレジスタ１２の値で示す範囲の大きさよりも小さい場合には、大きさを合わせるためのスタッフィングデータとして、ダミーのプログラムコードが転送される。
【００３６】
ここで、図１に示すマイクロコントローラ１０は、開始アドレスレジスタ１１および終了アドレスレジスタ１２の初期化のためにはクリア回路１６を利用し、リセット信号によってはこれらのレジスタが初期化されない構成としている。これにより、図２のステップ１２のプログラムの転送、もしくは、図３，図４における差分プログラム転送の開始指示のために、リセット信号を利用することができる。
【００３７】
ＬＳＩテスタ２０から転送される第１のプログラム１には、図５のパート（ａ）に示すように、格納開始アドレス・終了アドレス設定の命令が埋め込まれている。これは、第１のプログラム１が実行された後、次のデータが書き込まれる内部ＲＡＭ１５の範囲を設定するためのものであり、より詳細には、ＣＰＵ１３に対し、開始アドレスレジスタ１１および終了アドレスレジスタ１２に特定の値を書き込ませる命令である。書き込ませる値の詳細については後述する。
【００３８】
アドレス生成回路１４によって生成したアドレスの値が終了アドレスレジスタ１２に保持された値に達すると、アドレス生成回路１４は、アドレスの生成を停止するとともに、ＣＰＵ１３に対し転送終了信号を供給する（ステップＳ１４）。これによって、ＣＰＵ１３は、内部ＲＡＭ１５の所定の位置、例えば先頭アドレスからプログラムを読出して実行していく（ステップＳ１５）。第１のプログラム１が実行されている間、ＬＳＩテスタ２０は、マイクロコントローラの図示しない入力ピンに入力値の信号を供給するともに、出力ピンから出力される信号を出力期待値と比較して機能テストを行う。また、ＣＰＵ１３が第１のプログラム１を実行すると、第１のプログラム１に埋め込まれた、格納開始アドレス・終了アドレス設定の命令を実行する。これによって、開始アドレスレジスタ１１および終了アドレスレジスタ１２の値が書き換えられる。
【００３９】
第１のプログラム１の実行が終了すると（ステップＳ１６）、第１のプログラム１についての機能テストが終了し、次に、図３に示す第２のプログラム２についての機能テストが開始する。
【００４０】
第２のプログラム２は、内部ＲＡＭ１５に書き込まれている第１のプログラム１とは同一の部分と、異なる部分とがある。この異なる部分をプログラム２差分とし（図５のパート（ｃ）参照）、図３に示す手順では、ＬＳＩテスタ２０からプログラム２差分のみを転送し、内部ＲＡＭ１５の一部を差し換えることによって、内部ＲＡＭ１５上に第２のプログラム２を完成する。
【００４１】
第１のプログラム１に埋め込まれていた、格納開始アドレス・終了アドレス設定の命令は、内部ＲＡＭ１５のうち、プログラム２差分によって差し換える範囲を指定する情報である。より詳細には、この命令は、内部ＲＡＭ１５のうち、プログラム２差分によって差し換える範囲の先頭のアドレスＢ２の値を開始アドレスレジスタ１１に書き込み、差し換える範囲の最後のアドレスＥ２の値を、終了アドレスレジスタ１２に書き込むものである。図２のステップＳ１５で、ＣＰＵ１３が第１のプログラム１を実行した結果、図５のパート（ｂ）に示すように、開始アドレスレジスタ１１の値はアドレスＢ２を示し、終了アドレスレジスタ１２の値はアドレスＥ２を示す。
【００４２】
図３に戻って説明を続ける。まず、ＬＳＩテスタ２０がマイクロコントローラ１０にリセット信号を供給する（ステップＳ２２）。これによって、アドレス生成回路１４がアドレスを生成して内部ＲＡＭ１５に供給する。アドレス生成回路１４は、開始アドレスレジスタ１１に保持されたアドレスＢ２を示す値から、終了アドレスレジスタ１２に保持されたアドレスＥ２を示す値まで、連続する値を順次出力する。一方、ＬＳＩテスタ２０は、アドレス生成回路１４がアドレスの値を順次出力するタイミングに合わせて、プログラム２差分のデータを送受信バッファ１７に順次送信する（ステップＳ２３）。したがって、内部ＲＡＭ１５のアドレスＢ２からアドレスＥ２までの範囲は、ＬＳＩテスタ２０から送信されてくるプログラム２差分によって差し替えられ（図５のパート（ｃ））、この結果、内部ＲＡＭ１５は、図６のパート（ｄ）に示すように第２のプログラム２で書き換えられることになる。
【００４３】
なお、プログラム２差分には、第２のプログラム２が実行された後、次のデータが書き込まれる内部ＲＡＭ１５の範囲を設定するため、第１のプログラム１とは別の格納開始アドレス・終了アドレス設定の命令が埋め込まれている。ここで設定されるのは、さらに次の第３のプログラム３のうち、第２のプログラム２と異なる部分からなるプログラム３差分（図６パート（ｆ）参照）で差し替えられる範囲を示すアドレスである。
【００４４】
アドレス生成回路１４によって生成したアドレスの値が終了アドレスレジスタ１２に保持されたアドレスＥ２の値に達すると、アドレス生成回路１４は、アドレスの生成を停止するとともに、ＣＰＵ１３に対し転送終了信号を供給する（ステップＳ２４）。これによって、ＣＰＵ１３は、内部ＲＡＭ１５の特定の位置からプログラムを読出して実行していく（ステップＳ２５）。これによって第２のプログラム２についての機能テストが実施される。また、ＣＰＵ１３が第２のプログラム２を実行することによって、開始アドレスレジスタ１１および終了アドレスレジスタ１２に、プログラム３差分（図６のパート（ｆ）参照）で差し替えられる範囲を示すアドレスＢ３，Ｅ３の値を書き込む（図６のパート（ｅ）参照）。
【００４５】
第２のプログラム２の実行が終了すると（ステップＳ２６）、第２のプログラム２についての機能テストが終了し、次に、図４に示す第３のプログラム３についての機能テストを開始する。
【００４６】
図３のステップＳ２５で、ＣＰＵ１３が第２のプログラム２を実行した結果、図６のパート（ｅ）に示すように、開始アドレスレジスタ１１の値はアドレスＢ３を示し、終了アドレスレジスタ１２の値はアドレスＥ３を示している。
【００４７】
この状態で、ＬＳＩテスタ２０がマイクロコントローラ１０にリセット信号を供給すると（ステップＳ３２）、アドレス生成回路１４がアドレスを生成して内部ＲＡＭ１５に供給する。アドレス生成回路１４は、開始アドレスレジスタ１１に保持されたアドレスＢ３を示す値から、終了アドレスレジスタ１２に保持されたアドレスＥ３を示す値まで、連続する値を順次出力する。一方、ＬＳＩテスタ２０は、アドレス生成回路１４がアドレスの値を順次出力するタイミングに合わせて、プログラム３差分のデータを送受信バッファ１７に順次送信する（ステップＳ３３）。したがって、内部ＲＡＭ１５のアドレスＢ３からアドレスＥ３までの範囲は、ＬＳＩテスタ２０から送信されてくるプログラム３差分によって差し替えられ（図６のパート（ｆ））、内部ＲＡＭ１５は、最終的に第３のプログラム３で書き換えられることになる。
【００４８】
アドレス生成回路１４によって生成したアドレスの値が、終了アドレスレジスタ１２に保持されたアドレスＥ３の値に達すると、アドレス生成回路１４は、アドレスの生成を停止するとともに、ＣＰＵ１３に対し転送終了信号を供給する（ステップＳ３４）。これによって、ＣＰＵ１３は、内部ＲＡＭ１５の特定の位置からプログラムを読出して実行していく（ステップＳ３５）。これによって第３のプログラム３についての機能テストが実施される。
【００４９】
第３のプログラム３の実行が終了すると（ステップＳ３６）、第３のプログラム３についての機能テストが終了し、機能テストのすべてが終了する。
【００５０】
本実施形態のマイクロコントローラをテストするシステムでは、アドレス生成回路１４が２つのアドレスレジスタ１１，１２に保持された差し替え対象部分の範囲のアドレスＢ，Ｅを生成する。外部から受け取ったプログラム差分は、内部ＲＡＭ１５のうちの生成されるアドレスの範囲に書き込まれる。したがって、２つのアドレスレジスタ１１，１２にアドレスの範囲を設定し、差分プログラムを供給するだけで、内部ＲＡＭ１５の差し替えが行われるため、専用ファームウェアやＯＳ、そしてこれらの格納用メモリを内蔵することなく、簡単な構成で短時間にテストプログラムの転送を行うことができる。
【００５１】
例えば、大きさがそれぞれ４ＫＢの２つのテストプログラムがあり、それぞれが２ＫＢの共通部分を有している例について転送時間を考える。シリアル通信の速度を１００ｋｂｐｓとすると、１つのプログラム全体（４ＫＢ）を転送する転送時間は０．３ｓｅｃである。これに対し、大きさが２ＫＢの差分プログラムを転送した場合、転送時間は約０．１５ｓｅｃである。仮に１０００個のテストサンプルについて機能テストを行う場合、２つのプログラムとも全体を転送すると、転送時間の累計は０．３×２×１０００＝６００ｓｅｃとなる。この一方、１０００個のテストサンプルに対して、２つのテストプログラムのうちの第１のプロクラムについてはプログラム全体を転送し、第２のプログラムは２ＫＢの差分プログラムを転送すると、転送時間の累計は（０．３＋０．１５）×１０００＝４５０ｓｅｃとなり、２つのプログラムとも全体を転送した場合の３／４となる。
【図面の簡単な説明】
【００５２】
【図１】本発明の実施形態であるマイクロコントローラの機能テストを行うためのテストシステムの構成を示すブロック図である。
【図２】図１に示すテストシステムにおいて、マイクロコントローラの機能テストを行う第１の手順を示すフローチャートである。
【図３】図２の手順に続いて、マイクロコントローラの機能テストを行う第２の手順を示すフローチャートである。
【図４】図３の手順に続いて、マイクロコントローラの機能テストを行う第３の手順を示すフローチャートである。
【図５】図１に示す内部ＲＡＭに格納されるテストプログラムの変化の前半を説明するメモリマップである。
【図６】図１に示す内部ＲＡＭに格納されるテストプログラムの変化の後半を説明するメモリマップである。
【符号の説明】
【００５３】
１    テストシステム
１０    マイクロコントローラ
１１    開始アドレスレジスタ（アドレスレジスタ）
１２    終了アドレスレジスタ（アドレスレジスタ）
１３    ＣＰＵ
１４    アドレス生成回路
１５    内部ＲＡＭ（プログラムメモリ）
１６    クリア回路
１７    送受信バッファ
２０    テスタ
【図１】
2008299420.tif 000003
【図２】
2008299420.tif 000004
【図３】
2008299420.tif 000005
【図４】
2008299420.tif 000006
【図５】
2008299420.tif 000007
【図６】
2008299420.tif 000008