JP4325786B2 - プログラムダウンロード方法 - Google Patents
プログラムダウンロード方法 Download PDFInfo
- Publication number
- JP4325786B2 JP4325786B2 JP2003081687A JP2003081687A JP4325786B2 JP 4325786 B2 JP4325786 B2 JP 4325786B2 JP 2003081687 A JP2003081687 A JP 2003081687A JP 2003081687 A JP2003081687 A JP 2003081687A JP 4325786 B2 JP4325786 B2 JP 4325786B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- received
- file
- flash memory
- program
- 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
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Detection And Correction Of Errors (AREA)
Description
【発明の属する技術分野】
本発明は、プログラムダウンロード方法に関し、特に、PC(パーソナルコンピュータ)などと通信することで、フラッシュメモリなどの不揮発性メモリを更新するプログラムダウンロード方法に関する。
【0002】
【従来の技術】
従来のプログラムダウンロード方法では、図7に示すように、ファイル転送機能を有するPC、あるいはファイル転送機能を持つプログラムをインストールしたPCなどが、アスキー形式に保存されたインテルヘクサフォーマットなどのプログラムファイルが書きこまれたメディアからデータを読み出して送信する。
【0003】
ダウンロードの対象装置は、シリアルコントローラ60がPC10から受信したデータをCPU30に転送し、CPU30は、シリアルコントローラ60から転送されたデータをRAM50上に保存していくという動作を繰り返す。
【0004】
そして、全データを受信したCPU30は、PC10からフラッシュメモリ40の更新の指示を受けると、PC10から受信してRAM50上に格納しておいたダウンロードファイルのデータをフラッシュメモリ40に書き込む。
【0005】
この方法では、受信時にエラーが発生したか否かの判断をしていないRAM50上に格納したダウンロードファイルのデータを、そのままフラッシュメモリ40に書き込んでしまう可能性があり、データの信頼性が低いという問題点があった。
【0006】
そこで、受信したダウンロードファイルのデータの信頼性を向上させるため、特許文献1に記載のプログラムダウンロード方法では、図8に示すように、サム計算回路80によってダウンロードファイルのデータのサムを計算して、RAM50上に格納したデータと、予めダウンロードファイルに付加してあるサムとを比較して、受信して格納したRAM50上のダウンロードファイルのデータを評価してから書き込む。
【0007】
【特許文献1】
特開2000−122884号公報
【0008】
【発明が解決しようとする課題】
しかし、上記従来のプログラムダウンロード方法においては、行ごとに付加されるサムのチェックのみでは、例えば、インテルヘクサフォーマットのファイルであれば、レコードマーク(’:’)からニューライン(’¥n’)コードまでの1行全部のデータを受信できなかった場合には、受信データの異常を検出することができないため、受信したダウンロードファイルのデータの信頼性に問題があった。
【0009】
また、ダウンロードファイルに付加するサムに影響を与えないようなデータが受信できなかった場合、例えば、ダウンロードファイルがインテルヘクサフォーマットとしたときに、下記のような行
「:1020304060000000000000000000000000000000」
すなわち、レコードマーク(':')からニューライン('\n')コードのサムが0x00の行のデータを受信できなかった場合には、ダウンロードファイル全体のサムが一致してしまうため、受信データの異常を検出することができず、あるいは、サムが0x00になるような複数行のデータを受信できなかった場合にも、ダウンロードファイル全体のサムが一致してしまうために、受信データの異常を検出することができず、ダウンロードファイルにサムを付加しても、受信したデータの信頼性に問題があった。
【0010】
そこで、本発明は、上記従来のプログラムダウンロード方法における問題点に鑑みてなされたものであって、受信したデータの信頼性を向上させるとともに、送信受信処理の高速化、及び、装置構成を簡易化することができるプログラムダウンロード方法を提供することを目的とする。
【0011】
【課題を解決するための手段】
上記目的を達成するため、本発明は、一方の機器からインテルヘクサフォーマット又はSフォーマットのプログラムファイルを送信し、該プログラムファイルを他方の機器にダウンロードするプログラムダウンロード方法であって、前記一方の機器において、前記プログラムファイルの総行数に関する情報を付加して該ファイルを送信し、前記他方の機器において、受信したプログラムファイルをRAMに格納しつつ、前記受信したプログラムファイルの1行毎のサムチェック処理を行うとともに、前記受信したプログラムファイルの行数を計数して前記付加された総行数と比較し、前記サムチェック処理の結果が正しいデータを受信したことを示し、かつ、前記計数した行数と前記付加された総行数とが一致した場合に、受信したデータにエラーがないと判断し、前記RAMに格納したプログラムファイルを不揮発性メモリに書き込むことを特徴とする。
【0012】
そして、本発明によれば、ファイル全体の行数をデータとして付加することによって、ファイル転送でのデータの受信抜けの検出を可能にし、受信したデータの信頼性を向上させることができる。
【0013】
また、ファイル全体の行数をデータとして付加することでデータの信頼性を向上させるので、各行のデータに対してヘッダやパケット番号を付加して信頼性を向上させる方法に比べ、データの転送量を少なくすることにより、データ転送時間の高速化を図ることができる。また、ファイル全体のサムを付加して信頼性を向上させる方法に比べ、サムの計算を不要にすることで、送信受信処理の高速化を図ることができる。
【0014】
さらに、ファイル全体の行数をデータとして付加することでデータの信頼性を向上させるので、各行のデータに対してヘッダやパケット番号を付加して信頼性を向上させる方法や、ファイル全体のサムを計算してデータに付加して信頼性を向上させる方法に比べて、装置構成を簡易化することができる。
【0016】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照しながら説明する。
【0017】
図1は、本発明にかかるプログラムダウンロード方法を実施する装置の構成を示し、この装置は、図7に示した従来例に行数カウンタ70を付加した構成を有する。
【0018】
本発明にかかるプログラムダウンロード方法によれば、ダウンロードファイルが書かれたメディア20からファイルを読み出し、データを送信する機能を有するPC10が、シリアルコントローラ60を介してPC10からデータを受信する機能を有するCPU30と接続される構成において、CPU30は、シリアルコントローラ60から転送されたデータを受け取り、行数カウンタ70によってPC10から受信したデータの行数をカウントしながら、受信したデータをRAM50に格納して行き、全データの受信終了時に、行数カウンタ70のカウント結果と、PC10から送信された受信データの総行数のデータを比較し、これらが一致すれば、PC10からのフラッシュメモリ更新の指示によって、フラッシュメモリ40に書かれたデータを消去し、RAM50に格納したデータを書き込む。
【0019】
次に、上記CPU30などの動作について、図1及び図3〜図5を参照しながらさらに詳細に説明する。
【0020】
まず最初に、メディア20にダウンロードファイルを準備する。ここでは、ダウンロードファイルにインテルヘクサフォーマットのファイルを準備した場合を例にとって説明する。
【0021】
このファイルを準備する際、PC10が送信した総行数を計算して総行数のデータを付加して送信できる機能を持つ(ソフトをインストール済み)場合には、ダウンロードファイルに予め総行数のデータを付加しておく必要はなく、PC10が送信した総行数を計算して総行数のデータを付加して送信できる機能を持たない(ソフトをインストールしていない)場合には、ダウンロードファイルに予め総行数のデータを付加しておく必要がある。
【0022】
次に、PC10は、CPU30に対してダウンロード開始コマンドを送信する。CPU30は、PC10からダウンロード開始コマンドを受信しないと、PC10からのダウンロードは受け付けない。
【0023】
CPU30は、シリアルコントローラ60を介してPC10からダウンロード開始のコマンドを受信すると(図3、Step1)、受信したダウンロードファイルを格納するためのRAM50と、行数カウンタ70とを初期化し、ダウンロードファイルの受信の準備を行う(図3、Step2)。
【0024】
ここで、RAM50の初期化とは、更新するフラッシュメモリ40を消去した時と同じ状態のデータをRAM50に書き込んでおくことである。例えば、フラッシュメモリ40の消去後の状態が0xFFであれば、RAM50を0xFFで、フラッシュメモリ40の消去後の状態が0x00であればRAM50を0x00で初期化しておく。
【0025】
このように、受信したダウンロードファイルを格納するためのRAM50を初期化しておくことで、RAM50に格納したデータをフラッシュメモリ40へ書き込む時に、RAM50のデータと一致している場合には、書き込みを行わないような処理を行うことで(図5、Step5)、フラッシュメモリ40の更新処理の時間を減少させるだけでなく、フラッシュメモリ40へ余分な書き込みを行わないことによって、フラッシュメモリ40の寿命を延ばすことが可能になるという効果がある。
【0026】
CPU30は、ダウンロードファイルを受信する準備が完了すると、シリアルコントローラ60を経由してPC10に対してダウンロード開始コマンドに対する応答を返す(図3、Step3)。
【0027】
PC10は、CPU30からダウンロード開始コマンドに対する応答を受信すると、ダウンロードファイルが書かれたメディア20からデータを読み出してデータの送信を開始する。
【0028】
CPU30は、シリアルコントローラ60を経由して、PC10からニューライン('\n')コードまでのデータ、すなわち、インテルヘクサフォーマットのダウンロードファイルの1行分のデータを受信する(図3、Step4〜5)。
【0029】
CPU30は、1行分のデータを受信すると、受信したデータのサムを計算し(図3、Step6)、インテルヘクサフォーマットの各行に付加されるチェックサムコードと比較することで正しいデータを受信できたかどうか判定を行う(図3、Step7)。
【0030】
このとき、チェックサムコードが不一致の場合には、正しいデータを受信できなかったことになるので、受信したデータを破棄してPC10に対して受信データの異常を検出したことを報告する(図3、Step11)。逆に、チェックサムコードが一致した場合には、正しいデータを受信できたことになるので、インテルヘクサフォーマットのどのレコードタイプのデータを受信したか判定する(図3、Step8)。
【0031】
ここで、受信したデータのレコードタイプによって、以下のように動作を行う。
【0032】
エントリポイントアドレスを示すスタートアドレスレコードのデータを受信した場合には、RAM50には格納せずにデータを破棄し、次に送られてくるデータを格納するアドレスを計算し、行数カウンタ70のカウント値を加算してデータを待つ(図4、Step1〜4)。
【0033】
ロードアドレスのパラグラフ値を示す拡張アドレスレコードのデータを受信した場合には、RAM50には格納せずにデータを破棄し、次に送られてくるデータを格納するアドレスの計算を行い、行数カウンタ70のカウント値を加算してデータを待つ(図4、Step5〜8)。
【0034】
コードの値を示すデータレコードのデータを受信した場合には、必要なデータを抜き取り、RAM50のダウンロードデータを格納するエリアにデータを格納し、行数カウンタ70のカウント値を加算して次に送られてくるデータを待つ(図4、Step9〜12)。
【0035】
コードの終わりを示すエンドレコードのデータを受信した場合には、RAM50には格納せずにデータを破棄し、行数カウンタ70のカウント値を加算して、次に送られてくる総行数のデータを待つ(図4、Step13〜16)。
【0036】
CPU30は、上記のデータレコードに対応した処理を終えると、PC10に対して受信データが正常であったことを報告する(図4、Step18)。尚、正常時の報告は省略可能である。
【0037】
PC10は、全てのデータの送信が終わるまで、メディア20からファイルを読み出してデータの送信を行い(PC10からの正常応答を待ち、応答があれば)、また、メディア20からデータを読み出してデータの送信を行い(PC10からの正常応答を待つ)という処理を繰り返す。
【0038】
CPU30も、全てのデータの受信が終わるまで受信したデータを、RAM50のダウンロードデータを格納するエリアにデータを格納する処理を繰り返す(図3、Step4〜9)。
【0039】
PC10が送信した総行数を計算して総行数のデータを付加して送信できる機能を持つ場合には、PC10は、ファイルのエンドレコードの送信後にニューライン('\n')コードを送信した回数、すなわち、送信した行数のデータを送信する。
【0040】
一方、PC10が送信した総行数を計算して総行数のデータを送信できる機能を持たない場合には、メディア20には、予め総行数のデータを付加してあるので、そのまま全てのデータの送信を行っていく。
【0041】
PC10は、メディア20に書き込まれた全てのデータ(及び、送信した行数のデータ)を送信して、CPU30からの異常データ受信の応答(報告)がなければ、フラッシュメモリ40を更新させるため、CPU30に対してフラッシュメモリ更新コマンドを送信する。
【0042】
CPU30は、シリアルコントローラ60を介してPC10からフラッシュメモリ更新コマンドを受信すると(図5、Step1)、フラッシュメモリ40の消去を行い、フラッシュメモリ40が消去できているか否かを確認し(図5、Step2〜3)、フラッシュメモリ40が消去できている場合には、次のステップに進み、フラッシュメモリ40が消去できていなかった場合には、フラッシュメモリ更新処理の異常終了をシリアルコントローラ60を介してPC10に通知して終了する(図5、Step10)。
【0043】
次に、RAM50に格納したデータを読み出し、フラッシュメモリ40のデータと比較し(図5、Step4〜5)、一致していない場合には、フラッシュメモリ40にデータの書き込みを行い、フラッシュメモリ40に正常に書き込みができているかを確認し(図5、Step6〜7)、フラッシュメモリ40に正常に書き込みができている場合には、次のステップに進み、フラッシュメモリ40に書き込みができていなかった場合には、フラッシュメモリ更新処理の異常終了をシリアルコントローラ60を介してPC10に通知して終了する(図5、Step10)。
【0044】
フラッシュメモリ40に正常に書き込みができている場合には、全データの書き込みが終了したか否かを確認し(図5、Step8)、全データの書き込みが終了した場合には、フラッシュメモリ更新処理の正常終了をシリアルコントローラ60を介してPC10に通知して終了し(図5、Step9)、全データの書き込みが終了していない場合には、前のステップに戻り、フラッシュメモリ40への書き込み処理を繰り返す(図5、Step4〜7)。
【0045】
尚、この動作の説明では、最初にメディア20に準備するファイル形式をインテルヘクサフォーマットのファイルとしたが、Sフォーマットなどその他の形式のファイルでも実現することが可能であり、行数カウンタ70は、ハードウェアでの実施例を示したが、ソフトウェアによっても実現することができる。
【0046】
次に、本発明にかかるプログラムダウンロード方法の第2実施例について、図2を参照しながら説明する。
【0047】
この装置は、図1に示した構成に、さらにサム計算回路80を付加している。
【0048】
ダウンロードファイルが書かれたメディア20からファイルを読み出し、データを送信する機能を有するPC10が、シリアルコントローラ60を介してPC10からデータを受信する機能を有するCPU30と接続される構成において、CPU30は、シリアルコントローラ60から転送されたデータを受け取り、行数カウンタ70によってPC10から受信したデータの行数をカウントしながら、受信したデータをRAM50に格納して行き、全データの受信終了時に行数カウンタ70のカウント結果と、PC10から送信された受信データ総行数のデータを比較し、これらが一致すれば、PC10からのフラッシュメモリ更新の指示によって、サム計算回路80によってRAM50に格納したデータのサムを計算し、フラッシュメモリ40に書かれたデータを消去して、RAM50に格納したデータとサム計算回路80によって計算したサムを書き込む。
【0049】
次に、上記CPU30などの動作について説明する。尚、CPU30がPC10からダウンロードファイルを受信するまでの手順(図3、Step1〜)(図4、Step1〜)は、先に説明した実施手順と同様である。よって、ここではデータを正常に受信した後のフラッシュメモリの更新処理について図6を参照しながら説明する。
【0050】
PC10は、CPU30からの異常データ受信の応答(報告)がなければ、フラッシュメモリ40を更新するため、CPU30に対してフラッシュメモリ更新コマンドを送信する。
【0051】
CPU30は、シリアルコントローラ60を介してPC10からフラッシュメモリ更新コマンドを受信すると(図6、Step1)、サム計算回路80により、受信したダウンロードファイルを格納したRAM50のエリアのサム、すなわち、フラッシュメモリ40のプログラム更新エリアのサムを計算し、フラッシュメモリ40のサム格納エリアに該当するRAM50にサムを書き込む。
【0052】
以降のフラッシュメモリ40の消去から更新終了の応答処理(図6、Step2〜10)は、先に説明した実施手順と同様であり、更新したフラッシュメモリ40には、先のステップで計算したフラッシュメモリ40のサムが書き込まれていることになる。
【0053】
ここで、フラッシュメモリ40にサムを書き込むことによって、装置の立ち上げ時または/及び一定周期ごとにプログラムエリアのサムを計算して自己診断(サムチェック)を行うことが可能になる。
【0054】
尚、この動作の説明では、サム計算回路80はハードウェアでの実施例を示したが、ソフトウェアによっても実現することは可能である。
【0055】
【発明の効果】
以上説明したように、本発明によれば、受信したデータの信頼性を向上させ、送信受信処理の高速化を図り、装置構成を簡易化することができるプログラムダウンロード方法を提供することが可能となる。
【図面の簡単な説明】
【図1】本発明にかかるプログラムダウンロード方法の第1実施例を示すブロック図である。
【図2】本発明にかかるプログラムダウンロード方法の第2実施例を示すブロック図である。
【図3】本発明にかかるプログラムダウンロード方法の第1実施例を示すフローチャートである。
【図4】本発明にかかるプログラムダウンロード方法の第1実施例を示すフローチャートである。
【図5】本発明にかかるプログラムダウンロード方法の第1実施例を示すフローチャートである。
【図6】本発明にかかるプログラムダウンロード方法の第2実施例を示すフローチャートである。
【図7】従来のプログラムダウンロード方法の一例を示すブロック図である。
【図8】従来のプログラムダウンロード方法の一例を示すブロック図である。
Claims (1)
- 一方の機器からインテルヘクサフォーマット又はSフォーマットのプログラムファイルを送信し、該プログラムファイルを他方の機器にダウンロードするプログラムダウンロード方法であって、
前記一方の機器において、前記プログラムファイルの総行数に関する情報を付加して該ファイルを送信し、
前記他方の機器において、
受信したプログラムファイルをRAMに格納しつつ、前記受信したプログラムファイルの1行毎のサムチェック処理を行うとともに、前記受信したプログラムファイルの行数を計数して前記付加された総行数と比較し、
前記サムチェック処理の結果が正しいデータを受信したことを示し、かつ、前記計数した行数と前記付加された総行数とが一致した場合に、受信したデータにエラーがないと判断し、前記RAMに格納したプログラムファイルを不揮発性メモリに書き込むことを特徴とするプログラムダウンロード方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003081687A JP4325786B2 (ja) | 2003-03-25 | 2003-03-25 | プログラムダウンロード方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003081687A JP4325786B2 (ja) | 2003-03-25 | 2003-03-25 | プログラムダウンロード方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004288074A JP2004288074A (ja) | 2004-10-14 |
JP4325786B2 true JP4325786B2 (ja) | 2009-09-02 |
Family
ID=33295150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003081687A Expired - Fee Related JP4325786B2 (ja) | 2003-03-25 | 2003-03-25 | プログラムダウンロード方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4325786B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006318198A (ja) * | 2005-05-12 | 2006-11-24 | Hitachi Kokusai Electric Inc | フラッシュロムへのダウンロード方法 |
JP6332970B2 (ja) * | 2011-02-11 | 2018-05-30 | シーメンス・ヘルスケア・ダイアグノスティックス・インコーポレーテッドSiemens Healthcare Diagnostics Inc. | 安全なソフトウェアの更新のためのシステム及び方法 |
-
2003
- 2003-03-25 JP JP2003081687A patent/JP4325786B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004288074A (ja) | 2004-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5423830B2 (ja) | 更新データ送信方法、ファームウェア更新システム及びホスト装置 | |
TWI220962B (en) | Firmware updating method and related apparatus for checking content of replacing firmware before firmware updating | |
US8601464B2 (en) | Memory online update system and method | |
US20110004871A1 (en) | Embedded electronic device and firmware updating method thereof | |
US7383431B2 (en) | Control system and method for rewriting data in a flash memory and a data storage medium in which a program is stored for rewriting data in a flash memory | |
CN102414666A (zh) | 用于受管理的非易失性存储器的低等待时间读取操作 | |
KR20070076849A (ko) | 메모리 카드의 카피백 동작을 수행하는 장치 및 방법 | |
KR20100033507A (ko) | 새로운 불량 블록 검출 | |
KR100986884B1 (ko) | 외부 접속 기기, 호스트 기기 및 데이터 통신 시스템 | |
CN110032339B (zh) | 数据迁移方法、装置、***、设备和存储介质 | |
US20080046778A1 (en) | Memory controller and semiconductor memory device | |
CN113778822B (zh) | 纠错能力测试方法、装置、可读存储介质及电子设备 | |
KR100987205B1 (ko) | 외부 접속 기기, 호스트 기기 및 데이터 통신 시스템 | |
JP4325786B2 (ja) | プログラムダウンロード方法 | |
TWI710906B (zh) | 用來進行主裝置與記憶裝置之間的存取控制的方法以及設備 | |
US20120303879A1 (en) | Memory Device and Method for Programming Flash Memory Utilizing Spare Blocks | |
US7007036B2 (en) | Method and apparatus for embedding configuration data | |
CN113867771B (zh) | 一种基于fpga的远程固件升级方法 | |
US20190073134A1 (en) | Methods for resetting a flash memory device and apparatuses using the same | |
JP4967881B2 (ja) | 更新データ送信方法、ファームウェア書き換えシステム及び更新データ送信プログラム | |
JP4460850B2 (ja) | Icカードとicカードの処理方法 | |
US7313648B2 (en) | Corruption tolerant method and system for deploying and modifying data in flash memory | |
JP2007069514A (ja) | インクジェット記録装置 | |
CN117687664A (zh) | 一种dsp的在线升级配置方法及装置 | |
US20050015412A1 (en) | Method to maintain data integrity during flash file transfer to raid controller flash using a terminal emulation program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060202 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080423 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090216 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090403 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090513 |
|
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: 20090603 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120619 Year of fee payment: 3 |
|
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: 20120619 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130619 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |