Lattice Blog

Share:

インフィールドアップグレードの課題を解決

Solving the Challenges around In-Field Upgrades
Posted 03/01/2018 by Joel Coplen

Posted in

プログラマブルロジックデバイス(FPGAやCPLDなど)の主な利点は、プログラム可能な点です。通常、それらのデバイスはアプリケーション固有の課題に対処するため、独自な設計で導入されてきました。プログラマブル製品を展開する多くの組込みシステムは、製造後に設計と構造を更新することができます。アップデート機能は、複数のエンドアプリケーションで役立ちます。例えば、センサやディスプレイの接続のようなアプリケーションでは、この機能を利用すると、在庫管理をより良くすることができます。それらのアプリケーションは機種によってわずかに異なるタイミングまたは仕様のプロトコルブリッジの一端を備えている可能性があります。その他のアプリケーションの例として、産業と通信インフラアプリケーションにおけるボード管理です。これらのアプリケーションは通常、長寿命で、無線またはフィールド内で構成をアップグレードすることで、バグの修正や、信頼性の向上が可能です。

オンチップ構成Flashを備えたFPGAは、フィールド内でプログラム可能という利点があります。しかしこの利点は、システム設計の複雑化するという欠点でもあります。このような製品のフィールド内アップグレード構成を適切に実装するためには、システム設計者が克服しなければならない課題がいくつかあります。最先端のFlash FPGA製品には、これらの問題を管理するための機能が複数含まれています。

システムレベルの第一の課題は、アップデート中のダウンタイムです。一部のFlash FPGAでは、デバイスをアップデートするためにデバイスをオフラインにするか、専用のプログラミングモードにする必要があります。そのような場合、オフラインモードに入る前に、システム操作を凍結または停止し、デバイスI / Oを既知の信頼できる状態を維持する必要があります。この場合、一部のデバイスがI / Oのフリーズモードを直接サポートしています。 このような専用モードを提供しないデバイスでは、I / Oの安全な状態を維持するために、追加の外付け抵抗やその他のコンポーネントが必要になる場合があります。

デバイスをオフラインモードにしておくことの欠点もあります。プログラミングに使用されるインタフェースとデバイスのプログラミングメモリのサイズに応じて、デバイスを再プログラミングするのに数秒かかることがあります。多くのシステム、特に継続的な動作の必要があるインフラストラクチャアプリケーションではこのダウンタイムが許されない場合があります。

高度なFlash FPGAはバックグラウンドプログラミングモードに対応しています。バックグラウンドプログラミングモードは、デバイスをオフラインにすることなく、デバイスの構成フラッシュメモリの再プログラミングを可能にします。これにより、プログラミング時間の数秒間にデバイスが正常に動作し続けることが可能になり、ダウンタイムへの懸念が緩和されます。

デバイスがバックグラウンドでプログラムされると、構成フラッシュメモリをデバイスのアクティブSRAMメモリに書き込むことができます。新しい構成を有効にする手順は、デバイスの「リフレッシュ」と呼ばれることが多く、オフラインモードでデバイスをプログラムするのに要する時間はわずか数秒です。このリフレッシュの手順は、その技術的な特徴に応じてデバイスの電源を落とさずに実行することが可能です。いくつかのデバイスは、I / Oフリーズ機能をリフレッシュコマンドと組み合わせて使用することで、デバイスのダウンタイムをなくすことができます。I / Oは、リフレッシュ中にフリーズされ、デバイス内で新しい構成がアクティブになっているときにのみ解放されます。この機能はヒットレスアップデートと呼ばれ、以下で説明します。

MachXO3 Block Diagram

バッググランドプログラミング向けのインターフェース

バックグラウンドのアップグレードのためにデバイスに接続することは、多くの組込みシステムにおける別の問題のひとつです。製造時のFlash FPGAをプログラムするときに使用される最も一般的なインタフェースは、JTAGインタフェースです。JTAGは、バウンダリスキャンなどのボードテスト機能を単一のデバイスチェーンでの再プログラミングを組み合わせることができるため、製造環境に理想的なインターフェイスです。デバッグインターフェースとしてもよく使用されます。

フィールド再プログラミングのほとんどは、マイクロコントローラまたはアプリケーションプロセッサなど、システム内の別のプログラマブルデバイスを使用して実行されます。このデバイスは、 "over the air"というプログラミング更新ファイルを受信し、FPGAのプログラミングマスターとして機能します。問題点は、多くのMCUとプロセッサにJTAGマスタブロックが搭載されていないという点で、つまり、このインタフェースは、フィールド内のバックグラウンドの再プログラミングにはあまり役に立ちません。幸いにも、多くのプログラマブルデバイスは、業界では非常に一般的な再プログラミング向けSPIインターフェイスも対応しています。最近リリースされたFlash FPGAの中には、I2Cを使って再プログラムが可能な機能が追加されているものもあり、これはSPIバスより少ないI / Oしか必要とせず、多くのシステムで最適なサイドバンドインタフェースとして導入されています。これは、I / Oカウントが少ない小型のアプリケーションで特に有効で、2ピンか4ピンによってパッケージが変わります。

プログラミング障害からの回復

バックグラウンドの再プログラムは、フィールド内の使用でその他の課題もあります。Flashの再プログラムの間、Flashメモリは新しい構成でプログラムされる前に消去される必要があります。この消去段階で大半のプログラム時間を費やすことがとくに課題になっています。-停電や消去中やプログラム中のその他障害が発生すると破損した構成になってしまいます。

プログラミングの故障は、ダウンタイムが問題となる多くのシステムにおける重要な課題のひとつです。Flash FPGAもしくはCPLDがボード管理、システムの起動/停止を操作する最初のデバイスとなるシステムでは、プログラムミングの障害によってプログラム全体が故障する場合があります。そのようなアプリケーションには、プログラムミングの故障から回復する方法が必要です。多くのFlash FPGAはデュアルブートと呼ばれる、プログラミングの故障からの回復を可能にする機能が備わっています。このデュアルブート機能は、ゴールデンイメージやフォールバックイメージを保存し、アクセスができる方法を提供し、プログラミング中も妨害されることはありません。システムがプログラミングの故障のあとにシステムを起動しようとすると、この画像はボード外のSPI Flashにも保存されます。この時点で、FPGAはメインデバイスの画像が破損していることを検出し、二次画像から起動するようフォールバックされます。バックグラウンドの再プログラムを利用する信頼性の高いシステムでは通常、デュアルブートソリューションが必要になります。

悪質なアップデートから守るセキュリティ

組込みシステムで生じる課題は、ファームウェアのセキュリティです。フィールド内もしくは無線アップデートが可能なデバイスであっても、デバイスへの悪質なアップデートに対する保護を含む必要があります。FPGAはそれらの問題に対処する様々なソリューションを提供します。1つのソリューションはパスワード保護です。パスワード保護機能を使用するには、バックグラウンドのプログラミングを始める前に、プログラミングインタフェースを介してFPGAにシークレットコードを入力する必要があります。このコードはFPGAのFlashメモリ内に保存され、デバイスのプログラミングを可能にするパスワードを含めてダウロードされたシステムのみプログラムします。

MachXO3

ラティスは安全で、透明性のあるバックグラウンドアップデートを中心とした、最も完全なソリューションを備えた、フィールド内アップデート向けのソリューションを提供します。低密度FPGAのMachXO3ファミリは業界で最もプログラミングされているインターフェースのバックグラウンドを含む、フィールド内アップデートにおける問題を対処するための機能を複数備えています。このデバイスはキーセキュリティ、ヒットレスアップデート、デュアルブート、パスワード保護のような信頼性を高める機能に対応しています。当社の最新MachXO3-9400ボードを使ったMachXO3 FPGAsで設計を開始ましょう。

Share: