JP2004530229A - 多元接続性母線による内蔵フラッシュメモリの並列プログラミングおよび再プログラミング処理 - Google Patents
多元接続性母線による内蔵フラッシュメモリの並列プログラミングおよび再プログラミング処理 Download PDFInfo
- Publication number
- JP2004530229A JP2004530229A JP2003504411A JP2003504411A JP2004530229A JP 2004530229 A JP2004530229 A JP 2004530229A JP 2003504411 A JP2003504411 A JP 2003504411A JP 2003504411 A JP2003504411 A JP 2003504411A JP 2004530229 A JP2004530229 A JP 2004530229A
- Authority
- JP
- Japan
- Prior art keywords
- module
- bus
- command
- programming
- processing
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
Abstract
本発明は、内蔵メモリのプログラミング、または、再プログラミング方法に関する。本発明は、複数のモジュールを有する内蔵メモリを、該モジュールに接続された多元接続性母線を介して、並列にプログラミング、または、再プログラミングすることにあることを特徴としている。また、記録されていないフラッシュメモリの場合、本発明は、全ての外的条件(周波数、ビットレート)を排除した、多元接続性母線を介して、コードをダウンロードし、コードを実行する方法を開示している。本発明の方法は、内蔵フラッシュメモリの利用に適した設計になっている。
Description
【0001】
本発明は、CAN(コントローラ領域ネットワーク)プロトコルを用いた、母線操作といった多元接続性母線を介して、いかなる再プログラミング可能な内蔵メモリの並列プログラミング、および、再プログラミング処理に関するもので、特に、内蔵フラッシュ型メモリの、並列プログラミング、および、再プログラミングに関するものである。
【0002】
以下の説明は、フラッシュ型メモリを参照して説明しているが、本発明の概念は、いかなる再プログラミング可能なメモリについて言えることである。
【0003】
また、なお、以下の説明は、特にCAN母線(CAN bus)の使用に基づいて述べたものである。しかしながら、本発明の概念は、他の多元接続性する母線におけるフラッシュメモリ内蔵モジュールの並列プログラミング、および、再プログラミングを含んだものであっても、本発明の目的を達成することができ、CANの代用として用いることができる。
【0004】
フラッシュメモリは、EEPROMである。ただし、EEPROMとは、最速の記録時間で、低消去電圧で、大容量な電気的に消去可能でプログラム可能な再生専用メモリ(Elecctrically Erasable Programmable Read-Only Memory)のことであり、このメモリは、マイクロコントローラ回路、具体的にはエンジン制御、ABS、及び、電気サスペンション管理(electronic suspension management)等といった自動車の異なる診断手段に対する通信管理のための回路に頻繁に使用される。
【0005】
したがって、生じる課題としては、これら専用回路の内蔵メモリを、短時間で、低コストで、プログラミング(または再プログラミング)することが挙げられる。
【0006】
図1は、内蔵フラッシュメモリにおける上述した型のモジュールの従来の機能図を示している。その回路の中心は、微小型演算装置1から構成される。上記微小型演算装置1は、中央コンピュータ内のシステムユニットと、UART型の非同期直列伝送路(asynchronous serial link)2を介して、通信している。UARTとは、汎用非同期式送受信回路(Universal Asynchronous Receiver-Transmitter)のことである。非同期伝送インターフェイス(asynchronous transmission interface)3は、非同期モードでデータの伝送を可能にするために、微小型演算装置1と伝送線2との間に組み込まれる。また、CAN母線は、CANインターフェイス7を介して、上記微小型演算装置と通信するために提供されている。回路も、システムが実行する周波数を決定する外部発振器8に接続されたクロノメータ4と、消去可能で再プログラム可能なフラッシュ型メモリ5とを含む。このフラッシュメモリは通常、テストエリア5aとユーザエリア5bとの間で共有されている。
【0007】
プログラムされたフラッシュメモリが、空白である場合、システムが実行している周波数状況に関わらず、また伝送速度に関わらず、微小型演算装置を起動できるようにすることは、重要である。
【0008】
従来技術において、メモリを動かすために使用していた起動方法論(start methodology)は、フラッシュメモリをフラッシュテスト部5aとユーザフラッシュ部5bという2つの部分に分離するという原理に基づいていた。したがって、出荷時に、UART直列伝送路を介してコード(code)を書き込む(load)最小プログラムで、フラッシュテストをプログラミングする。
【0009】
しかしながら、近年のUART直列伝送路は、伝送速度を低減させており、9,600バイト/秒が限界である。したがって、この物理的(physical)インターフェイスは、高速のデータ伝送に適さない。
【0010】
製造ラインにおいて、より高い生産性を得るためには、より高速な物理的つながり(a faster physical link)が必要である。
【0011】
したがって、UART型直列伝送路は、CAN母線(図1の部材番号6参照)である他の通信媒体に替えられることが多い。CAN母線は、この回路において、CANインターフェイスモジュール7を介して、微小型演算装置と通信している。
【0012】
CANプロトコルに基づいた母線操作は、CAN母線によって可能となるスループットが125キロバイト/秒から1メガバイト/秒に変わったため、従来の非同期直列伝送路での限界よりも、高い処理能力(throughput)が達成できるようになり、中間率(intermediate rate)が500キロバイト/秒となった。
【0013】
これにより生じる課題としては、空白フラッシュメモリをこの通信媒体を使用してプログラミング可能になることが挙げられる。それゆえ、CAN母線を介して、直接プログラムコードをダウンロード可能になり、システム周波数状況や伝送路の2値処理能力(binary throughput)に関わらず、プログラムを実行可能になる。
【0014】
解決策は、従来技術においてすでに提案されていた。具体的にはATMEL会社は、CAN回路網(network)を使用したアプリケーション専用のマイクロコントローラを開発した。しかしながら、マイクロコントローラには、エラー管理のためにハードウェアリソース、具体的にはCANモジュールを追加する必要があるため、ATMEL会社による上記解決策は完全なものではない。
【0015】
これに対して、本発明は、追加のハードウェアリソースを実行することによって、この欠点を回避するものである。
【0016】
また、本発明からすぐ言えることとして、本発明は、全モジュールにおけるプログラムされているフラッシュメモリが、空白である場合に適用でき、同じく、フラッシュメモリが空白ではない、言い換えれば、同一のプログラムが既に全モジュールに組み込まれているような場合においても適用でき、特に、テストソフトウェアの初期プログラミングが、フラッシュメモリに組み込まれ、フラッシュメモリがその後、再プログラムされる必要がある場合に適用することができる。
【0017】
しかしながら、フラッシュメモリ再プログラミングの場合、言い換えれば、テストソフトウェアの同一のプログラムが全モジュールのフラッシュメモリに既に組み込まれた場合に、ユーザの要求によってフラッシュメモリを再プログラミングできるようにする前に、消去工程を含む必要がある。
【0018】
再プログラミングの前の上記消去工程には、回路毎で10秒程度かかることから、多くの時間を必要とする。このメモリ消去操作は、後の再プログラミングのために必要であり、また、数百、数千、数万のモジュールを作成しなくてはならないということから、製造環境において厳しい重荷となる。
【0019】
最後に、フラッシュメモリ自体の実際のプログラミング(the actual programming)を考える上で考慮しなくてはならないもう1つの制約が、構成要素に対する特性である。なぜならば、フラッシュメモリのプログラムとはキャパシタ(capacitors)にチャージすること(charging)に相当するからである。フラッシュメモリは、各々が非常に良質の絶縁体となるいくつかのキャパシタからなり、そのため、長時間放電することが困難である。
【0020】
しかしながら、キャパシタは、バッチ製造(manufacturing batches)における酸化物の違いによって放電(discharge)の速度が変化する。したがって、与えられた回路に対してフラッシュのプログラミングにxマイクロ秒かかったとすると、例えば酸化物の違いによっては他の回路に対して1マイクロ秒長くかかってしまうことになる。
【0021】
異なるモジュール間でフラッシュメモリをプログラミングすることによって生じ、また、それぞれのフラッシュメモリ自体の特性であるこれら同期の課題は、CAN母線を通じて特定のプログラミングプロトコルで実行することが出来ないという欠点である。
【0022】
したがって、本発明の目的の1つは、フラッシュメモリのプログラミングによる非同期問題の解決のためのフラッシュメモリに関する制約を克服することである。すなわち、モジュールレベルでの内蔵フラッシュメモリのCAN母線を介したプログラミングおよび並列再プログラミングを可能にすることである。
【0023】
特に、プログラムされるフラッシュメモリが空白である場合において、本発明のもう1つの目的は、システムの周波数およびCAN母線におけるデータ送信の2値処理能力に関わらず、また追加した装置も使用せず、一方でUART型直列伝送路を介して使用された従来の起動方法論を残したまま、CAN母線を介して微小型演算装置の起動を直接的に行うことにある。一度CAN母線を介して起動できたならば、モジュールレベルでのフラッシュメモリの並列プログラミングを考えることが可能となる。
【0024】
CAN母線に対する本明細書で説明する本発明の原理は、言うまでもなく、他の、例えば新TTP(Time Trigger Protocol)自動式母線(automobile bus)、アメリカのJ1850基準(the American J1850 standard)に基づいた母線、または、VAN母線といった多元接続性の母線すべてに適用することができる。
【0025】
並列に、内蔵フラッシュメモリを、プログラミング、および、再プログラミングするために、全モジュールへ同じデータを同時に送信することができるよう、実行のためには特定の通信プロトコルを定義しなくてはならない。
【0026】
フラッシュメモリのプログラミングによる非同期性を管理するために、各モジュールに対して、固有の設定を通過させる(pass)のにモジュールの既存の接続を使用することができるという利点を有している。したがって、各々のモジュールは、それぞれ個別に識別され、プログラミングステーション(programming station)は、接続されているモジュールの数を知ることが出来る。
【0027】
結果として、回路またはモジュールのいくつかが、並列にプログラムまたは再プログラムされ、製造ラインにおける膨大な生産性を得ることが可能となり、それにともないコストが低減される。
【0028】
したがって、本発明は、内蔵再プログラム可能メモリのプログラミング、または、再プログラミング処理に関する。そして、この処理は、いくつかのモジュールの内蔵メモリを、上記モジュールが接続された多元接続性母線を介して、並列にプログラミング、または、再プログラミングすることからなることを特徴としている。
【0029】
本発明のその他の特徴点および効果は、以下に説明するCAN母線を使用した例による実施の形態および添付した図を参照することによって明らかとなるだろう。ただしこれらに限定されるものではない。
図1は、プログラムされるフラッシュメモリを含むモジュールの機能図である。
図2は、モジュールプログラミングベンチ(a module programming bench)のハードウェア構成例を示すものである。
【0030】
クロノメータ(図1の部材番号4を参照)からなる集積ハードウェアリソース(the integrated hardware resource)は、空白フラッシュメモリがプログラムされなくてはならない場合に、実行されるトリガシーケンス(the trigger sequence)にまず関連するものすべてに対して使用される。クロノメータ4は、システムの内部周波数(internal frequency)の導関数(derivative)により起動する。クロノメータの役割は、所定の数の2値要素(binary elements)を含む事前定義フレーム(a predefined frame)の伝送時間を測定することである。
【0031】
CANにおける正確な2値処理能力は、システムの内部周波数を介して、多数のトランジション(transition)の伝送時間を測定することによって算出される。したがって、微小型演算装置1をCANの周波数に適用することができる。回路のCANモジュール7は通信に能動的に(actively)加わるよう配置される。
【0032】
したがって、第1の段階は、CANにおける2値処理能力を検出することからなる。
【0033】
2値処理能力の検出は、プログラミングステーション9によりCAN上に伝送された事前定義フレームに際した測定に基づいている。測定の間は、回路のCANモジュール7は起動していない。検出は実際、入力/出力ポートで行われる。したがって、微小型演算装置はCANモジュールで直接駆動しているかどうかに関わらず、入力/出力ポート(図1には図示せず)を通して定義されたフレームを受信し、分析する。
【0034】
微小型演算装置は、高いバイト数、好ましくは良好な分解能を得るためには29バイトを含む参照フレーム(reference frame)における伝送時間を測定する。試み(an attempt)は、ソフトウェアがチェックするための少ない数のトランジションを有していることを確かめる一方で、バイト数を可能な限り大きくして行った。もし、29バイト以上であった場合には、トランジションが多く、どんな周波数であってもトランジションをソフトウェアでモニターすることがさらに困難になってしまう。
【0035】
等価2値処理能力は、CANモジュール7が正確に配置され、それにより受信の応答として機能するCAN母線6に有効な事前定義識別フレームがCANモジュールを通してプログラミングステーション9に送信することができるように、微小型演算装置1によって算出される。
【0036】
第2の段階は、ローディングプログラム(the loading program)のダウンロードからなる。
【0037】
これを達成するために、プログラミングステーション9はCAN母線6における事前定義バイト数、一般的には32バイトを、CANモジュールを介して、微小型演算装置1に送る。ある特定の実施形態によれば、大きいバイト数、たとえば64バイトは、CANの最終最適パラメータ(the final optimum parameters)とともにCANモジュールを再初期化するために読み込まれる。このようにCANの最終パラメータを、微小型演算装置にダウンロードされたバイトによって書き換えることで、機構をより良くする。
【0038】
微小型演算装置は、微小型演算装置自体の内部メモリ、すなわちRAM(Random Access Memory)型揮発性メモリに、これらのバイトを読み込む。一旦、微小型演算装置が十分なバイト数をRAMに書き込むと、微小型演算装置は、読み込まれたばかりのプログラムを実行し、第2の段階の終了を意味する所定のフレームを送信する。そして、これは、CANモジュールを介して、プログラミングステーションで、バイトの受信を認知する。
【0039】
したがって、プログラムの初期段階は、完全読み込みと完全に配置できることである。都合のいいことに、このプログラムの初期段階は、続く、最も大きなバイト数の読み込みに用いることができるローディングプログラムである。
【0040】
第3の段階において、最終の処理は、プログラミングステーションから微小型演算装置へのダウンロードである。例えば、この最終処理はフラッシュメモリをプログラミングするためのソフトウェアであろう。
【0041】
したがって、開始するためには、それぞれのモジュールに微小型演算装置の内部メモリを読み込むための初期プログラムは、モジュールでのCANにおける2値処理能力の事前検出にしたがって、CAN母線を介してダウンロードされる。
【0042】
一度CAN母線を通じてシステムが始動したら、CANを介して並列にプログラミングを始動し、フラッシュメモリを消去することが可能となる。
【0043】
45したがって図2において、例としてプログラム(または再プログラム)されるモジュールを2つだけ、M0およびM1、示している。しかし、本発明は複数のモジュールで使用されることは言うまでもない。モジュールM0およびM1は、CAN母線6を介してプログラミングステーション9と繋がっている。CAN母線に連結した全てのモジュールは同じ周波数で作動し、同じソフトウェアを使用する。
【0044】
したがって、まず、使用者は、後にCANを介してプログラミングステーションと連結するために使用されるモジュールに特異的な識別子を定義するためにモジュールの事前定義入力および出力状況を読み取る必要がある。これを達成するために、モジュールの既存接続I0およびI1それぞれは、モジュール微小型演算装置によって読み込まれてプログラミングステーションと同一であると認識するテスト環境において、バイナリー識別番号を供給するために用いられる。それぞれのモジュールが個々の識別子(並列プログラミングに必要な状態)をもつことができるためのもうひとつの方法は、全てのモジュールのエネルギー消費量を順番に上げて、順番に始動させるというものである。これにより、プログラミングステーションはモジュールが始動したときにモジュールに対して識別子を与えることができる。
【0045】
その後、シーケンスメッセージ(sequence message)の特定端(specific end)を待っているモジュールの始動を求める。ステーションはその後もエネルギーを与え、次のモジュールを誘因する。この段階が終了した時には、シーケンスメッセージの終了を伝送し、全てのモジュールは異なる識別子を有して同報通信型(broadcast type)コマンドを受け入れる態勢をとる。
【0046】
本発明の通信プロトコルにおいては、2つのメッセージ型がある。まず初めは、‘同報通信(broadcast)’型メッセージ、言い換えるとCAN母線上で接続された全てのモジュールへの同報通信である。したがってこれら「同報通信」型メッセージは、プログラミングステーションによって伝送される全般同報通信メッセージ(general broadcast message)であり、同時に全てのモジュールによって並行に聞かれる(listen)。したがって、プログラミング、消去、照会コマンド(verification commands)はプログラミングステーションから同報通信される。これらのコマンドは、「同報通信」型のメッセージを区別する(distinguishes)一般識別子(generic identifier)とともに同報通信される。
【0047】
また、プログラミングステーションから特定のモジュールへのコマンド、またはモジュールからプログラミングステーションへのコマンドのどちらかである、各々のモジュールに特異的な識別子を介したポイントツーポイント型(point to point type)メッセージもある。
【0048】
したがって、本発明は、並列におけるフラッシュメモリのプログラミングおよび再プログラミングのためのデータ伝送リンク(the data transmission link)および伝送手順の機能的特性を網羅する規則(rules)一式を含むものである。
【0049】
第1過程にて、プログラミングステーションは母線と接続しているモジュール数を求める。プログラミングステーションは実際、モジュールに対して、モジュール自体を認識すること、およびモジュールの識別フレーム(identification frame)を伝送することを「同報通信」型メッセージを介して要求する。
【0050】
第2過程にて、プログラミングステーションはプログラミングコマンドを全てのモジュールに対して並列に同報通信する(または、再プログラミングの場合では消去コマンドを同報通信する)。これらプログラミングコマンドは、これらに関係する一般識別子により「同報通信」型であると解釈され、またプログラムされる書き込みアドレス(a write address)およびデータを含む。
【0051】
加えて、プログラミングが終結すると、プログラミングステーションは同じ方法を繰り返し、チェックコマンドを同報通信し、全てのモジュールに対して再度伝送される。したがって各々のモジュールは、受信した参照(the reference)でモジュール自体のフラッシュメモリの内容を比較することにより、モジュールの微小型演算装置を利用した自己チェック(self-check)を行うために、アドレスおよび基準を含む単一の「同報通信」型メッセージを用いる。したがって、チェックは並列に行われるため、膨大な時間を節約することができる。
【0052】
実施形態の1つにおいて、シーケンスの終了段階にてプログラミングステーションは、プログラミングの結果及び上記チェックを伝送するように要求する。各々モジュールは、プログラムされている間およびチェックされている間はエラーを保持している。
【0053】
プログラミングステーションはその後、依然として「同報通信」型コマンドを使用してプログラムされたモジュール数を求める。
【0054】
しかしながら、もう一つの実施形態によれば、プログラミング中、または、照合(verification)中に、エラーを検出すると直ちに、各モジュールは、上記の目的を備えたポイントツーポイントメッセージを用いて、プログラミングステーションへ、エラーの信号を送ることができる。
【0055】
さらに、使用者のハードウェアの種類に応じて、上記モジュールから、LED(光出射ダイオード)といった制御外部指示器(indicator)への出力を用いるという利点があるかもしれない。上記外部指示器は、プログラミングベンチ上で、プログラミング結果を指示するという機能を有する。
【0056】
並列にプログラミングされた、2つのモジュールから開始する場合、UARTを用いたフラッシュメモリのプログラミングと比較して、大幅に、時間を節約することができる。また、消去過程(erase step)を実行する場合、この時間の節約は、より顕著になる。上記の場合としては、例えば、必要アプリケーション(required application)をプログラミングする前に消去された、テストプログラミングを取り込む(load)必要がある場合が、特に挙げられる。
【0057】
さらに、上述のプロトコルは、上記モジュールに必要なソフトウェア処理を最小化することを目的としている。上記ソフトウェア処理では、モジュールの微小型演算装置(microprocessor)は、プログラミングステーションとの通信を管理するよりも、プログラミングするほうが時間を要してしまう。
【0058】
これを達成するために、ダブルバッファ方式(double buffer system)を始動すると同時に、メモリにおけるデータ受信、及び、プログラミングが可能になる。そして、まず、上記CANから受信したプログラミングコマンドは、待機領域として作用する第1バッファ領域に、入力される(put into)。
【0059】
上記モジュールそれぞれから、伝送バッファ(transfer buffer)、及び、プログラミングコマンドの受信において、フラッシュメモリのプログラミングは、第1データバッファ領域で既に受信され、蓄積されたデータを用いて、各モジュールで始まる。そして、同時に、上記CANからのコマンドの受信は、第2バッファ領域で割り当てる。したがって、データバッファを補充する第1処理、及び、これらのデータを処理する他の処理が存在する。第1処理から他の処理への切替えから、モジュールは、最小の通信で非常に効率的に、かつ、プログラミングされ得ることが理解される。そして、この切替えは、時間の節約にも最適である。
【0060】
さらに、モジュールとプログラミングステーションとの間を通信する、モジュールに必要なソフトウェア処理を最小化するために、大きなバッファを用いる必要がある。1つのバッファから他のバッファへの切替えは、プログラミングステーションからモジュールへ送信された伝送コマンドによりなされる。同様に、上記モジュールが、バッファのプログラミングを完了したとき、モジュールは、プログラミングステーションへ、レポートメッセージを送信する。
【0061】
本願発明者は、本発明にかかるプロトコルに含まれる全コマンドの詳細を、ここに示す。
【0062】
上記プロトコルにより、CAN母線を介して、並列に、フラッシュメモリをプログラミングすることが可能になる。それゆえ、上記第1過程は、いくつかの「同報通信(broadcast)」型のコマンドを用いることである。換言すれば、コマンドは、プログラミングステーションから、CAN母線に接続された全モジュールへ、同報通信する。そして、上記モジュールの何れでも、コマンドを受信することが可能になる。
【0063】
第1送信_IDコマンドは、これらの識別子を送信する請求モジュール(asking module)からなる。それゆえ、各モジュールは、上記コマンドに特異的な識別子を送信する。これにより、プログラミングステーションは、CAN母線を介して接続されたモジュールの数を数え、これらのモジュールを、個々に監視することが可能となる。
【0064】
他の「同報通信」型コマンドとしては、開始充填バッファコマンド(start filling buffer command)が挙げられる。このコマンドは、開始メモリアドレスを送信することによりなされる。そして、カウント、及び、データは、CAN上で全モジュールに対して、上記アドレスでメモリに書き込まれる。例えば、上記カウントは、モジュールが充填バッファコマンドを受信した後、いくつかの2値言語(binary words)を受信したかについての情報を、モジュールに与えるのに用いられる。
【0065】
続いて、継続充填バッファコマンド(continue filling buffer command)は、同報通信であり、データのみからなる。そして、メモリは、自身の増分(increment)を、自動的に、アドレス指定する。したがって、発信される補助ビットの数、及び、データ発信時間を最小にすることができる。
【0066】
それゆえ、各モジュールが、新規の開始充填バッファコマンドを受信する、または、プログラミングステーション主導で、伝送バッファコマンドまたはプログラミングコマンドを受信するまでに、各モジュールは、データを受信する。
【0067】
上記伝送バッファ、及び、プログラミングコマンドは、各要求モジュール(requesting each module)からなる。このモジュールは、データ受信状態のバッファから開始するプログラミングを開始し、他のバッファを受信に割り当てる。そして、受信状態にあるバッファは、プログラミングの参照として用いるバッファになり、プログラミング状態にあるバッファは、受信バッファになる。
【0068】
上述の伝送バッファ、及び、プログラミングコマンドに続くコマンドは、上記伝送バッファ、及び、照合コマンド(verification command)である。この照合コマンドもまた、同報通信型コマンドである。このコマンド受信において、各モジュールは、受信状態にあるバッファから始まる照会を、開始する。そして、このとき、他のバッファは、受信に割り当てられる。そして、同時に全モジュールに対して同報通信された単一のコマンドから開始すると、照合が起きる。そして、各モジュールは、自身で、プログラミング結果を検査する。それゆえ、このような照会は「同報通信」型であり、これにより、処理全体に対して、大幅な時間の節約になる。
【0069】
上記開始充填バッファ、及び、上記継続充填バッファコマンドは、実際には独立しており、プログラミング及び照会コマンドである。そして、バッファが伝送された場合にのみ、上記伝送コマンドが、プログラミングしているのか、あるいは、照会しているのかの通知がなされる。
【0070】
上記プロトコルは、プログラミングステーションが、全モジュールに対して、同報通信する、他のコマンドを含む。そして、このコマンドは、情報の請求からなり、各モジュールの状況について送信する。そのとき、各モジュールは、例えば照合した後に、プログラミング状況を送信する。
【0071】
最後に、最終同報通信コマンド、すなわち、消去コマンドが必要である。この消去コマンドは、全モジュールが接続されたCAN母線上で、プログラミングステーションにより同報通信される。そして、同時に、このコマンドは、全モジュールに対して、メモリ消去の開始を制御する。このコマンドは、特に、CAN母線を介して、フラッシュメモリを並列に再プログラミングするのに、用いられる。
【0072】
上記プロトコルで選ばれる実施に応じて、上記消去コマンドは、よりよい安全確保(security)にために、2つの過程で用いられることが好ましい。すなわち、第1準備消去コマンドは、伝送データバンクからなる。この伝送データバンクは、フラッシュメモリ内でパラメータとして、消去される。次に、上記消去を確認する第2のコマンドは、先のコマンドを実行することからなる。明らかに、上記確認消去コマンドを最適にすることが可能である。
【0073】
また、本発明にかかるプロトコルは、ある種の特有の、モジュールからプログラミングステーションへのメッセージを用いている。それゆえ、これらのメッセージは、もはや、上述の「同報通信」型メッセージではなく、ポイントツーポイント型メッセージになる。
【0074】
上述した型のメッセージそれぞれには、特有の識別子が必要となる。このため、各モジュールとプログラミングステーションとの間で、通信可能になる。
【0075】
CAN上の全域の識別子は、少なくとも、11ビット型の識別子である。これらのビットのいくつかは、コマンドのタイプで規定される。それ以外のビットは、モジュール数で規定される。この場合、CAN上で用いられる特有識別子は、各コマンドで割り当てられる一般コマンドと、モジュール特異的な識別子との間の、論理組み合わせに由来する。このため、固有識別子(unique identifier)は、各モジュールについて、CAN上で、モジュールからプログラミングステーションへと送信される。
【0076】
モジュールからプログラミングステーションへの、特有のポイントツーポイントコマンドの間には、ある重要なコマンドが含まれている。このコマンドは、コマンド_OKコマンドである。コマンド_OKコマンドは、データバッファのプログラミング/照合が成功した後(または、消去が成功した後)、各モジュールにより、プログラミングステーションへ送信される。
【0077】
フラッシュメモリのプログラミングに起因して、いくつかの非同期性(asynchronism)を管理する必要がある。このとき、プログラミングステーションは、タイムアウト(time out)を開始するのに有利である。これにより、各モジュールが、そのメモリを、正確にプログラミングする(または、照会する)のに十分な時間を残す。上記プログラミングステーションが、所定の時間を、予め規定した後、プログラミングステーションは、各モジュールにおける固有識別(unique identification)を用いて、個々のコマンドを、応答しない全モジュールに戻す。そして、プログラミングステーションは、上記モジュールに、エラー状況にあることを知らせる。
【0078】
しかしながら、モジュールからプログラミングステーションへの、有効なポイントツーポイントコマンドは、また、プログラミングエラーコマンドを含んでいてもよい。したがって、モジュールが、プログラミングの間、エラーを検出している場合(例えば、モジュールが、値を書き込めない場合)、このプログラミングエラーコマンドにより、モジュールは、タイムアウトの終了を待たずに、このエラーを、速やかに、プログラミングステーションへ伝えることができる。
【0079】
同様に、照会エラーコマンドが備えられている。照会エラーを検出すると、この照会エラーコマンドは、照会処理の終了時にではなく、速やかに、各モジュールに、プログラミングステーションへ照会エラーを報告する機会を与える。
【0080】
そして、全モジュールが、コマンド_OKコマンド、または、エラーメッセージを戻すまで、プログラミングステーションは、タイムアウトを開始し、待機している。
【0081】
これらのプログラミングエラー、及び、照会エラーのコマンドは、エラーが検出されるとすぐに、送信されているので、実にプログラミング時間を最適にできる。これらの異なるコマンドの結果、上記プログラミングステーションは、どのエラーを処理しても、タイムアウトの終了まで待機する必要がない。また、このことは、上記固有識別子が、CAN母線上で接続している各モジュールに、割り当てられることにより可能になる。
【0082】
フラッシュメモリの再プログラミング消去の場合、消去エラーコマンドを用いることができる。この消去エラーコマンドは、異なるモジュールの並列プログラミング中に用いられた、プログラミングエラー、及び、照会エラーのコマンドと、同じ原理に基づいて、かつ、同じ意図で、用いられる。
【0083】
最後に、モジュールからプログラミングステーションへの、特有のポイントツーポイントコマンドとしては、モジュール状況コマンドが挙げられる。このコマンドは、プログラミングステーションからの(「同報通信」型の)要求に応答して、その目的で、各モジュールにより送信される。
【0084】
また、本発明にかかるプロトコルは、プログラミングステーションからモジュールへの特有のコマンドを含んでいる。それゆえ、このコマンドは、他のポイントツーポイントコマンドである。
【0085】
モジュールからプログラミングステーションへの、固有のコマンドと同様に、各モジュールが、メッセージに関連があるかどうかを知るために、CAN上で特有の識別子を生成する必要がある。このために、モジュール特有の索引を付加することで、異なる必要なコマンドで用いられた一般識別子を特殊化する。そして、このコマンドは、モジュールに対して、一般識別子の末端で、アドレス指定される。これにより、プログラミングステーションからモジュールへの、ポイントツーポイント通信、及び、結果として生じた特有のメッセージの発信が可能になる。
【0086】
これらの、プログラミングステーションからモジュールへの特有メッセージは、送信された状況コマンドを含んでいる。このコマンドは、状況を送信するように、モジュールに要求することからなる。
【0087】
停止コマンド(stop command)は、速やかに全動作を停止するように、モジュールに要求することからなる。このコマンドにより、フラッシュメモリがプログラミングしているエラーを有するモジュールは、他のモジュールのプログラミングを邪魔することがなくなる。
【0088】
プログラミングステーションのメッセージに対する特有のモジュール、例えば上述のコマンド_OKコマンド型といった形態における、タイムアウト停止コマンド(stop timeout command)は、モジュールに通知する。そして、このモジュールからの応答から、プログラミングステーションにおけるタイムアウト始動が終了したことが予測される。モジュールが、タイムアウト停止コマンドを受信すると、該当モジュールは、自身がエラーを興していることを判断する必要がある。
【0089】
動作_OKコマンド(operation_OK command)は、プログラミング、または、照会の終了時に(または、並列再プログラミングを用いる場合には、消去の終了時に)与えられなければならない。プログラミングステーションは、特有のモジュールで起きるあらゆる保証(guarantee)を有するので、このポイントツーポイントの動作_OKコマンドは、必要である。プログラミングステーションは、正確にプログラミングされた各モジュールに対して、最終確認を提供する。プログラミングステーションが、「同報通信」型のコマンドを用いて、各モジュールに対するプログラミングの照会を任せて、次に、各モジュールが、プログラミングステーションへ、照会結果を伝送する場合でも、プログラミングステーションは、正確にプログラミングされた各モジュールに対して、最終確認を提供する。
【0090】
上記モジュールは、有利に、この動作_OKコマンドの受信を用いてもよい。これにより、動作_OKコマンドは、モジュールに存在する出力ポートの一つの発光ダイオードに命令する。
【0091】
プロトコルの観点から、プログラミングステーションは、該プログラミングステーションが、モジュールからの受信における全認知(acknowledgement)を受信したかを点検する。そして、このとき、プログラミングステーションは、各特有モジュールに対する処理を通して、正常に起きたことを通知するために、動作_OKコマンドを用いる。
【0092】
本発明に係るプロトコルに含まれる、全ての特有「同報通信」型コマンドを記述した後、本願発明者は、ここで、これらの異なるコマンドを用いた、プログラミング、及び、照会の流れの一例を考慮する。全コマンドは、独立して、CAN母線上を、通過する。また、CAN母線上で、全コマンドは、送信フォームである。
【0093】
第1の過程は、プログラミングステーションによる、送信_IDコマンドを用いる。そして、各モジュールは、このコマンドの特有識別子を送信することにより、コマンドに応答する。
【0094】
第2の過程は、充填バッファコマンドを送信することからなる。この充填バッファコマンドは、バッファにおける受信の始まりに印をつける(mark)。第3の過程で、継続充填バッファコマンドは、CAN上で送信される。その結果、アドレスが増加するに伴い、バッファを充填し続ける。
【0095】
第4の過程は、継続充填バッファコマンド、または、新しく開始した充填バッファコマンドを用いる。新しく開始した充填バッファコマンドを用いる場合、プログラミングされたデータアドレスに、不連続点が存在する。
【0096】
伝送バッファ、及び、プログラミングのコマンドは、第5の過程で、送信される。このとき、プログラミングが、受信状態にあるバッファから開始する各モジュールで、開始する。そして、第2のバッファが、受信において、同時に、割り当てられる。この過程中には、伝送バッファ、及び、照会のコマンドを用いることができる。照会が開始され、既に説明したように、この照会は、各モジュールで、並列して起きる。
【0097】
第6の過程は、充填バッファコマンドの繰り返しからなる。これにより、プログラミング処理の終了まで、過程2から過程5までが繰り返される。
【0098】
第7の過程では、各モジュールは、次のコマンドを、並列に送信する。すなわち、最後のバッファのデータ処理が成功したことを指示するコマンド_OKコマンド、または、プログラミング中のエラーを指示するプログラミングエラーコマンド、または、照会中のエラーを指示する照会エラーコマンドを送信する。
【0099】
第8の過程は、プログラミングステーションから、タイムアウト停止コマンドを送信することからなる。このコマンドは、タイムアウトを終了させる。このタイムアウトは、モジュールがプログラミングを実行しなければならない時間間隔になった、プログラミングステーションに用いられる。この過程のタイムアウトコマンドを受信したモジュールは、自身がエラー状態にあることを判断する。
【0100】
最後に、プログラミング、及び、照会処理における最終過程は、動作_OKコマンドを送信することからなる。このとき、プログラミングステーションは、各モジュールに対して、独立して、全処理を通してすべて正常に起きたことを確認するために、このコマンドを用いることができる。
【0101】
モジュールのフラッシュメモリが、並列再プログラミングのために、消去されている場合、CAN上のコマンドの流れは、より簡潔になる。
【0102】
第1の過程は、送信_IDコマンドを用いることからなる。各モジュールは、このコマンドの特有識別子を送信することにより、コマンドに応答する。そして、プログラミングステーションは、消去されたモジュールの数をカウントすることができる。
【0103】
上記消去は、2つの「同報通信」型コマンドを用いた、2つの過程で起きることが好ましい。この2つの「同報通信」型コマンドとしては、第1に、準備消去コマンド、および、第2に、確認消去コマンドが挙げられる。
【0104】
モジュールは、消去コマンドを正常に実行したことを指示するコマンド_OK型コマンド、または、消去エラーコマンドを送信する。
【0105】
全モジュールが消去を完了したことに成功した場合、動作_OKコマンドを送信する。このコマンドにより、プログラミングステーションは、消去が各モジュールで成功したことを、特別に確認する。それゆえ、このコマンドは、モジュールからのコマンド_OKコマンド出力に応答して、送信される。
【0106】
最後に、タイムアウト停止コマンドは、最終過程で用いられる。それゆえ、このタイムアウト中に応答しないモジュール、及び、このコマンドを受信したモジュールは、エラー状況を検討する(go into)必要がある。
【0107】
本発明に係るプロトコルは、モジュールが接続された母線を介して、いくつかのモジュールを有するフラッシュメモリの基板上で、空白、または、非空白の並列プログラミングが可能なソフトウェアを書き込むルールを規定するものである。このプロトコルは、存在するモジュールの入力/出力ポートの使用により規定されていてもよい。これにより、各モジュールに対して固有の設定(configuration)を伝送できる。CAN母線に、コマンドの種類で、割り当てられた識別子と、各モジュールに特有の識別子との間に、プロトコルに係る通信が可能になるように、論理的な組み合わせがなされていてもよい。
【0108】
空白フラッシュメモリの場合、本発明は、母線を介して、プログラムコードをダウンロードして、実行する処理と規定する。このとき、全ての外的条件(external constraints)(周波数、2値処理能力(binary throughput))を排除する。
【0109】
ここに示した実施形態では、CAN母線を用いた場合を、特に参照して、説明した。しかしながら、本発明は、CAN母線を用いた場合に限定されず、本発明の目的に適さない多元接続性母線(multiple access bus)を、モジュール内蔵フラッシュメモリの並列プログラミングに用いてもよい。これを達成するために、本質的には、関係する母線が並列にアクセス可能であることのみが必要である。あるいは、既知の手法(母線アクセス条件、「同報通信」型メッセージ可能にメッセージヘッダを再定義すること)で、プロトコルを改変させる。それゆえ、並列にアクセス可能になる。
【0110】
既に記述したように、本発明に係る処理は、CAN母線を用いた場合の一例を参照にして説明したが、本発明に係る処理は、実質的に、新規TPPオートモバイル母線、米国J1850規準(American J1850 standard)に基づいた母線、VAN母線等の、いかなるタイプの多元接続性母線にも応用可能である。
【図面の簡単な説明】
【0111】
【図1】図1は、プログラムされるフラッシュメモリを含むモジュールの機能図である。
【図2】図2は、モジュールプログラミングベンチ(a module programming bench)のハードウェア構成例を示すものである。
本発明は、CAN(コントローラ領域ネットワーク)プロトコルを用いた、母線操作といった多元接続性母線を介して、いかなる再プログラミング可能な内蔵メモリの並列プログラミング、および、再プログラミング処理に関するもので、特に、内蔵フラッシュ型メモリの、並列プログラミング、および、再プログラミングに関するものである。
【0002】
以下の説明は、フラッシュ型メモリを参照して説明しているが、本発明の概念は、いかなる再プログラミング可能なメモリについて言えることである。
【0003】
また、なお、以下の説明は、特にCAN母線(CAN bus)の使用に基づいて述べたものである。しかしながら、本発明の概念は、他の多元接続性する母線におけるフラッシュメモリ内蔵モジュールの並列プログラミング、および、再プログラミングを含んだものであっても、本発明の目的を達成することができ、CANの代用として用いることができる。
【0004】
フラッシュメモリは、EEPROMである。ただし、EEPROMとは、最速の記録時間で、低消去電圧で、大容量な電気的に消去可能でプログラム可能な再生専用メモリ(Elecctrically Erasable Programmable Read-Only Memory)のことであり、このメモリは、マイクロコントローラ回路、具体的にはエンジン制御、ABS、及び、電気サスペンション管理(electronic suspension management)等といった自動車の異なる診断手段に対する通信管理のための回路に頻繁に使用される。
【0005】
したがって、生じる課題としては、これら専用回路の内蔵メモリを、短時間で、低コストで、プログラミング(または再プログラミング)することが挙げられる。
【0006】
図1は、内蔵フラッシュメモリにおける上述した型のモジュールの従来の機能図を示している。その回路の中心は、微小型演算装置1から構成される。上記微小型演算装置1は、中央コンピュータ内のシステムユニットと、UART型の非同期直列伝送路(asynchronous serial link)2を介して、通信している。UARTとは、汎用非同期式送受信回路(Universal Asynchronous Receiver-Transmitter)のことである。非同期伝送インターフェイス(asynchronous transmission interface)3は、非同期モードでデータの伝送を可能にするために、微小型演算装置1と伝送線2との間に組み込まれる。また、CAN母線は、CANインターフェイス7を介して、上記微小型演算装置と通信するために提供されている。回路も、システムが実行する周波数を決定する外部発振器8に接続されたクロノメータ4と、消去可能で再プログラム可能なフラッシュ型メモリ5とを含む。このフラッシュメモリは通常、テストエリア5aとユーザエリア5bとの間で共有されている。
【0007】
プログラムされたフラッシュメモリが、空白である場合、システムが実行している周波数状況に関わらず、また伝送速度に関わらず、微小型演算装置を起動できるようにすることは、重要である。
【0008】
従来技術において、メモリを動かすために使用していた起動方法論(start methodology)は、フラッシュメモリをフラッシュテスト部5aとユーザフラッシュ部5bという2つの部分に分離するという原理に基づいていた。したがって、出荷時に、UART直列伝送路を介してコード(code)を書き込む(load)最小プログラムで、フラッシュテストをプログラミングする。
【0009】
しかしながら、近年のUART直列伝送路は、伝送速度を低減させており、9,600バイト/秒が限界である。したがって、この物理的(physical)インターフェイスは、高速のデータ伝送に適さない。
【0010】
製造ラインにおいて、より高い生産性を得るためには、より高速な物理的つながり(a faster physical link)が必要である。
【0011】
したがって、UART型直列伝送路は、CAN母線(図1の部材番号6参照)である他の通信媒体に替えられることが多い。CAN母線は、この回路において、CANインターフェイスモジュール7を介して、微小型演算装置と通信している。
【0012】
CANプロトコルに基づいた母線操作は、CAN母線によって可能となるスループットが125キロバイト/秒から1メガバイト/秒に変わったため、従来の非同期直列伝送路での限界よりも、高い処理能力(throughput)が達成できるようになり、中間率(intermediate rate)が500キロバイト/秒となった。
【0013】
これにより生じる課題としては、空白フラッシュメモリをこの通信媒体を使用してプログラミング可能になることが挙げられる。それゆえ、CAN母線を介して、直接プログラムコードをダウンロード可能になり、システム周波数状況や伝送路の2値処理能力(binary throughput)に関わらず、プログラムを実行可能になる。
【0014】
解決策は、従来技術においてすでに提案されていた。具体的にはATMEL会社は、CAN回路網(network)を使用したアプリケーション専用のマイクロコントローラを開発した。しかしながら、マイクロコントローラには、エラー管理のためにハードウェアリソース、具体的にはCANモジュールを追加する必要があるため、ATMEL会社による上記解決策は完全なものではない。
【0015】
これに対して、本発明は、追加のハードウェアリソースを実行することによって、この欠点を回避するものである。
【0016】
また、本発明からすぐ言えることとして、本発明は、全モジュールにおけるプログラムされているフラッシュメモリが、空白である場合に適用でき、同じく、フラッシュメモリが空白ではない、言い換えれば、同一のプログラムが既に全モジュールに組み込まれているような場合においても適用でき、特に、テストソフトウェアの初期プログラミングが、フラッシュメモリに組み込まれ、フラッシュメモリがその後、再プログラムされる必要がある場合に適用することができる。
【0017】
しかしながら、フラッシュメモリ再プログラミングの場合、言い換えれば、テストソフトウェアの同一のプログラムが全モジュールのフラッシュメモリに既に組み込まれた場合に、ユーザの要求によってフラッシュメモリを再プログラミングできるようにする前に、消去工程を含む必要がある。
【0018】
再プログラミングの前の上記消去工程には、回路毎で10秒程度かかることから、多くの時間を必要とする。このメモリ消去操作は、後の再プログラミングのために必要であり、また、数百、数千、数万のモジュールを作成しなくてはならないということから、製造環境において厳しい重荷となる。
【0019】
最後に、フラッシュメモリ自体の実際のプログラミング(the actual programming)を考える上で考慮しなくてはならないもう1つの制約が、構成要素に対する特性である。なぜならば、フラッシュメモリのプログラムとはキャパシタ(capacitors)にチャージすること(charging)に相当するからである。フラッシュメモリは、各々が非常に良質の絶縁体となるいくつかのキャパシタからなり、そのため、長時間放電することが困難である。
【0020】
しかしながら、キャパシタは、バッチ製造(manufacturing batches)における酸化物の違いによって放電(discharge)の速度が変化する。したがって、与えられた回路に対してフラッシュのプログラミングにxマイクロ秒かかったとすると、例えば酸化物の違いによっては他の回路に対して1マイクロ秒長くかかってしまうことになる。
【0021】
異なるモジュール間でフラッシュメモリをプログラミングすることによって生じ、また、それぞれのフラッシュメモリ自体の特性であるこれら同期の課題は、CAN母線を通じて特定のプログラミングプロトコルで実行することが出来ないという欠点である。
【0022】
したがって、本発明の目的の1つは、フラッシュメモリのプログラミングによる非同期問題の解決のためのフラッシュメモリに関する制約を克服することである。すなわち、モジュールレベルでの内蔵フラッシュメモリのCAN母線を介したプログラミングおよび並列再プログラミングを可能にすることである。
【0023】
特に、プログラムされるフラッシュメモリが空白である場合において、本発明のもう1つの目的は、システムの周波数およびCAN母線におけるデータ送信の2値処理能力に関わらず、また追加した装置も使用せず、一方でUART型直列伝送路を介して使用された従来の起動方法論を残したまま、CAN母線を介して微小型演算装置の起動を直接的に行うことにある。一度CAN母線を介して起動できたならば、モジュールレベルでのフラッシュメモリの並列プログラミングを考えることが可能となる。
【0024】
CAN母線に対する本明細書で説明する本発明の原理は、言うまでもなく、他の、例えば新TTP(Time Trigger Protocol)自動式母線(automobile bus)、アメリカのJ1850基準(the American J1850 standard)に基づいた母線、または、VAN母線といった多元接続性の母線すべてに適用することができる。
【0025】
並列に、内蔵フラッシュメモリを、プログラミング、および、再プログラミングするために、全モジュールへ同じデータを同時に送信することができるよう、実行のためには特定の通信プロトコルを定義しなくてはならない。
【0026】
フラッシュメモリのプログラミングによる非同期性を管理するために、各モジュールに対して、固有の設定を通過させる(pass)のにモジュールの既存の接続を使用することができるという利点を有している。したがって、各々のモジュールは、それぞれ個別に識別され、プログラミングステーション(programming station)は、接続されているモジュールの数を知ることが出来る。
【0027】
結果として、回路またはモジュールのいくつかが、並列にプログラムまたは再プログラムされ、製造ラインにおける膨大な生産性を得ることが可能となり、それにともないコストが低減される。
【0028】
したがって、本発明は、内蔵再プログラム可能メモリのプログラミング、または、再プログラミング処理に関する。そして、この処理は、いくつかのモジュールの内蔵メモリを、上記モジュールが接続された多元接続性母線を介して、並列にプログラミング、または、再プログラミングすることからなることを特徴としている。
【0029】
本発明のその他の特徴点および効果は、以下に説明するCAN母線を使用した例による実施の形態および添付した図を参照することによって明らかとなるだろう。ただしこれらに限定されるものではない。
図1は、プログラムされるフラッシュメモリを含むモジュールの機能図である。
図2は、モジュールプログラミングベンチ(a module programming bench)のハードウェア構成例を示すものである。
【0030】
クロノメータ(図1の部材番号4を参照)からなる集積ハードウェアリソース(the integrated hardware resource)は、空白フラッシュメモリがプログラムされなくてはならない場合に、実行されるトリガシーケンス(the trigger sequence)にまず関連するものすべてに対して使用される。クロノメータ4は、システムの内部周波数(internal frequency)の導関数(derivative)により起動する。クロノメータの役割は、所定の数の2値要素(binary elements)を含む事前定義フレーム(a predefined frame)の伝送時間を測定することである。
【0031】
CANにおける正確な2値処理能力は、システムの内部周波数を介して、多数のトランジション(transition)の伝送時間を測定することによって算出される。したがって、微小型演算装置1をCANの周波数に適用することができる。回路のCANモジュール7は通信に能動的に(actively)加わるよう配置される。
【0032】
したがって、第1の段階は、CANにおける2値処理能力を検出することからなる。
【0033】
2値処理能力の検出は、プログラミングステーション9によりCAN上に伝送された事前定義フレームに際した測定に基づいている。測定の間は、回路のCANモジュール7は起動していない。検出は実際、入力/出力ポートで行われる。したがって、微小型演算装置はCANモジュールで直接駆動しているかどうかに関わらず、入力/出力ポート(図1には図示せず)を通して定義されたフレームを受信し、分析する。
【0034】
微小型演算装置は、高いバイト数、好ましくは良好な分解能を得るためには29バイトを含む参照フレーム(reference frame)における伝送時間を測定する。試み(an attempt)は、ソフトウェアがチェックするための少ない数のトランジションを有していることを確かめる一方で、バイト数を可能な限り大きくして行った。もし、29バイト以上であった場合には、トランジションが多く、どんな周波数であってもトランジションをソフトウェアでモニターすることがさらに困難になってしまう。
【0035】
等価2値処理能力は、CANモジュール7が正確に配置され、それにより受信の応答として機能するCAN母線6に有効な事前定義識別フレームがCANモジュールを通してプログラミングステーション9に送信することができるように、微小型演算装置1によって算出される。
【0036】
第2の段階は、ローディングプログラム(the loading program)のダウンロードからなる。
【0037】
これを達成するために、プログラミングステーション9はCAN母線6における事前定義バイト数、一般的には32バイトを、CANモジュールを介して、微小型演算装置1に送る。ある特定の実施形態によれば、大きいバイト数、たとえば64バイトは、CANの最終最適パラメータ(the final optimum parameters)とともにCANモジュールを再初期化するために読み込まれる。このようにCANの最終パラメータを、微小型演算装置にダウンロードされたバイトによって書き換えることで、機構をより良くする。
【0038】
微小型演算装置は、微小型演算装置自体の内部メモリ、すなわちRAM(Random Access Memory)型揮発性メモリに、これらのバイトを読み込む。一旦、微小型演算装置が十分なバイト数をRAMに書き込むと、微小型演算装置は、読み込まれたばかりのプログラムを実行し、第2の段階の終了を意味する所定のフレームを送信する。そして、これは、CANモジュールを介して、プログラミングステーションで、バイトの受信を認知する。
【0039】
したがって、プログラムの初期段階は、完全読み込みと完全に配置できることである。都合のいいことに、このプログラムの初期段階は、続く、最も大きなバイト数の読み込みに用いることができるローディングプログラムである。
【0040】
第3の段階において、最終の処理は、プログラミングステーションから微小型演算装置へのダウンロードである。例えば、この最終処理はフラッシュメモリをプログラミングするためのソフトウェアであろう。
【0041】
したがって、開始するためには、それぞれのモジュールに微小型演算装置の内部メモリを読み込むための初期プログラムは、モジュールでのCANにおける2値処理能力の事前検出にしたがって、CAN母線を介してダウンロードされる。
【0042】
一度CAN母線を通じてシステムが始動したら、CANを介して並列にプログラミングを始動し、フラッシュメモリを消去することが可能となる。
【0043】
45したがって図2において、例としてプログラム(または再プログラム)されるモジュールを2つだけ、M0およびM1、示している。しかし、本発明は複数のモジュールで使用されることは言うまでもない。モジュールM0およびM1は、CAN母線6を介してプログラミングステーション9と繋がっている。CAN母線に連結した全てのモジュールは同じ周波数で作動し、同じソフトウェアを使用する。
【0044】
したがって、まず、使用者は、後にCANを介してプログラミングステーションと連結するために使用されるモジュールに特異的な識別子を定義するためにモジュールの事前定義入力および出力状況を読み取る必要がある。これを達成するために、モジュールの既存接続I0およびI1それぞれは、モジュール微小型演算装置によって読み込まれてプログラミングステーションと同一であると認識するテスト環境において、バイナリー識別番号を供給するために用いられる。それぞれのモジュールが個々の識別子(並列プログラミングに必要な状態)をもつことができるためのもうひとつの方法は、全てのモジュールのエネルギー消費量を順番に上げて、順番に始動させるというものである。これにより、プログラミングステーションはモジュールが始動したときにモジュールに対して識別子を与えることができる。
【0045】
その後、シーケンスメッセージ(sequence message)の特定端(specific end)を待っているモジュールの始動を求める。ステーションはその後もエネルギーを与え、次のモジュールを誘因する。この段階が終了した時には、シーケンスメッセージの終了を伝送し、全てのモジュールは異なる識別子を有して同報通信型(broadcast type)コマンドを受け入れる態勢をとる。
【0046】
本発明の通信プロトコルにおいては、2つのメッセージ型がある。まず初めは、‘同報通信(broadcast)’型メッセージ、言い換えるとCAN母線上で接続された全てのモジュールへの同報通信である。したがってこれら「同報通信」型メッセージは、プログラミングステーションによって伝送される全般同報通信メッセージ(general broadcast message)であり、同時に全てのモジュールによって並行に聞かれる(listen)。したがって、プログラミング、消去、照会コマンド(verification commands)はプログラミングステーションから同報通信される。これらのコマンドは、「同報通信」型のメッセージを区別する(distinguishes)一般識別子(generic identifier)とともに同報通信される。
【0047】
また、プログラミングステーションから特定のモジュールへのコマンド、またはモジュールからプログラミングステーションへのコマンドのどちらかである、各々のモジュールに特異的な識別子を介したポイントツーポイント型(point to point type)メッセージもある。
【0048】
したがって、本発明は、並列におけるフラッシュメモリのプログラミングおよび再プログラミングのためのデータ伝送リンク(the data transmission link)および伝送手順の機能的特性を網羅する規則(rules)一式を含むものである。
【0049】
第1過程にて、プログラミングステーションは母線と接続しているモジュール数を求める。プログラミングステーションは実際、モジュールに対して、モジュール自体を認識すること、およびモジュールの識別フレーム(identification frame)を伝送することを「同報通信」型メッセージを介して要求する。
【0050】
第2過程にて、プログラミングステーションはプログラミングコマンドを全てのモジュールに対して並列に同報通信する(または、再プログラミングの場合では消去コマンドを同報通信する)。これらプログラミングコマンドは、これらに関係する一般識別子により「同報通信」型であると解釈され、またプログラムされる書き込みアドレス(a write address)およびデータを含む。
【0051】
加えて、プログラミングが終結すると、プログラミングステーションは同じ方法を繰り返し、チェックコマンドを同報通信し、全てのモジュールに対して再度伝送される。したがって各々のモジュールは、受信した参照(the reference)でモジュール自体のフラッシュメモリの内容を比較することにより、モジュールの微小型演算装置を利用した自己チェック(self-check)を行うために、アドレスおよび基準を含む単一の「同報通信」型メッセージを用いる。したがって、チェックは並列に行われるため、膨大な時間を節約することができる。
【0052】
実施形態の1つにおいて、シーケンスの終了段階にてプログラミングステーションは、プログラミングの結果及び上記チェックを伝送するように要求する。各々モジュールは、プログラムされている間およびチェックされている間はエラーを保持している。
【0053】
プログラミングステーションはその後、依然として「同報通信」型コマンドを使用してプログラムされたモジュール数を求める。
【0054】
しかしながら、もう一つの実施形態によれば、プログラミング中、または、照合(verification)中に、エラーを検出すると直ちに、各モジュールは、上記の目的を備えたポイントツーポイントメッセージを用いて、プログラミングステーションへ、エラーの信号を送ることができる。
【0055】
さらに、使用者のハードウェアの種類に応じて、上記モジュールから、LED(光出射ダイオード)といった制御外部指示器(indicator)への出力を用いるという利点があるかもしれない。上記外部指示器は、プログラミングベンチ上で、プログラミング結果を指示するという機能を有する。
【0056】
並列にプログラミングされた、2つのモジュールから開始する場合、UARTを用いたフラッシュメモリのプログラミングと比較して、大幅に、時間を節約することができる。また、消去過程(erase step)を実行する場合、この時間の節約は、より顕著になる。上記の場合としては、例えば、必要アプリケーション(required application)をプログラミングする前に消去された、テストプログラミングを取り込む(load)必要がある場合が、特に挙げられる。
【0057】
さらに、上述のプロトコルは、上記モジュールに必要なソフトウェア処理を最小化することを目的としている。上記ソフトウェア処理では、モジュールの微小型演算装置(microprocessor)は、プログラミングステーションとの通信を管理するよりも、プログラミングするほうが時間を要してしまう。
【0058】
これを達成するために、ダブルバッファ方式(double buffer system)を始動すると同時に、メモリにおけるデータ受信、及び、プログラミングが可能になる。そして、まず、上記CANから受信したプログラミングコマンドは、待機領域として作用する第1バッファ領域に、入力される(put into)。
【0059】
上記モジュールそれぞれから、伝送バッファ(transfer buffer)、及び、プログラミングコマンドの受信において、フラッシュメモリのプログラミングは、第1データバッファ領域で既に受信され、蓄積されたデータを用いて、各モジュールで始まる。そして、同時に、上記CANからのコマンドの受信は、第2バッファ領域で割り当てる。したがって、データバッファを補充する第1処理、及び、これらのデータを処理する他の処理が存在する。第1処理から他の処理への切替えから、モジュールは、最小の通信で非常に効率的に、かつ、プログラミングされ得ることが理解される。そして、この切替えは、時間の節約にも最適である。
【0060】
さらに、モジュールとプログラミングステーションとの間を通信する、モジュールに必要なソフトウェア処理を最小化するために、大きなバッファを用いる必要がある。1つのバッファから他のバッファへの切替えは、プログラミングステーションからモジュールへ送信された伝送コマンドによりなされる。同様に、上記モジュールが、バッファのプログラミングを完了したとき、モジュールは、プログラミングステーションへ、レポートメッセージを送信する。
【0061】
本願発明者は、本発明にかかるプロトコルに含まれる全コマンドの詳細を、ここに示す。
【0062】
上記プロトコルにより、CAN母線を介して、並列に、フラッシュメモリをプログラミングすることが可能になる。それゆえ、上記第1過程は、いくつかの「同報通信(broadcast)」型のコマンドを用いることである。換言すれば、コマンドは、プログラミングステーションから、CAN母線に接続された全モジュールへ、同報通信する。そして、上記モジュールの何れでも、コマンドを受信することが可能になる。
【0063】
第1送信_IDコマンドは、これらの識別子を送信する請求モジュール(asking module)からなる。それゆえ、各モジュールは、上記コマンドに特異的な識別子を送信する。これにより、プログラミングステーションは、CAN母線を介して接続されたモジュールの数を数え、これらのモジュールを、個々に監視することが可能となる。
【0064】
他の「同報通信」型コマンドとしては、開始充填バッファコマンド(start filling buffer command)が挙げられる。このコマンドは、開始メモリアドレスを送信することによりなされる。そして、カウント、及び、データは、CAN上で全モジュールに対して、上記アドレスでメモリに書き込まれる。例えば、上記カウントは、モジュールが充填バッファコマンドを受信した後、いくつかの2値言語(binary words)を受信したかについての情報を、モジュールに与えるのに用いられる。
【0065】
続いて、継続充填バッファコマンド(continue filling buffer command)は、同報通信であり、データのみからなる。そして、メモリは、自身の増分(increment)を、自動的に、アドレス指定する。したがって、発信される補助ビットの数、及び、データ発信時間を最小にすることができる。
【0066】
それゆえ、各モジュールが、新規の開始充填バッファコマンドを受信する、または、プログラミングステーション主導で、伝送バッファコマンドまたはプログラミングコマンドを受信するまでに、各モジュールは、データを受信する。
【0067】
上記伝送バッファ、及び、プログラミングコマンドは、各要求モジュール(requesting each module)からなる。このモジュールは、データ受信状態のバッファから開始するプログラミングを開始し、他のバッファを受信に割り当てる。そして、受信状態にあるバッファは、プログラミングの参照として用いるバッファになり、プログラミング状態にあるバッファは、受信バッファになる。
【0068】
上述の伝送バッファ、及び、プログラミングコマンドに続くコマンドは、上記伝送バッファ、及び、照合コマンド(verification command)である。この照合コマンドもまた、同報通信型コマンドである。このコマンド受信において、各モジュールは、受信状態にあるバッファから始まる照会を、開始する。そして、このとき、他のバッファは、受信に割り当てられる。そして、同時に全モジュールに対して同報通信された単一のコマンドから開始すると、照合が起きる。そして、各モジュールは、自身で、プログラミング結果を検査する。それゆえ、このような照会は「同報通信」型であり、これにより、処理全体に対して、大幅な時間の節約になる。
【0069】
上記開始充填バッファ、及び、上記継続充填バッファコマンドは、実際には独立しており、プログラミング及び照会コマンドである。そして、バッファが伝送された場合にのみ、上記伝送コマンドが、プログラミングしているのか、あるいは、照会しているのかの通知がなされる。
【0070】
上記プロトコルは、プログラミングステーションが、全モジュールに対して、同報通信する、他のコマンドを含む。そして、このコマンドは、情報の請求からなり、各モジュールの状況について送信する。そのとき、各モジュールは、例えば照合した後に、プログラミング状況を送信する。
【0071】
最後に、最終同報通信コマンド、すなわち、消去コマンドが必要である。この消去コマンドは、全モジュールが接続されたCAN母線上で、プログラミングステーションにより同報通信される。そして、同時に、このコマンドは、全モジュールに対して、メモリ消去の開始を制御する。このコマンドは、特に、CAN母線を介して、フラッシュメモリを並列に再プログラミングするのに、用いられる。
【0072】
上記プロトコルで選ばれる実施に応じて、上記消去コマンドは、よりよい安全確保(security)にために、2つの過程で用いられることが好ましい。すなわち、第1準備消去コマンドは、伝送データバンクからなる。この伝送データバンクは、フラッシュメモリ内でパラメータとして、消去される。次に、上記消去を確認する第2のコマンドは、先のコマンドを実行することからなる。明らかに、上記確認消去コマンドを最適にすることが可能である。
【0073】
また、本発明にかかるプロトコルは、ある種の特有の、モジュールからプログラミングステーションへのメッセージを用いている。それゆえ、これらのメッセージは、もはや、上述の「同報通信」型メッセージではなく、ポイントツーポイント型メッセージになる。
【0074】
上述した型のメッセージそれぞれには、特有の識別子が必要となる。このため、各モジュールとプログラミングステーションとの間で、通信可能になる。
【0075】
CAN上の全域の識別子は、少なくとも、11ビット型の識別子である。これらのビットのいくつかは、コマンドのタイプで規定される。それ以外のビットは、モジュール数で規定される。この場合、CAN上で用いられる特有識別子は、各コマンドで割り当てられる一般コマンドと、モジュール特異的な識別子との間の、論理組み合わせに由来する。このため、固有識別子(unique identifier)は、各モジュールについて、CAN上で、モジュールからプログラミングステーションへと送信される。
【0076】
モジュールからプログラミングステーションへの、特有のポイントツーポイントコマンドの間には、ある重要なコマンドが含まれている。このコマンドは、コマンド_OKコマンドである。コマンド_OKコマンドは、データバッファのプログラミング/照合が成功した後(または、消去が成功した後)、各モジュールにより、プログラミングステーションへ送信される。
【0077】
フラッシュメモリのプログラミングに起因して、いくつかの非同期性(asynchronism)を管理する必要がある。このとき、プログラミングステーションは、タイムアウト(time out)を開始するのに有利である。これにより、各モジュールが、そのメモリを、正確にプログラミングする(または、照会する)のに十分な時間を残す。上記プログラミングステーションが、所定の時間を、予め規定した後、プログラミングステーションは、各モジュールにおける固有識別(unique identification)を用いて、個々のコマンドを、応答しない全モジュールに戻す。そして、プログラミングステーションは、上記モジュールに、エラー状況にあることを知らせる。
【0078】
しかしながら、モジュールからプログラミングステーションへの、有効なポイントツーポイントコマンドは、また、プログラミングエラーコマンドを含んでいてもよい。したがって、モジュールが、プログラミングの間、エラーを検出している場合(例えば、モジュールが、値を書き込めない場合)、このプログラミングエラーコマンドにより、モジュールは、タイムアウトの終了を待たずに、このエラーを、速やかに、プログラミングステーションへ伝えることができる。
【0079】
同様に、照会エラーコマンドが備えられている。照会エラーを検出すると、この照会エラーコマンドは、照会処理の終了時にではなく、速やかに、各モジュールに、プログラミングステーションへ照会エラーを報告する機会を与える。
【0080】
そして、全モジュールが、コマンド_OKコマンド、または、エラーメッセージを戻すまで、プログラミングステーションは、タイムアウトを開始し、待機している。
【0081】
これらのプログラミングエラー、及び、照会エラーのコマンドは、エラーが検出されるとすぐに、送信されているので、実にプログラミング時間を最適にできる。これらの異なるコマンドの結果、上記プログラミングステーションは、どのエラーを処理しても、タイムアウトの終了まで待機する必要がない。また、このことは、上記固有識別子が、CAN母線上で接続している各モジュールに、割り当てられることにより可能になる。
【0082】
フラッシュメモリの再プログラミング消去の場合、消去エラーコマンドを用いることができる。この消去エラーコマンドは、異なるモジュールの並列プログラミング中に用いられた、プログラミングエラー、及び、照会エラーのコマンドと、同じ原理に基づいて、かつ、同じ意図で、用いられる。
【0083】
最後に、モジュールからプログラミングステーションへの、特有のポイントツーポイントコマンドとしては、モジュール状況コマンドが挙げられる。このコマンドは、プログラミングステーションからの(「同報通信」型の)要求に応答して、その目的で、各モジュールにより送信される。
【0084】
また、本発明にかかるプロトコルは、プログラミングステーションからモジュールへの特有のコマンドを含んでいる。それゆえ、このコマンドは、他のポイントツーポイントコマンドである。
【0085】
モジュールからプログラミングステーションへの、固有のコマンドと同様に、各モジュールが、メッセージに関連があるかどうかを知るために、CAN上で特有の識別子を生成する必要がある。このために、モジュール特有の索引を付加することで、異なる必要なコマンドで用いられた一般識別子を特殊化する。そして、このコマンドは、モジュールに対して、一般識別子の末端で、アドレス指定される。これにより、プログラミングステーションからモジュールへの、ポイントツーポイント通信、及び、結果として生じた特有のメッセージの発信が可能になる。
【0086】
これらの、プログラミングステーションからモジュールへの特有メッセージは、送信された状況コマンドを含んでいる。このコマンドは、状況を送信するように、モジュールに要求することからなる。
【0087】
停止コマンド(stop command)は、速やかに全動作を停止するように、モジュールに要求することからなる。このコマンドにより、フラッシュメモリがプログラミングしているエラーを有するモジュールは、他のモジュールのプログラミングを邪魔することがなくなる。
【0088】
プログラミングステーションのメッセージに対する特有のモジュール、例えば上述のコマンド_OKコマンド型といった形態における、タイムアウト停止コマンド(stop timeout command)は、モジュールに通知する。そして、このモジュールからの応答から、プログラミングステーションにおけるタイムアウト始動が終了したことが予測される。モジュールが、タイムアウト停止コマンドを受信すると、該当モジュールは、自身がエラーを興していることを判断する必要がある。
【0089】
動作_OKコマンド(operation_OK command)は、プログラミング、または、照会の終了時に(または、並列再プログラミングを用いる場合には、消去の終了時に)与えられなければならない。プログラミングステーションは、特有のモジュールで起きるあらゆる保証(guarantee)を有するので、このポイントツーポイントの動作_OKコマンドは、必要である。プログラミングステーションは、正確にプログラミングされた各モジュールに対して、最終確認を提供する。プログラミングステーションが、「同報通信」型のコマンドを用いて、各モジュールに対するプログラミングの照会を任せて、次に、各モジュールが、プログラミングステーションへ、照会結果を伝送する場合でも、プログラミングステーションは、正確にプログラミングされた各モジュールに対して、最終確認を提供する。
【0090】
上記モジュールは、有利に、この動作_OKコマンドの受信を用いてもよい。これにより、動作_OKコマンドは、モジュールに存在する出力ポートの一つの発光ダイオードに命令する。
【0091】
プロトコルの観点から、プログラミングステーションは、該プログラミングステーションが、モジュールからの受信における全認知(acknowledgement)を受信したかを点検する。そして、このとき、プログラミングステーションは、各特有モジュールに対する処理を通して、正常に起きたことを通知するために、動作_OKコマンドを用いる。
【0092】
本発明に係るプロトコルに含まれる、全ての特有「同報通信」型コマンドを記述した後、本願発明者は、ここで、これらの異なるコマンドを用いた、プログラミング、及び、照会の流れの一例を考慮する。全コマンドは、独立して、CAN母線上を、通過する。また、CAN母線上で、全コマンドは、送信フォームである。
【0093】
第1の過程は、プログラミングステーションによる、送信_IDコマンドを用いる。そして、各モジュールは、このコマンドの特有識別子を送信することにより、コマンドに応答する。
【0094】
第2の過程は、充填バッファコマンドを送信することからなる。この充填バッファコマンドは、バッファにおける受信の始まりに印をつける(mark)。第3の過程で、継続充填バッファコマンドは、CAN上で送信される。その結果、アドレスが増加するに伴い、バッファを充填し続ける。
【0095】
第4の過程は、継続充填バッファコマンド、または、新しく開始した充填バッファコマンドを用いる。新しく開始した充填バッファコマンドを用いる場合、プログラミングされたデータアドレスに、不連続点が存在する。
【0096】
伝送バッファ、及び、プログラミングのコマンドは、第5の過程で、送信される。このとき、プログラミングが、受信状態にあるバッファから開始する各モジュールで、開始する。そして、第2のバッファが、受信において、同時に、割り当てられる。この過程中には、伝送バッファ、及び、照会のコマンドを用いることができる。照会が開始され、既に説明したように、この照会は、各モジュールで、並列して起きる。
【0097】
第6の過程は、充填バッファコマンドの繰り返しからなる。これにより、プログラミング処理の終了まで、過程2から過程5までが繰り返される。
【0098】
第7の過程では、各モジュールは、次のコマンドを、並列に送信する。すなわち、最後のバッファのデータ処理が成功したことを指示するコマンド_OKコマンド、または、プログラミング中のエラーを指示するプログラミングエラーコマンド、または、照会中のエラーを指示する照会エラーコマンドを送信する。
【0099】
第8の過程は、プログラミングステーションから、タイムアウト停止コマンドを送信することからなる。このコマンドは、タイムアウトを終了させる。このタイムアウトは、モジュールがプログラミングを実行しなければならない時間間隔になった、プログラミングステーションに用いられる。この過程のタイムアウトコマンドを受信したモジュールは、自身がエラー状態にあることを判断する。
【0100】
最後に、プログラミング、及び、照会処理における最終過程は、動作_OKコマンドを送信することからなる。このとき、プログラミングステーションは、各モジュールに対して、独立して、全処理を通してすべて正常に起きたことを確認するために、このコマンドを用いることができる。
【0101】
モジュールのフラッシュメモリが、並列再プログラミングのために、消去されている場合、CAN上のコマンドの流れは、より簡潔になる。
【0102】
第1の過程は、送信_IDコマンドを用いることからなる。各モジュールは、このコマンドの特有識別子を送信することにより、コマンドに応答する。そして、プログラミングステーションは、消去されたモジュールの数をカウントすることができる。
【0103】
上記消去は、2つの「同報通信」型コマンドを用いた、2つの過程で起きることが好ましい。この2つの「同報通信」型コマンドとしては、第1に、準備消去コマンド、および、第2に、確認消去コマンドが挙げられる。
【0104】
モジュールは、消去コマンドを正常に実行したことを指示するコマンド_OK型コマンド、または、消去エラーコマンドを送信する。
【0105】
全モジュールが消去を完了したことに成功した場合、動作_OKコマンドを送信する。このコマンドにより、プログラミングステーションは、消去が各モジュールで成功したことを、特別に確認する。それゆえ、このコマンドは、モジュールからのコマンド_OKコマンド出力に応答して、送信される。
【0106】
最後に、タイムアウト停止コマンドは、最終過程で用いられる。それゆえ、このタイムアウト中に応答しないモジュール、及び、このコマンドを受信したモジュールは、エラー状況を検討する(go into)必要がある。
【0107】
本発明に係るプロトコルは、モジュールが接続された母線を介して、いくつかのモジュールを有するフラッシュメモリの基板上で、空白、または、非空白の並列プログラミングが可能なソフトウェアを書き込むルールを規定するものである。このプロトコルは、存在するモジュールの入力/出力ポートの使用により規定されていてもよい。これにより、各モジュールに対して固有の設定(configuration)を伝送できる。CAN母線に、コマンドの種類で、割り当てられた識別子と、各モジュールに特有の識別子との間に、プロトコルに係る通信が可能になるように、論理的な組み合わせがなされていてもよい。
【0108】
空白フラッシュメモリの場合、本発明は、母線を介して、プログラムコードをダウンロードして、実行する処理と規定する。このとき、全ての外的条件(external constraints)(周波数、2値処理能力(binary throughput))を排除する。
【0109】
ここに示した実施形態では、CAN母線を用いた場合を、特に参照して、説明した。しかしながら、本発明は、CAN母線を用いた場合に限定されず、本発明の目的に適さない多元接続性母線(multiple access bus)を、モジュール内蔵フラッシュメモリの並列プログラミングに用いてもよい。これを達成するために、本質的には、関係する母線が並列にアクセス可能であることのみが必要である。あるいは、既知の手法(母線アクセス条件、「同報通信」型メッセージ可能にメッセージヘッダを再定義すること)で、プロトコルを改変させる。それゆえ、並列にアクセス可能になる。
【0110】
既に記述したように、本発明に係る処理は、CAN母線を用いた場合の一例を参照にして説明したが、本発明に係る処理は、実質的に、新規TPPオートモバイル母線、米国J1850規準(American J1850 standard)に基づいた母線、VAN母線等の、いかなるタイプの多元接続性母線にも応用可能である。
【図面の簡単な説明】
【0111】
【図1】図1は、プログラムされるフラッシュメモリを含むモジュールの機能図である。
【図2】図2は、モジュールプログラミングベンチ(a module programming bench)のハードウェア構成例を示すものである。
Claims (20)
- 内蔵された再プログラミング可能なメモリ(5)を、プログラミング、または、再プログラミングする処理であって、上記処理が、所定数のモジュール(M0,M1…)の内蔵メモリを、並列に、プログラミング、または、再プログラミングすること、及び、上記モジュールに接続された多元接続性母線を用いることからなることを特徴とする処理。
- 上記処理は、上記モジュールそれぞれが、プログラミングステーション(9)で、上記母線を介して、自身を識別可能になるように、各モジュールに対する既存の接続(I0,I1…)を用いて、テスト環境下で、各モジュール(M0,M1…)特有の2値識別子を供給することからなることを特徴とする請求項1に記載の処理。
- 上記処理は、全モジュールに対して同報通信をする「同報通信」型コマンド、及び、ポイントツーポイント型コマンドを用いて、母線(6)上での通信プロトコルを規定することからなり、上記ポイントツーポイント型コマンドが、モジュール(M0,M1…)からプログラミングステーション(9)への特有コマンド、及び、プログラミングステーションからモジュールへの特有コマンドで構成されていることを特徴とする請求項1または2に記載の処理。
- 上記「同報通信」型コマンドが、該「同報通信」型コマンドを区別する一般識別子を有する、同報通信であることを特徴とする請求項3に記載の処理。
- 上記処理が、発信しているポイントツーポイント型コマンドに対して、母線上の特有識別子を生成することからなることを特徴とする請求項3または4に記載の処理。
- 上記母線上の特有識別子が、各コマンドに対して割り当てられた一般識別子と、上記モジュールに特有の識別子との間の、論理的な組み合わせに由来することを特徴とする請求項5に記載の処理。
- プログラミングされたモジュールの内蔵メモリが、空白でない場合、同報通信型コマンドを用いると同時に、全モジュールのメモリを消去することを特徴とする請求項3〜6のいずれか1項に記載の処理。
- 上記並列の消去メモリコマンドを、以下の2つの過程で用いることを特徴とする請求項7に記載の処理。
各モジュールの内蔵メモリで消去されたデータバンクを、パラメータとして伝送する過程、及び
上記コマンドを実行することにより消去を確認する過程 - 上記処理が、同時データ受信を可能にするために、上記プロトコルにおいて、ダブルバッファ方式を用いること、及び、モジュールのメモリでプログラミングすることからなることを特徴とする請求項3〜8のいずれか1項に記載の処理。
- 上記プログラミングの検査は、「同報通信」型コマンドを用いて、並列の各モジュールでなされることを特徴とする請求項3〜9のいずれか1項に記載の処理。
- 照会コマンドがアドレス、及び、参照データを構成しており、各モジュールは、モジュールのメモリ内容と、受信された参照とを比較することにより、微小型演算装置を介して、自身を検査することを特徴とする請求項10に記載の処理。
- 上記プログラミングされた内蔵メモリが、空白である状況で、プログラミングに先立った過程を実行し、該過程は、システムの周波数、及び、2値処理能力に関わらず、母線上の母線(6)を介して、直接的に各モジュール(M0,M1…)の微小型演算装置(1)を開始することからなることを特徴とする請求項1または2に記載の処理。
- 上記開始順序が、次の段階、すなわち、
(a)母線上で、2値処理能力を検出する段階と、
(b)取り込みプログラミングを、上記微小型演算装置の内部メモリにダウンロードする段階と、
(c)最終アプリケーションを、上記微小型演算装置の内部メモリにダウンロードする段階とで構成されていることを特徴とする請求項12に記載の処理。 - 段階(a)が、次の過程、すなわち、
良好な精度を得るために、十分な数の2値を備えた母線上で発信する、所定のフレームの時間の測定を行なう過程と、
相当量の2値処理能力を計算する過程とで構成されていることを特徴とする請求項13に記載の処理。 - 段階(b)が、母線上で、十分量のバイト数を、微小型演算装置(1)へ送信すると同時に、母線(6)に対して、最終最適パラメータを伝送することからなることを特徴とする請求項13に記載の処理。
- 上記処理が、内蔵フラッシュメモリ型メモリに、応用可能であることを特徴とする請求項1〜15のいずれか1項に記載の処理。
- CAN母線を介して、上記処理を用いることを特徴とする請求項1〜16のいずれか1項に記載の処理。
- TPP母線を介して、上記処理を用いることを特徴とする請求項1〜16のいずれか1項に記載の処理。
- 米国J1850規準に基づいた母線を介して、上記処理を用いることを特徴とする請求項1〜16のいずれか1項に記載の処理。
- VAN母線を介して、上記処理を用いることを特徴とする請求項1〜16のいずれか1項に記載の処理。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0107665A FR2825812B1 (fr) | 2001-06-12 | 2001-06-12 | Procede de programmation/reprogrammation parallele de memoire flash embarquee par bus can |
PCT/FR2002/002013 WO2002101752A1 (fr) | 2001-06-12 | 2002-06-12 | Procede de programmation/reprogrammation parallele de memoire flash embarquee par bus a acces multiples |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004530229A true JP2004530229A (ja) | 2004-09-30 |
Family
ID=8864215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003504411A Pending JP2004530229A (ja) | 2001-06-12 | 2002-06-12 | 多元接続性母線による内蔵フラッシュメモリの並列プログラミングおよび再プログラミング処理 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7102383B2 (ja) |
EP (1) | EP1402534B1 (ja) |
JP (1) | JP2004530229A (ja) |
DE (1) | DE60226603D1 (ja) |
FR (1) | FR2825812B1 (ja) |
WO (1) | WO2002101752A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016206967A (ja) * | 2015-04-23 | 2016-12-08 | 株式会社デンソー | 車載電子制御装置 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6904325B2 (en) * | 2003-10-23 | 2005-06-07 | General Motors Corporation | Method for optimizing ECU parallel flash programming arrangement on a CAN-based vehicle serial bus in general assembly |
JP2007511985A (ja) * | 2003-11-19 | 2007-05-10 | ハネウェル・インターナショナル・インコーポレーテッド | マルチチャネルシステムにおけるtdmaスケジュール実施用の優先順位ベースのアービトレーション |
US7567461B2 (en) | 2006-08-18 | 2009-07-28 | Micron Technology, Inc. | Method and system for minimizing number of programming pulses used to program rows of non-volatile memory cells |
CN103399770B (zh) * | 2013-08-09 | 2017-03-01 | 株洲南车时代电气股份有限公司 | 一种初始化嵌入式裸板程序的方法 |
DE102014200089A1 (de) * | 2014-01-08 | 2015-07-09 | Bayerische Motoren Werke Aktiengesellschaft | Verfahren, Vorrichtung, Computerprogramm und Computerprogrammprodukt zum Programmieren von mehreren Steuergeräten |
CN106020869B (zh) * | 2016-05-09 | 2019-05-31 | 广州康盛生物科技有限公司 | 基于can总线的选择性烧录多个单片机节点程序的方法 |
CN106647238B (zh) * | 2016-12-13 | 2019-09-20 | 安徽航瑞航空动力装备有限公司 | 一种基于can线刷新冗余控制器的方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4578751A (en) * | 1982-06-25 | 1986-03-25 | At&T Technologies, Inc. | System for simultaneously programming a number of EPROMs |
EP0617363B1 (en) * | 1989-04-13 | 2000-01-26 | SanDisk Corporation | Defective cell substitution in EEprom array |
US5430859A (en) * | 1991-07-26 | 1995-07-04 | Sundisk Corporation | Solid state memory system including plural memory chips and a serialized bus |
US5329179A (en) * | 1992-10-05 | 1994-07-12 | Lattice Semiconductor Corporation | Arrangement for parallel programming of in-system programmable IC logical devices |
KR960000616B1 (ko) * | 1993-01-13 | 1996-01-10 | 삼성전자주식회사 | 불휘발성 반도체 메모리 장치 |
US5974499A (en) * | 1997-04-23 | 1999-10-26 | Micron Technology, Inc. | Memory system having read modify write function and method |
US6035346A (en) * | 1997-11-03 | 2000-03-07 | Compaq Computer Corporation | Method and apparatus to reprogram flash ROM without proxy code |
KR100330164B1 (ko) * | 1999-04-27 | 2002-03-28 | 윤종용 | 무효 블록들을 가지는 복수의 플래시 메모리들을 동시에 프로그램하는 방법 |
US6535780B1 (en) * | 1999-11-10 | 2003-03-18 | Data I/O Corporation | High speed programmer system |
DE10014272B4 (de) * | 2000-03-22 | 2008-06-05 | Endress + Hauser Gmbh + Co. Kg | Feldgerät, sowie Verfahren zum Umprogrammieren eines Feldgerätes |
-
2001
- 2001-06-12 FR FR0107665A patent/FR2825812B1/fr not_active Expired - Fee Related
-
2002
- 2002-06-12 JP JP2003504411A patent/JP2004530229A/ja active Pending
- 2002-06-12 WO PCT/FR2002/002013 patent/WO2002101752A1/fr active IP Right Grant
- 2002-06-12 DE DE60226603T patent/DE60226603D1/de not_active Expired - Lifetime
- 2002-06-12 US US10/480,577 patent/US7102383B2/en not_active Expired - Lifetime
- 2002-06-12 EP EP02745518A patent/EP1402534B1/fr not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016206967A (ja) * | 2015-04-23 | 2016-12-08 | 株式会社デンソー | 車載電子制御装置 |
Also Published As
Publication number | Publication date |
---|---|
US20040153590A1 (en) | 2004-08-05 |
FR2825812B1 (fr) | 2003-12-05 |
WO2002101752A1 (fr) | 2002-12-19 |
EP1402534B1 (fr) | 2008-05-14 |
EP1402534A1 (fr) | 2004-03-31 |
FR2825812A1 (fr) | 2002-12-13 |
DE60226603D1 (de) | 2008-06-26 |
US7102383B2 (en) | 2006-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200310782A1 (en) | Gateway device, in-vehicle network system, and firmware update method | |
US10204072B2 (en) | Method for automatically allocating addresses to similar bus users | |
US7684926B2 (en) | Electronic control apparatus having first microcomputer which forwards externally supplied updating data to a second microcomputer having a lower data receiving performance than the first microcomputer | |
US4937816A (en) | Single-channel communication bus system and station for use in such a communication bus system | |
JP2004530229A (ja) | 多元接続性母線による内蔵フラッシュメモリの並列プログラミングおよび再プログラミング処理 | |
US7788454B2 (en) | Controller including electrically rewritable nonvolatile memory | |
US6944649B1 (en) | Electronic control unit having single non-volatile memory for multiple central processing units and data retrieval method | |
US20210065478A1 (en) | Electronic control unit and non-transitory computer readable medium storing session establishment program | |
CN115202323A (zh) | 车辆的服务请求管理方法、装置、车辆及介质 | |
CN115733871A (zh) | 通信交互方法、装置、设备及存储介质 | |
CN115454896A (zh) | 基于smbus的ssd mctp控制消息验证方法、装置、计算机设备及存储介质 | |
CN114416622A (zh) | 单总线通讯系统及方法 | |
US5249182A (en) | Communication bus system with lock/unlock capability | |
KR20010027466A (ko) | 차량의 엔진제어유닛 리프로그래밍 방법 | |
CN112445508A (zh) | 一种基于can总线的arm应用程序在线升级的方法 | |
CN113157510B (zh) | 高速串行计算机扩展总线事务排序规则测试方法及装置 | |
US7529268B1 (en) | Multi-point electronic control system protocol | |
CN114594752B (zh) | 一种拖拉机控制单元软件刷写方法及存储介质 | |
CN117062066A (zh) | 基于tbox的密钥灌装方法、装置、车辆及存储介质 | |
JP2993008B2 (ja) | 物品識別システム | |
CN112346922B (zh) | 服务器装置及其通讯协议方法 | |
JP7363344B2 (ja) | メモリ制御装置、および制御方法 | |
CN117311763A (zh) | Ecu的刷写方法、总线型升级网络系统和电子设备 | |
CN117955965A (zh) | 新能源汽车用dcac控制器的软件参数动态调整方法及系统 | |
CN117955828A (zh) | 一种控制器局域网络通信方法、装置、控制器及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041220 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061121 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070220 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070320 |