(58)【調査した分野】(Int.Cl.,DB名)
前記2次プロセッサにより、前記少なくとも1つのデータセグメントの各々について、前記1次プロセッサに転送要求を送るステップをさらに含む、請求項1に記載の方法。
前記2次プロセッサにより、着信データセグメント用の受信バッファを、前記2次プロセッサのメモリ内の宛先アドレスになるようにセットするステップをさらに含む、請求項1に記載の方法。
前記2次プロセッサにより、前記少なくとも1つのデータセグメントの各々について、前記1次プロセッサに転送要求を送るための手段をさらに備える、請求項5に記載のマルチプロセッサデバイス。
前記2次プロセッサにより、着信データセグメント用の受信バッファを、前記2次プロセッサのメモリ内の宛先アドレスになるようにセットするための手段をさらに備える、請求項5に記載のマルチプロセッサデバイス。
前記プログラムコードが、前記2次プロセッサにより、前記少なくとも1つのデータセグメントの各々について、前記1次プロセッサに転送要求を送るプログラムコードをさらに含む、請求項9に記載のコンピュータプログラム。
前記プログラムコードが、前記2次プロセッサにより、着信データセグメント用の受信バッファを、前記2次プロセッサのメモリ内の宛先アドレスになるようにセットするプログラムコードをさらに含む、請求項9に記載のコンピュータプログラム。
前記1次プロセッサにより、前記少なくとも1つのデータセグメントの各々について、前記1次プロセッサへの転送要求を受信するステップをさらに含む、請求項13に記載の方法。
1次プロセッサにより、物理リンクを介して、イメージヘッダおよび少なくとも1つのデータセグメントを含む実行可能ソフトウェアイメージ用の前記イメージヘッダを転送するデータ読取りパケットを受信するための手段であって、前記データ読取りパケットは、2次プロセッサにより送信され、かつ、イメージ識別情報、データオフセット、およびデータ長を含む、手段と、
前記1次プロセッサにより、物理リンクを介して、前記イメージヘッダおよび少なくとも1つのデータセグメントを前記2次プロセッサに送るための手段と、
前記1次プロセッサにより、前記イメージヘッダおよび少なくとも1つのデータセグメントの成功した受信の前記2次プロセッサからの指示を受信するための手段と、
前記1次プロセッサにより、前記実行可能ソフトウェアイメージの転送終了の指示を送るための手段と、
前記1次プロセッサにより、前記転送終了の指示の受信の前記2次プロセッサからの確認応答を受信するための手段と
を備える、マルチプロセッサデバイス。
前記1次プロセッサにより、前記少なくとも1つのデータセグメントの各々について、前記1次プロセッサへの転送要求を受信するための手段をさらに備える、請求項17に記載のマルチプロセッサデバイス。
前記プログラムコードが、前記1次プロセッサにより、前記少なくとも1つのデータセグメントの各々について、前記1次プロセッサへの転送要求を受信するプログラムコードをさらに含む、請求項21に記載のコンピュータプログラム。
【発明を実施するための形態】
【0019】
「例示的な」という単語は、「例、実例、または具体例としての役割を果たすこと」を意味するように本明細書では使用される。「例示的な」ものとして本明細書に記載されたいずれの態様も、必ずしも他の態様よりも好ましい、または有利であると解釈されるとは限らない。
【0020】
本明細書で開示されるいくつかの態様は、1つの1次プロセッサが、システム内の1つまたは複数の他のプロセッサ(本明細書では「2次」プロセッサと呼ぶ)の実行可能イメージを記憶している不揮発性メモリに接続される、マルチプロセッサシステムに関する。そのようなマルチプロセッサシステムでは、2次プロセッサの各々を、実行可能イメージ、実行時データ、および場合によってはファイルシステムミラーを記憶するために使用される専用揮発性メモリに接続することができる。
【0021】
実行可能イメージは、しばしばセグメント化されたフォーマットに記憶され、この場合、各セグメントを異なるメモリ領域にロードすることができる。実行可能セグメントのターゲットメモリロケーションは、互いに隣接している場合も、隣接していない場合もある。マルチセグメント化されたイメージフォーマットの一例はExecutable and Linking Format(ELF)であり、これにより実行可能イメージを複数のセグメントに分けることが可能になり、これらのセグメントの各々を異なるシステムメモリロケーションにロードすることができる。
【0022】
1つの例示的な態様では、1次プロセッサの不揮発性メモリから2次プロセッサの揮発性メモリに、セグメント化されたイメージをロードするための直接分散ロード技法が開示される。以下でさらに記載されるように、直接分散ロード技法は一時バッファの使用を回避する。たとえば、一態様では、各々がそれぞれのヘッダを含むパケットを介してイメージが通信されるパケットベースの通信を使用するのではなく、1次プロセッサから2次プロセッサに生のイメージデータがロードされる。別の態様では、データ用のターゲットロケーション情報を特定するために使用される情報を含むヘッダが使用される。
ファイルシステム用の集中型不揮発性メモリを有し、縮小された局在化不揮発性メモリを有する、例示的なマルチプロセッサアーキテクチャ
【0023】
図1は、1次プロセッサ(アプリケーションプロセッサ104)が1次(大型)不揮発性メモリ106(たとえば、NAND型フラッシュメモリ)のホストとして働き、2次プロセッサ(たとえば、モデムプロセッサ110)が2次(縮小または最小)不揮発性メモリ114(たとえば、NOR型フラッシュメモリ)を有する、第1のマルチプロセッサアーキテクチャ102のブロック図を示す。
【0024】
通信デバイスアーキテクチャ102では、アプリケーションプロセッサ104は、1次不揮発性メモリ106およびアプリケーションプロセッサ揮発性メモリ108(たとえば、ランダムアクセスメモリ)に結合される。モデムプロセッサ110は、2次不揮発性メモリ114およびモデムプロセッサ揮発性メモリ112に結合される。プロセッサ間通信バス134は、アプリケーションプロセッサ104とモデムプロセッサ110との間の通信を可能にする。
【0025】
モデムプロセッサ110用のモデム実行可能イメージ120は、アプリケーションプロセッサ(AP)不揮発性メモリ106の中に、AP実行可能イメージ118およびAPファイルシステム116とともに記憶することができる。アプリケーションプロセッサ104は、そのAP実行可能イメージ118をアプリケーションプロセッサ揮発性メモリ108にロードし、それをAP実行可能イメージ122として記憶することができる。アプリケーションプロセッサ揮発性メモリ108は、AP実行時データ124を記憶する役目を果たすこともできる。
【0026】
モデムプロセッサ110は、そのファイルシステム128を記憶するための、専用2次(縮小または最小)不揮発性メモリ114(たとえば、NOR型フラッシュ)を有する。この2次(縮小または最小)不揮発性メモリ114は、実行時モデム実行可能イメージ120とファイルシステム128の両方を記憶することが可能なフラッシュデバイスよりも小さく、コストが低い。
【0027】
システムの電源投入時に、モデムプロセッサ110は、ハードウェアブートROM126(小型読取り専用オンチップメモリ)から1次ブートローダ(PBL)を実行する。モデムPBLは、アプリケーションプロセッサ104からモデム実行可能ファイル120をダウンロードするようになされることができる。すなわち、(最初に1次不揮発性メモリ106に記憶される)モデム実行可能イメージ120は、アプリケーションプロセッサ104からモデムプロセッサ110によって要求される。アプリケーションプロセッサ104は、モデム実行可能イメージ120を取り出し、プロセッサ間通信バス134(たとえば、プロセッサ間通信バス)を介してモデムプロセッサ110にそれを提供する。モデムプロセッサ110は、モデム実行可能イメージ132を、モデムプロセッサRAM(ランダムアクセスメモリ)112内の一時バッファにデータをコピーすることなく、最終的な宛先であるモデムプロセッサRAM112に直接記憶する。プロセッサ間通信バス134は、たとえば、HSICバス(USBベースの高速インターチップ)、HSIバス(MIPI高速同期インターフェース)、SDIOバス(セキュアデジタルI/Oインターフェース)、UARTバス(汎用非同期受信機/送信機)、SPIバス(シリアルペリフェラルインターフェース)、I2Cバス(インター集積回路)、またはモデムプロセッサ110とアプリケーションプロセッサ104の両方で利用できるチップ間通信に適した任意の他のハードウェアインターフェースであり得る。
【0028】
モデム実行可能イメージ120は、モデムプロセッサRAM112にダウンロードされ、認証されると、モデム実行可能イメージ132として維持される。加えて、モデムプロセッサ揮発性メモリ112は、モデム実行時データ130を記憶することもできる。次いで、モデムブートROMコード126は、そのモデム実行可能イメージ132にジャンプし、モデムプロセッサRAM112から主要なモデムプログラムの実行を開始することができる。無線周波数(RF)キャリブレーションおよびシステムパラメータなどの任意の持続性(不揮発性)データは、モデムプロセッサ110に取り付けられた2次(縮小または最小)不揮発性メモリ114を使用して、モデムファイルシステム128に記憶することができる。
ファイルシステム用の集中型不揮発性メモリを有し、局在化不揮発性メモリを有していない、例示的なマルチプロセッサアーキテクチャ
【0029】
図2は、1次プロセッサ(アプリケーションプロセッサ204)が1次(大型)不揮発性メモリ206(たとえば、NAND型フラッシュメモリ)のホストとして働く、第2のマルチプロセッサアーキテクチャ202のブロック図を示す。1次不揮発性メモリ206は、2次プロセッサ(モデムプロセッサ210)のためのモデム実行可能イメージ214および/またはモデムファイルシステム220を記憶することができる。2次プロセッサ(モデムプロセッサ210)は、1次プロセッサ204からモデム実行可能イメージ214および/またはモデムファイルシステム220を要求するように構成することができる。次いで、1次プロセッサ204は、要求されたモデム実行可能イメージ214および/またはモデムファイルシステム220を不揮発性メモリ206から取り出し、プロセッサ間通信バス234を介して2次プロセッサ210にそれを提供する。
【0030】
このアーキテクチャ202では、アプリケーションプロセッサ204は、不揮発性メモリ206およびアプリケーションプロセッサ揮発性メモリ208(たとえば、ランダムアクセスメモリ)に結合される。モデムプロセッサ210は、モデムプロセッサ揮発性メモリ212に結合されるが、それ自体の不揮発性メモリを有していない。モデムプロセッサ揮発性メモリ212は、ファイルシステムミラー228、モデム実行可能イメージ236およびモデム実行時データ230を記憶する。プロセッサ間通信バス234は、アプリケーションプロセッサ204とモデムプロセッサ210との間の通信を可能にする。
【0031】
モデムプロセッサ210のためのすべての実行可能イメージ214およびファイルシステム220は、不揮発性メモリ206の中に、AP実行可能イメージ218およびAPファイルシステム216とともに記憶することができる。アプリケーションプロセッサ204は、そのAP実行可能イメージ218をアプリケーションプロセッサ揮発性メモリ208にロードし、それをAP実行可能イメージ222として記憶することができる。アプリケーションプロセッサ揮発性メモリ208は、AP実行時データ224を記憶する役目を果たすこともできる。モデムファイルシステムは、プライバシー保護および加入者識別情報の複製防止のために、モデムプロセッサの秘密鍵で暗号化することができる。
【0032】
システムの電源投入時に、モデムブートROMコード226は、モデム実行可能イメージ214とモデムファイルシステム220の両方を、アプリケーションプロセッサ204からモデムプロセッサ揮発性メモリ212にダウンロードする。正常動作中には、モデムファイルシステム228へのいかなる読取りアクセスも、モデムプロセッサ揮発性メモリ212によって行われる。いかなる書込みアクセスも、モデムプロセッサ揮発性メモリ212内で実施される。加えて、モデムプロセッサ揮発性メモリ212内のファイルシステム228の内容を、不揮発性メモリ206に記憶されているモデムファイルシステム220と同期させるために、モデムプロセッサ210およびアプリケーションプロセッサ204で動作するバックグラウンドプロセスが存在する場合がある。
【0033】
1次プロセッサおよび2次プロセッサは、2次プロセッサ用の揮発性メモリ内のファイルシステムを、1次不揮発性メモリ内の対応するファイルシステムと周期的に同期させることができる。モデムファイルシステム228への最初の書込みにより、モデムプロセッサ210内のタイマ(たとえば、10分のタイマ)が開始され得る。このタイマが作動している間、ファイルシステム228へのすべての書込みは、モデムプロセッサ揮発性メモリ212に一本化される。タイマの終了時に、モデムプロセッサ210は、揮発性メモリ212からファイルシステムイメージ228をコピーし、それを暗号化し、新たなデータが入手できることをアプリケーションプロセッサ204に警告する。アプリケーションプロセッサ204は、暗号化されたコピーを読み取り、それを不揮発性メモリ206のモデムファイルシステム220に書き込む。次いで、アプリケーションプロセッサ204は、書込み動作が完了したことをモデムプロセッサ210に通知する。同期化動作が失敗した場合、モデムファイルシステムの現在バージョンを使用することができ、モデムプロセッサ210が、アプリケーションプロセッサ204からイメージを再ロードするのではなく、それ自体の揮発性メモリに現在存在するイメージで実行を続けることができることを意味する。同期化は、周期的に(たとえば、90秒ごとに)、またはモデムによるそのファイルシステムへの書込み動作から一定の時間が経過した後に、起こる場合がある。突然の電力消失などの事態からの破損を防止するために、モデムファイルシステム220の2つのコピーを記憶することができる。
【0034】
モデムプロセッサ210は、アプリケーションプロセッサの不揮発性メモリ206に対するファイルシステムミラー228の「フラッシュ」動作を開始することもできる。これは、電話の電源切断、ならびに、ネットワークに確認メッセージを送って着信SMSメッセージの受信および記憶を示すことを含む、いくつかの理由で起こる場合がある。
【0035】
モデムプロセッサ210でのファイルシステム読取り動作は、モデムプロセッサ揮発性メモリ212によって行われ、これはモデムファイルシステムの現在の状態を反映する。読取り動作は書込み動作よりも頻度が高く、書込み動作は活動の「バースト」で起こる傾向があるので、全体的なシステムロードおよび電力消費を低減することができる。
【0036】
アプリケーションプロセッサ204、モデムプロセッサ210およびブートローダは、利用できる少なくとも1つの完全なファイルシステムイメージが常に不揮発性メモリ206内にあることを確実にするために、具体的措置を講じている。これにより、電力喪失または突然のリセットシナリオの影響を受けずに済む。
【0037】
本明細書で開示された概念の適用は、上記で示された例示的なシステムに限定されず、同様に様々な他のマルチプロセッサシステムで使用することができる。
ゼロコピー移送フロー
【0038】
本開示の態様は、1次プロセッサの不揮発性メモリから2次プロセッサの揮発性メモリに、実行可能ソフトウェアイメージを効率的にロードするための技法を提供する。上述されたように、従来のローディングプロセスでは、(たとえば、ブートローダにより)バイナリのマルチセグメント化されたイメージがバッファリングされ(たとえば、システムメモリに転送され)、次いでターゲットロケーションに分散される中間ステップが必要である。本開示の態様は、従来のローディングプロセスで必要なバッファリングの中間ステップを軽減する技法を提供する。したがって、本開示の態様は、余分なメモリコピー動作を回避し、それにより性能が改善される(たとえば、マルチプロセッサシステムで2次プロセッサをブートするのに必要な時間が削減される)。
【0039】
以下でさらに説明されるように、本開示の1つの例示的な態様は、1次プロセッサの不揮発性メモリから2次プロセッサの揮発性メモリに、実行可能ソフトウェアイメージをロードするための直接分散ロード技法を使用する。本開示のいくつかの態様はまた、以下でさらに説明されるように、認証などの転送後のデータ処理と同時のイメージ転送を可能にし、効率性をさらに高めることができる。
【0040】
一態様では、ホストの1次プロセッサは、実際のイメージデータからのいかなる情報の処理または抽出も行わず、パケットにいかなるパケットヘッダも添付せずに、イメージデータを「生」データとしてターゲットに送るだけである。ターゲットの2次プロセッサは、データ転送要求を開始するので、どれだけのデータを受信するかを正確に把握している。これにより、ホストがパケットヘッダなしでデータを送ることが可能になり、ターゲットがデータを直接受信し記憶することが可能になる。この態様では、ターゲットは必要に応じてホストからデータを要求する。ターゲットが要求する第1のデータ項目は、所与のイメージ転送用のイメージヘッダである。ターゲットは、イメージヘッダを処理すると、イメージ内の各データセグメントのロケーションおよびサイズを把握する。イメージヘッダはまた、ターゲットメモリ内のイメージの宛先アドレスを指定する。この情報を用いて、ターゲットはセグメントごとにホストからデータを要求し、ターゲットメモリ内の適切なロケーションにデータを直接転送することができる。アプリケーションプロセッサ上のプロセッサ間通信バス用のハードウェアコントローラは、それ自体の低レベルプロトコルヘッダを追加することができ、これはモデムプロセッサによって処理され、取り除かれる。これらの低レベルヘッダは、両方のプロセッサで動作するソフトウェアに透過的であり得る。
【0041】
本開示の一態様では、
図3に示された例示的なフローで示されているように、ローディングプロセスは2つの段階に分けられる。
図3は、(不揮発性メモリ106または206を有する、
図1または
図2のアプリケーションプロセッサ104または204であり得る)1次プロセッサ301、および(揮発性メモリ112または212を有する、
図1または
図2のモデムプロセッサ110または210であり得る)2次プロセッサ302のブロック図を示す。
図3では、2次プロセッサ302用の例示的なソフトウェアイメージは、1次プロセッサ301の不揮発性メモリに記憶されている。この例で示されたように、例示的なソフトウェアイメージ303は、イメージヘッダ部分および(この例ではデータセグメント1〜5として示された)複数のデータセグメントを含むマルチセグメントイメージである。1次プロセッサ301および2次プロセッサ302は、異なる物理シリコンチップに(すなわち、異なるチップパッケージに)位置する場合も、同じパッケージに位置する場合もある。
【0042】
図3の例示的なローディングプロセスの第1の段階では、イメージヘッダ情報が2次プロセッサ302に転送される。1次プロセッサ301は、1次プロセッサの不揮発性メモリ306から、イメージヘッダで始まるデータイメージセグメントを取り出す。1次プロセッサ301はイメージヘッダを解析して、1次プロセッサの不揮発性メモリ306から1次プロセッサのシステムメモリ307に、個々のイメージセグメントをロードする。イメージヘッダは、2次プロセッサのシステムメモリ305のどこにモデムイメージ実行可能データを最終的に入れるかを特定するために使用される情報を含む。ヘッダ情報は、実際の実行可能データを受信したときにアドレスを受信するように、分散ローダ/直接メモリアクセスコントローラ304をプログラミングするために、2次プロセッサ302によって使用される。次いで、データセグメントは、システムメモリ307から1次ハードウェア移送機構308に送られる。次いで、セグメントは、プロセッサ間通信バス310(たとえば、HS-USBケーブル)を介して、1次プロセッサ301のハードウェア移送機構308から2次プロセッサ302のハードウェア移送機構309に送られる。転送される第1のセグメントはイメージヘッダである場合があり、これは、2次プロセッサのシステムメモリ305内のターゲットロケーションにデータセグメントを位置付けるために、2次プロセッサによって使用される情報を含む。イメージヘッダは、データ用のターゲットロケーション情報を特定するために使用される情報を含む場合がある。
【0043】
一態様では、ターゲットロケーションは事前に特定されているわけではなく、分散ローディングプロセスの一部として2次プロセッサでソフトウェアを実行することによって特定される。イメージヘッダからの情報を使用して、ターゲットロケーションを特定することができる。この態様では、2次プロセッサのブートローダが、最初に1次プロセッサからイメージヘッダを要求する(1次プロセッサのCPUは、イメージヘッダをまったく処理しない)。2次プロセッサは、イメージヘッダを見ることによって、不揮発性メモリ内でデータセグメントがどのように配置されているかを把握する(RAMのアドレス/サイズのほかに、ヘッダは、セグメントごとのイメージファイルの開始点に関する不揮発性メモリ内の相対ロケーションも含む)。その後のデータセグメントに対する要求は、2次プロセッサによって行われる。
【0044】
別の態様では、1次プロセッサは、イメージヘッダを解析し、次いで、イメージヘッダで示される指定されたアドレスに後続するデータセグメントを配置するように2次プロセッサのコントローラをプログラミングすることによって、2次プロセッサの揮発性メモリ内のどこにセグメントを置くかを示すことができる。これは、2次プロセッサのコントローラをこのように外部から制御することを可能にする追加のハードウェアを伴うことがある。
【0045】
イメージヘッダは、一般に、2次プロセッサのシステムメモリ305内のどこにセグメントの各々をロードすべきかを定めた、セグメントの開始アドレスおよびサイズのリストを含む。2次プロセッサ302は、分散ローダコントローラ304を含むハードウェア移送機構309(たとえば、USBコントローラ)を含む。ローディングプロセスの第2の段階では、ブートローダは、着信データを受信し、第1の段階で受信されたヘッダ情報に従って、それを2次プロセッサの対応するターゲットメモリ領域305に分散ロードするように、プロセッサ間接続コントローラのエンジンをプログラミングする。
【0046】
USBまたはHSICバスの場合、イメージの各セグメントを、プロセッサ間通信バス310上の単一のUSB転送として転送することができる。セグメントのサイズおよび宛先アドレスを把握することにより、ソフトウェアが、2次プロセッサ302によるソフトウェア干渉を最小限に抑えて、(システムメモリ305内の)ターゲットメモリロケーションにセグメント全体を直接転送するために、2次プロセッサ302の分散ローダコントローラ304をプログラミングすることが可能になる。その結果、セグメントが著しく大きい(たとえば、1メガバイト(MB)を超える)ときのUSB/HSICバスの性能を向上することができる。
【0047】
図3に示されたように、データセグメントは、必ずしも2次プロセッサのシステムメモリ305内の連続するロケーションに配置されるとは限らない。代わりに、セグメントはメモリの様々なロケーションに分散される場合がある。
図3の例示的なローディングプロセスにより、2次プロセッサのソフトウェアのコピー(すなわち、イメージ303)を、1次プロセッサ301から2次プロセッサのシステムメモリ305上のセグメントの最終的な宛先に直接送ることが可能になる。さらに、単一のデータセグメントだけが転送される場合がある。
【0048】
イメージヘッダは、1次プロセッサ301から2次プロセッサ302の分散ローダコントローラ304にロードされる。イメージヘッダは、システムメモリ305内のどこにデータセグメントを位置付けるかに関する情報を提供する。分散ローダコントローラ304は、それに応じて、イメージセグメントを2次プロセッサのシステムメモリ305内のそれぞれのターゲットロケーションに直接転送する。すなわち、2次プロセッサのCPUがそのメモリ305内のイメージヘッダを処理し、分散ローダコントローラ304をプログラミングすると、分散ローダコントローラ304は、2次プロセッサのシステムメモリ305内のどこにイメージデータセグメントが入るかを正確に把握し、そのため、次いでハードウェア分散ローダコントローラ304は、それに応じて、データセグメントをそれらのターゲットの宛先に直接転送するようにプログラミングされる。
図3の例では、分散ローダコントローラ304は、データセグメントを受信し、それらをシステムメモリ305内の様々なロケーションに分散する。一態様では、実行可能ソフトウェアイメージ全体を2次プロセッサのハードウェアバッファに記憶することなく、実行可能ソフトウェアイメージが2次プロセッサのシステムメモリにロードされる。一態様では、転送されるべきイメージデータセグメントは、メモリ306内の連続していないロケーションに位置する。別の態様では、単一のイメージデータセグメントだけが転送される。別の態様では、複数のイメージデータセグメントが転送される。
【0049】
したがって、上記の態様では、2次プロセッサ内で追加のメモリコピー動作は発生しない。そのため、イメージ全体のための一時バッファを使用する従来の技法、およびパケットヘッダ処理などは、より効率的な直接ローディングプロセスを優先してバイパスされる。そのため、
図3の例示的なロードプロセスは、1次プロセッサから2次プロセッサにソフトウェアイメージをロードするのに従来必要とされた中間バッファ動作を必要としない。イメージ全体を保持する一時バッファから分散ロードする代わりに、
図3の例示的なロードプロセスにより、それぞれのターゲットの宛先へのイメージセグメントを、ハードウェアからシステムメモリに直接分散ロードすることが可能になる。イメージヘッダが処理されると、実行可能イメージは、さらなるCPUの関与をバイパスして、ターゲットメモリに直接分散ロードされる。
【0050】
従来、外部インターフェースが関与するとき(たとえば、1次プロセッサから2次プロセッサにイメージデータを通信する際に使用される場合)、両方のプロセッサが実際のデータの内容およびデータの読取り方法を把握するように当該データを移送するために何らかの機構が必要とされる。しばしば、外部インターフェースを介して転送されるデータはパケット化され、各パケットは、パケット内に含まれるデータを記述したヘッダを含む。たとえば、ネットワークを介してデータが転送されている伝送制御プロトコル/インターネットプロトコル(TCP/IP)システムでは、パケットヘッダの処理に関連するオーバーヘッドが生じる。
【0051】
(たとえば、
図3の例のような)本発明のいくつかの態様によれば、生のイメージデータが移送される。たとえば、パケットヘッダを有するイメージデータの各セグメントを移送するのではなく、
図3の例示的なロードプロセスは、イメージ全体に関連するヘッダからデータに関する必要な情報を特定する。そのため、イメージヘッダを最初に転送することができ、(イメージヘッダに基づいて)セグメントの転送の前に、システムメモリ305にデータを記憶する方法を特定するためのすべての処理が生じることが可能で、次いで生データとしてセグメントが転送され、セグメントが転送されるのでセグメントごとのパケットヘッダの処理を必要としない。そのため、
図3の例では、生のイメージデータが1次プロセッサから2次プロセッサに通信され、次いで、ハードウェアによって処理され、ハードウェアは任意のUSBパケットヘッダなどを取り除くことができる。この例示的な態様では、実際のデータセグメントに対するCPU処理が行われず、それにより、ロードプロセスの効率が改善される。
【0052】
同じ2次プロセッサの揮発性メモリに複数のイメージをロードしなければならないとき、本開示の一態様により、
図3の上記手順を、転送されるイメージの回数だけ繰り返すことができる。いくつかの態様では、1次プロセッサ301内において、不揮発性メモリからシステムメモリへの転送は、1次プロセッサから2次プロセッサにデータを送るのと並行して発生する場合がある。
【0053】
一態様では、各セグメントの転送が完了すると、2次プロセッサ302は、次のセグメントを転送するように分散ローダコントローラ304をプログラミングし、転送されたばかりのセグメントの認証を開始する。これにより、2次プロセッサ302が認証を実行している間に、分散ローダコントローラ304がデータを転送することが可能になる。本明細書での認証は、一般に、受信データの完全性および信頼性をチェックすることを指す。認証メカニズムの詳細は本開示の範囲外であり、所与の実装形態で望まれ得るように、任意の適切な認証メカニズム(当技術分野でよく知られているものを含む)を使用することができる。上記の並行処理は、所与の実装形態で2次プロセッサ302によって実行されることが望まれ得る他の転送後の処理に適用することもできる。
【0054】
最後のイメージの最後のセグメントが転送され認証されるとすぐに、2次プロセッサ302は、ブートプロセスを続行し、転送イメージを実行することができる。
プロセッサ間通信プロトコル
【0055】
プロセッサ間通信プロトコルも開示される。本開示の一態様では、2次プロセッサから駆動される例示的なプロトコルが提供される。たとえば、2次プロセッサは、2次プロセッサが1次プロセッサから望むどのようなデータ転送も開始することができる。言い換えれば、2次プロセッサは、2次プロセッサが何のデータを受信したいかに関して、1次プロセッサに命令する。したがって、いくつかの態様では、1次プロセッサは、どこかに(たとえば、1次プロセッサが結合されている不揮発性メモリに)存在する実行可能ソフトウェアイメージ(ファイル)を有することができ、識別情報をそのファイルに関連付けることができる。2次プロセッサ(または「ターゲット」)は、その識別情報を1次プロセッサに送り、ファイル内の指定されたオフセットに存在している対応するデータを送るように、1次プロセッサに命令することができる。それに応答して、1次プロセッサは、その生データを2次プロセッサに送ることができる。そのため、返信されたデータにはパケットヘッダが必要ではなく、代わりに返信されたデータは、1次プロセッサから2次プロセッサに直接送られ、2次プロセッサは、データを受信すると、それを2次プロセッサのシステムメモリ内の適切なロケーションに入れる。
【0056】
以下に、プロセッサ間通信プロトコルの例示的な実施形態についてさらなる詳細が記載される。下記の例示的な実施形態について具体的な詳細が記載されるが、プロセッサ間通信プロトコルについて本明細書に記載される概念は、下記に記載される特定の詳細には限定されないことを理解されたい。
【0057】
序論
この以下の説明は、データをメモリに/から転送するために使用され得る、例示的なプロセッサ間通信プロトコルに関する情報を提供する。説明は、プロトコルのパケット構造、パケットフロー、および例示的な使用法に関する情報を含む。下記に記載される例示的なプロトコルの特定の実装形態は、プロトコルを使用して送られたデータを認証/検証するための機構を提供しない。そのような機構は、本明細書で提供される例示的なプロトコルの説明の範囲外であるが、所与の適用例に望まれる場合があるように、データが転送されているこのプロトコルと連携して、任意の適切な認証および/または検証の機構を実装することができる。
【0058】
例示的なプロトコルの概要
下記に記載されるプロセッサ間通信プロトコルの例示的な態様は、主に、ホスト(たとえば、「1次プロセッサ」)からターゲット(たとえば、「2次プロセッサ」)にソフトウェアイメージを転送するために設計される。プロトコルは、任意の物理リンクを介して転送されるべきデータを要求するための簡単な機構を提供する。
【0059】
このプロトコルの例示的な態様は、2つの基本的なパケットタイプ、コマンドパケットおよびデータパケットをサポートする。コマンドパケットは、ホストとターゲットとの間を送られて、データパケットの転送をセットアップする。
【0060】
ターゲット駆動のプロトコル。このプロトコルの例示的な態様は、ホストとターゲットとの間を送られるコマンドパケットの数を減少させることによって、データ転送のオーバーヘッドを低減する。これは、プロトコルをターゲット駆動にすることによって、かつターゲットにデータ処理を実行させることによって達成される。ホストは、以下の情報を含んでいるデータ転送要求を待つ。
・転送するデータイメージ
・読取りを開始するイメージ内のオフセット
・データ転送の長さ
【0061】
ホストは、実際のイメージデータからいかなる情報も処理または抽出せず、パケットにいかなるパケットヘッダも添付せずに、イメージデータを「生」データとしてターゲットに送る。ターゲットは、データ転送要求を開始するので、どれだけのデータを受信するかを正確に把握している。これにより、ホストがパケットヘッダなしでデータを送ること、およびターゲットがデータを直接受信して記憶することが可能になる。
【0062】
ターゲットは、必要に応じてホストからデータを要求することができる。このプロトコルの例示的な態様においてターゲットが要求する第1のデータ項目は、所与のソフトウェアイメージの転送用のイメージヘッダである。ターゲットは、イメージヘッダを処理すると、イメージ内の各データセグメントのロケーションおよびサイズを把握する。イメージヘッダはまた、ターゲットメモリ内のイメージの宛先アドレスを指定する。この情報を用いて、ターゲットはセグメントごとにホストからデータを要求し、ターゲットメモリ内の適切なロケーションにデータを直接転送することができる。
【0063】
パケット処理。このプロトコルの例示的な態様は、物理トランスポート層を使用して信頼できるデータ転送を提供することによって、パケット処理を削減する。フレーミング、HDLC(高レベルデータリンク制御)符号化、またはCRC(巡回冗長検査)は、プロトコルレベルでパケットに適用されない。
【0064】
各コマンドパケットのタイプは、コマンドIDおよびパケット長を含むことができる、定義された構造を有する。この情報を使用して、各コマンドパケットの長さは、受信されたコマンドパケットの長さを2つの値のいずれかと比較することによって、検証することができる。
・所与のコマンドID用の予想パケット長
・パケット自体に含まれている長さフィールド
【0065】
このプロトコルの例示的な態様は、各パケットの最後にCRCフィールドを追加することによって、コマンドパケットの検証をサポートするように、容易に拡張することができる。データパケットは、様々な認証方法を使用してデータの完全性について検証することもできるが、これはこのプロトコルの例示的な態様の本説明の範囲外である。
【0066】
確認応答通信。このプロトコルの例示的な態様によれば、ホストとターゲットとの間の通信は確認応答される。ターゲットからホストに送られたコマンドパケットは、ホストからターゲットに送り返されたコマンドパケットまたはデータパケットで確認応答される。同様に、ホストからターゲットに送られたコマンドパケットは、ターゲットからホストへのコマンドパケットまたはデータパケットで確認応答される。
【0067】
ホストとターゲットとの間のリンクは信頼できると予想されるが、ホストからターゲットへのコマンドパケットの送信中にエラーが発生し、結果としてターゲットが誤ったパケットを受信した場合、ターゲットはホストにエラー応答を送る。
【0068】
送信失敗の場合パケットの再送信をサポートするために、ホストとターゲットの両方にタイマ機構を実装することができる。しかしながら、そのような機構の実装は、このプロトコルの例示的な態様の本説明の範囲外であり、プロトコルは、ターゲット側で予想外または誤ったパケットが受信されたときに何が起こるかだけを指定する。
【0069】
拡張性。このプロトコルの例示的な態様は、コマンド構造およびパケットフローの固定セットを定義する。しかしながら、この固定セットは、(下記にさらに記載されるように)さらなるコマンド構造および状態遷移をサポートするように、容易に拡張することができる。
【0070】
インターフェース
概要。このプロトコルの例示的な態様は、2つのタイプのパケットを定義する。
・コマンドパケット
・データパケット
【0071】
このプロトコルの例示的な態様によるこれらのパケットの構造が下記に示される。
【0073】
コマンドパケットは、コマンドIDおよびパケット長を含む。コマンドに応じて、パケットは追加のコマンド固有のフィールドを含む場合がある。コマンドパケットの構造により、プロトコルの将来の改訂版が、以前のプロトコルバージョンのパケット構造との互換性を保ちながら、パケットタイプの最後にフィールドを容易に追加することが可能になる。
【0074】
コマンド。このプロトコルの例示的な態様のコマンドパケットで使用されるコマンドが、下記の表1に列記される。
【0076】
ハローパケット。ターゲットがハローパケットを送るとき、ターゲットは下記の表2に示されたフォーマットを使用する。
【0078】
ハローパケットは、ターゲットがホストに送る最初のパケットである。ホストが任意の他のパケットを受信した場合、ホストはターゲットにリセットコマンドを送る。
【0079】
ホストが有効なハローパケットを受信したとき、ホストは最初に、ターゲットで実行しているプロトコルがホストで実行しているプロトコルと互換性があることを検証する。プロトコルが不適合である場合、ホストはターゲットにリセットコマンドを送る。
【0080】
ターゲットはまた、ターゲットがサポートするコマンドパケットの最大長を送り、ホストはこの情報を使用して、ターゲットが受信コマンドバッファ内でサポートできるよりも多いバイトを送ることを回避する。
【0081】
ハロー応答パケット。ホストがハロー応答パケットを送るとき、ホストは下記の表3に示されたフォーマットを使用する。
【0083】
ホストがターゲットで実行しているプロトコルを検証すると、ホストは以下の情報をターゲットに送る。
・ホストが実行しているプロトコルバージョン
・ホストがサポートする最小プロトコルバージョン
【0084】
ホスト側でエラーが発生しない場合、ホストはパケットステータスフィールドを「成功」にセットする。ターゲットがこのパケットを受信すると、ターゲットはデータ転送要求を進めることができる。
【0085】
データ読取りパケット。ターゲットがデータ読取りパケットを送るとき、ターゲットは下記の表4に示されたフォーマットを使用する。
【0087】
イメージ転送を開始するために、ターゲットはこのパケットを、ターゲットが受信したいイメージに対応するイメージIDで満たす。ターゲットはまた、イメージファイル内へのオフセット、およびターゲットがイメージから読み取りたいデータの長さ(バイト単位)を送る。
【0088】
このパケットは、イメージデータがホストからターゲットに転送されるべきときの一般的なデータ転送パケットとして働く。データ読取りパケットは、イメージがホストからターゲットに転送される方法における柔軟性をもたせる。ターゲットはどのデータが転送されるかを制御するので、ターゲットはイメージのどの部分がどの順序で転送されるかを決定することができる。
【0089】
ホストは、イメージの構造に関して何も把握することができず、単にファイルをオープンし、パケットで指定されたパラメータに基づいて、ターゲットへのデータ転送を開始するにすぎない。これにより、イメージがどのように転送され処理されるかについてのターゲットの制御が与えられる。
【0090】
ホストがこのパケットを受信したとき、ホストはデータパケットで応答することを期待される。データパケットは、イメージデータのみを含まなければならず、データ読取りパケットで指定された長さでなければならない。
【0091】
ホストがデータ読取りパケットで以下のいずれかを受信した場合、いくつかのエラー状態が発生する可能性がある。
・無効またはサポートされていないイメージID
・無効データオフセット
・無効データ長
【0092】
上記のフィールドのいずれかが無効である場合、またはホストで任意の他のエラーが発生した場合、ホストは、ターゲットが予想していた長さと一致しない長さを有するデータパケットを送る可能性がある。生じたエラーは、ステータスフィールドにエラーコードを有するイメージ転送の終了パケット(表5の例示的なパケット構造を参照)をターゲットに送らせる。このトランザクションにより、ターゲットとホストの両方がエラー処理状態に入ることが可能になる。
【0093】
このプロトコルの例示的な態様は、状態機械によって実装することができ、そこでは、発生する任意のエラーにより、ホストがリセットパケット(下記の「例示的なプロトコル実装」のさらなる説明を参照)を送る結果になる。プロトコルのいくつかの実装形態は、いくつかのエラーを処理するためにホストエラーパケットおよびホストエラー応答パケットを使用できる実装形態を提供することができる。
【0094】
イメージ転送の終了パケット。ターゲットがイメージ転送の終了パケットを送るとき、ターゲットは下記の表5に示されたフォーマットを使用する。
【0096】
イメージ転送が首尾よく完了した場合、ターゲットは、「成功」ステータスを有するイメージ転送の終了パケットをホストに送る。この時点で、ターゲットはホストが完了パケットを送るのを待つ。イメージデータの転送または処理の間にいずれかのエラーが発生した場合、ステータスは対応するエラーコードにセットされ、ターゲットは異なるコマンドパケットを待つ。
【0097】
このプロトコルの例示的な態様は、状態機械によって実装することができ、そこでは、ターゲットはイメージ転送の終了パケット内でエラーが送られた後、ホストが常にリセットパケット(下記の「例示的なプロトコル実装」のさらなる説明を参照)を送ろうとすると見なす。プロトコルにより、イメージ転送の終了のエラーパケットに応答して、他のコマンドパケットがホストからターゲットに送られることが可能になる。
【0098】
完了パケット。ホストが完了パケットを送るとき、ホストは下記の表6に示されたフォーマットを使用する。
【0100】
ホストが「成功」ステータスを有するイメージ転送の終了パケットを受信した場合、ホストは、ホストがプロトコルを終了し実行を継続できることをターゲットに示すために、完了パケットを送ることに進む。ターゲットがホストから別のイメージの転送を望む場合、ターゲットは別のハローパケットから始めることによってプロトコルを再開する。
【0101】
完了応答パケット。ターゲットが完了応答パケットを送るとき、ターゲットは下記の表7に示されたフォーマットを使用する。
【0103】
ターゲットが完了パケットを受信した場合、ターゲットはイメージ転送ステータスを含む完了応答パケットで応答する。
・すべてのイメージが転送された場合、ターゲットは「完了」ステータスを送ってホストがプロトコルを終了することを可能にする。
・すべてのイメージが転送されなかった場合、ターゲットは「保留」ステータスを送る。ターゲットは、ホストがプロトコルの実行を続け、別のハローパケットが届くのを待つと見なす。
【0104】
リセットパケット。ホストがリセットパケットを送るとき、ホストは下記の表8に示されたフォーマットを使用する。
【0106】
ホストは、ターゲットをリセットしたいとき、リセットパケットを送る。ターゲットは、リセット要求が有効な状態にある場合、リセット要求を処理する。ターゲットが無効なリセット要求を受信した場合、ターゲットはイメージ転送の終了パケット内でエラーを送る。
【0107】
リセット応答パケット。ターゲットがリセット応答パケットを送るとき、ターゲットは下記の表9に示されたフォーマットを使用する。
【0109】
ターゲットが有効なリセット要求を受信した場合、ターゲットはリセットする直前にリセット応答パケットを送る。この応答の目的は、ターゲットがリセット要求を受信したことをホストに確認応答することである。ホストがターゲットからリセット応答コマンドを受信しなかった(または異なるコマンドを受信した)場合、ホストは要求を再送するように試みることができる。
【0110】
ホストエラーパケット。プロトコルの態様はこのパケットを使用して、ホストでいずれかのエラーが発生した場合、ホストがターゲットにエラーコードを送ることを可能にすることができる。
【0111】
ホストエラー応答パケット。プロトコルの態様はこのパケットを使用して、ターゲットがホストエラーパケットを確認応答することを可能にすることができる。このパケットは、ターゲットがホストエラーをどのように処理しているかに関する情報をホストに提供することができる。
【0112】
メモリダンプパケット。プロトコルの態様はこのパケットを使用して、ターゲットのシステムメモリのメモリダンプを開始する。このパケットは、ターゲットがメモリ読取り要求を受信してシステムメモリの内容を転送する準備ができていることをホストに示すことができる。
【0113】
メモリ読取りパケット。プロトコルの態様はこのパケットを使用して、ホストがターゲットからのメモリ読取り要求を発行することを可能にすることができる。このパケットは、メモリ転送の物理アドレスおよびサイズを含むことができる。ターゲットは、ホストが要求したメモリの内容だけを含むデータパケットで応答することができる。ターゲット側でいずれかのエラーが発生した場合、ターゲットはメモリ転送の要求されたサイズと一致しない長さを有するデータパケットを送ることができる。これにより、ホスト側でエラーが発生し、ホストが適切に応答することが可能になる。
【0114】
ステータスコード。下記の表10は、このプロトコルの例示的な態様によってサポートされるステータスおよびエラーコードを列記する。
【0116】
動作
概要。下記の説明は以下の話題をカバーする。
・ホストからターゲットにイメージを転送するために、このプロトコルの例示的な態様をどのように使用することができるか
・プロトコルを実装し、イメージ転送中に発生するエラーにどのように対処するかを示す例示的な状態機械
・システムがプロトコルをどのように使用してイメージ転送要求を並列化することができるか
【0117】
成功したイメージ転送シーケンス。
図4は、成功したイメージ転送シーケンスについてのパケットフローを示す。パケットフローシーケンスは下記のように記載される。時刻402で、ハローパケットがターゲット450からホスト400に送られてプロトコルを開始する。ハローパケットを受信し、ターゲット450で実行しているプロトコルバージョンを検証すると、時刻404で、ホスト400は「成功」ステータスを有するハロー応答パケットを送る。
【0118】
ターゲット450がハロー応答を受信すると、時刻406で、ターゲット450は、データ読取りパケットを送ることによってイメージ転送要求を開始する。各データ読取りパケットは、ターゲット450がどのイメージを受信したいか、およびイメージのどの部分を転送すべきかを指定する。正常動作中、時刻406で、ターゲット450は最初に、その他のイメージを指定するイメージヘッダ情報(すなわち、イメージサイズおよびイメージデータが転送されるべきシステムメモリ内の場所)を要求する。データ読取り要求として送られる、イメージヘッダに対するこの要求を送るとき、ターゲット450は転送されるべきイメージのフォーマットを把握している。ホスト400は、イメージフォーマットに関して何も把握することができず、ホスト400がターゲット450によって要求されたようにイメージからデータを読み取り転送することだけが可能になる。要求に続いて、時刻408で、イメージヘッダがホスト400からターゲット450に送られる。
【0119】
イメージがデータ分割のない単独のバイナリイメージである(すなわち、データがターゲット450のシステムメモリに記憶ならびに転送されるとき完全に連続している)場合、ターゲット450は、イメージデータ全体が1回の転送で送られように要求することができる。イメージデータが分割され、データセグメントが連続していないシステムメモリロケーションに分散されることが必要な場合、ターゲット450は、(たとえば、時刻406、410、414、および418で)複数のデータ読取り要求を発行して、各データセグメントが(たとえば、時刻412、416、および420で)それぞれの宛先アドレスに直接転送されることを可能にすることができる。この分散情報はイメージヘッダに存在し、データ読取り要求を発行する前にターゲット450によって解析される。
【0120】
データ読取り要求を受信すると、ホスト400は、対応するイメージファイルからデータを転送するために、イメージID、データオフセット、およびデータ長を解析する。ホスト400は、パケットヘッダなしで要求されたデータを送る。ターゲット450は、システムメモリ内のデータのソフトウェア処理または一時的なバッファリングを行わずに、宛先アドレスにこのデータを直接転送する。これは、イメージヘッダをターゲット450に転送することによって、かつデータ用の受信バッファをシステムメモリ内の宛先アドレスになるようにセットすることによって可能になる。
【0121】
ターゲット450がイメージ用のすべてのセグメントの受信に成功した場合、時刻422で、ターゲット450は、対応するイメージのイメージIDおよび「成功」ステータスを有するイメージ転送の終了(END_IMAGE_TX)パケットを送る。これにより、ホスト400が読取りを停止し、イメージファイルをクローズすることが可能になる。成功したイメージ転送の終了を受信すると、時刻424で、ホスト400は、完了パケットを送ってターゲット450がプロトコルを終了することを可能にする。ターゲット450が完了パケットを受信すると、時刻426で、ターゲット450は、完了応答パケットをホスト400に送る。このパケット内で、ターゲット450は、別のイメージが転送されることを期待するかどうかを示す。別のイメージがターゲット450に転送されるべき場合、ホスト400はプロトコルの実行を続けることができる。
【0122】
例示的なプロトコル実装。このプロトコルの例示的な態様は、ターゲットとホストの両方向けの状態機械を使用して実装することができる。これらの状態機械の例は、
図5、
図6、および
図7に示される。
【0123】
ターゲット状態機械。
図5および
図6は、
図4に示されたパケットフローのターゲット側を実施する状態機械を示す。これは、2つのタイプのソフトウェアイメージフォーマットについて、実際のイメージデータがどのように転送され得るかを示す。
・単独のバイナリ
・実行可能およびリンク可能フォーマット(ELF)
【0124】
単独のバイナリフォーマットは、イメージデータ用のサイズおよび宛先アドレスを記述する簡単なイメージヘッダを使用する。ELFフォーマットにより、データが分割され、システムメモリの連続していないセクションに分散されることが可能になる。
【0125】
以下のリストは、
図5および
図6の状態機械における各状態、およびターゲットがこれらの状態にあるとき着信パケットにどのように反応するかを記載する。
【0126】
WAIT_HELLO_RESP:ターゲットがハローパケットを送った後、ターゲットはホストからハロー応答パケットを受信するまで待つ。無効パケットまたは誤ったパケットが受信された場合、ターゲットは対応するエラーコードを有するイメージ転送の終了パケットをホストに送る。リセットパケットが受信された場合、ターゲットはリセット応答を送り、次いでリセットする。
【0127】
DATA_BINARY:ターゲットは、単独のバイナリイメージヘッダを受信している。イメージヘッダで何かが誤っている場合、ターゲットは対応するエラーコードを有するイメージ転送の終了パケットを送る。有効なイメージヘッダが受信された場合、ターゲットはイメージデータを転送する単一のデータ読取り要求を送る。イメージデータが受信されると、データが有効である場合、ターゲットは「成功」ステータスを有するイメージ転送の終了を送る。イメージ転送中にいずれかのエラーが発生した場合、ターゲットは対応するエラーコードを有するイメージ転送の終了を送る。
【0128】
DATA_ELF_HDR:ターゲットは、ELFイメージ用のELFヘッダを受信している。ELFヘッダで何かが誤っている場合、ターゲットは対応するエラーコードを有するイメージ転送の終了パケットを送る。有効なELFヘッダが受信された場合、ターゲットはELFイメージからのプログラムヘッダに対する単一のデータ読取り要求を送る。ELFイメージ内のプログラムヘッダのサイズおよびロケーションは、ELFヘッダに埋め込まれている。
【0129】
DATA_ELF_PROG_HDR:ターゲットは、ELFイメージ用のELFプログラムヘッダを受信している。プログラムヘッダで何かが誤っている場合、ターゲットは対応するエラーコードを有するイメージ転送の終了パケットを送る。有効なプログラムヘッダが受信された場合、ターゲットはそれらを処理してハッシュテーブルセグメントのロケーションを特定する。ハッシュテーブルは、ハッシュ関数を各データセグメントに適用し、ハッシュ値をハッシュテーブルに記憶することによって、各データセグメントの完全性を検証するために使用することができる。各ELFデータセグメントをロードすると、ハッシュ関数は各セグメントに適用され、ハッシュ値をハッシュテーブルに格納されたハッシュ値と比較することができる。特定のハッシュアルゴリズムおよび認証ルーチンは、このプロトコルの範囲外なので本明細書では記載されない。
【0130】
DATA_ELF_SEGMENTS:プログラムヘッダから各データセグメントのロケーションおよびサイズが決定されると、ターゲットは、各データセグメントが転送されるまでデータ読取り要求を繰り返し送る。すべてのELFセグメントが受信されると、ターゲットは「成功」ステータスを有するイメージ転送の終了を送る。
【0131】
WAIT_DONE:単一のイメージ転送が完了すると、ターゲットは完了パケットが送られるのを待つ。無効または任意の他のパケットが受信された場合、ターゲットは対応するエラーコードを有するイメージ転送の終了パケットを送る。有効な完了パケットが受信された場合、ターゲットはホストに完了応答を送り、イメージ転送ステータスフィールドは、別のイメージが転送されるべきか否かに基づいて、「完了」または「保留」にセットされる。
【0132】
WAIT_RESET:ターゲットでエラーが発生したときはいつでも、ターゲットはホストがリセットコマンドを送ることを期待する。ターゲットがリセットコマンドを受信した場合、ターゲットはホストにリセット応答を送り、次いでリセットする。無効または任意の他のコマンドが受信された場合、ターゲットは対応するエラーコードを有するイメージ転送の終了パケットを送る。
【0133】
ホスト側の状態機械。ホスト側の状態機械は、
図4に示されたパケットフローのホスト側を実施するために使用することができる。以下のリストは、その状態機械の動作、およびホストがこれらの状態にあるとき着信パケットにどのように反応するかを記載する。
【0134】
WAIT_HELLO:ホストは、ターゲットがプロトコルを開始するのを待つ。ハローが受信され、プロトコルバージョンが検証されると、ホストは「成功」ステータスを有するハロー応答を送る。ホストが無効パケット(または任意の他のパケット)を受信した場合、ホストはターゲットにリセットパケットを送る。ホストは、ターゲットのプロトコルバージョンがホストと互換性がない場合もリセットパケットを送る。
【0135】
WAIT_COMMAND:ホストがデータ読取りパケットを受信した場合、ホストは対応するイメージからデータを読み取り、データパケット内で転送する。ホストが「成功」ステータスを有するイメージ転送の終了パケットを受信した場合、ホストは完了パケットを送る。ホストが無効コマンド(または任意の他のコマンド)を受信した場合、ホストはリセットパケットを送る。ホストは、エラーコードを有するイメージ転送の終了パケットを受信した場合もリセットパケットを送る。
【0136】
WAIT_DONE_RESP:ホストは完了応答を待つ。すべてのイメージが転送されていない場合、ホストは別のハローパケットを待つ。すべてのイメージが転送された場合、ホストはプロトコルを終了する。ホストが無効コマンド(または任意の他のコマンド)を受信した場合、ホストはリセットパケットを送る。
【0137】
WAIT_RESET_RESP:ホストがリセットパケットを送った後、ホストはターゲットがリセット応答を送るのを待つ。ホストがリセット応答を受信した場合、ホストはプロトコルを終了する。ホストが無効コマンド(または任意の他のコマンド)を受信した場合、ホストは別のリセットパケットを送る。
【0138】
エラー処理。「例示的なプロトコル実装」に続く上記の説明は、このプロトコルの例示的な態様を使用して、エラーをどのように報告および処理できるかを記載する。タイムアウトおよびパケットの再送信は、起こり得る送信または受信のエラーを処理するために、しばしば実施される。そのような戦略を実施するための技法を使用することができるが、それらの特定の技法のさらなる説明は、このプロトコルの例示的な態様の本説明の範囲外である。
【0139】
並行イメージ転送。以下に、マルチスレッド環境の使用を介して、どのように複数のイメージを並行して転送できるかが記載される。
【0140】
単一ホスト、複数ターゲット。ホストがハードウェアのトランスポート層でターゲットの間を区別し、プロトコルのパケットを対応するターゲットにルーティングできる場合、ホストは、別個のスレッド上のターゲットごとに状態機械を実行することができる。
・各ターゲットはそれ自体の状態機械を実行して、ターゲットが転送したいイメージを転送する
・ホストはスレッドマネージャを実行して、プロトコルのパケットを送受信し、それらを対応する状態機械にルーティングする
【0141】
データ読取り要求は、イメージID、データオフセット、およびデータ長を指定するので、ホストは対応するイメージファイルから読み取り、要求元のターゲットにデータを送る。
【0142】
複数ホスト、単一ターゲット。ターゲットが複数のホストからイメージを転送することを望む場合、各ホストからの接続を、ハードウェアのトランスポート層にカプセル化することができる。プロトコルに入ると、ターゲットは、どのハードウェアを使用して所与のイメージを転送したいかを指定することができる。ターゲットは、イメージごとにプロトコルからの出入りを選ぶことができ、イメージごとに使用するハードウェアのトランスポート層を選択することを可能にする(ディスパッチテーブルを使用することによって対応するソフトウェアドライバ内のホスト接続を事実上取り除く)。次いで、各ホストは別個の状態機械を実行することができる。
【0143】
単一ホスト、単一ターゲット、並行イメージ。ターゲットがホストから並行してイメージを転送することを望む場合、(上述されたスレッド環境と同様に)ターゲットでスレッド環境を使用することができる。違いは、スレッド環境がホストで関係していないことである。ターゲットは、イメージごとに状態機械へのパケットのルーティングを管理する。
【0144】
図5は、その中で本開示の態様が有利に利用され得る、例示的なワイヤレス通信システム500を示すブロック図である。例示のために、
図5は、3つのリモートユニット520、530および550ならびに2つの基地局540を示す。ワイヤレス通信システムがはるかに多いリモートユニットおよび基地局を有する場合があることを認識されよう。リモートユニット520、530および550は、開示されたマルチプロセッサデバイスを含むICデバイス525A、525Cおよび525Bを含む。基地局、スイッチングデバイスおよびネットワーク機器などの他のデバイスも、開示されたマルチプロセッサデバイスを含む場合があることを認識されよう。
図5は、基地局540からリモートユニット520、530および550への順方向リンク信号580、ならびにリモートユニット520、530および550から基地局540への逆方向リンク信号590を示す。
【0145】
図5では、リモートユニット520は携帯電話として示され、リモートユニット530はポータブルコンピュータとして示され、リモートユニット550はワイヤレスローカルループシステム内の固定ロケーションリモートユニットとして示される。たとえば、リモートユニットは、携帯電話、ハンドヘルドパーソナル通信システム(PCS)ユニット、携帯情報端末などのポータブルデータユニット、GPS対応デバイス、ナビゲーションデバイス、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、メータ読取り機器などの固定ロケーションデータユニット、またはデータもしくはコンピュータ命令の記憶もしくは取り出しを行う任意の他のデバイス、またはそれらの任意の組合せであり得る。
図5は、本開示の教示によるリモートユニットを示すが、本開示は、これらの例示的に示されたユニットには限定されない。本開示の態様は、マルチプロセッサシステムを含む任意のデバイスで適切に使用することができる。
【0146】
図6に示されたように、マルチプロセッサシステム内の2次プロセッサは、実行可能ソフトウェアイメージの転送用の方法を実行することができる。ブロック602で示されたように、2次プロセッサは、1次プロセッサとの通信を開始することができる。ブロック604で示されたように、2次プロセッサは、実行可能ソフトウェアイメージ用のイメージヘッダを転送するように、1次プロセッサに命令することができる。実行可能ソフトウェアイメージは、イメージヘッダおよび少なくとも1つのデータセグメントを含む。ブロック606で示されたように、2次プロセッサは、イメージヘッダおよび少なくとも1つのデータセグメントを受信することができる。ブロック608で示されたように、2次プロセッサは、イメージヘッダおよび少なくとも1つのデータセグメントの成功した受信を示すことができる。ブロック610で示されたように、2次プロセッサは、実行可能ソフトウェアイメージの転送終了の指示を受信することができる。ブロック612で示されたように、2次プロセッサは、転送終了の指示の受信を確認応答することができる。
【0147】
マルチプロセッサデバイスは、開始するための手段、命令するための手段、受信するための手段、示すための手段、および確認応答するための手段を備えることができる。手段は、アプリケーションプロセッサ104、204、2次プロセッサ302、プロセッサ間通信バス134、234、ハードウェア移送機構309、コントローラ304、および/または物理データパイプ310を含むことができる。別の態様では、上記の手段は、上記の手段によって列挙された機能を実行するように構成されたモジュールまたは任意の装置であり得る。
【0148】
図7に示されたように、マルチプロセッサシステム内の1次プロセッサは、ブロック702で示されたように、実行可能ソフトウェアイメージ用のイメージヘッダを転送する命令を受信することができ、前記実行可能ソフトウェアイメージは、前記イメージヘッダおよび少なくとも1つのデータセグメントを含む。ブロック704で示されたように、1次プロセッサは、イメージヘッダおよび少なくとも1つのデータセグメントを2次プロセッサに送ることができる。ブロック706で示されたように、1次プロセッサは、イメージヘッダおよび少なくとも1つのデータセグメントの成功した受信の2次プロセッサからの指示を受信することができる。ブロック708で示されたように、1次プロセッサは、実行可能イメージの転送終了の指示を送ることができる。ブロック710で示されたように、1次プロセッサは、転送終了の指示の受信の2次プロセッサからの確認応答を受信することができる。
【0149】
マルチプロセッサデバイスは、受信するための手段、および送るための手段を備えることができる。手段は、モデムプロセッサ110、210、1次プロセッサ301、プロセッサ間通信バス134、234、ハードウェア移送機構308、システムメモリ307、および/または物理データパイプ310を含むことができる。別の態様では、上記の手段は、上記の手段によって列挙された機能を実行するように構成されたモジュールまたは任意の装置であり得る。
【0150】
ファームウェアおよび/またはソフトウェアの実装形態の場合、これらの方法を、本明細書に記載された機能を実行するモジュール(たとえば、プロシージャ、関数など)で実施することができる。本明細書に記載された方法を実施する際に、命令を有形に具現化する任意の機械可読媒体を使用することができる。たとえば、ソフトウェアコードをメモリに記憶し、プロセッサユニットによって実行することができる。メモリは、プロセッサユニット内に実装され得るか、またはプロセッサユニットの外部であり得る。本明細書で使用する「メモリ」という用語は、長期メモリ、短期メモリ、揮発性メモリ、不揮発性メモリ、または他のメモリのいずれかのタイプを指し、メモリのいかなる特定のタイプもしくはメモリの数、またはメモリが記憶される媒体のタイプには限定されない。
【0151】
ファームウェアおよび/またはソフトウェアに実装する場合、機能は、コンピュータ可読媒体に1つまたは複数の命令またはコードとして記憶することができる。これらの例には、データ構造で符号化されたコンピュータ可読媒体、およびコンピュータプログラムで符号化されたコンピュータ可読媒体が含まれる。コンピュータ可読媒体には、物理的コンピュータ記憶媒体が含まれる。記憶媒体は、コンピュータによってアクセスされ得る任意の入手可能な媒体であり得る。限定ではなく、例として、そのようなコンピュータ可読媒体には、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または所望のプログラムコードを命令もしくはデータ構造の形で記憶するのに使用することができ、かつコンピュータによってアクセスすることができる任意の他の媒体が含まれ得るし、本明細書で使用する場合、ディスク(diskおよびdisc)には、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フレキシブルディスク、およびブルーレイディスクが含まれ、ディスク(disk)は通常、データを磁気的に再生し、一方、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【0152】
命令および/またはデータは、コンピュータ可読媒体に記憶されることに加えて、通信装置に含まれる伝送媒体上の信号として提供される場合がある。たとえば、通信装置は、命令およびデータを示す信号を有する送受信機を含む場合がある。命令およびデータは、1つまたは複数のプロセッサに、特許請求の範囲において概説される機能を実施させるように構成される。
【0153】
特定の回路が説明されたが、当業者は、本開示を実施するために、開示された回路のすべてが必要とされるわけではないことを理解されよう。その上、本開示に対する注目を維持するために、いくつかのよく知られている回路は記載されなかった。
【0154】
本開示およびその利点が詳細に記載されたが、添付の特許請求の範囲によって規定される本開示の技術から逸脱することなく、本明細書において様々な変更、代用および改変が行われ得ることを理解されたい。たとえば、「上」および「下」などの関係用語が、基板または電子デバイスに関して使用される。もちろん、基板または電子デバイスが反転した場合、上は下に、下は上になる。加えて、横向きの場合、上および下は、基板または電子デバイスの側面を指す場合がある。さらに、本出願の範囲は、本明細書に記載されたプロセス、機械、製造、物質組成、手段、方法、およびステップの特定の実施形態に限定されるものではない。当業者が本開示から容易に諒解するように、本明細書に記載された対応する実施形態と実質的に同じ機能を実行するか、または実質的に同じ結果を実現する、既存または今後開発されるプロセス、機械、製造、物質組成、手段、方法、またはステップが、本開示に従って利用され得る。したがって、添付の特許請求の範囲は、そのようなプロセス、機械、製造、物質組成、手段、方法、またはステップをそれらの範囲内に含むものとする。