(57)【要約】本発明は、内蔵メモリのプログラミング、または、再プログラミング方法に関する。本発明は、複数のモジュールを有する内蔵メモリを、該モジュールに接続された多元接続性母線を介して、並列にプログラミング、または、再プログラミングすることにあることを特徴としている。また、記録されていないフラッシュメモリの場合、本発明は、全ての外的条件（周波数、ビットレート）を排除した、多元接続性母線を介して、コードをダウンロードし、コードを実行する方法を開示している。本発明の方法は、内蔵フラッシュメモリの利用に適した設計になっている。
2004530229.tif 000002
【特許請求の範囲】
【請求項１】
内蔵された再プログラミング可能なメモリ（５）を、プログラミング、または、再プログラミングする処理であって、上記処理が、所定数のモジュール（Ｍ０，Ｍ１…）の内蔵メモリを、並列に、プログラミング、または、再プログラミングすること、及び、上記モジュールに接続された多元接続性母線を用いることからなることを特徴とする処理。
【請求項２】
上記処理は、上記モジュールそれぞれが、プログラミングステーション（９）で、上記母線を介して、自身を識別可能になるように、各モジュールに対する既存の接続（Ｉ０，Ｉ１…）を用いて、テスト環境下で、各モジュール（Ｍ０，Ｍ１…）特有の２値識別子を供給することからなることを特徴とする請求項１に記載の処理。
【請求項３】
上記処理は、全モジュールに対して同報通信をする「同報通信」型コマンド、及び、ポイントツーポイント型コマンドを用いて、母線（６）上での通信プロトコルを規定することからなり、上記ポイントツーポイント型コマンドが、モジュール（Ｍ０，Ｍ１…）からプログラミングステーション（９）への特有コマンド、及び、プログラミングステーションからモジュールへの特有コマンドで構成されていることを特徴とする請求項１または２に記載の処理。
【請求項４】
上記「同報通信」型コマンドが、該「同報通信」型コマンドを区別する一般識別子を有する、同報通信であることを特徴とする請求項３に記載の処理。
【請求項５】
上記処理が、発信しているポイントツーポイント型コマンドに対して、母線上の特有識別子を生成することからなることを特徴とする請求項３または４に記載の処理。
【請求項６】
上記母線上の特有識別子が、各コマンドに対して割り当てられた一般識別子と、上記モジュールに特有の識別子との間の、論理的な組み合わせに由来することを特徴とする請求項５に記載の処理。
【請求項７】
プログラミングされたモジュールの内蔵メモリが、空白でない場合、同報通信型コマンドを用いると同時に、全モジュールのメモリを消去することを特徴とする請求項３〜６のいずれか１項に記載の処理。
【請求項８】
上記並列の消去メモリコマンドを、以下の２つの過程で用いることを特徴とする請求項７に記載の処理。
各モジュールの内蔵メモリで消去されたデータバンクを、パラメータとして伝送する過程、及び
上記コマンドを実行することにより消去を確認する過程
【請求項９】
上記処理が、同時データ受信を可能にするために、上記プロトコルにおいて、ダブルバッファ方式を用いること、及び、モジュールのメモリでプログラミングすることからなることを特徴とする請求項３〜８のいずれか１項に記載の処理。
【請求項１０】
上記プログラミングの検査は、「同報通信」型コマンドを用いて、並列の各モジュールでなされることを特徴とする請求項３〜９のいずれか１項に記載の処理。
【請求項１１】
照会コマンドがアドレス、及び、参照データを構成しており、各モジュールは、モジュールのメモリ内容と、受信された参照とを比較することにより、微小型演算装置を介して、自身を検査することを特徴とする請求項１０に記載の処理。
【請求項１２】
上記プログラミングされた内蔵メモリが、空白である状況で、プログラミングに先立った過程を実行し、該過程は、システムの周波数、及び、２値処理能力に関わらず、母線上の母線（６）を介して、直接的に各モジュール（Ｍ０，Ｍ１…）の微小型演算装置（１）を開始することからなることを特徴とする請求項１または２に記載の処理。
【請求項１３】
上記開始順序が、次の段階、すなわち、
（ａ）母線上で、２値処理能力を検出する段階と、
（ｂ）取り込みプログラミングを、上記微小型演算装置の内部メモリにダウンロードする段階と、
（ｃ）最終アプリケーションを、上記微小型演算装置の内部メモリにダウンロードする段階とで構成されていることを特徴とする請求項１２に記載の処理。
【請求項１４】
段階（ａ）が、次の過程、すなわち、
良好な精度を得るために、十分な数の２値を備えた母線上で発信する、所定のフレームの時間の測定を行なう過程と、
相当量の２値処理能力を計算する過程とで構成されていることを特徴とする請求項１３に記載の処理。
【請求項１５】
段階（ｂ）が、母線上で、十分量のバイト数を、微小型演算装置（１）へ送信すると同時に、母線（６）に対して、最終最適パラメータを伝送することからなることを特徴とする請求項１３に記載の処理。
【請求項１６】
上記処理が、内蔵フラッシュメモリ型メモリに、応用可能であることを特徴とする請求項１〜１５のいずれか１項に記載の処理。
【請求項１７】
ＣＡＮ母線を介して、上記処理を用いることを特徴とする請求項１〜１６のいずれか１項に記載の処理。
【請求項１８】
ＴＰＰ母線を介して、上記処理を用いることを特徴とする請求項１〜１６のいずれか１項に記載の処理。
【請求項１９】
米国Ｊ１８５０規準に基づいた母線を介して、上記処理を用いることを特徴とする請求項１〜１６のいずれか１項に記載の処理。
【請求項２０】
ＶＡＮ母線を介して、上記処理を用いることを特徴とする請求項１〜１６のいずれか１項に記載の処理。
【発明の詳細な説明】
【０００１】
本発明は、ＣＡＮ（コントローラ領域ネットワーク）プロトコルを用いた、母線操作といった多元接続性母線を介して、いかなる再プログラミング可能な内蔵メモリの並列プログラミング、および、再プログラミング処理に関するもので、特に、内蔵フラッシュ型メモリの、並列プログラミング、および、再プログラミングに関するものである。
【０００２】
以下の説明は、フラッシュ型メモリを参照して説明しているが、本発明の概念は、いかなる再プログラミング可能なメモリについて言えることである。
【０００３】
また、なお、以下の説明は、特にＣＡＮ母線（CAN bus）の使用に基づいて述べたものである。しかしながら、本発明の概念は、他の多元接続性する母線におけるフラッシュメモリ内蔵モジュールの並列プログラミング、および、再プログラミングを含んだものであっても、本発明の目的を達成することができ、ＣＡＮの代用として用いることができる。
【０００４】
フラッシュメモリは、ＥＥＰＲＯＭである。ただし、ＥＥＰＲＯＭとは、最速の記録時間で、低消去電圧で、大容量な電気的に消去可能でプログラム可能な再生専用メモリ（Elecctrically Erasable Programmable Read-Only Memory）のことであり、このメモリは、マイクロコントローラ回路、具体的にはエンジン制御、ＡＢＳ、及び、電気サスペンション管理（electronic suspension management）等といった自動車の異なる診断手段に対する通信管理のための回路に頻繁に使用される。
【０００５】
したがって、生じる課題としては、これら専用回路の内蔵メモリを、短時間で、低コストで、プログラミング（または再プログラミング）することが挙げられる。
【０００６】
図１は、内蔵フラッシュメモリにおける上述した型のモジュールの従来の機能図を示している。その回路の中心は、微小型演算装置１から構成される。上記微小型演算装置１は、中央コンピュータ内のシステムユニットと、ＵＡＲＴ型の非同期直列伝送路（asynchronous serial link）２を介して、通信している。ＵＡＲＴとは、汎用非同期式送受信回路（Universal Asynchronous Receiver-Transmitter）のことである。非同期伝送インターフェイス（asynchronous transmission interface）３は、非同期モードでデータの伝送を可能にするために、微小型演算装置１と伝送線２との間に組み込まれる。また、ＣＡＮ母線は、ＣＡＮインターフェイス７を介して、上記微小型演算装置と通信するために提供されている。回路も、システムが実行する周波数を決定する外部発振器８に接続されたクロノメータ４と、消去可能で再プログラム可能なフラッシュ型メモリ５とを含む。このフラッシュメモリは通常、テストエリア５ａとユーザエリア５ｂとの間で共有されている。
【０００７】
プログラムされたフラッシュメモリが、空白である場合、システムが実行している周波数状況に関わらず、また伝送速度に関わらず、微小型演算装置を起動できるようにすることは、重要である。
【０００８】
従来技術において、メモリを動かすために使用していた起動方法論（start methodology）は、フラッシュメモリをフラッシュテスト部５ａとユーザフラッシュ部５ｂという２つの部分に分離するという原理に基づいていた。したがって、出荷時に、ＵＡＲＴ直列伝送路を介してコード（code）を書き込む（load）最小プログラムで、フラッシュテストをプログラミングする。
【０００９】
しかしながら、近年のＵＡＲＴ直列伝送路は、伝送速度を低減させており、9,600バイト／秒が限界である。したがって、この物理的（physical）インターフェイスは、高速のデータ伝送に適さない。
【００１０】
製造ラインにおいて、より高い生産性を得るためには、より高速な物理的つながり（a faster physical link）が必要である。
【００１１】
したがって、ＵＡＲＴ型直列伝送路は、ＣＡＮ母線（図１の部材番号６参照）である他の通信媒体に替えられることが多い。ＣＡＮ母線は、この回路において、ＣＡＮインターフェイスモジュール７を介して、微小型演算装置と通信している。
【００１２】
ＣＡＮプロトコルに基づいた母線操作は、ＣＡＮ母線によって可能となるスループットが125キロバイト／秒から１メガバイト／秒に変わったため、従来の非同期直列伝送路での限界よりも、高い処理能力(throughput)が達成できるようになり、中間率（intermediate rate）が500キロバイト／秒となった。
【００１３】
これにより生じる課題としては、空白フラッシュメモリをこの通信媒体を使用してプログラミング可能になることが挙げられる。それゆえ、ＣＡＮ母線を介して、直接プログラムコードをダウンロード可能になり、システム周波数状況や伝送路の２値処理能力(binary throughput)に関わらず、プログラムを実行可能になる。
【００１４】
解決策は、従来技術においてすでに提案されていた。具体的にはＡＴＭＥＬ会社は、ＣＡＮ回路網（network）を使用したアプリケーション専用のマイクロコントローラを開発した。しかしながら、マイクロコントローラには、エラー管理のためにハードウェアリソース、具体的にはＣＡＮモジュールを追加する必要があるため、ＡＴＭＥＬ会社による上記解決策は完全なものではない。
【００１５】
これに対して、本発明は、追加のハードウェアリソースを実行することによって、この欠点を回避するものである。
【００１６】
また、本発明からすぐ言えることとして、本発明は、全モジュールにおけるプログラムされているフラッシュメモリが、空白である場合に適用でき、同じく、フラッシュメモリが空白ではない、言い換えれば、同一のプログラムが既に全モジュールに組み込まれているような場合においても適用でき、特に、テストソフトウェアの初期プログラミングが、フラッシュメモリに組み込まれ、フラッシュメモリがその後、再プログラムされる必要がある場合に適用することができる。
【００１７】
しかしながら、フラッシュメモリ再プログラミングの場合、言い換えれば、テストソフトウェアの同一のプログラムが全モジュールのフラッシュメモリに既に組み込まれた場合に、ユーザの要求によってフラッシュメモリを再プログラミングできるようにする前に、消去工程を含む必要がある。
【００１８】
再プログラミングの前の上記消去工程には、回路毎で１０秒程度かかることから、多くの時間を必要とする。このメモリ消去操作は、後の再プログラミングのために必要であり、また、数百、数千、数万のモジュールを作成しなくてはならないということから、製造環境において厳しい重荷となる。
【００１９】
最後に、フラッシュメモリ自体の実際のプログラミング（the actual programming）を考える上で考慮しなくてはならないもう１つの制約が、構成要素に対する特性である。なぜならば、フラッシュメモリのプログラムとはキャパシタ（capacitors）にチャージすること（charging）に相当するからである。フラッシュメモリは、各々が非常に良質の絶縁体となるいくつかのキャパシタからなり、そのため、長時間放電することが困難である。
【００２０】
しかしながら、キャパシタは、バッチ製造（manufacturing batches）における酸化物の違いによって放電（discharge）の速度が変化する。したがって、与えられた回路に対してフラッシュのプログラミングにｘマイクロ秒かかったとすると、例えば酸化物の違いによっては他の回路に対して１マイクロ秒長くかかってしまうことになる。
【００２１】
異なるモジュール間でフラッシュメモリをプログラミングすることによって生じ、また、それぞれのフラッシュメモリ自体の特性であるこれら同期の課題は、ＣＡＮ母線を通じて特定のプログラミングプロトコルで実行することが出来ないという欠点である。
【００２２】
したがって、本発明の目的の１つは、フラッシュメモリのプログラミングによる非同期問題の解決のためのフラッシュメモリに関する制約を克服することである。すなわち、モジュールレベルでの内蔵フラッシュメモリのＣＡＮ母線を介したプログラミングおよび並列再プログラミングを可能にすることである。
【００２３】
特に、プログラムされるフラッシュメモリが空白である場合において、本発明のもう１つの目的は、システムの周波数およびＣＡＮ母線におけるデータ送信の２値処理能力に関わらず、また追加した装置も使用せず、一方でＵＡＲＴ型直列伝送路を介して使用された従来の起動方法論を残したまま、ＣＡＮ母線を介して微小型演算装置の起動を直接的に行うことにある。一度ＣＡＮ母線を介して起動できたならば、モジュールレベルでのフラッシュメモリの並列プログラミングを考えることが可能となる。
【００２４】
ＣＡＮ母線に対する本明細書で説明する本発明の原理は、言うまでもなく、他の、例えば新ＴＴＰ（Time Trigger  Protocol）自動式母線（automobile bus）、アメリカのＪ１８５０基準(the American J1850 standard)に基づいた母線、または、ＶＡＮ母線といった多元接続性の母線すべてに適用することができる。
【００２５】
並列に、内蔵フラッシュメモリを、プログラミング、および、再プログラミングするために、全モジュールへ同じデータを同時に送信することができるよう、実行のためには特定の通信プロトコルを定義しなくてはならない。
【００２６】
フラッシュメモリのプログラミングによる非同期性を管理するために、各モジュールに対して、固有の設定を通過させる（pass）のにモジュールの既存の接続を使用することができるという利点を有している。したがって、各々のモジュールは、それぞれ個別に識別され、プログラミングステーション（programming station）は、接続されているモジュールの数を知ることが出来る。
【００２７】
結果として、回路またはモジュールのいくつかが、並列にプログラムまたは再プログラムされ、製造ラインにおける膨大な生産性を得ることが可能となり、それにともないコストが低減される。
【００２８】
したがって、本発明は、内蔵再プログラム可能メモリのプログラミング、または、再プログラミング処理に関する。そして、この処理は、いくつかのモジュールの内蔵メモリを、上記モジュールが接続された多元接続性母線を介して、並列にプログラミング、または、再プログラミングすることからなることを特徴としている。
【００２９】
本発明のその他の特徴点および効果は、以下に説明するＣＡＮ母線を使用した例による実施の形態および添付した図を参照することによって明らかとなるだろう。ただしこれらに限定されるものではない。
図１は、プログラムされるフラッシュメモリを含むモジュールの機能図である。
図２は、モジュールプログラミングベンチ（a module programming bench）のハードウェア構成例を示すものである。
【００３０】
クロノメータ（図１の部材番号４を参照）からなる集積ハードウェアリソース（the integrated hardware resource）は、空白フラッシュメモリがプログラムされなくてはならない場合に、実行されるトリガシーケンス（the trigger sequence）にまず関連するものすべてに対して使用される。クロノメータ４は、システムの内部周波数（internal frequency）の導関数（derivative）により起動する。クロノメータの役割は、所定の数の２値要素（binary elements）を含む事前定義フレーム（a predefined frame）の伝送時間を測定することである。
【００３１】
ＣＡＮにおける正確な２値処理能力は、システムの内部周波数を介して、多数のトランジション（transition）の伝送時間を測定することによって算出される。したがって、微小型演算装置１をＣＡＮの周波数に適用することができる。回路のＣＡＮモジュール７は通信に能動的に（actively）加わるよう配置される。
【００３２】
したがって、第１の段階は、ＣＡＮにおける２値処理能力を検出することからなる。
【００３３】
２値処理能力の検出は、プログラミングステーション９によりＣＡＮ上に伝送された事前定義フレームに際した測定に基づいている。測定の間は、回路のＣＡＮモジュール７は起動していない。検出は実際、入力／出力ポートで行われる。したがって、微小型演算装置はＣＡＮモジュールで直接駆動しているかどうかに関わらず、入力／出力ポート（図１には図示せず）を通して定義されたフレームを受信し、分析する。
【００３４】
微小型演算装置は、高いバイト数、好ましくは良好な分解能を得るためには２９バイトを含む参照フレーム（reference frame）における伝送時間を測定する。試み（an attempt）は、ソフトウェアがチェックするための少ない数のトランジションを有していることを確かめる一方で、バイト数を可能な限り大きくして行った。もし、２９バイト以上であった場合には、トランジションが多く、どんな周波数であってもトランジションをソフトウェアでモニターすることがさらに困難になってしまう。
【００３５】
等価２値処理能力は、ＣＡＮモジュール７が正確に配置され、それにより受信の応答として機能するＣＡＮ母線６に有効な事前定義識別フレームがＣＡＮモジュールを通してプログラミングステーション９に送信することができるように、微小型演算装置１によって算出される。
【００３６】
第２の段階は、ローディングプログラム(the loading program)のダウンロードからなる。
【００３７】
これを達成するために、プログラミングステーション９はＣＡＮ母線６における事前定義バイト数、一般的には３２バイトを、ＣＡＮモジュールを介して、微小型演算装置１に送る。ある特定の実施形態によれば、大きいバイト数、たとえば６４バイトは、ＣＡＮの最終最適パラメータ(the final optimum parameters）とともにＣＡＮモジュールを再初期化するために読み込まれる。このようにＣＡＮの最終パラメータを、微小型演算装置にダウンロードされたバイトによって書き換えることで、機構をより良くする。
【００３８】
微小型演算装置は、微小型演算装置自体の内部メモリ、すなわちＲＡＭ(Random Access Memory）型揮発性メモリに、これらのバイトを読み込む。一旦、微小型演算装置が十分なバイト数をＲＡＭに書き込むと、微小型演算装置は、読み込まれたばかりのプログラムを実行し、第２の段階の終了を意味する所定のフレームを送信する。そして、これは、ＣＡＮモジュールを介して、プログラミングステーションで、バイトの受信を認知する。
【００３９】
したがって、プログラムの初期段階は、完全読み込みと完全に配置できることである。都合のいいことに、このプログラムの初期段階は、続く、最も大きなバイト数の読み込みに用いることができるローディングプログラムである。
【００４０】
第３の段階において、最終の処理は、プログラミングステーションから微小型演算装置へのダウンロードである。例えば、この最終処理はフラッシュメモリをプログラミングするためのソフトウェアであろう。
【００４１】
したがって、開始するためには、それぞれのモジュールに微小型演算装置の内部メモリを読み込むための初期プログラムは、モジュールでのＣＡＮにおける２値処理能力の事前検出にしたがって、ＣＡＮ母線を介してダウンロードされる。
【００４２】
一度ＣＡＮ母線を通じてシステムが始動したら、ＣＡＮを介して並列にプログラミングを始動し、フラッシュメモリを消去することが可能となる。
【００４３】
45したがって図２において、例としてプログラム（または再プログラム）されるモジュールを２つだけ、Ｍ０およびＭ１、示している。しかし、本発明は複数のモジュールで使用されることは言うまでもない。モジュールＭ０およびＭ１は、ＣＡＮ母線６を介してプログラミングステーション９と繋がっている。ＣＡＮ母線に連結した全てのモジュールは同じ周波数で作動し、同じソフトウェアを使用する。
【００４４】
したがって、まず、使用者は、後にＣＡＮを介してプログラミングステーションと連結するために使用されるモジュールに特異的な識別子を定義するためにモジュールの事前定義入力および出力状況を読み取る必要がある。これを達成するために、モジュールの既存接続Ｉ０およびＩ１それぞれは、モジュール微小型演算装置によって読み込まれてプログラミングステーションと同一であると認識するテスト環境において、バイナリー識別番号を供給するために用いられる。それぞれのモジュールが個々の識別子（並列プログラミングに必要な状態）をもつことができるためのもうひとつの方法は、全てのモジュールのエネルギー消費量を順番に上げて、順番に始動させるというものである。これにより、プログラミングステーションはモジュールが始動したときにモジュールに対して識別子を与えることができる。
【００４５】
その後、シーケンスメッセージ（sequence message）の特定端（specific end）を待っているモジュールの始動を求める。ステーションはその後もエネルギーを与え、次のモジュールを誘因する。この段階が終了した時には、シーケンスメッセージの終了を伝送し、全てのモジュールは異なる識別子を有して同報通信型（broadcast type）コマンドを受け入れる態勢をとる。
【００４６】
本発明の通信プロトコルにおいては、２つのメッセージ型がある。まず初めは、‘同報通信（broadcast）’型メッセージ、言い換えるとＣＡＮ母線上で接続された全てのモジュールへの同報通信である。したがってこれら「同報通信」型メッセージは、プログラミングステーションによって伝送される全般同報通信メッセージ（general broadcast message）であり、同時に全てのモジュールによって並行に聞かれる（listen）。したがって、プログラミング、消去、照会コマンド（verification commands）はプログラミングステーションから同報通信される。これらのコマンドは、「同報通信」型のメッセージを区別する（distinguishes）一般識別子（generic identifier）とともに同報通信される。
【００４７】
また、プログラミングステーションから特定のモジュールへのコマンド、またはモジュールからプログラミングステーションへのコマンドのどちらかである、各々のモジュールに特異的な識別子を介したポイントツーポイント型（point to point type）メッセージもある。
【００４８】
したがって、本発明は、並列におけるフラッシュメモリのプログラミングおよび再プログラミングのためのデータ伝送リンク（the data transmission link）および伝送手順の機能的特性を網羅する規則（rules）一式を含むものである。
【００４９】
第１過程にて、プログラミングステーションは母線と接続しているモジュール数を求める。プログラミングステーションは実際、モジュールに対して、モジュール自体を認識すること、およびモジュールの識別フレーム（identification frame）を伝送することを「同報通信」型メッセージを介して要求する。
【００５０】
第２過程にて、プログラミングステーションはプログラミングコマンドを全てのモジュールに対して並列に同報通信する（または、再プログラミングの場合では消去コマンドを同報通信する）。これらプログラミングコマンドは、これらに関係する一般識別子により「同報通信」型であると解釈され、またプログラムされる書き込みアドレス（a write address）およびデータを含む。
【００５１】
加えて、プログラミングが終結すると、プログラミングステーションは同じ方法を繰り返し、チェックコマンドを同報通信し、全てのモジュールに対して再度伝送される。したがって各々のモジュールは、受信した参照（the reference）でモジュール自体のフラッシュメモリの内容を比較することにより、モジュールの微小型演算装置を利用した自己チェック（self-check）を行うために、アドレスおよび基準を含む単一の「同報通信」型メッセージを用いる。したがって、チェックは並列に行われるため、膨大な時間を節約することができる。
【００５２】
実施形態の１つにおいて、シーケンスの終了段階にてプログラミングステーションは、プログラミングの結果及び上記チェックを伝送するように要求する。各々モジュールは、プログラムされている間およびチェックされている間はエラーを保持している。
【００５３】
プログラミングステーションはその後、依然として「同報通信」型コマンドを使用してプログラムされたモジュール数を求める。
【００５４】
しかしながら、もう一つの実施形態によれば、プログラミング中、または、照合(verification)中に、エラーを検出すると直ちに、各モジュールは、上記の目的を備えたポイントツーポイントメッセージを用いて、プログラミングステーションへ、エラーの信号を送ることができる。
【００５５】
さらに、使用者のハードウェアの種類に応じて、上記モジュールから、ＬＥＤ（光出射ダイオード）といった制御外部指示器(indicator)への出力を用いるという利点があるかもしれない。上記外部指示器は、プログラミングベンチ上で、プログラミング結果を指示するという機能を有する。
【００５６】
並列にプログラミングされた、２つのモジュールから開始する場合、ＵＡＲＴを用いたフラッシュメモリのプログラミングと比較して、大幅に、時間を節約することができる。また、消去過程(erase step)を実行する場合、この時間の節約は、より顕著になる。上記の場合としては、例えば、必要アプリケーション(required application)をプログラミングする前に消去された、テストプログラミングを取り込む(load)必要がある場合が、特に挙げられる。
【００５７】
さらに、上述のプロトコルは、上記モジュールに必要なソフトウェア処理を最小化することを目的としている。上記ソフトウェア処理では、モジュールの微小型演算装置(microprocessor)は、プログラミングステーションとの通信を管理するよりも、プログラミングするほうが時間を要してしまう。
【００５８】
これを達成するために、ダブルバッファ方式(double buffer system)を始動すると同時に、メモリにおけるデータ受信、及び、プログラミングが可能になる。そして、まず、上記ＣＡＮから受信したプログラミングコマンドは、待機領域として作用する第１バッファ領域に、入力される(put into)。
【００５９】
上記モジュールそれぞれから、伝送バッファ(transfer buffer)、及び、プログラミングコマンドの受信において、フラッシュメモリのプログラミングは、第１データバッファ領域で既に受信され、蓄積されたデータを用いて、各モジュールで始まる。そして、同時に、上記ＣＡＮからのコマンドの受信は、第２バッファ領域で割り当てる。したがって、データバッファを補充する第１処理、及び、これらのデータを処理する他の処理が存在する。第１処理から他の処理への切替えから、モジュールは、最小の通信で非常に効率的に、かつ、プログラミングされ得ることが理解される。そして、この切替えは、時間の節約にも最適である。
【００６０】
さらに、モジュールとプログラミングステーションとの間を通信する、モジュールに必要なソフトウェア処理を最小化するために、大きなバッファを用いる必要がある。１つのバッファから他のバッファへの切替えは、プログラミングステーションからモジュールへ送信された伝送コマンドによりなされる。同様に、上記モジュールが、バッファのプログラミングを完了したとき、モジュールは、プログラミングステーションへ、レポートメッセージを送信する。
【００６１】
本願発明者は、本発明にかかるプロトコルに含まれる全コマンドの詳細を、ここに示す。
【００６２】
上記プロトコルにより、ＣＡＮ母線を介して、並列に、フラッシュメモリをプログラミングすることが可能になる。それゆえ、上記第１過程は、いくつかの「同報通信(broadcast)」型のコマンドを用いることである。換言すれば、コマンドは、プログラミングステーションから、ＣＡＮ母線に接続された全モジュールへ、同報通信する。そして、上記モジュールの何れでも、コマンドを受信することが可能になる。
【００６３】
第１送信＿ＩＤコマンドは、これらの識別子を送信する請求モジュール(asking module)からなる。それゆえ、各モジュールは、上記コマンドに特異的な識別子を送信する。これにより、プログラミングステーションは、ＣＡＮ母線を介して接続されたモジュールの数を数え、これらのモジュールを、個々に監視することが可能となる。
【００６４】
他の「同報通信」型コマンドとしては、開始充填バッファコマンド(start filling buffer command)が挙げられる。このコマンドは、開始メモリアドレスを送信することによりなされる。そして、カウント、及び、データは、ＣＡＮ上で全モジュールに対して、上記アドレスでメモリに書き込まれる。例えば、上記カウントは、モジュールが充填バッファコマンドを受信した後、いくつかの２値言語(binary words)を受信したかについての情報を、モジュールに与えるのに用いられる。
【００６５】
続いて、継続充填バッファコマンド(continue filling buffer command)は、同報通信であり、データのみからなる。そして、メモリは、自身の増分(increment)を、自動的に、アドレス指定する。したがって、発信される補助ビットの数、及び、データ発信時間を最小にすることができる。
【００６６】
それゆえ、各モジュールが、新規の開始充填バッファコマンドを受信する、または、プログラミングステーション主導で、伝送バッファコマンドまたはプログラミングコマンドを受信するまでに、各モジュールは、データを受信する。
【００６７】
上記伝送バッファ、及び、プログラミングコマンドは、各要求モジュール(requesting each module)からなる。このモジュールは、データ受信状態のバッファから開始するプログラミングを開始し、他のバッファを受信に割り当てる。そして、受信状態にあるバッファは、プログラミングの参照として用いるバッファになり、プログラミング状態にあるバッファは、受信バッファになる。
【００６８】
上述の伝送バッファ、及び、プログラミングコマンドに続くコマンドは、上記伝送バッファ、及び、照合コマンド(verification command)である。この照合コマンドもまた、同報通信型コマンドである。このコマンド受信において、各モジュールは、受信状態にあるバッファから始まる照会を、開始する。そして、このとき、他のバッファは、受信に割り当てられる。そして、同時に全モジュールに対して同報通信された単一のコマンドから開始すると、照合が起きる。そして、各モジュールは、自身で、プログラミング結果を検査する。それゆえ、このような照会は「同報通信」型であり、これにより、処理全体に対して、大幅な時間の節約になる。
【００６９】
上記開始充填バッファ、及び、上記継続充填バッファコマンドは、実際には独立しており、プログラミング及び照会コマンドである。そして、バッファが伝送された場合にのみ、上記伝送コマンドが、プログラミングしているのか、あるいは、照会しているのかの通知がなされる。
【００７０】
上記プロトコルは、プログラミングステーションが、全モジュールに対して、同報通信する、他のコマンドを含む。そして、このコマンドは、情報の請求からなり、各モジュールの状況について送信する。そのとき、各モジュールは、例えば照合した後に、プログラミング状況を送信する。
【００７１】
最後に、最終同報通信コマンド、すなわち、消去コマンドが必要である。この消去コマンドは、全モジュールが接続されたＣＡＮ母線上で、プログラミングステーションにより同報通信される。そして、同時に、このコマンドは、全モジュールに対して、メモリ消去の開始を制御する。このコマンドは、特に、ＣＡＮ母線を介して、フラッシュメモリを並列に再プログラミングするのに、用いられる。
【００７２】
上記プロトコルで選ばれる実施に応じて、上記消去コマンドは、よりよい安全確保(security)にために、２つの過程で用いられることが好ましい。すなわち、第１準備消去コマンドは、伝送データバンクからなる。この伝送データバンクは、フラッシュメモリ内でパラメータとして、消去される。次に、上記消去を確認する第２のコマンドは、先のコマンドを実行することからなる。明らかに、上記確認消去コマンドを最適にすることが可能である。
【００７３】
また、本発明にかかるプロトコルは、ある種の特有の、モジュールからプログラミングステーションへのメッセージを用いている。それゆえ、これらのメッセージは、もはや、上述の「同報通信」型メッセージではなく、ポイントツーポイント型メッセージになる。
【００７４】
上述した型のメッセージそれぞれには、特有の識別子が必要となる。このため、各モジュールとプログラミングステーションとの間で、通信可能になる。
【００７５】
ＣＡＮ上の全域の識別子は、少なくとも、１１ビット型の識別子である。これらのビットのいくつかは、コマンドのタイプで規定される。それ以外のビットは、モジュール数で規定される。この場合、ＣＡＮ上で用いられる特有識別子は、各コマンドで割り当てられる一般コマンドと、モジュール特異的な識別子との間の、論理組み合わせに由来する。このため、固有識別子(unique identifier)は、各モジュールについて、ＣＡＮ上で、モジュールからプログラミングステーションへと送信される。
【００７６】
モジュールからプログラミングステーションへの、特有のポイントツーポイントコマンドの間には、ある重要なコマンドが含まれている。このコマンドは、コマンド＿ＯＫコマンドである。コマンド＿ＯＫコマンドは、データバッファのプログラミング／照合が成功した後（または、消去が成功した後）、各モジュールにより、プログラミングステーションへ送信される。
【００７７】
フラッシュメモリのプログラミングに起因して、いくつかの非同期性(asynchronism)を管理する必要がある。このとき、プログラミングステーションは、タイムアウト(time out)を開始するのに有利である。これにより、各モジュールが、そのメモリを、正確にプログラミングする（または、照会する）のに十分な時間を残す。上記プログラミングステーションが、所定の時間を、予め規定した後、プログラミングステーションは、各モジュールにおける固有識別(unique identification)を用いて、個々のコマンドを、応答しない全モジュールに戻す。そして、プログラミングステーションは、上記モジュールに、エラー状況にあることを知らせる。
【００７８】
しかしながら、モジュールからプログラミングステーションへの、有効なポイントツーポイントコマンドは、また、プログラミングエラーコマンドを含んでいてもよい。したがって、モジュールが、プログラミングの間、エラーを検出している場合（例えば、モジュールが、値を書き込めない場合）、このプログラミングエラーコマンドにより、モジュールは、タイムアウトの終了を待たずに、このエラーを、速やかに、プログラミングステーションへ伝えることができる。
【００７９】
同様に、照会エラーコマンドが備えられている。照会エラーを検出すると、この照会エラーコマンドは、照会処理の終了時にではなく、速やかに、各モジュールに、プログラミングステーションへ照会エラーを報告する機会を与える。
【００８０】
そして、全モジュールが、コマンド＿ＯＫコマンド、または、エラーメッセージを戻すまで、プログラミングステーションは、タイムアウトを開始し、待機している。
【００８１】
これらのプログラミングエラー、及び、照会エラーのコマンドは、エラーが検出されるとすぐに、送信されているので、実にプログラミング時間を最適にできる。これらの異なるコマンドの結果、上記プログラミングステーションは、どのエラーを処理しても、タイムアウトの終了まで待機する必要がない。また、このことは、上記固有識別子が、ＣＡＮ母線上で接続している各モジュールに、割り当てられることにより可能になる。
【００８２】
フラッシュメモリの再プログラミング消去の場合、消去エラーコマンドを用いることができる。この消去エラーコマンドは、異なるモジュールの並列プログラミング中に用いられた、プログラミングエラー、及び、照会エラーのコマンドと、同じ原理に基づいて、かつ、同じ意図で、用いられる。
【００８３】
最後に、モジュールからプログラミングステーションへの、特有のポイントツーポイントコマンドとしては、モジュール状況コマンドが挙げられる。このコマンドは、プログラミングステーションからの（「同報通信」型の）要求に応答して、その目的で、各モジュールにより送信される。
【００８４】
また、本発明にかかるプロトコルは、プログラミングステーションからモジュールへの特有のコマンドを含んでいる。それゆえ、このコマンドは、他のポイントツーポイントコマンドである。
【００８５】
モジュールからプログラミングステーションへの、固有のコマンドと同様に、各モジュールが、メッセージに関連があるかどうかを知るために、ＣＡＮ上で特有の識別子を生成する必要がある。このために、モジュール特有の索引を付加することで、異なる必要なコマンドで用いられた一般識別子を特殊化する。そして、このコマンドは、モジュールに対して、一般識別子の末端で、アドレス指定される。これにより、プログラミングステーションからモジュールへの、ポイントツーポイント通信、及び、結果として生じた特有のメッセージの発信が可能になる。
【００８６】
これらの、プログラミングステーションからモジュールへの特有メッセージは、送信された状況コマンドを含んでいる。このコマンドは、状況を送信するように、モジュールに要求することからなる。
【００８７】
停止コマンド(stop command)は、速やかに全動作を停止するように、モジュールに要求することからなる。このコマンドにより、フラッシュメモリがプログラミングしているエラーを有するモジュールは、他のモジュールのプログラミングを邪魔することがなくなる。
【００８８】
プログラミングステーションのメッセージに対する特有のモジュール、例えば上述のコマンド＿ＯＫコマンド型といった形態における、タイムアウト停止コマンド(stop timeout command)は、モジュールに通知する。そして、このモジュールからの応答から、プログラミングステーションにおけるタイムアウト始動が終了したことが予測される。モジュールが、タイムアウト停止コマンドを受信すると、該当モジュールは、自身がエラーを興していることを判断する必要がある。
【００８９】
動作＿ＯＫコマンド(operation_OK command)は、プログラミング、または、照会の終了時に（または、並列再プログラミングを用いる場合には、消去の終了時に）与えられなければならない。プログラミングステーションは、特有のモジュールで起きるあらゆる保証(guarantee)を有するので、このポイントツーポイントの動作＿ＯＫコマンドは、必要である。プログラミングステーションは、正確にプログラミングされた各モジュールに対して、最終確認を提供する。プログラミングステーションが、「同報通信」型のコマンドを用いて、各モジュールに対するプログラミングの照会を任せて、次に、各モジュールが、プログラミングステーションへ、照会結果を伝送する場合でも、プログラミングステーションは、正確にプログラミングされた各モジュールに対して、最終確認を提供する。
【００９０】
上記モジュールは、有利に、この動作＿ＯＫコマンドの受信を用いてもよい。これにより、動作＿ＯＫコマンドは、モジュールに存在する出力ポートの一つの発光ダイオードに命令する。
【００９１】
プロトコルの観点から、プログラミングステーションは、該プログラミングステーションが、モジュールからの受信における全認知(acknowledgement)を受信したかを点検する。そして、このとき、プログラミングステーションは、各特有モジュールに対する処理を通して、正常に起きたことを通知するために、動作＿ＯＫコマンドを用いる。
【００９２】
本発明に係るプロトコルに含まれる、全ての特有「同報通信」型コマンドを記述した後、本願発明者は、ここで、これらの異なるコマンドを用いた、プログラミング、及び、照会の流れの一例を考慮する。全コマンドは、独立して、ＣＡＮ母線上を、通過する。また、ＣＡＮ母線上で、全コマンドは、送信フォームである。
【００９３】
第１の過程は、プログラミングステーションによる、送信＿ＩＤコマンドを用いる。そして、各モジュールは、このコマンドの特有識別子を送信することにより、コマンドに応答する。
【００９４】
第２の過程は、充填バッファコマンドを送信することからなる。この充填バッファコマンドは、バッファにおける受信の始まりに印をつける(mark)。第３の過程で、継続充填バッファコマンドは、ＣＡＮ上で送信される。その結果、アドレスが増加するに伴い、バッファを充填し続ける。
【００９５】
第４の過程は、継続充填バッファコマンド、または、新しく開始した充填バッファコマンドを用いる。新しく開始した充填バッファコマンドを用いる場合、プログラミングされたデータアドレスに、不連続点が存在する。
【００９６】
伝送バッファ、及び、プログラミングのコマンドは、第５の過程で、送信される。このとき、プログラミングが、受信状態にあるバッファから開始する各モジュールで、開始する。そして、第２のバッファが、受信において、同時に、割り当てられる。この過程中には、伝送バッファ、及び、照会のコマンドを用いることができる。照会が開始され、既に説明したように、この照会は、各モジュールで、並列して起きる。
【００９７】
第６の過程は、充填バッファコマンドの繰り返しからなる。これにより、プログラミング処理の終了まで、過程２から過程５までが繰り返される。
【００９８】
第７の過程では、各モジュールは、次のコマンドを、並列に送信する。すなわち、最後のバッファのデータ処理が成功したことを指示するコマンド＿ＯＫコマンド、または、プログラミング中のエラーを指示するプログラミングエラーコマンド、または、照会中のエラーを指示する照会エラーコマンドを送信する。
【００９９】
第８の過程は、プログラミングステーションから、タイムアウト停止コマンドを送信することからなる。このコマンドは、タイムアウトを終了させる。このタイムアウトは、モジュールがプログラミングを実行しなければならない時間間隔になった、プログラミングステーションに用いられる。この過程のタイムアウトコマンドを受信したモジュールは、自身がエラー状態にあることを判断する。
【０１００】
最後に、プログラミング、及び、照会処理における最終過程は、動作＿ＯＫコマンドを送信することからなる。このとき、プログラミングステーションは、各モジュールに対して、独立して、全処理を通してすべて正常に起きたことを確認するために、このコマンドを用いることができる。
【０１０１】
モジュールのフラッシュメモリが、並列再プログラミングのために、消去されている場合、ＣＡＮ上のコマンドの流れは、より簡潔になる。
【０１０２】
第１の過程は、送信＿ＩＤコマンドを用いることからなる。各モジュールは、このコマンドの特有識別子を送信することにより、コマンドに応答する。そして、プログラミングステーションは、消去されたモジュールの数をカウントすることができる。
【０１０３】
上記消去は、２つの「同報通信」型コマンドを用いた、２つの過程で起きることが好ましい。この２つの「同報通信」型コマンドとしては、第１に、準備消去コマンド、および、第２に、確認消去コマンドが挙げられる。
【０１０４】
モジュールは、消去コマンドを正常に実行したことを指示するコマンド＿ＯＫ型コマンド、または、消去エラーコマンドを送信する。
【０１０５】
全モジュールが消去を完了したことに成功した場合、動作＿ＯＫコマンドを送信する。このコマンドにより、プログラミングステーションは、消去が各モジュールで成功したことを、特別に確認する。それゆえ、このコマンドは、モジュールからのコマンド＿ＯＫコマンド出力に応答して、送信される。
【０１０６】
最後に、タイムアウト停止コマンドは、最終過程で用いられる。それゆえ、このタイムアウト中に応答しないモジュール、及び、このコマンドを受信したモジュールは、エラー状況を検討する(go into)必要がある。
【０１０７】
本発明に係るプロトコルは、モジュールが接続された母線を介して、いくつかのモジュールを有するフラッシュメモリの基板上で、空白、または、非空白の並列プログラミングが可能なソフトウェアを書き込むルールを規定するものである。このプロトコルは、存在するモジュールの入力／出力ポートの使用により規定されていてもよい。これにより、各モジュールに対して固有の設定(configuration)を伝送できる。ＣＡＮ母線に、コマンドの種類で、割り当てられた識別子と、各モジュールに特有の識別子との間に、プロトコルに係る通信が可能になるように、論理的な組み合わせがなされていてもよい。
【０１０８】
空白フラッシュメモリの場合、本発明は、母線を介して、プログラムコードをダウンロードして、実行する処理と規定する。このとき、全ての外的条件(external constraints)（周波数、２値処理能力(binary throughput)）を排除する。
【０１０９】
ここに示した実施形態では、ＣＡＮ母線を用いた場合を、特に参照して、説明した。しかしながら、本発明は、ＣＡＮ母線を用いた場合に限定されず、本発明の目的に適さない多元接続性母線(multiple access bus)を、モジュール内蔵フラッシュメモリの並列プログラミングに用いてもよい。これを達成するために、本質的には、関係する母線が並列にアクセス可能であることのみが必要である。あるいは、既知の手法（母線アクセス条件、「同報通信」型メッセージ可能にメッセージヘッダを再定義すること）で、プロトコルを改変させる。それゆえ、並列にアクセス可能になる。
【０１１０】
既に記述したように、本発明に係る処理は、ＣＡＮ母線を用いた場合の一例を参照にして説明したが、本発明に係る処理は、実質的に、新規ＴＰＰオートモバイル母線、米国Ｊ１８５０規準(American J1850 standard)に基づいた母線、ＶＡＮ母線等の、いかなるタイプの多元接続性母線にも応用可能である。
【図面の簡単な説明】
【０１１１】
【図１】図１は、プログラムされるフラッシュメモリを含むモジュールの機能図である。
【図２】図２は、モジュールプログラミングベンチ（a module programming bench）のハードウェア構成例を示すものである。
【国際公開パンフレット】
2004530229.tif 000003
2004530229.tif 000004
2004530229.tif 000005
2004530229.tif 000006
2004530229.tif 000007
2004530229.tif 000008
2004530229.tif 000009
2004530229.tif 000010
2004530229.tif 000011
2004530229.tif 000012
2004530229.tif 000013
2004530229.tif 000014
2004530229.tif 000015
2004530229.tif 000016
2004530229.tif 000017
2004530229.tif 000018
2004530229.tif 000019
2004530229.tif 000020
2004530229.tif 000021
2004530229.tif 000022
2004530229.tif 000023
2004530229.tif 000024
2004530229.tif 000025
2004530229.tif 000026
2004530229.tif 000027
2004530229.tif 000028
2004530229.tif 000029
2004530229.tif 000030
2004530229.tif 000031
2004530229.tif 000032
2004530229.tif 000033
【国際調査報告】
2004530229.tif 000034
2004530229.tif 000035
2004530229.tif 000036
2004530229.tif 000037