(57)【特許請求の範囲】
【請求項１】
無線システムであって、
少なくとも１つのアドレス可能なプロセッサ手段を有する通信装置、
少なくとも１つのさらに他のアドレス可能なプロセッサ手段、
シリアル通信リンクを具備し、前記少なくとも１つのおよび前記少なくとも１つのさらに他のアドレス可能なプロセッサ手段を相互接続するための通信手段であって、該通信手段は信号ラインおよびビジーラインを含むもの、
パラメータデータを前記少なくとも１つのおよび前記少なくとも１つのさらに他のアドレス可能なプロセッサ手段の間で受け渡すための複数の情報パケットを含む第１の通信プロトコルであって、該第１の通信プロトコルはさらに通信プロトコルを変更しかつボーレートを複数のボーレートの内から選択されたあるボーレートへ変更するための第１の情報パケットを含むもの、そして
選択可能な速度で前記アドレス可能なプロセッサ手段にまたは前記アドレス可能なプロセッサ手段からパラメータデータを受け渡すための第２の複数の情報パケットを含む第２の通信プロトコルであって、前記第２の複数の情報パケットは前記第１の情報パケットのすぐ後に続く第２の情報パケットの長さに関する情報を含み、前記第２の通信プロトコルはさらに中断されることのない可変長の第２の情報パケットを含むもの、
を具備することによって、前記アドレス可能なプロセッサ手段の動作状態が前記少なくとも１つのアドレス可能なプロセッサ手段および前記少なくとも１つのさらに他のアドレス可能なプロセッサ手段の間でそれぞれパラメータデータを通信することによって、決定されまたは変更される、無線システム。
【請求項２】
前記第１および第２の情報パケットは、
可変長のオペレーションコード、
可変長のメッセージサイズパケット、
任意選択的なデータ、そして
任意選択的なエラー検出データ、
を含む、請求項１に記載の無線システム。
【請求項３】
前記第１および第２の情報パケットはさらにアドレスを含む、請求項２に記載の無線システム。
【請求項４】
前記第２の通信プロトコルは前記第１の通信プロトコルの情報パケットの少なくとも１つを含む、請求項１に記載の無線システム。
【請求項５】
前記可変長のオペレーションコードはリセット操作コード、読み出し操作コード、書込み操作コード、ビットセット操作コード、ビットクリア操作コード、アクノレッジ操作コード、およびネガティブアクノレッジ操作コードからなるコードのグループから選択された１つまたはそれ上のコードを含む、請求項２に記載の無線システム。
【請求項６】
前記任意選択的なエラー検出データは巡回冗長検査パケットを含む、請求項４に記載の無線システム。
【請求項７】
前記任意選択的なエラー検出データは検査合計パケットを含む、請求項４に記載の無線システム。
【請求項８】
レジスタモデル化無線装置であって、
少なくとも１つのレジスタモデル化されたプロセッサ手段を有する通信装置、
少なくとも１つのさらに他のレジスタモデル化されたプロセッサ手段、
信号ラインおよびビジーラインを含み前記少なくとも１つのレジスタモデル化されたプロセッサ手段および前記少なくとも１つのさらに他のレジスタモデル化されたプロセッサ手段の間で結合しかつ通信を可能にするためのシリアル通信リンク、
前記少なくとも１つのおよび前記少なくとも１つのさらに他のレジスタモデル化されたプロセッサ手段の間でパラメータデータを受け渡すための固定ボーレートの通信プロトコルであって、該通信プロトコルは選択可能なボーレートで前記少なくとも１つのおよび前記少なくとも１つのさらに他のレジスタモデル化されたプロセッサ手段の間で通信を確立するための情報パケットを含み、該情報パケットはさらに、
前記少なくとも１つのおよび前記少なくとも１つのさらに他のレジスタモデル化されたプロセッサ手段の間で通信プロトコルを変更するための情報、および
他のレジスタモデル化されたプロセッサ手段が前記少なくとも１つのおよび前記少なくとも１つのさらに他のレジスタモデル化されたプロセッサ手段の間での通信と干渉することを防止するための任意選択的な情報、
を具備するもの、
前記シリアル通信リンクを使用して前記少なくとも１つのおよび前記少なくとも１つのさらに他のレジスタモデル化されたプロセッサ手段へとまたは前記少なくとも１つのおよび前記少なくとも１つのさらに他のレジスタモデル化されたプロセッサ手段から情報を通信するための選択可能なボーレートの通信プロトコルであって、該選択可能なボーレートの通信プロトコルは、
リセット操作コード、読取り操作コード、書込み操作コード、ビットセット操作コード、ビットクリア操作コード、アクノレッジ操作コード、ネガティブアクノレッジ操作コードからなるコードのグループから選択された中断されることのない可変長の操作コード、そして
可変長のサイズ識別コード、
を具備するもの、
を具備することによって、前記少なくとも１つのおよび前記少なくとも１つのさらに他のレジスタモデル化されたプロセッサ手段の事実上の状態が、前記少なくとも１つのおよび前記少なくとも１つのさらに他のレジスタモデル化されたプロセッサ手段の間でそれぞれ情報を通信することにより、決定されまたは変更される、レジスタモデル化無線通信装置。
【請求項９】
前記選択可能なボーレートの通信プロトコルはさらに少なくとも１つのデータパケットを含む、請求項８に記載のレジスタモデル化無線通信装置。
【請求項１０】
前記選択可能なボーレートの通信プロトコルはさらに少なくとも１つのエラー検出パケットを含む、請求項８に記載のレジスタモデル化無線通信装置。
【請求項１１】
複数のアドレス可能なレジスタ手段を有する無線通信装置における、前記複数のアドレス可能なレジスタ手段の間で通信する方法であって、
通信装置の第１のアドレス可能なレジスタ手段において、少なくともプロトコル切り換え操作コード、アドレス、およびエラー検出コードを有する固定長の情報パケットを発生する段階、
前記第１のアドレス可能なレジスタ手段において、ハードウェアビジーラインをアクティブにして他のアドレス可能な構成要素が前記第１のアドレス可能なレジスタ手段および第２のアドレス可能なレジスタ手段の間の通信において妨害を生じるのを防止する段階、
シリアル通信リンクによって固定されたボーレートの通信プロトコルを使用し前記固定長の情報パケットを前記第２のアドレス可能なレジスタ手段に送信する段階、
前記第２のアドレス可能なレジスタ手段において、前記シリアル通信リンクから前記固定長の情報パケットを受信する段階、
前記プロトコル切り換え操作コードの内容に応じて前記第１および第２のアドレス可能なレジスタ手段において前記通信プロトコルを選択可能なボーレートの通信プロトコルに切り換える段階、
前記選択可能なボーレートの通信プロトコルを使用して前記第１および第２のアドレス可能なレジスタ手段の間で中断されることのない可変長の情報パケットを通信する段階、そして
前記第１のアドレス可能なレジスタ手段において、前記ハードウェアビジーラインを解放して前記第１および第２のレジスタ手段を前記第１の通信プロトコルに強制的に戻しかつ前記複数のアドレス可能なレジスタ手段が互いに通信できるようにする段階、
を具備する複数のアドレス可能なレジスタ手段の間で通信する方法。
【請求項１２】
複数のアドレス可能なレジスタ手段を有する無線通信装置における、前記複数のアドレス可能なレジスタ手段の間で通信する方法であって、
第１のレジスタ手段において、ボーレート変更情報およびエラー検出コードを有する情報パケットを発生する段階、
前記第１のアドレス可能なレジスタ手段において、ハードウェアビジーラインをアクティブにして他のアドレス可能な構成要素が前記第１のアドレス可能なレジスタ手段および第２のアドレス可能なレジスタ手段の間での通信において妨害を生じることを防止する段階、
シリアル通信リンクによって第１のボーレートの通信プロトコルを使用して前記情報パケットを第２のレジスタ手段を有する通信装置に送信する段階、
前記第２のレジスタ手段において、前記シリアル通信リンクから前記情報パケットを受信する段階、
前記情報パケットに含まれる前記ボーレート変更情報に応じて前記第１および第２のレジスタ手段においてボーレートを第２のボーレートに切り換える段階、
前記第２のボーレートを使用して前記第１および第２のアドレス可能なレジスタ手段の間で中断されることのない可変長の情報パケットを通信する段階、そして
前記第１のアドレス可能なレジスタ手段において、前記ハードウェアビジーラインを解放して前記第１および第２のアドレス可能なレジスタ手段を強制的に前記第１の通信プロトコルに戻しかつ前記複数のアドレス可能なレジスタ手段が互いに通信できるようにする段階、
を具備する複数のアドレス可能なレジスタ手段の間で通信する方法。
【請求項１３】
複数のアドレス可能な構成要素を有する無線通信装置における、複数のモードを使用して前記複数のアドレス可能な装置の間で通信する方法であって、
第１のアドレス可能な構成要素において、少なくとも第１の操作コード、アドレス、および固定長のアーギュメントを有する第１のモードを使用する第１の情報パケットを発生する段階、
前記第１のアドレス可能な構成要素において、ハードウェアビジーラインをアクティブにして他のアドレス可能な構成要素が前記第１および前記第２のアドレス可能な構成要素の間の通信において妨害を生じることを防止する段階、
シリアル通信リンクによって、直列的に、前記第１の情報パケットを第２のアドレス可能な構成要素を有する通信装置に送信する段階、
前記第２のアドレス可能な構成要素において、直列的に、前記シリアル通信リンクから前記第１の情報パケットを受信する段階、
前記第１の情報パケットの内容に基づき前記第１および第２のアドレス可能な構成要素において第２のモードへ切り換える段階、
前記第１のアドレス可能な構成要素において、少なくとも第２の操作コード、および中断されることのない可変長のアーギュメントを有する前記第２のモードを使用する第２の情報パケットを発生する段階、
シリアル通信リンクによって前記第２の情報パケットを前記第２のアドレス可能な構成要素に、直列的に、送信する段階、
前記第２のアドレス可能な構成要素において、直列的に、前記シリアル通信リンクから前記第２の情報パケットを受信する段階、
前記第２のアドレス可能な構成要素において前記第２の操作コードによって指定された操作を行なう段階、そして
前記第１のアドレス可能な構成要素において、前記ハードウェアビジーラインを解放して前記第１および第２のアドレス可能な構成要素を強制的に前記第１のモードに戻しかつ前記複数のアドレス可能な構成要素が互いに通信できるようにする段階、
を具備する複数のモードを使用する複数のアドレス可能な装置の間で通信する方法。
【請求項１４】
プログラミング装置を使用して無線通信装置をプログラミングする方法であって、
前記プログラミング装置において、少なくともプロトコル切り換え操作コードおよびエラー検出コードを有する固定長の情報パケットを発生する段階、
前記プログラミング装置において、ハードウェアビジーラインをアクティブにして他のアドレス可能な構成要素が前記プログラミング装置および前記無線通信装置の間の通信において妨害を生じることを防止する段階、
シリアル通信リンクによって固定ボーレートの通信プロトコルを使用し前記固定長の情報パケットを前記無線通信装置に送信する段階、
前記無線通信装置において、前記シリアル通信リンクから前記固定長の情報パケットを受信する段階、
前記プログラミング装置および前記無線通信装置において、前記固定長の情報パケットに含まれる情報に応じて中断されることのない可変長および選択可能なボーレートの通信プロトコルへと切り換える段階、
前記第２の通信プロトコルを使用してプログラミング情報を前記プログラミング装置から前記無線通信装置に送信する段階、
前記プログラミング装置によって送信された可変長の情報パケットを使用して前記無線通信装置をプログラミングする段階、そして
前記プログラミング装置において、前記ハードウェアビジーラインを解放して前記プログラミング装置および前記無線通信装置を強制的に前記第１の通信プロトコルに戻しかつ前記プログラミング装置および前記無線通信装置が互いに通信できるようにする段階、
を具備するプログラミング装置を使用して無線通信装置をプログラミングする方法。
【請求項１５】
プログラミング装置を使用して無線通信装置をプログラミングする方法であって、
前記プログラミング装置において、少なくともプロトコル切り換え操作コードおよびエラー検出コードを有する第１の情報パケットを発生する段階、
前記プログラミング装置において、ハードウェアビジーラインをアクティブにして他のアドレス可能な構成要素が前記プログラミング装置および前記無線通信装置の間の通信において妨害を生じることを防止する段階、
シリアル通信リンクによって第１のボーレートを有する第１の通信プロトコルを使用して前記第１の情報パケットを前記無線通信装置に送信する段階、
前記無線通信装置において、前記シリアル通信リンクから前記第１の情報パケットを受信する段階、
前記プログラミング装置および前記無線通信装置において前記第１の情報パケットによって伝達される情報に応じて第２の通信プロトコルへ切り換える段階であって、該第２の通信プロトコルは中断されることのない可変長のメッセージブロックを使用する、段階、
前記第２の通信プロトコルを使用してプログラミング情報を前記プログラミング装置から前記無線通信装置へ送信する段階、
前記無線通信装置をプログラミングする段階、そして
前記プログラミング装置において、前記ハードウェアビジーラインを解放して前記プログラミング装置および前記無線通信装置を強制的に前記第１の通信プロトコルに戻しかつ前記プログラミング装置および前記無線通信装置が互いに通信できるようにする段階、
を具備するプログラミング装置を使用して無線通信装置をプログラミングする方法。
【発明の詳細な説明】
発明の分野
この発明は一般的には通信装置に関し、かつより特定的には複数のサブセクションを有する通信装置に関する。
発明の背景
この発明の必要性はレジスタモデル化（register−modeled）無線装置の間での高速度の通信の問題から生じる。今日のレジスタモデル化無線通信装置は固定長の情報パケットを含む通信プロトコルを使用して互いに通信する。部品技術の進歩に伴って、無線通信装置は今や以前には携帯用または移動無線装置では不可能であったサイズのメモリ部品を使用する。特に、電子的に消去可能なプログラム可能リードオンリメモリ（EEPROM）およびフラッシュメモリは通信装置のオペレーティングシステムが記憶できる大きさで利用できる。無線機がレジスタモデル化プロトコルを使用してプログラムされる装置においては、現在利用可能な固定長のメッセージプロトコルを使用するとかなりの量の時間が必要である。この時間的要求は現在利用可能な固定長のメッセージングによって必要とされる大きなオーバヘッドによる。これらの固定長のメッセージングプロトコルは米国特許第4,637,022号および第4,684,941号に記載されている。無線機のプログラミング時間を実質的に低減するために、従来技術の欠点を克服する、改善されたレジスタモデル化システムおよび該レジスタモデル化要素の間の通信方法が望まれる。
発明の概要
無線システムが開示され、該システムは複数のアドレス可能なプロセッサ手段および通信手段を具備する。該通信手段は前記アドレス可能なプロセッサ手段を相互接続するためのシリアル通信リンクを含む。該無線システムはまた第１および第２の通信プロトコルを含む。第１の通信プロトコルはパラメータデータをアドレス可能なプロセッサ手段へとまたは該アドレス可能なプロセッサ手段から受け渡すための複数の固定長情報パケットを含む。第２の通信プロトコルはパラメータのデータをアドレス可能なプロセッサ手段へとまたはアドレス可能なプロセッサ手段から選択可能な速度で受け渡すために複数の可変長の情報パケットを含む。これによって、前記アドレス可能なプロセッサ手段の動作状態は前記アドレス可能なプロセッサ手段からまたは前記アドレス可能なプロセッサ手段へと、それぞれ、パラメータデータを通信することにより決定できまたは変更できる。
【図面の簡単な説明】
図１は、本発明に係わるレジスタモデル化通信システムのブロック図である。
図２は、本発明に係わるプログラミングサブシステムの非常に単純化したブロック図である。
図３は、本発明にしたがって通信プロトコルを変更するために使用される方法のフローチャートである。
図４は、本発明にしたがって通信のボーレートを変更するために使用される方法のフローチャートである。
図５、図６および図７は、本発明にしたがってシリアルバス拡張プロトコル（SBEP）モードに入る方法を示すタイミングチャートである。
図８、図９および図10は、本発明にしたがって前記SBEPモードから退出する方法を示すタイミングチャートである。
図11は、本発明に係わるプロトコルにおいて使用されるサンプルメッセージを示す。
図12および図13は、本発明に係わる放送方法を示す。
図14は、本発明に係わるSBEP応答を示す。
図15および図16は、本発明に係わるリトライのタイミングチャートを示す。
図17は、本発明に係わるアクノレッジメントのタイミングを示す。
図18は、本発明に係わるネガティブなアクノレッジメントのタイミングを示す。
図19は、本発明に係わるリセット放送タイミングを示す。
図20、図21および図22は、本発明に係わる良好な書込み応答を有する第１のメモリのプログラミングのバス処理を示す。
図23、図24および図25は、本発明に係わる良好なおよび悪い書込み応答を有する第２のメモリのプログラミングのバス処理を示す。
好ましい実施例の詳細な説明
図１を参照すると、本発明に係わる１組の規定されたアドレス可能なサブセクションを有する、無線通信装置100が示されている。この図面は現在および将来のシステムのオプションおよびコマンド／制御サブシステムを共通のリンケージによって構築され一体化された２方向移動または携帯用無線システムへと統合するための概念的なアーキテクチャを示す。
３つのサブセクション、すなわち制御サブセクション150、外部オプションサブセクション180および無線サブセクション200が示されている。これらのサブセクションは本発明のレジスタモデル化されたアドレス可能プロセッサ手段を提供する。これらのサブセクションはレジスタモデル化されたプロセッサと見ることができるが、それはこれらは相互通信に関する限りレジスタと見ることができるからである。これらのサブセクションの内容は次に無線装置100が行なうべき動作を規定するために使用できる。装置100および／またはサブセクション150,180および200の実際の（virtual）状態は、それぞれ、前記複数のサブセクションへと情報を通信しおよび前記複数のサブセクションから情報を通信することにより決定しまたは変更することができる。この通信は本発明にしたがってシリアルバス230を介して行なわれる。この基本構造は無線システム100に不必要な冗長性を持たせる事なく単一の無線システムで様々な種々の無線機、機能、特徴および増強性を有する能力を提供する。
各々のサブセクションはマイクロプロセッサユニット（MPU）およびメモリ要素からなる１つまたはそれ以上のレジスタを含む。前記制御サブセクション150は制御MPU158、表示装置152、キーボード156およびメモリ要素154を含む。キーボード156は数字、英数字、ファンクションキー、またはプッシュトーク（PTT）のような特徴機能作動キーの任意の組合わせを含む。外部オプションはMPU182を含むものとして示されている。必要に応じてこのサブセクションに他のレジスタを加えることができる。無線機サブセクション200は受信機204、MPU206およびいくつかのメモリ要素208,210および212を含む。これらのメモリ要素は、制御、アドレス、およびデータラインを含む、バス214を介してMPU206に結合される。MPU158,182および206はアドレス可能であり、それによって前記通信システム100にそのサブセクション150,180および200の間で１対１の通信を提供することが好ましい。
サブセクション150,180および200のメモリ要素のいずれかの内容を操作するために、１組のオペレーションコード（Op  Codes）が規定されている。これらの命令はデータ転送およびシステム制御のために使用される。これらのOpコードはリセット、読出し、書込み（変更）、ビットセット、ビットクリア、アクノレッジメント（ACK）、およびネガティブアクノレッジメント（NAK）を含む。これらのOpコードは前記シリアルバス230によって送信され前記サブセクションのいずれかにおけるいずれかのアドレスされたレジスタに関しデータを書込み、読出し、修正し、または試験することができる。
種々のサブセクションの機能がシリアルバス230によって通信されるメッセージの内容によって制御される。これらのメッセージは単一の命令または同様の原始的な機能の組合わせ（macros）とすることができる。この特徴はサブセクションが実際に新しいコマンドのOpコードを実行することなく新しい「コマンド」に応答する能力を与える。これは前記原始的な命令セットを安定に維持することができ、周辺装置180の上位互換性を促進する。
無線機のMPU206は直接受信機204および任意選択的な送信機とインタフェースし、かつ特定の受信機に関連する数多くの低レベルのタスクを行なう。これらのタスクは動作周波数の発生のためのシンセサイザの制御、送信電力レベルの制御、オーディオのミューティング、チャネルの操作、受信／送信および送信／受信シーケンスのタイミング、可聴範囲外の（sub  audible）信号発生および検出（PL/DPLコード）、ハードウェア診断、その他を含むことができる。
前記無線機MPU206はまた各々の関連するタスクが制御MPU158または他のMPU182にとって利用可能なシリアルバス230へのインタフェースを提供する。これらのタスクはメモリの問合わせ、プログラミング命令、表示メッセージの処理、キーボードメッセージの処理、その他を含む。
制御MPU158は無線システム100への人間のインタフェースに加えて全てのサブセクション180および200へのコマンドを提供する。その機能は表示装置152の制御、ユーザへのシリアルバス230によって受信したまたは局部的に発生したデータおよびステータス情報の表示を含む。MPU158はまたキーボード156からデータおよび制御情報を受信し、かつ選択的にそれらを他のサブセクションのMPUによってさらに処理するために前記表示装置152またはバス230へと導く。
周波数情報、ユニットのIDコード、PL/DPLコード、モードリンケージ、走査リスト、その他のような無線システム100の任意のかつ全ての独自のパラメータが無線機プロセッサ206によって全てのシステムの周辺装置に与えられる。それはシステム100のデータベースを提供しかつ他のMPUが監視するためにこの情報をバス230を介して転送する。１つの例は無線機MPU206上に存在するPL/DPLドライバによって与えられる。全ての組のPLおよびDPLに対する可能なコードは前記EEPROM208またはROM212内にハードプログラムすることができる。このEEPROM208およびROM212のデータベースは前記シリアルバス230からその情報を必要とする他のMPUに対してアクセス可能である。
音声およびスケルチのような、アナログ制御機能はキーボード156からデジタルまたはアナログ形式で制御できる。これらの制御機能を表すアナログ信号は直接キーボード156から無線機200へと図示しない直接の信号ラインを介して結合できる。あるいは、アナログ信号は前記制御MPU158内のアナログ−デジタル変換器（DAC）によってデジタル形式に変換され、かつ次にシリアルバス230によって無線機200に送ることができる。表示装置152は前記制御MPU158によって制御され、かつステータスおよび監視目的並びにキーボードエントリのフィードバックのためにシステム100内の他のMPUによってバス230を介してアクセス可能である。
外部オプションのMPU182は無線システム100のオプション180および拡張のためのサポートを提供する。無線機および制御ユニットのプログラミング、デジタル音声記憶、電話のシグナリング、マルチ周波数および単一周波数トランキング、その他のような、主たる通信機能は全て外部オプションのサブセクション180によってサポートできる機能の例である。
シリアルバス230は無線システム100内の全てのMPU158,182および206の物理的インタフェースを提供する。それが３線リンク（信号、ビジー、およびグランド）からなりかつ図示しない他の内部または外部サブセクションにバス接続することができる。外部で使用される場合、該ケーブルはツイステッドペア、シールドされたオーディオまたは光ファイバとすることができる。該リンクはまた赤外線、超音波またはRFを介して遠隔的に結合することができる。特定の用途はこれらの要求を増大する。例えば、移動無線機の用途においては、前記信号ラインは一般にバス＋／バス−ラインとも称される、平衡信号＋／信号−ラインに分割しノイズ排除のため相補的な信号を形成する。前記信号ライン（単数または複数）は実際のシリアルデータが送信されかつ受信される場合は双方向ラインである。SB9600モードにおいては、双方向ビジー（BUSY）ラインが使用されてデータが信号ライン上にあることを指示する。それは処理の開始および終了が生じたことを示しかつまたNAKを示すために使用される。好ましい実施例では、内部的であれ外部的であれ、前記信号ラインおよびビジーラインへとタップ接続する全てのサブセクションは「ワイヤードOR」構成を使用する。
シリアルバス230はシステム100のMPU158,182および206の間でまたはこれらのMPUのいずれかと外部MPU（単数または複数）との間で通信の必要性が存在する場合にはいずれの時でも使用できる。SB9600モードにおいては、MPUの間の通信は前記双方向シリアルバス230によって毎秒9600ビット（BPS）で送信されるシリアルデータを使用して行なわれる。該アーキテクチャは充分に一般的であるから数多くの異なるアプリケーションが構想できる。システムにおける種々のプロセッサへのアクセスは、技術的に知られた、コンピュータのローカルエリアネットワークにおいてしばしば使用されるCSMA/CD（Carrier  Sence,Multiple  Access  with  Collision  Detection）と同様の技術を使用して双方向データラインおよび双方向ビジーラインを介して得ることができる。
シリアルバス230によって行なわれる通信は２つのプロトコルを利用する。初めに、全てのサブセクションによって理解されている、SB9600固定長プロトコルが使用される。第２のプロトコル、シリアルバス拡張プロトコル（Serial  Bus  Expanded  Protocol:SBEP）は一度に２つのMPUによって使用できる。SBEPプロトコルを使用することを望む場合は、発信MPU（ホスト）から受信MPU（目標または相手:target）へとSB9600プロトコルを使用してメッセージが送られSBEPモードへの変更を要求する。このメッセージは固定長情報パケットを介して送信される。受信ユニットは固定長の情報パケットの命令に注意するよう動作を進める。好ましい実施例では、この情報パケットは受信ユニットに対し第２の動作モード、SBEPへと切り換えるよう要求する。いったんこのモードに入ると、可変長メッセージが種々のボーレートで通信可能であり、サブセクションの間での通信を大幅にスピードアップする。プロトコルの切り換えならびにSBEPプロトコルの他の特徴については後に説明する。
本発明をより良く理解するため、SB9600プロトコルの特徴の概要が与えるれる。このプロトコルは後に非常に詳細に説明するSBEPプロトコルと混同すべきではない。
ある装置が前記ビジーラインが不作動であること（これはまた「空き（free）」とも称される）を知るため初めにチェックを行なうことによってバスにアクセスする。もしそれが空きでなければ、装置は再び試みる前にある期間待機しなければならない。もしそれが空きであれば、ただちにビジーをアクティブに引っ張り、前記ビジーラインによって送信し、かつ次に前記ビジーラインを解放しなければならない。
SB9600が構築される基本的な基礎単位（bulding  block）は８ビットのデータバイトである。スタートおよびストップビットを備えた該データバイト（合計10ビット）は「データパケット」と称される。これらのデータパケットは単一の「メッセージ」を形成するよう連結される。メッセージは典型的には、
１つのOpコードパケット、
アドレスパケット、
データ（アーギュメント）パケット、
およびCRC（巡回冗長符号）パケット
からなる
システム100において許容されている２つのタイプのメッセージは要求（Requests）および放送（Broadcasts）である。要求はシステム内の他のプロセッサから情報を得るために使用される。放送は特定の要求に対する応答（請願された（solicited）放送または返答）であるかあるいは、ボタンが作動された時のように、自発的に発生されかつシステム内の全ての装置に送信される（請願されない放送）である。
前記シリアルバスにおけるビジーラインは主にバス上にメッセージが存在することを示す働きをする双方向ラインである。メッセージがバス上で送信できる前に、送信することを希望する装置はまず前記ビジーラインがアクティブであることを調べなければならない。もしそれがアクティブでなければ、該装置はビジーラインをアクティブに引っ張りかつメッセージを送信する。もしある装置がその送信に対して応答を期待すれば、前記ビジーラインは前記返答（Reply）の最初のバイトを受信した後にまたはタイマが経過した後に解放しなけれはならない。もし応答が期待されなければ、ビジーラインはメッセージの最後のパケットを送信した後に解放されなければならない。ビジーラインはまたNAKを処方し（formulate）およびテストするために使用される。
あるメッセージがCRCエラーを有する場合、あるいはもしパケット間遅延違反が生じれば、受信装置はただちに前記ビジーラインをアクティブに引かなければならない。放送を送信した後、もとの送信機はビジーラインを解放しかつ次にサンプルしてそれが依然としてアクティブに保持され、メッセージが正しく受信されなかったことを示しているか否かを調べる。もしビジーが依然としてアクティブに保持されていれば、メッセージはNAK応答を受けておりかつ発信元の送信機はメッセージを再び送信することができる。再送信の間、ビジーは決して状態を変えない（常にアクティブである）ことに注目すべきである。いったん有効なメッセージが受信されると、全てのその後のメッセージはビジーが状態を変えるまで無視されるべきである。
エラーは外部のノイズ発生源、衝突、または不適切なシステムの使用によって生じる。データ送信におけるエラーはCRCにより、タイミング違反により、あるいは衝突を検出することにより検出される。衝突の検出は送信された情報を発信元のMPUにおいて監視することによって達成される。そのようなエラーが生じた時、ネガティブアクノレッジメント（NAK）が送信される。NAKは放送に続く「NAK期間」の間にビジーラインをアクティブに引くことからなる。この時間インターバルにおけるアクティブなビジーの単なる存在は少なくとも１つの聴取者がエラーを検出したことを示す。NAKはいずれかの放送が再送信されるようにする。
もしノイズがバスを汚染しあるいはもし２つまたはそれ以上のMPUがバスの制御をまったく同じ時間に取れば、受信されたCRCは期待されるものではなくなる。送信の間、各々のパケットは１つのパケット時間内で前のパケットに続かなければならない（パケット間遅延）。もし「パケット間遅延違反」が発生すれば、受信機はただちにNAKを行なわなければならない。パケット間遅延違反が発生した場合には常に、受信したメッセージは無視されかつ受信機は新しいメッセージを受信するために再初期化されなければならない。
システムにおける各々のオプション、制御ヘッドおよび無線機はそれにグループおよび装置アドレスが割当てられている。２つのオプションは同じ装置アドレスおよびグループを持たない。装置アドレスは特定の装置を指定する必要がある場合にメッセージと共に送信される。
図２を参照すると、プログラム装置195が、シリアルバス230を介して無線機200に結合されている。無線機200は本発明にしたがってプログラム装置195およびSBEPプロトコルを使用してプログラムできる。無線機200は本発明にしたがってシリアルバス230を介してプログラム装置195に結合されているものとして示されている。プログラム装置195は無線機200に対して外部オプション180として結合されている。この実施例では、プログラム装置195はホストとして動作するが、それは情報パケットの形でプログラミングメッセージを発生するからである。これに対し、無線機200は目標または相手装置として機能するが、それは該無線機200がプログラム装置195によって発行されるプログラミングコマンドを受信しかつ実行するからである。
無線機200をプログラミングする上で、プログラム装置195はSB9600プロトコル、すなわち第１のかつ固定されたボーレートの通信プロトコル、を使用して通信プロトコルの変更を要求する。無線機200は言い換えれば、アイドル状態で待っており、バス230によって動作するいずれかのサブセクションからSB9600情報を受信することを期待している。無線機200はプロトコル変更要求の受信をプログラム装置195に対してアクノレッジする。このアクノレッジメントにより、プログラム装置195および無線機200はSBEPモード、すなわち第２のかつ可変長の通信プロトコル、に切り換わる。プログラム装置195および無線機200の双方がSBEPモードになることにより、プログラミングが始まる。プログラム装置195から通信されるプログラミング情報はサブパケットからなる情報パケットである。これらのサブパケットは可変長Opコードのサブパケット、可変長のメッセージサイズのサブパケット、データのサブパケット、アドレス、エラー検出用サブパケット、その他を含む。このハンドシェイクおよびプログラミングのより詳細な説明はSBEPモードへのエントリを示す図３および図４を参照して説明する。
図３を参照すると、SBEPによる首尾良い移行（changeover）および通信を行なうためにプログラム装置195によって使用される手順のフローチャートが示されている。無線機200のプログラミングはフローチャート600の通信部分を使用する。さらに、このプログラミングは無線機200の実質上の状態（virtual  state）の変更を生じる。スタートブロック601から、ホストは、ブロック602によって、SBEPモードへの切り換えを要求するSB9600メッセージを送信する。無線機200はこのSB9600メッセージの受信を該メッセージをNAK応答しないことによりアクノレッジする。このアクノレッジメント（NAKの欠如）は、ブロック604により、無線機200がエラーなしにメッセージを受信したことを示す。ブロック604の出力はブロック606に結合されており、そこでプログラム装置195はビジーラインをアクティベイトする。このビジーラインは他の装置にプログラム装置195が無線機200に通信している間シリアルバス230から離れているように通知するために使用される。ビジーラインがアクティベイトされることにより、ホストは、ブロック614により、SBEPメッセージを送信する。
ブロック614から、条件ブロック616がプログラム装置からのSBEPメッセージにおいてなんらかのエラーが受信されたか否かを判定する。プログラム装置195から無線機200へと通信されたメッセージがエラーを伴って受信されたことを示すノー（NO）出力はブロック618に結合され、そこで無線機200はSBEPブロック618に結合され、そこで無線機200はSBEPネガティブアクノレッジメントメッセージ（NAK）をプログラム装置195に返送していくつかのエラーが受信されたメッセージに検出されたことを示す。このネガティブアクノレッジメントはSBEP  NAKであり、SBEPモードにおいて通信されるいずれか他のメッセージと同様のデータバイトである。エラーの検出は技術的によく知られたいくつかの利用可能な方法の内の任意のものによって行なうことができる。好ましい実施例では、検査合計（checksum）エラー検出が使用され検査合計パケットが通信される。巡回冗長検査（CRC）パケットのような他のエラー訂正技術を同じまたはより良好なエラー検出性能をもって検査合計パケットと置き換えることもできる。ブロック618の動作の一部として、NAKトライアルの数が１だけ増大される。NAKが相手からホストへと送信される回数が次に、ブロック620および621によって、監視される。ブロック620および621はメッセージが通信される時に該メッセージを汚染する無線機200とプログラム装置195との間のリンクに大きな問題が存在する場合にトライアルの数を制限するよう構成される。この問題はシリアルバスにおける物理的なものかもしれずあるいはリンク上に加えられたノイズかもしれず、ともに反復的なエラーを引き起こす。トライアルの数は特定のシステムの特性に基づき選択される。好ましい実施例では、エラーを有する大きな数のトライアルを示すフラグが上げられる前に３回のトライアルが許容される。大きな回数のエラーは条件ブロック621のイエス（YES）出力を生成し、これはブロック610に結合され、そこでホストはビジーラインを解放しかつSBEPモードを終了する。この時点でSB9600からSBEPモードへの切り換えを再開するにはホストから新しい変更要求を行なわなければならない。
条件ブロック616のイエス出力はブロック624に結合され、そこでアクノレッジメント（ACK）が無線機200からプログラム装置195に送信される。トライアル数はこの時点でまたはブロック614の前の任意のポイントでゼロにセットされることが理解できる。ブロック616および626を結合する経路は、図示しない、トライアルの数をクリアするブロックを含む。いったんACKが返送されると、無線機200は、ブロック626によって、SBEPメッセージによって要求される動作を行なうことになる。プログラミングの特別の場合には、無線機200はプログラム装置195からプログラミング情報を受信しかつそれらをRAM210およびEEPROM208に格納するよう進行する。
ブロック626は条件ブロック628に結合され、そこでプログラム装置195の要求に関して判断が行なわれる。無線機200に通信されたメッセージの種類に応じて、新しい返答（reply）が予期できる。一般に、要求がホストによって返送された時返答が必要とされる。しかしながら、放送（broadcast）は返答を必要としない。種々の形式のメッセージについての詳細は後に説明する。条件ブロック628は前記通信されたメッセージが無線機200からの応答を要求しているか否かを判定する。イエス出力はブロック630に結合され、そこで無線機200はプログラム装置195に返答を送り返す。このブロックから、動作は条件ブロック608に結合され、そこで全てのホストの要求がサービスされたか否かに対し判断が行なわれる。ブロック608のイエス出力はブロック610に結合され、そこでホスト195はビジーラインを解放してSBEPモードの終了を示す。ブロック612はホストおよび目標の双方をSB9600のモードへと戻す。条件ブロック608のノー出力はブロック614へとつながる。
無線機200のプログラミングにおいては該無線機はホストに対して特定の情報パケットによって応答することは必要ないかもしれないが、本発明の他の態様においては、プログラミング装置195は実際には無線機200から情報を要求し得ることが理解される。１つのそのような用途はプログラム装置195によって発行される読取りコマンドであり、該コマンドは、無線システム100のサブシステムのいずれかにおける、メモリの一部がそこに転送し戻されることを要求する。この状況では、無線機200はそのメモリの内容をプログラム装置195に転送し戻すよう処理することが分かる。いったん返答がプログラム装置195に戻されると、動作は条件ブロック608に戻りホストからの最後の要求がサービスされたか否かを判定する。条件ブロック628のノー出力はまた条件ブロック608に戻される。
フローチャート600の重要な観点はプログラム装置195および無線機200の間で受信されかつ送信されるメッセージは可変長とすることができ、かつしたがって各々のメッセージはプログラム装置195からの完全な要求または無線機200からの完全な応答を含み得ることである。これは固定長のメッセージが受信および送信されて通信のプロトコルに対し大きなオーバヘッドを生じている現在入手可能なシステムに対し意義深いことである。SBEPプロトコルによって提供される可変長の利点は無線通信装置が現在入手可能な機構に比較して遥かに短い期間でプログラムできるようにする。本発明の他の利点は無線通信装置が今やブートストラップモードにおいて効率的にプログラムできることである。
図４およびフローチャート500を参照すると、本発明に係わる無線システム100のレジスタモデル化要素の間での通信プロトコルで使用されるボーレートを変更する方法が示されている。スタートブロック501から、ホストは、ブロック502によって、新しいボーレートへの切り換えを要求するSBEPメッセージを送信する。明かに、ブロック502はホストがすでにSBEPモードへの切り換えを要求しておりかつプログラム装置195および無線機200がすでにこの動作モードに切り換えているものと仮定している。いったんボーレート切換メッセージが送信されると、条件ブロック504は該ボーレート変更要求が無線機によってエラーなしに受信されたか否かを判定する。エラーが発見されたことを示す、ノー出力はブロック508に結合され、そこでネガティブアクノレッジメント（NAK）が無線機からホストへと古いボーレートで送信される。ブロック508の出力はトライアルの回数を監視するブロック506を介してブロック502に戻される。ブロック506は通信リンク230における散発的でないエラーを検出するためにトライアルの回数を監視する。条件ブロック504のイエス出力はブロック510に結合され、そこでアクノレッジメント（ACK）が古いボーレートでホストに返送され、かつボーレートが、無線機において、要求された新しいものへと変更される。ブロック510の出力は条件ブロック512に結合され、そこでホストによって受信されるACKの条件に関して問い合わせが行なわれる。条件ブロック512のイエス出力はブロック514に結合され、そこでホストは新しいボーレートへと切り換える。条件ブロック512のノー出力はさらに他の条件ブロック518に結合され、そこでタイマが監視される。この条件ブロックはタイマの経過を調べる。タイマが経過したことを示すイエス出力はブロック502に戻され、そこでホストはボーレートを変更する第２の要求を返信する。ホストがアクノレッジメントを受信するのに割当てられた時間が経過していないことを示すノー出力はブロック516に続き、そこでホストにアクノレッジメントについてチェックを行なわせる。ブロック516の出力は条件ブロック512に戻り、そこでACKの受信が判定される。
フローチャート500により、２つの構成要素の間での通信は何らのハードウェアの相互作用なしに変更できることが分かる。好ましい実施例では、高いボーレートが望ましく、それは無線システム100のサブセクションのプログラミングは多量のデータが転送されることを必要とするからである。このボーレートの変更のルーチンはプログラミングに限定されるものではなくかつ任意のデータの転送に使用できることが理解される。
本発明の重要な利点はフラッシュEEPROMの利用によって実現される。電気的に消去可能なメモリにファームウェアを記憶するこれらのメモリ要素の利用可能性はもはや到達不能なものではなくかつ容易に実施できるものである。しかしながら、現存の通信プロトコルによれば、大きなメモリ要素、つなわち256キロバイトのデバイス、をプログラムするための時間は過剰なものでありかつ効率的なものではない。さらに、SB9600のような、利用可能なプロトコルはそれらの固定されたアドレスフィールドによりアドレス範囲を制限する。本発明によって得られる利点はSBEPプロトコルのボーレートによって何らの制約も課されないことであり、したがってシリアルバスによってメモリ装置がプログラムされる速度は大幅に改善できる。さらに、SBEPによって提供されるアドレシング能力の増強のため16メガバイトまでの装置およびそれより大きな装置もこの新しいプロトコルを使用してプログラムできる。メモリのプログラミング時間は可変長メッセージを使用すると10の係数で低減されることが予期できる。これは主に小さなオーバヘッドを有する多量のデータを送信する利点を有することにより達成され、プロトコルを高度に効率的なものにする。本発明の１つの他の利点はシリアルバスを使用する場合に無線機の表示を更新することによるものである。このプロトコルを使用する場合、可変長メッセージおよび可変ボーレートを使用することにより表示装置上に情報を表示する効率が大幅に改善されることが再び認識できる。
好ましい実施例では、前記SBEPはシリアルバスによるオプションの間でまたは外部コンピュータと無線機またはそのオプションのメインプロセッサとの間で高いデータ転送レートを達成するために使用される。シリアルバス上のノードの間でまたはホストから接続されても良くあるいは接続されなくても良いオプションへの１対１の通信に向けられている。前記メッセージは、要求、放送、応答または返答（Replies）、アクノレッジ（ACK）およびネガティブアクノレッジ（NAK）からなる。要求は目標または相手（target）が接続されることを要求し、放送は要求しない。返答は要求に応じて送信するのみである。
前記SBEPは特定の構成がどのボーレートを使用するかを選択できるようにすることによって高いスループットを達成する。好ましい実施例は38.4Kボーまでのレートをサポートする。より高速のプラットホームを使用するより高いレートも実現できることが充分理解される。プロトコルそれ自体はSCIバイト時間に関して最高の（most）タイミングを指定する。また、SBEPメッセージにおける可変バイトのカウントおよび単一バイトのアクノレッジメントも高いスループットに寄与する。
一般に、かつ好ましい実施例においては、SBEPは一時的なシリアルバス「モード」である。以後ホストと称される、SBEPの発信元はグループ／アドレスによって識別されるバスにより１つのノードにSB9600メッセージを送信する。前記グループ／アドレスにより目標とされるノード、すなわち以後目標または相手装置と称される、無線機200はこのSBEPREQメッセージによりSBEPを達成するよう要求する。該相手装置は存在しなくても良く、その場合はホストはSB9600のNAKがないものとして進行する。この状況の間は、放送メッセージのみが意味を持つ。SB9600からSBEPプロトコルに入ることができることに加えて、それはブートストラップモードを介して直接入ることができる。言い換えれば、相手装置はその内部プロセッサが前記シリアルバスを介してのSBEPメッセージによりそのファームウェア装置（フラッシュまたはUVEPROM）を再プログラムできるようにする。前記ファームウェアデバイスは相手装置が製造された時に空っぽにされる（blank）可能性があるから、このプロトコルはプロセッサのブートストラップモードのために書かれたアルゴリズムと組合わせて無線機のプロセッサがファームウェアをそのプログラムスペースのデバイスに書き込みできるようにする。
SBEPプロトコルの性能の詳細を示すために、いくつかのタイミングおよび流れ図を参照する。これらの図はSB9600からSBEPへの切り換えを含むSBEPプロトコルの特徴のいくつかを理解する上での助けを与えることを意図している。これらの図は好ましい実施例の特定のものを表わしておりかつ本発明に対する制限であると解釈されるべきできない。
図５は、SBEPモードへのエントリのタイミングおよび流れ図を示す。相手先または目標のプロセッサがそのEEPROM内にファームウェアを有する場合、それはSB9600モードで動作している。SBEPモードへと切り換えるために、相手装置に対してホストがSBEP動作を始めることを希望することを指令するSB9600のopコードがある。ホストはSBEPREQ  SB9600バスメッセージ710を送信する。この要求に続き、ビジーラインが解放され、706、その間に相手装置からのNAKを調べる。もし、期間706のロー状態の間の一時的なハイによって識別される、NAKが存在すれば、ホストはリトライを行なう。NAKが続くリトライはSBEPモードへのエントリの不許可となる。もしSB9600のNAKが発生されなければ、ホストは再び「ビジー」ラインをアクティブに引かなければならなず（730）、かつSBEPメッセージ712を送信するよう進行する。全ての他のバスのオプションはSBEPREQのopコードを見た後は静止状態に（quiet）留まっておりかつSBEPはビジーラインがアクティブに留まっている限り進行することができる（730）。もし相手装置が存在しなければ、SBEPへのエントリはあたかもそれが存在するかのように進行する。
相手装置が接続されている場合にSBEPに入ると、それ（相手装置）は準備ができ次第でるだけ速くSBEPボーレートでACKを送らなければならない。ホストはSBEPボーレートにおいて5SCIバイト時間の間このACKを待機すべきであり、かつ5SCIバイト時間の後にACKが見られなければ相手装置は存在しない可能性がある。SCIバイト時間は一般に動作しているボーレートで１バイト（８ビット）のデータに加えてスタートおよびストップビットを送信するのに必要とされる時間量として定義される。この初期ACKはホストにそれが5SCIバイト時間の間待機するよりはむしろ直ちにメッセージを送信できることを通知するために使用される。もし相手装置がACKを行なうのが遅れるとかつホストが要求または放送を送信するよう進行すると、たぶん衝突が起きるであろう。そのような衝突が起きかつバス上に相手装置がある場合、該相手装置は該要求または放送に対しNAK応答するであろう。ホストは相手装置が完全なメッセージを受信しなかったのでリトライを行なう責務を有する。
もし相手装置が、新しい無線機の場合のように、開始のためのファームウェアを持たない場合、ホストは該相手装置がSBEPREQ  710を発行した後にSBEPモードに入ることを期待できない。SBEPREQ  710は依然として発行され他のバスオプションがSBEPがバス上で行なわれようとしていることに気がつくようにしなければならない。相手装置は到達不能であるから、該相手装置と通信する唯一の手段は該相手装置をブートストラップモードにしかつブートストラップコードをそれにダウンロードすることである。好ましい実施例では、マイクロプロセッサユニット300はMC68HC11型マイクロプロセッサである。このプロセッサはブートストラップモードをパワーアップするためにMODA/Bラインをローにすることによりリセットから逃れなければならない。相手装置がリセットするときMODA/Bがローであることを保証するのはホストの責務である。任意選択時には、無線機のアーキテクチャーが外部制御によって要求されたラインによりこれが生じることができるようにし得る。
図６は、相手装置がファームウェアを持たない場合のSBEPへのエントリを示す。言い換えれば、この図はプロセッサをブートストラップモードにするのに必要な事象を示している。リセットパルス802は相手装置がシリアルバスによってリセットするよう指令され得ないからSB9600メッセージまたはSBEPメッセージの使用によって発生することができない。工場での環境では、リセットパルス802は相手装置からリセットを引き起こすのに充分長い期間の間電源を自動的に除去することにより引き起こされる。しかしながら、現場ではこのリセットパルス802は再プログラム機器を操作する人間によって手動により行なわなければならない。通常の状況では、オペレータが手動により相手装置をリセットさせなければならない場合は現場ではほんの少ししかない。
ブートストラップコードをダウンロードするためのプロトコルはプロセッサおよびそのクロック速度に依存することに注目すべきである。情報をダウンロードするために、MC68HC11のリファレンスマニュアルを参照すべきである。SBEPへのエントリについて考察すべき最後の場合は相手装置がSB9600によって通信するファームウェアを有するが、それをブートストラップモードに置かなければならない場合である。これは相手装置のファームウェアがアップグレードされるべき場合である。このエントリ手順が図７に示されている。相手装置におけるプロセッサはそのROM内にファームウェアを有するから、該プロセッサはSB9600モードで動作する。SBEPモードへの切り換えのために、ホストはSBEPREQ  SB9600バスメッセージ710を送信し、かつもし相手装置がそれを受信しかつSB9600のNAKを発生しなければ、ホストは「ビジー」をアクティブに引かなければならない（730）。全ての他のバスオプションはSBEPREQのopコードを見た後静止状態に留まっておりかつSBEPはビジーラインがアクティブに留まっている限り進行できる。もし相手装置が存在しなければ、SBEPへのエントリはあたかもそれが存在するかのように進行する。RESET−REQのopコードがホストから送信されて相手装置がそれ自身のリセットパルスを発生すべきことを指示し、ブートストラップモードを生じる。
相手が接続されている場合にSBEPに入ると、それ（相手装置）は準備ができ次第でるだけ速くSBEPボーレートでACKを送らなければならない。ホストはSBEPボーレートで5SCIバイト時間の間このACKを待機すべきであり、かつもしACKが5SCIバイト時間の後に見られなければ、相手装置は存在しない可能性がある。この初期ACKはホストにそれが5SCIバイト時間の間待つよりはむしろ、直ちにメッセージを送信できることを通知するために使用される。もし相手装置が遅れてACKを送ればかつホストが要求または放送を送信するよう進行すれば、たぶん衝突が生じるであろう。そのような衝突が生じた場合、バス上に相手装置があり、かつ該相手装置は該要求または放送に対しNAKを送信するであろう。ホストは相手装置が完全なメッセージを受信しないため要求に応じてリトライを行なう責務を有する。
次に、図８、図９および図10を参照すると、３つの異なる動作モードに対してSBEPモードからの退出（exit）について示されている。SB9600からSBEPに入りかつ相手装置がブートストラップモードに入らなかった場合には、SBEPからの退出はビジーライン1002を解放することにより達成できる。いったんビジーラインが解放されると、相手プロセッサはSB9600に戻らなくてはならない。これは図８に示されている。全ての他のバスオプションはビジーラインがハイに移るのを観察しかつそれら自身をSB9600モードで再びアクティベイトする。
あるいは、図９に示されるように、ホストは相手装置に対してリセット−放送（RESET−BROADCAST）メッセージ1106を発行することにより相手装置をSBEPから退出させることができる。前記リセット放送メッセージ116は相手装置にリセットを行なわせかつそれによって通常のSB9600バスプロトコルの動作をパワーアップさせる。ビジーラインにおいて、前記パルス1102は相手装置のプロセッサにより発生される通常の「パワーオン」ビジー状態を示す。このパルスの立上りエッジはSB9600モードでの相手装置のパワーアップを開始させる。バス要求ライン上のパルス1104は相手装置のプロセッサによって発生される通常の「パワーアップ」形リセットである。
図10に示されるように、さらに他の選択肢として、もし相手装置がブートストラップモードにありそのファームウェアがプログラムされていれば、SBEPリセット−放送メッセージ1106が該相手装置に送信されなければならなず、かつそれがもともとブートストラップモードに移ることができた条件を除去しなければならない（MODA/Bがローにセットされる）。もし相手装置が実行すべきファームウェアを有しておれば、それは取り上げられSB9600モードを動作させることになる。パルス1202は相手装置のプロセッサにおけるcopタイムアウトによって引き起こされるリセットパルスを表わす。再び相手装置が点線1204で示されるようにSB9600においてパワーアップする。
SBEPメッセージのフォーマットはメッセージが１バイトからスタートして216＋４バイトの長さまで可変長にできる点で非常に柔軟性がある。実際に、最大のメッセージ長は目標または相手装置において利用できるRAMの量によって制限される。
最初のバイトのメッセージは常に何が続くかを決定する。表１は最初のバイトに対する可能性およびそれが引き続くバイトがなにを意味するかにどのように影響を与えるかを示す。
0003644685.tif 000002
前記SBEPメッセージの最初のバイトはニブル毎のベースで（per  nibble  basis）考えられるべきである。すなわち、最初のニブルまたは最上位ニブル（msn）はopコード情報を含み、かつ第２のニブルまたは最下位ニブル（lsn）は引き続くバイトの数に関する情報を含む。したがって、もし前記lsnが＄０であれば、引き続くバイトはもはやなく、かつ＄０をlsnとして持つ全ての初期バイトは１バイトのメッセージである。ACKおよびNAKは１バイトのメッセージであり検査合計を有しない。
前記最初のバイトのlsnは＄０から＄Ｆまでの値を取り得る。前記lsnが＄０〜＄Ｅである場合は、それは特定のメッセージにおいて引き続くバイトの数を表わす。それが＄Ｆである場合は、それは拡張サイズの２つの付加的なバイトが続きかつこれらはメッセージサイズを含むことを意味する。
前記最初のバイトのmsnはopコードである。それは＄０から＄Ｆまでの値を取り得る。それが＄０〜＄Ｅである場合は、それはopコードである。もしそれが＄Ｆであれば、拡張されたopコードである引き続く付加的なバイトがある。
第３の組合わせはmsnに＄Ｆを含み、付加的なopコードバイトが続くことを示している。拡張されたopコードは前記lsnのカウントの部分ではなく、それはmsnが＄Ｆであるという事実により拡張されたopコードがそこにあることが知られているからである。
メッセージの最後のバイトとして常に検査合計があり前記最初のバイトのlsnにおけるあるいは１またはそれ以上の拡張されたサイズにおけるカウントを含んでいる。検査合計（checksum）は次のように計算される。
検査合計＝＄FF−（（メッセージ中の全てのバイトの和）モジュラス256）
図11は、SBEPメッセージフォーマットにより可能な種々のサイズのいくつかのサンプルメッセージを示す。これらのサンプルメッセージの提示は読者にSBEPプロトコルのために使用されるメッセージング（messaging）の良好な理解を与えることを意図したものである。単一バイトのメッセージ902は所望の可変長オペレーションコード（opコード）を示す最初のニブル9022を含むものとして示されている。第２のニブルは、もしあれば、検査合計バイトを含む引き続くバイトの数を示す。前記可変長のopコードは、リセット操作コード、読み出し操作コード、書き込み操作コード、ビットセット操作コード、ビットクリア操作コード、アクノレッジ操作コード、およびネガティブアクノレッジ操作コードからなるコードのグループから選択された１つまたはそれ以上のコードとすることができる。
いくつかの複数バイト（multi−byte）メッセージがこのメッセージフォーマットが提供する広範囲の異なる可能性を与えるためにこの図において示されている。複数バイトメッセージ904は、最初のバイトで表わされる、opコードおよびバイトカウントを含む。第２のバイトは検査合計バイト9042であり、これはエラー検出目的のために使用される。第２のニブルにおけるバイトカウントの内容は最初のバイトに単一のバイトが続くことを示すものである。マルチバイトメッセージ906はデータ部分9062を含む。該データ部分9062はこのメッセージでは単一バイトを含む。カウントニブルは検査合計を含む２バイトのデータが続くことを示している。同様に、メッセージ908はバイトカウントによって示されるように４バイトのデータを含む。
メッセージ910は拡張されたopコード9102を含む。拡張されたopコードの存在は最初のニブルにおける＄Ｆによって示されている。この＄Ｆは前記カウントニブルの後の最初のバイトが拡張されたopコードであることを示している。これはSB9600プロトコルによって以前には利用できなかった数多くの機能を達成する上で有益である。メッセージ912は第２のニブルにおいて拡張されたバイトカウント9122が使用されることを示す＄Ｆを含む。この拡張されたバイトカウントはデータバイトの数が単一ニブルで提供される13を超えている状況において使用される。２つのカウントバイトが利用できることにより、合計64Kバイトから１を減算した数のデータが一度に転送できる。当業者は単一メッセージの大きさを拡張するためにデータ転送はさらに該カウントのためにより多くのバイトを割当てることによって拡張できることを理解するであろう。第１および第２のニブルの＄Ｆの組合わせは拡張されたopコードおよび拡張されたバイトカウントの双方が続くことを示している。これはメッセージ914によって示されている。メッセージ916は拡張されたopコードがゼロでないデータカウントと共に使用されるさらに他の組合わせを示している。最後に、メッセージ918は拡張されたopコードとそれに続く検査合計を示している。
メッセージ902および916は、それぞれ、検査合計のない単一バイトおよび複数バイトのメッセージである。これらのメッセージは好ましい実施例においては、ネガティブまたはポジティブの、アクノレッジメントのために使用される。これは前に述べたように検査合計の使用によって遭遇するメッセージングのオーバヘッドを最小にすることを意図している。
好ましい実施例では、SBEPプロトコルは、常にホストおよび目標または相手装置があるという概念に依存している。ホストはSBEPのイニシエータ（initiator）、すなわち、始めにSB9600  SBEPREQメッセージを送信する装置、であるものと定義される。SBEPの全期間（session）に対し、１つのホストのみが存在する。前記相手装置はそのアドレスが始めのSB9600  SBEPREQメッセージにある装置である。該相手装置はホストからの放送に応じてACK,NAK、およびホストからの要求に応じてACK,NAKまたは返答のみを発生することができる。SBEP期間の持続期間の間（ビジーがローに保持されている全時間）、ホストは制御に留まっておりかつメッセージを開始しなければならない。相手装置は「スレイブ」に留まっておりかつホストによって送信されたメッセージに応答するのみである。無線機はSBEPの期間の間ホストまたは相手装置となることができる。ホストのメッセージはどの様な種類のアクノレッジが要求されるかに基づき２つのカテゴリに分類される。それらは放送（Broadcasts）および要求（Requests）である。相手装置のメッセージはACK,NAKおよび返答（Replies）である。各々の説明は以下に行なう。
図12および図13を参照すると、本発明に係わるSBEP放送の２つの例についてのタイミング図が示されている。前に述べたように、放送は何らの特定の相手情報を持たずにホストから送信されるメッセージである。放送はホストから開始されかつACKまたはNAKを要求しないが、もしそれが存在すれば受け入れることになる。放送は無線機が無線機内で生じている事象を外部世界に通知するためにホストとしてSBEPを開始する場合に使用することを意図している。目標または相手装置は接続されているかもしれずあるいは接続されていないかもしれないから、ACKまたはNAKは放送については要求されない。放送を開始するホストはACK/NAKは任意選択的なものであることに気が付かなければならない。
放送のためには、目標または相手装置は接続されている必要はない。SBEPは半２重（half−duplex）のハードウェアのハンドシェイクのない環境で動作するよう設計されており、かつしたがってそのエラー回復においてそうでない場合になり得るほど頑健（robust）ではない。該プロトコルは相手装置へデータを書く場合に、ダウンロードのボーレートまたは相手装置における装置へのプログラム時間がスループットへの制限要因となるよう設計されている。
もし相手装置が接続されていれば、それは放送に対しACKまたはNAKを行なわなければならない。もし相手装置がACKを送れば、ホストはもし希望するならば他のメッセージを送ることができる。図12は、ACKが相手装置によって返送された場合の状況を示す。もし相手装置がNAKを送れば、前記放送が到着していないという積極的な確認があり、したがってホストはACKが見られるまであるいはACK/NAKが見られなくなるまで（相手装置がリトライにおいて中途で除去された場合）４回までリトライを行なわなければならない。
図13を参照すると、もし相手装置が接続されていなければ、ホストは決してACKまたはNAKを見ることはない。ホストは最初の放送1502を送信した後に相手装置が接続されているか否かを知ることができないから、それはACKまたはNAKがバス上に現われるかを見るために10SCIバイト時間待機しなければならない。もしホストが10SCIバイト時間（1504）に何も見なければ、それは相手装置が接続されていないものと想定することができ、かつ他の放送、1506、を送信するよう進行する。明かに、ホストは相手装置が接続されていないことを認識した後決して要求を送信すべきではない。もし送信すると、リトライシーケンスを行ないかつ決してACK/NAKまたは返答を見ることはない。もし相手装置が放送に対しACKを送れば、これが必要なことの全てである。
要求はホストによって開始されかつACKまたはNAKを要求する。もしホストがいずれも検出しなければ、相手装置が接続されていないことを結論づけ、かつその要求がもはや意味を成さないことを結論づけなければならない。これは相手装置がSBEP期間の中途で除去された場合であろう。要求は常にある主の返答を要求する。それらは前記ACKの後に相手装置からホストへ送信されることになる。ホストは最後の要求に対する返答が見られるまで他の要求または放送を送信することはできない。
ACKおよびNAKは検出された任意のメッセージ（放送または要求）に対し相手装置によりホストへと送信される。ACKはいったん正しいメッセージの検査合計が受信されると、相手装置によって直ちに送信できる。ACKはホストに対しメッセージ（放送または要求）が相手装置によって正しく受信されたこと、およびホストがリトライを行なうべきでないことをホストに通知する働きを成す。ACKは相手装置からホストへと送信されるのみであり、決してホストから相手装置へと送信されない。ACKおよびNAKは図14、図15および図16において相手装置がACKを送った場合、NAKを送った場合、あるいは何らの応答も送らなかった場合につきそれぞれ示されている。
ACKは相手装置によって検査合計が受信された後10SCIバイトの時間ウィンドウ内で送信されなければならない。典型的には、ホストはこのACKをほとんど直ちに送信することができるであろう。NAKは相手装置によってホストに対し相手装置により汚染された（corrupted）メッセージが受信された場合に送信される。悪い検査合計または正しくないバイトのカウントは相手装置に悪い検査合計を知覚させかつNAKを送信するようセットアップさせる。バスは双方向的であるから、NAKはACKのように直ちには送信できず、それは（カウントバイトが正しくない場合のように）相手装置がすでにNAKに移ることを決定していても前記バスはより多くのバイトを送信するのに忙しくなっているからである。
NAKはバスがアイドルになってから5SCIバイト時間後に送られなければならない。すなわち、ホストはメッセージの送信を続けることができるが、相手装置はバスがアイドルになるまで5SCIバイト時間待たなければならない。これは図15に示されている。NAKは最後のバイトが通過してから10SCIバイト時間前に送信されなければならない。この時間制限（1702）はホストがいつリトライを行なうかを知るために必要とされる。相手装置がNAKを送信するときは常にホストは４回までリトライ（1704）を行なわなければならない。もしホストがNAKを見続ければ、それは通信が行なわれるためには物理的な媒体があまりにもノイズが多いと結論づけるべきである。
相手装置がACKまたはNAKをホストに返送する可能性があるが、それはホストへの途中でバス上で汚染される。この場合、ホストは相手装置が最後のメッセージを正しく受信しなかったものと結論づけるべきであり、かつ図16に示すように、最後のメッセージをリトライすべきである。このリトライ1704は前記最後のメッセージに対する検査合計が送信された後10SCIバイト時間の後にのみ行なわれるべきである、図16の1702。ホストが放送（これはACKまたはNAKを要求しない）を送信し、かつ検査合計の後の10SCIバイト時間のウィンドウ内にライン上で異常があった場合、ホストは相手装置が接続されておりかつそのACKまたはNAKが汚染されたと考えることになる。この場合、ホストはそれがACK/NAKを得るかあるいは前記10SCIバイト時間のウィンドウ内に何も得なくなるまで放送をリトライしなければならない。ホストが最後の要求にリトライしようとしている時に相手装置が応答1802を送るよう進行する可能性があることに注意を要する。この場合、衝突が生じるであろう。ホストは所望の応答が汚染されたことを認識し、かつ最後の要求を再び送らなければならない。
もう一度図14を参照すると、返答（Replies）1602が要求に応じてかつACKが送信された後にのみ相手装置によってホストに送信されることが分かる。ホストはもし返答がホストへの途中で汚染されれば相手装置に対しACK/NAKを送り返さない。この場合、ホストは最後の要求を再送しなければならない。もし該要求のopコードが相手装置によってサポートされていなければ、相手装置は依然としてACKを送らなければならない（ACKのみがメッセージが相手装置へ進んだことを示すからである）。
バスタイミングが正しく働くためは、ホストは決してそれがメッセージを送信している間に、5SCIバイトの時間より多く休止してはならない。もしホストが5SCIバイト時間より長く休止すれば、相手装置は自由にNAKを送ることになり、これはホストがメッセージの中途で停止したように見えるからである。返答の間、相手装置は各バイトの間で5SCIバイト時間より多くの間休止することはできない。
プロトコルのスループットを増大するために、ボーレートはSBEPメッセージに対して変更することができる。始めのSBEPREQ  SB9600メッセージはSBEPメッセージの引き続くボーレートが何であるかを示すビットを含む。ホストは前もって相手装置によってどのようなボーレートがサポートされているかを知り、かつこれらの内の１つを使用しなければならない。好ましい実施例では、いったんSBEPモードに入ると、ボーレートはそのSBEPの期間の間同じに留まっておりかつ変更できない。他の実施例では依然としてSBEPモードにある間にボーレートを変更するためのopコードを含むことができる。
ブートストラップモードにおいては、ボーレート選択は異なる様式で行なわれる。ホストファイルにはヘッダがあり、ブートストラップモードの間にSBEPに対してどのボーレートが使用されるべきかを示すブートストラップコードを含んでいる。ホストはそのボーレートをセットするためにこのファイルに受ける情報を探す責務を有することになる。
図17を参照すると、ACKメッセージが１バイトのメッセージであるものとして示されており、これはホストに対しメッセージが相手装置によって正しい検査合計1904と共に受信されたことを通知するために排他的に使用される。ホストがACKを受信した時、それはリトライを行なってはならない。ACKは正しいメッセージが相手装置によって受信された後10SCIバイト時間内に送信されなければならない。ACKウィンドウ1902はこのタイムリミットを規定する。ACKをこの時間内に送信しないことはホストに対して相手装置が受信していないことを示すことになり、ホストがリトライできるようにする。
図18を参照すると、NAKタイミング図が示されている。NAKメッセージはホストに対し前のメッセージが相手装置によって正しくない状態で受信されたことを通知するために使用される。正しくなく受信されたメッセージは間違った検査合計2006、メッセージ中の少なすぎるバイト、またはメッセージ中の多すぎるバイトによって引き起こされる。NAKはホストに直ちに返送することはできない。相手装置はバスがアイドルになるのを、2002で示されるように、NAKを送信する前に5SCIバイト時間の間待機しなければならない。NAKは、2004によって示されるように、バスが5SCIバイト時間の間アイドルになった後5SCIバイト時間内に送信されなければならない。
図19を参照すると、本発明に係わるリセット−放送タイミング図が示されている。リセット−放送メッセージ1106は相手装置にそれ自身をリセットするよう通知するために使用される（2104）。相手装置はこのメッセージの結果としてハードウェアリセットを行なうべきである。相手装置のプロセッサがそれ自身をリセットする１つの方法はCOPタイマのリフレッシュを停止することである。このメッセージはブートストラップモードに入り、あるいはSBEPを退出するために使用される。相手装置はホストへのACKの返送の100ミリセカンド以内にリセットからでてくるべきである。ホストがバス上の他のノードに対し相手装置がリセットしていることを通知するために、相手装置はリセットの前に少なくとも30ミリセカンド待たなければならない。この時間ウィンドウは2102によって示されている。
好ましい実施例では、SBEPプロトコルは数多くの要求を取り扱うことができる。これらの要求のいくつかは、データ読取り要求（READ−DATA−REQ）、検査合計要求（CHECKSUM−REQ）、ステータス要求（STATUS−REQ）、フラッシュイレーズ要求（ERASE−FLASH−REQ）、データ書込み要求（WRITE−DATA−REQ）、および構成要求（CONFIGURATION−REQ）を含む。これらの要求メッセージの各々について以下に簡単な説明を行なう。
データ読取り要求は相手装置に特定のアドレスからのブロックのデータを送信するよう要求するために使用される。このアドレスは該メッセージのアドレスバイトに含まれている。返送されなければならないバイトのカウントはBYTE−CNT（バイトカウント）に含まれている。BYTE−CNTは戻されなければならないデータバイトの実際の数であり、＄00はゼロバイトが戻されるべきことを意味し、かつ＄FFは255バイトである。このメッセージはデータ読取り要求メッセージによって要求されたデータを含む。データ読取り返答（READ−DATA−REPLY）メッセージは暗黙の（implied）レディー返答（READY−REPLY）である。
前記検査合計要求メッセージは相手装置に対し前記カウントバイトに含まれているバイトのカウントに対するメッセージアドレスバイトに含まれるアドレスでスタートして検査合計操作を行なうよう指令する。どれだけ多くのバイトが加算されなければならないかを示す２つのカウントバイトがある。加算は指定されたアドレスでスタートしかつ結果に対して許容されている16ビットをオーバフローするいずれのビットも捨てるストレートサム（straight  sum）として定義される。このメッセージはフラッシュまたはEEPROMプログラミング期間の終りに使用されて前記部分が全てのロケーションが正しくプログラムされることを保証する。この結果は検査合計返答（CHECKSUM−REPLY）メッセージで戻される。このメッセージは相手装置によってそれが検査合計要求において特定されたアドレスから得た検査合計と共にホストに戻される。該検査合計は２バイトに含まれている。検査合計を計算する方法は前記検査合計要求メッセージ記述に示されている。
前記構成要求メッセージは相手装置にSBEPの間におけるその内部バッファの大きさについて問い合わせるために使用される。このopコードによって戻される値は構成返答（CONFIGURATION−REPLY）メッセージを介する。ホストはもしそれが相手装置が受け入れ可能な最大のメッセージサイズがいくらであるかを知らない場合はこのメッセージを発行しなければならない。構成返答メッセージは３つの付加的なバイトを含む。該付加的なバイトの最初の２バイトは相手装置が受け入れ可能な最大のメッセージサイズを表わすカウントを含んでいる。
ステータス要求メッセージは相手装置のステータスを問い合わせるために使用される。これに応じて相手装置はホストに対し書込みまたは消去プロセスの間にどのアドレスがアクセスされているかを示すためにアドレスフィールドを含むステータス返答（STATUS−REPLY）メッセージを送信する。該ステータスはこの時には使用されずかつ必要に応じて無線機ごとのベースで規定されることになる。
前記フラッシュ消去メッセージは相手装置がブートストラップモードにありかつフラッシュEEPROMを含んでいる場合にのみ使用可能である。相手装置はこのメッセージの受信に応じてそのフラッシュメモリ部分を消去しなければならない。もしこのメッセージが相手装置に対しそれがブートストラップモードでない場合に発行されれば、相手装置はサポートされていないopコード返答（UNSUPPORTED−OP  CODE  REPLY）を送信しかつ該メッセージを無視すべきである。
消去手順の終りに、これは数秒かかるかもしれないが、相手装置は「良好な書込み返答（GOOD  WRITE  REPLY）」を戻さなければならない。これはホストに対しそれが進行できることを示すものである。もし相手装置がフラッシュを完全に消去できなければ、「悪い書込み返答（BAD−WRITE−REPLY）」が消去アルゴリズムが行なわれないアドレスと共に戻されなければならない。
消去の前に全部分がプログラムされることを要求するフラッシュメモリ装置を備えた相手装置はフラッシュ消去要求メッセージの前にこのメッセージを与えられなければならない。しかしながら、前記部分が空白であることが知られている場合のように、もし前記部分がすでに消去されたことが知られている場合には、それは任意選択的なものである。数秒かかるかもしれないゼロ化（zeroing）手順の完了に応じて、相手装置は「良好な書込み返答」を戻さなければならない。該良好な書込み返答に含まれるアドレスは重要ではない。これはホストに対しそれが進行できることを示すものである。もし相手装置がフラッシュを完全にゼロにできなければ、「悪い書込み返答」が前記ゼロへのプログラミングが行なわれない部分のアドレスと共に戻されなければならない。
前記データ書込み要求は相手装置にそのメモリ装置の１つに書込みを行なわせるために使用される。これはRAM、EEPROM（内部または外部）またはフラッシュEEPROMとすることができる。２つの種類のデータ書込み要求バス処理が好ましい実施例においては利用でき、シングルおよびダブルバッファされた（buffered）の相手装置である。図20、図21および図22は、これらの処理のタイミング図を示す。これらは良好な書込み返答を有するメモリプログラミングのバス処理である。
データを書込む間に相手装置に対し最大の可能なスループットを達成するため、SBEPプロトコルは相手装置がダブルバッファリングを行なうことができるよう設計されている。すなわち、相手装置はそれが最後のメッセージをメモリ装置にプログラミングしている間、シリアルバスによってメッセージを受け入れ可能なものとすることができる。ダブルバッファリングに対しては、相手装置は２つのRAMバッファを取っておかなければならなず、１つはそこから装置をプログラムするものであり、かつ他方は新しいメッセージを同時に受け入れるためである。
ホストは相手装置がダブルバッファリングを行なっているか否かは気にかけない。しかしながら、ホストは常にどのデータ書込み要求メッセージが良好な書込み返答（GWR）または悪い書込み返答（BWR）を得たかを追跡しなければならない。GWRとならなかったメッセージをリトライすることはホストの責務である。
SBEPプロトコルはホストからの各々のメッセージがそれが他のメッセージを送信できる前にある種の返答を受信することを要求するから、相手装置は全て＄FFのアドレスを有する（SWR）を返送し、ホストに対し他のメッセージを送信することを指示できるが、最初のメッセージが実際に装置に対し正しくプログラムされたか否かについては何らの情報も与えない。ホストはこの時点で相手装置がダブルバッファリングされた構成を行なっていることを認識し、かつ他のメッセージを送信するよう進まなければならない。いったん相手装置が最初のメッセージのプログラミングを終了すると、それは、ちょうど受信したものではなく、前のメッセージについてホストにGWRまたはBWRを与える準備ができることになる。実際上、前記返答に含まれるアドレスは常に受信された終りから２番目のメッセージのものとなる。ホストは前記返答に含まれるアドレスが必ずしも送信された最後のメッセージのアドレスでないことを認識するのに充分柔軟でなければならない。最後のデータ書込み要求が相手装置に送信された後、相手装置にもう１つのGWRまたはBWRがキューイングされることになる。ホストはゼロバイトのカウントを有するもう１つのデータ書込み要求を発行し、最後の良好なまたは悪い書込み返答を送信するために相手装置をトリガしなければならない。
相手装置がデータ書込み要求メッセージを送信した時、データ書込み要求メッセージ以外の他のメッセージはタイムアウトが満足されるまで許可されない。すなわち、ホストデータ書込み要求とこれに続くデータ読み出し要求をメッセージ書込みのためのタイムアウトが経過しない限り送信することはできない。このルールは、GWRまたはBWRをACKと続かない限り送信しないことについてのルールと組合わせてGWRまたはBWRメッセージと相手装置がNAKを送信した場合のデータ書込み要求のリトライとの間での衝突を防止することになる。
データ書込み要求メッセージに対するタイムアウトはプログラムされるべきデータの各バイトに対する20msにセーフティ時間の付加的な50msを加えたものである。すなわち、もしデータ書込み要求メッセージがその中に10個のデータバイトを有していれば、ホストはデータ書込み要求メッセージに対して受信した最後のACKの250ms以内にデータ書込み要求以外の他のメッセージを開始することはできない。
図20を参照すると、単一バッファの相手装置においては、各々のGWRは最後のデータ書込み要求に対応する。
図21を参照すると、相手装置が最初のメッセージをプログラミングしている間に第２のデータ書込み要求メッセージが受け入れられ、スループットを増大していることに注意を要する。これはホストがアスタリスクによってタグづけされた「ダミーの」GWRを見たから可能である。ボーレートまたはプログラミング時間は、いずれがより低速であっても、相手装置における装置をプログラミングする上での制限要因である。
好ましい実施例においては、上に述べた要求に応じて数多くの返答（replies）がサポートされている。これらの返答のうちのいくつかは、GWR、BWR、サポートされていないopコード返答（UNSUPPORTED−OP  CODE−REPLY）、構成返答（CONFIGURATION−REPLY）、検査合計返答、データ読取り返答、およびステータス返答を含む。
前記GWRはホストに対しデータ書込み要求メッセージが首尾よく指定されたメモリ装置にプログラムされたことを通知する働きをする。GWRメッセージはACKに続くことができるのみである。すなわち、もしホストからの最後のメッセージがNAK応答を受けた場合、相手装置はホストが首尾よく相手装置に到達するまで、すなわち、データ書込み要求メッセージがACKを受けるまでGWRの送信を待たなければならない。GWRはそのデータが正しくメモリに書き込まれたデータ書込み要求メッセージに含まれたアドレスを含んでいる。これはデータ書込み要求に応じて送信されるが、データ書込み要求の説明において述べたように、前記アドレスは最後のデータ書込み要求メッセージのものとすることはできない。全て＄FFのアドレスフィールドを有する書込み良好メッセージ（GOOD−WRITE−MESSAGE）はホストに対し他のメッセージを送信するよう通知する働きを成す。ホストがGWRを受信した時は常にそれは他のメッセージを直ちに送信することができる。
前記BWRメッセージはホストに対し前記データ書込み要求メッセージに含まれたデータを指定されたメモリ装置にプログラミングする上で相手装置が不首尾であったことを通知する働きを成す。BWRメッセージはACKに続くことができるのみである。すなわち、もしホストからの最後のメッセージがNAKを受ければ、相手装置はBWRを送信する前にホストが首尾よく相手装置に到達するまで、すなわち、データ書込み要求メッセージがACKを受けるまで待たなければならない。
前記BWRはそのデータがメモリに書き込まれなかったデータ書込み要求メッセージに含まれるアドレスを含んでいる。それはデータ書込み要求に応答して送信されるが、データ書込み要求の説明において述べたように、前記アドレスは最後のデータ書込み要求メッセージのものとすることはできない。
ホストがBWRを受信した時は常に該ホストは他のメッセージを直ちに送信することができる。図23、図24および図25は、悪い書込みがあった場合のバス処理を示す。これらの図面は本発明に係わる良好なおよび悪い応答を有するメモリプログラミングのバス処理を示す。
説明したように、SBEPプロトコルは実施するのがかなり簡単であり、それは該プロトコルを行なうのに必要なコードがマイクロプロセッサのブートストラップRAMにロードするのに充分小さいからである。ブートストラップモードにおいて無線機と通信できることにより、フラッシュEEPROM装置と組合わせて、我々は今や該無線機を開くことなしに顧客の無線機のソフトウェアを変更することができる。言い換えれば、利用可能なブートストラップ技術を使用して、無線機は内部マイクロプロセッサのブートストラップモードを使用してスタートでき、かつ次に高度に効率的なプロトコルを使用して所望のプログラムによってプログラムされ得る。
要するに、本発明の重要な検知はボーレート変更要求と共に１つのプロトコルから他のものへと切り換える可能性であることが開示された。これはどのオプションが切り換えるべきかを選択しかつ全ての他のオプションに対しバス動作を中止するよう通知するために第１のプロトコルでメッセージを送信することによって達成される。ビジーラインが使用されかつ全てのサブセクションに対しバスから離れるよう通知するために第２のプロトコルで行なわれている全ての活動の期間に対し該ビジーラインをアクティブ状態に保持する。いったんSBEPメッセージが完了すると、前記ビジーラインは解放されかつ全てのオプションがSB9600に戻る。SBEPプロトコルの双方向シリアルデータバスでの動作の可能性は必要な接続の数を低減する。これは機器が互いに近くになく長いケーブルを必要とする用途において極めて望ましい。
SBEPプロトコルの１つの利点はその順応する能力であり、それによってボーレートまたはプログラミング時間が通信速度における制限要因となる。このことは、このプロトコルがボーレートが増大しかつプログラミング時間が増大した場合に同じ状態に留まり得るため非常に価値がある。本発明のさらに他の利点は１つの構成されたフォーマットで可変長のメッセージを取り扱う能力を有することである。
好ましい実施例の説明は２つの特定のプロトコルSB9600およびSBEPに集中したが、本発明の原理は他のプロトコルによっても利益を受け得ることが充分に理解されるべきである。特定の実施例の提示は本発明の理解を与えるためのものでありかつその制限であると解釈されるべきではない。
【図１】
0003644685.tif 000003
【図２】
0003644685.tif 000004
【図５】
0003644685.tif 000005
【図１５】
0003644685.tif 000006
【図３】
0003644685.tif 000007
【図４】
0003644685.tif 000008
【図６】
0003644685.tif 000009
【図７】
0003644685.tif 000010
【図８】
0003644685.tif 000011
【図９】
0003644685.tif 000012
【図１０】
0003644685.tif 000013
【図１６】
0003644685.tif 000014
【図２０】
0003644685.tif 000015
【図１１】
0003644685.tif 000016
【図１２】
0003644685.tif 000017
【図１３】
0003644685.tif 000018
【図１４】
0003644685.tif 000019
【図２１】
0003644685.tif 000020
【図１７】
0003644685.tif 000021
【図１８】
0003644685.tif 000022
【図２２】
0003644685.tif 000023
【図１９】
0003644685.tif 000024
【図２３】
0003644685.tif 000025
【図２４】
0003644685.tif 000026
【図２５】
0003644685.tif 000027