(57)【要約】【課題】受信したデータの信頼性を向上させ、送信受信処理の高速化を図り、装置構成を簡易化することができるプログラムダウンロード方式を提供する。【解決手段】ダウンロードするファイルの総行数に関する情報を付加して該ファイルを送信し、受信したデータの総行数と、受信データの総行数を表すデータとを比較し、これらが一致した場合にのみ、不揮発性メモリの更新を許可する。さらに、受信したダウンロードファイルを格納したエリアのサムを計算し、計算したサムを不揮発性メモリのサム格納エリアに書き込み、装置の立ち上げ時または／及び一定周期ごとにプログラムエリアのサムを計算して自己診断を行うようにしてもよい。【選択図】  図１
2004288074.tif 000002
【特許請求の範囲】
【請求項１】
ダウンロードするファイルの総行数に関する情報を付加して該ファイルを送信し、
受信したデータの総行数と、受信データの総行数を表すデータとを比較し、これらが一致した場合にのみ、不揮発性メモリの更新を許可することを特徴とするプログラムダウンロード方式。
【請求項２】
受信したダウンロードファイルを格納したエリアのサムを計算し、
計算したサムを不揮発性メモリのサム格納エリアに書き込み、
装置の立ち上げ時または／及び一定周期ごとにプログラムエリアのサムを計算して自己診断を行うことを特徴とする請求項１記載のプログラムダウンロード方式。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムダウンロード方式に関し、特に、ＰＣ（パーソナルコンピュータ）などと通信することで、フラッシュメモリなどの不揮発性メモリを更新するプログラムダウンロード方式に関する。
【０００２】
【従来の技術】
従来のプログラムダウンロード方式では、図７に示すように、ファイル転送機能を有するＰＣ、あるいはファイル転送機能を持つプログラムをインストールしたＰＣなどが、アスキー形式に保存されたインテルヘクサフォーマットなどのプログラムファイルが書きこまれたメディアからデータを読み出して送信する。
【０００３】
ダウンロードの対象装置は、シリアルコントローラ６０がＰＣ１０から受信したデータをＣＰＵ３０に転送し、ＣＰＵ３０は、シリアルコントローラ６０から転送されたデータをＲＡＭ５０上に保存していくという動作を繰り返す。
【０００４】
そして、全データを受信したＣＰＵ３０は、ＰＣ１０からフラッシュメモリ４０の更新の指示を受けると、ＰＣ１０から受信してＲＡＭ５０上に格納しておいたダウンロードファイルのデータをフラッシュメモリ４０に書き込む。
【０００５】
この方法では、受信時にエラーが発生したか否かの判断をしていないＲＡＭ５０上に格納したダウンロードファイルのデータを、そのままフラッシュメモリ４０に書き込んでしまう可能性があり、データの信頼性が低いという問題点があった。
【０００６】
そこで、受信したダウンロードファイルのデータの信頼性を向上させるため、特許文献１に記載のプログラムダウンロード方式では、図８に示すように、サム計算回路８０によってダウンロードファイルのデータのサムを計算して、ＲＡＭ５０上に格納したデータと、予めダウンロードファイルに付加してあるサムとを比較して、受信して格納したＲＡＭ５０上のダウンロードファイルのデータを評価してから書き込む。
【０００７】
【特許文献１】
特開２０００−１２２８８４号公報
【０００８】
【発明が解決しようとする課題】
しかし、上記従来のプログラムダウンロード方式においては、行ごとに付加されるサムのチェックのみでは、例えば、インテルヘクサフォーマットのファイルであれば、レコードマーク（’：’）からニューライン（’￥ｎ’）コードまでの１行全部のデータを受信できなかった場合には、受信データの異常を検出することができないため、受信したダウンロードファイルのデータの信頼性に問題があった。
【０００９】
また、ダウンロードファイルに付加するサムに影響を与えないようなデータが受信できなかった場合、例えば、ダウンロードファイルがインテルヘクサフォーマットとしたときに、下記のような行
2004288074.tif 000003
すなわち、レコードマーク（’：’）からニューライン（’￥ｎ’）コードのサムが０ｘ００の行のデータを受信できなかった場合には、ダウンロードファイル全体のサムが一致してしまうため、受信データの異常を検出することができず、あるいは、サムが０ｘ００になるような複数行のデータを受信できなかった場合にも、ダウンロードファイル全体のサムが一致してしまうために、受信データの異常を検出することができず、ダウンロードファイルにサムを付加しても、受信したデータの信頼性に問題があった。
【００１０】
そこで、本発明は、上記従来のプログラムダウンロード方式における問題点に鑑みてなされたものであって、受信したデータの信頼性を向上させるとともに、送信受信処理の高速化、及び、装置構成を簡易化することができるプログラムダウンロード方式を提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記目的を達成するため、本発明は、プログラムダウンロード方式であって、ダウンロードするファイルの総行数に関する情報を付加して該ファイルを送信し、受信したデータの総行数と、受信データの総行数を表すデータとを比較し、これらが一致した場合にのみ、不揮発性メモリの更新を許可することを特徴とする。
【００１２】
そして、本発明によれば、ファイル全体の行数をデータとして付加することによって、ファイル転送でのデータの受信抜けの検出を可能にし、受信したデータの信頼性を向上させることができる。
【００１３】
また、ファイル全体の行数をデータとして付加することでデータの信頼性を向上させるので、各行のデータに対してヘッダやパケット番号を付加して信頼性を向上させる方法に比べ、データの転送量を少なくすることにより、データ転送時間の高速化を図ることができる。また、ファイル全体のサムを付加して信頼性を向上させる方法に比べ、サムの計算を不要にすることで、送信受信処理の高速化を図ることができる。
【００１４】
さらに、ファイル全体の行数をデータとして付加することでデータの信頼性を向上させるので、各行のデータに対してヘッダやパケット番号を付加して信頼性を向上させる方法や、ファイル全体のサムを計算してデータに付加して信頼性を向上させる方法に比べて、装置構成を簡易化することができる。
【００１５】
上記プログラムダウンロード方式において、受信したダウンロードファイルを格納したエリアのサムを計算し、計算したサムを不揮発性メモリのサム格納エリアに書き込み、装置の立ち上げ時または／及び一定周期ごとにプログラムエリアのサムを計算して自己診断を行うように構成することもできる。
【００１６】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照しながら説明する。
【００１７】
図１は、本発明にかかるプログラムダウンロード方式を実施する装置の構成を示し、この装置は、図７に示した従来例に行数カウンタ７０を付加した構成を有する。
【００１８】
本発明にかかるプログラムダウンロード方式によれば、ダウンロードファイルが書かれたメディア２０からファイルを読み出し、データを送信する機能を有するＰＣ１０が、シリアルコントローラ６０を介してＰＣ１０からデータを受信する機能を有するＣＰＵ３０と接続される構成において、ＣＰＵ３０は、シリアルコントローラ６０から転送されたデータを受け取り、行数カウンタ７０によってＰＣ１０から受信したデータの行数をカウントしながら、受信したデータをＲＡＭ５０に格納して行き、全データの受信終了時に、行数カウンタ７０のカウント結果と、ＰＣ１０から送信された受信データの総行数のデータを比較し、これらが一致すれば、ＰＣ１０からのフラッシュメモリ更新の指示によって、フラッシュメモリ４０に書かれたデータを消去し、ＲＡＭ５０に格納したデータを書き込む。
【００１９】
次に、上記ＣＰＵ３０などの動作について、図１及び図３〜図５を参照しながらさらに詳細に説明する。
【００２０】
まず最初に、メディア２０にダウンロードファイルを準備する。ここでは、ダウンロードファイルにインテルヘクサフォーマットのファイルを準備した場合を例にとって説明する。
【００２１】
このファイルを準備する際、ＰＣ１０が送信した総行数を計算して総行数のデータを付加して送信できる機能を持つ（ソフトをインストール済み）場合には、ダウンロードファイルに予め総行数のデータを付加しておく必要はなく、ＰＣ１０が送信した総行数を計算して総行数のデータを付加して送信できる機能を持たない（ソフトをインストールしていない）場合には、ダウンロードファイルに予め総行数のデータを付加しておく必要がある。
【００２２】
次に、ＰＣ１０は、ＣＰＵ３０に対してダウンロード開始コマンドを送信する。ＣＰＵ３０は、ＰＣ１０からダウンロード開始コマンドを受信しないと、ＰＣ１０からのダウンロードは受け付けない。
【００２３】
ＣＰＵ３０は、シリアルコントローラ６０を介してＰＣ１０からダウンロード開始のコマンドを受信すると（図３、Ｓｔｅｐ１）、受信したダウンロードファイルを格納するためのＲＡＭ５０と、行数カウンタ７０とを初期化し、ダウンロードファイルの受信の準備を行う（図３、Ｓｔｅｐ２）。
【００２４】
ここで、ＲＡＭ５０の初期化とは、更新するフラッシュメモリ４０を消去した時と同じ状態のデータをＲＡＭ５０に書き込んでおくことである。例えば、フラッシュメモリ４０の消去後の状態が０ｘＦＦであれば、ＲＡＭ５０を０ｘＦＦで、フラッシュメモリ４０の消去後の状態が０ｘ００であればＲＡＭ５０を０ｘ００で初期化しておく。
【００２５】
このように、受信したダウンロードファイルを格納するためのＲＡＭ５０を初期化しておくことで、ＲＡＭ５０に格納したデータをフラッシュメモリ４０へ書き込む時に、ＲＡＭ５０のデータと一致している場合には、書き込みを行わないような処理を行うことで（図５、Ｓｔｅｐ５）、フラッシュメモリ４０の更新処理の時間を減少させるだけでなく、フラッシュメモリ４０へ余分な書き込みを行わないことによって、フラッシュメモリ４０の寿命を延ばすことが可能になるという効果がある。
【００２６】
ＣＰＵ３０は、ダウンロードファイルを受信する準備が完了すると、シリアルコントローラ６０を経由してＰＣ１０に対してダウンロード開始コマンドに対する応答を返す（図３、Ｓｔｅｐ３）。
【００２７】
ＰＣ１０は、ＣＰＵ３０からダウンロード開始コマンドに対する応答を受信すると、ダウンロードファイルが書かれたメディア２０からデータを読み出してデータの送信を開始する。
【００２８】
ＣＰＵ３０は、シリアルコントローラ６０を経由して、ＰＣ１０からニューライン（’￥ｎ’）コードまでのデータ、すなわち、インテルヘクサフォーマットのダウンロードファイルの１行分のデータを受信する（図３、Ｓｔｅｐ４〜５）。
【００２９】
ＣＰＵ３０は、１行分のデータを受信すると、受信したデータのサムを計算し（図３、Ｓｔｅｐ６）、インテルヘクサフォーマットの各行に付加されるチェックサムコードと比較することで正しいデータを受信できたかどうか判定を行う（図３、Ｓｔｅｐ７）。
【００３０】
このとき、チェックサムコードが不一致の場合には、正しいデータを受信できなかったことになるので、受信したデータを破棄してＰＣ１０に対して受信データの異常を検出したことを報告する（図３、Ｓｔｅｐ１１）。逆に、チェックサムコードが一致した場合には、正しいデータを受信できたことになるので、インテルヘクサフォーマットのどのレコードタイプのデータを受信したか判定する（図３、Ｓｔｅｐ８）。
【００３１】
ここで、受信したデータのレコードタイプによって、以下のように動作を行う。
【００３２】
エントリポイントアドレスを示すスタートアドレスレコードのデータを受信した場合には、ＲＡＭ５０には格納せずにデータを破棄し、次に送られてくるデータを格納するアドレスを計算し、行数カウンタ７０のカウント値を加算してデータを待つ（図４、Ｓｔｅｐ１〜４）。
【００３３】
ロードアドレスのパラグラフ値を示す拡張アドレスレコードのデータを受信した場合には、ＲＡＭ５０には格納せずにデータを破棄し、次に送られてくるデータを格納するアドレスの計算を行い、行数カウンタ７０のカウント値を加算してデータを待つ（図４、Ｓｔｅｐ５〜８）。
【００３４】
コードの値を示すデータレコードのデータを受信した場合には、必要なデータを抜き取り、ＲＡＭ５０のダウンロードデータを格納するエリアにデータを格納し、行数カウンタ７０のカウント値を加算して次に送られてくるデータを待つ（図４、Ｓｔｅｐ９〜１２）。
【００３５】
コードの終わりを示すエンドレコードのデータを受信した場合には、ＲＡＭ５０には格納せずにデータを破棄し、行数カウンタ７０のカウント値を加算して、次に送られてくる総行数のデータを待つ（図４、Ｓｔｅｐ１３〜１６）。
【００３６】
ＣＰＵ３０は、上記のデータレコードに対応した処理を終えると、ＰＣ１０に対して受信データが正常であったことを報告する（図４、Ｓｔｅｐ１８）。尚、正常時の報告は省略可能である。
【００３７】
ＰＣ１０は、全てのデータの送信が終わるまで、メディア２０からファイルを読み出してデータの送信を行い（ＰＣ１０からの正常応答を待ち、応答があれば）、また、メディア２０からデータを読み出してデータの送信を行い（ＰＣ１０からの正常応答を待つ）という処理を繰り返す。
【００３８】
ＣＰＵ３０も、全てのデータの受信が終わるまで受信したデータを、ＲＡＭ５０のダウンロードデータを格納するエリアにデータを格納する処理を繰り返す（図３、Ｓｔｅｐ４〜９）。
【００３９】
ＰＣ１０が送信した総行数を計算して総行数のデータを付加して送信できる機能を持つ場合には、ＰＣ１０は、ファイルのエンドレコードの送信後にニューライン（’￥ｎ’）コードを送信した回数、すなわち、送信した行数のデータを送信する。
【００４０】
一方、ＰＣ１０が送信した総行数を計算して総行数のデータを送信できる機能を持たない場合には、メディア２０には、予め総行数のデータを付加してあるので、そのまま全てのデータの送信を行っていく。
【００４１】
ＰＣ１０は、メディア２０に書き込まれた全てのデータ（及び、送信した行数のデータ）を送信して、ＣＰＵ３０からの異常データ受信の応答（報告）がなければ、フラッシュメモリ４０を更新させるため、ＣＰＵ３０に対してフラッシュメモリ更新コマンドを送信する。
【００４２】
ＣＰＵ３０は、シリアルコントローラ６０を介してＰＣ１０からフラッシュメモリ更新コマンドを受信すると（図５、Ｓｔｅｐ１）、フラッシュメモリ４０の消去を行い、フラッシュメモリ４０が消去できているか否かを確認し（図５、Ｓｔｅｐ２〜３）、フラッシュメモリ４０が消去できている場合には、次のステップに進み、フラッシュメモリ４０が消去できていなかった場合には、フラッシュメモリ更新処理の異常終了をシリアルコントローラ６０を介してＰＣ１０に通知して終了する（図５、Ｓｔｅｐ１０）。
【００４３】
次に、ＲＡＭ５０に格納したデータを読み出し、フラッシュメモリ４０のデータと比較し（図５、Ｓｔｅｐ４〜５）、一致していない場合には、フラッシュメモリ４０にデータの書き込みを行い、フラッシュメモリ４０に正常に書き込みができているかを確認し（図５、Ｓｔｅｐ６〜７）、フラッシュメモリ４０に正常に書き込みができている場合には、次のステップに進み、フラッシュメモリ４０に書き込みができていなかった場合には、フラッシュメモリ更新処理の異常終了をシリアルコントローラ６０を介してＰＣ１０に通知して終了する（図５、Ｓｔｅｐ１０）。
【００４４】
フラッシュメモリ４０に正常に書き込みができている場合には、全データの書き込みが終了したか否かを確認し（図５、Ｓｔｅｐ８）、全データの書き込みが終了した場合には、フラッシュメモリ更新処理の正常終了をシリアルコントローラ６０を介してＰＣ１０に通知して終了し（図５、Ｓｔｅｐ９）、全データの書き込みが終了していない場合には、前のステップに戻り、フラッシュメモリ４０への書き込み処理を繰り返す（図５、Ｓｔｅｐ４〜７）。
【００４５】
尚、この動作の説明では、最初にメディア２０に準備するファイル形式をインテルヘクサフォーマットのファイルとしたが、Ｓフォーマットなどその他の形式のファイルでも実現することが可能であり、行数カウンタ７０は、ハードウェアでの実施例を示したが、ソフトウェアによっても実現することができる。
【００４６】
次に、本発明にかかるプログラムダウンロード方式の第２実施例について、図２を参照しながら説明する。
【００４７】
この装置は、図１に示した構成に、さらにサム計算回路８０を付加している。
【００４８】
ダウンロードファイルが書かれたメディア２０からファイルを読み出し、データを送信する機能を有するＰＣ１０が、シリアルコントローラ６０を介してＰＣ１０からデータを受信する機能を有するＣＰＵ３０と接続される構成において、ＣＰＵ３０は、シリアルコントローラ６０から転送されたデータを受け取り、行数カウンタ７０によってＰＣ１０から受信したデータの行数をカウントしながら、受信したデータをＲＡＭ５０に格納して行き、全データの受信終了時に行数カウンタ７０のカウント結果と、ＰＣ１０から送信された受信データ総行数のデータを比較し、これらが一致すれば、ＰＣ１０からのフラッシュメモリ更新の指示によって、サム計算回路８０によってＲＡＭ５０に格納したデータのサムを計算し、フラッシュメモリ４０に書かれたデータを消去して、ＲＡＭ５０に格納したデータとサム計算回路８０によって計算したサムを書き込む。
【００４９】
次に、上記ＣＰＵ３０などの動作について説明する。尚、ＣＰＵ３０がＰＣ１０からダウンロードファイルを受信するまでの手順（図３、Ｓｔｅｐ１〜）（図４、Ｓｔｅｐ１〜）は、先に説明した実施手順と同様である。よって、ここではデータを正常に受信した後のフラッシュメモリの更新処理について図６を参照しながら説明する。
【００５０】
ＰＣ１０は、ＣＰＵ３０からの異常データ受信の応答（報告）がなければ、フラッシュメモリ４０を更新するため、ＣＰＵ３０に対してフラッシュメモリ更新コマンドを送信する。
【００５１】
ＣＰＵ３０は、シリアルコントローラ６０を介してＰＣ１０からフラッシュメモリ更新コマンドを受信すると（図６、Ｓｔｅｐ１）、サム計算回路８０により、受信したダウンロードファイルを格納したＲＡＭ５０のエリアのサム、すなわち、フラッシュメモリ４０のプログラム更新エリアのサムを計算し、フラッシュメモリ４０のサム格納エリアに該当するＲＡＭ５０にサムを書き込む。
【００５２】
以降のフラッシュメモリ４０の消去から更新終了の応答処理（図６、Ｓｔｅｐ２〜１０）は、先に説明した実施手順と同様であり、更新したフラッシュメモリ４０には、先のステップで計算したフラッシュメモリ４０のサムが書き込まれていることになる。
【００５３】
ここで、フラッシュメモリ４０にサムを書き込むことによって、装置の立ち上げ時または／及び一定周期ごとにプログラムエリアのサムを計算して自己診断（サムチェック）を行うことが可能になる。
【００５４】
尚、この動作の説明では、サム計算回路８０はハードウェアでの実施例を示したが、ソフトウェアによっても実現することは可能である。
【００５５】
【発明の効果】
以上説明したように、本発明によれば、受信したデータの信頼性を向上させ、送信受信処理の高速化を図り、装置構成を簡易化することができるプログラムダウンロード方式を提供することが可能となる。
【図面の簡単な説明】
【図１】本発明にかかるプログラムダウンロード方式の第１実施例を示すブロック図である。
【図２】本発明にかかるプログラムダウンロード方式の第２実施例を示すブロック図である。
【図３】本発明にかかるプログラムダウンロード方式の第１実施例を示すフローチャートである。
【図４】本発明にかかるプログラムダウンロード方式の第１実施例を示すフローチャートである。
【図５】本発明にかかるプログラムダウンロード方式の第１実施例を示すフローチャートである。
【図６】本発明にかかるプログラムダウンロード方式の第２実施例を示すフローチャートである。
【図７】従来のプログラムダウンロード方式の一例を示すブロック図である。
【図８】従来のプログラムダウンロード方式の一例を示すブロック図である。
【符号の説明】
１０    （ダウンロードファイルを転送するための）ＰＣ
２０    （ダウンロードファイルが書かれた）メディア
３０        ＣＰＵ
４０        フラッシュメモリ
５０        ＲＡＭ
６０    シリアルコントローラ
７０        行数カウンタ
８０        サム計算回路
【図１】
2004288074.tif 000004
【図２】
2004288074.tif 000005
【図３】
2004288074.tif 000006
【図４】
2004288074.tif 000007
【図５】
2004288074.tif 000008
【図６】
2004288074.tif 000009
【図７】
2004288074.tif 000010
【図８】
2004288074.tif 000011