Comments
Transcript
Nios II と PFL を使用した FPGA リモート・アップデート・システム構築
ALTIMA Corp. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 (Arria V GX スタータ開発キット編) ver.1.0 2013 年 8 月 ELSENA,Inc. 目次 1. はじめに ....................................................................................................................................................................................3 1-1. 環境 ...........................................................................................................................................................................................3 1-2. ベースとなるハードウェア・デザイン ........................................................................................................................................3 2. 処理概要 ...................................................................................................................................................................................4 2-1. FPGA ハード構成 .....................................................................................................................................................................4 2-2. ホスト・ファイル・システムについて ..........................................................................................................................................4 2-3. PC から SSRAM への書き込み ................................................................................................................................................5 2-4. SSRAM から Flash メモリへの書き込み ...................................................................................................................................6 2-5. MAX V CPLD 経由での FPGA コンフィギュレーション ...........................................................................................................6 2-6. Flash メモリへの書き込みが失敗した場合 ..............................................................................................................................7 3. ハードウェア構成 ......................................................................................................................................................................8 3-1. ボード構成.................................................................................................................................................................................8 3-2. Qsys ..........................................................................................................................................................................................8 3-3. Flash メモリ・マップ ...................................................................................................................................................................9 4. ソフトウェア実装 ......................................................................................................................................................................10 4-1. Nios II Software Build Tools (SBT) .....................................................................................................................................10 4-2. Nios II ソフトウェア ................................................................................................................................................................. 11 5. MAX V CPLD への PFL の実装 .........................................................................................................................................13 5-1. 概要 .........................................................................................................................................................................................13 5-2. MAX V CPLD デザインの編集 ............................................................................................................................................13 6. Flash メモリへの書き込みファイルの生成方法 .....................................................................................................................15 6-1. App1/2 Design、Factory Design の生成................................................................................................................................15 6-2. 初期状態の作り方 ..................................................................................................................................................................15 6-3. 更新ファイルの生成 (Nios II 経由) ...................................................................................................................................18 7. デモンストレーション ...............................................................................................................................................................19 7-1. デモンストレーション用ファイル一式 ......................................................................................................................................19 7-2. デモンストレーション前の状態 ...............................................................................................................................................19 7-3. デモンストレーション概要 .......................................................................................................................................................20 7-4. デモンストレーション手順 .......................................................................................................................................................21 8. 最後に .....................................................................................................................................................................................25 ver. 1.0 2013 年 8 月 2/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 1. はじめに パラレル・フラッシュ・ローダ(以下、PFL)により構成された FPGA コンフィギュレーション構成に対して Nios® II + Flash Memory Controller を使用した Flash メモリへの書き込みを実現することで、リモート・システムでの FPGA データのアップデート機能を実現します。 ・FPGA に外部(UART や Ethernet など、コンフィギュレーション・データ入力のための I/F 実装はユーザ依存) から入力されたコンフィギュレーション・データを Nios II を経由して書き換えます。 ・次の電源投入時、または、nCONFIG のトグルにより、新たなデータで FPGA が起動します。 ・Flash メモリ書き込み中の電源断など、予期しない状況のため、バックアップ機能を有します。 1-1. 環境 ボード: Arria® V GX スタータ開発キット: http://www.altera.co.jp/products/devkits/altera/kit-arria-v-starter.html 搭載デバイス:5AGXFB3H4F35C5NES ソフトウェア:アルテラ社 Quartus® II 13.0、Nios II Software Build Tool(以降、SBT と略) 13.0 図 1-1.ボード外観図 1-2. ベースとなるハードウェア・デザイン Arria V GX スタータ開発キットに付属のデザインを使用します。以下より、キット・インストール 12.1.0 をダウン ロード&インストールします。 http://www.altera.co.jp/products/devkits/altera/kit-arria-v-starter.html FPGA デザイン: (インストール・フォルダ)¥ArriaVGX_5agxfb3hf35_start¥examples¥board_test_system¥bts_config bts_config.zip を展開し、Quartus II 13.0 でオープンします。 MAX® V デザイン: (インストール・フォルダ)¥arriaVGX_5agxfb3hf35_start¥examples¥max5 max5.zip を展開し、Quartus II 12.1SP1 でオープンします。 ver. 1.0 2013 年 8 月 3/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 2. 処理概要 2-1. FPGA ハード構成 初期状態では、App1 Design が FPGA にロードされ動作しています。何らかの理由で App1 Design のコンフィ ギュレーションに失敗した場合には、MAX V CPLD 内の PFL の機能により自動的に Factory Design がコンフィ ギュレーションされます。 図 2-1.FPGA ハード構成 2-2. ホスト・ファイル・システムについて 図 2-1 の構成では、JTAG UART インタフェースを使用して PC 上にある更新ファイル(App2_Design.rbf)を転 送しています。これは、Nios II SBT 上でホスト・ファイル・システムを有効にすることで実現できます。ホスト・ファイ ル・システムを有効にした場合、Nios II を Debug モードで起動することが必須となり、この手法はあくまで動作の 検証レベルで使用する方法になります。 本資料では、簡易的なデモンストレーションという位置付けのためホスト・ファイル・システムでファイル転送を行 っていますが、実際の構成では、UART や Ethernet などのインタフェースを使用して外部からファイルを転送する ことになります。なお、ホスト・ファイル・システムの設定方法については、後ほど詳しく説明します ver. 1.0 2013 年 8 月 4/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 2-3. PC から SSRAM への書き込み App1 Design を App2 Design で書き換えます。本デモンストレーションでは、1 ブロック(0x20000 バイト)毎に SSRAM にデータをバッファリングして、ブロック単位でデータを区切り処理を行っていますが、外部 RAM を使用す るかどうかは実装依存となります。原理的には、使用してもしなくても問題なく転送は行えます。使用するシステム 環境によりユーザが選択となります。データの制御方法の変更は、Nios II 上のプログラムをカスタマイズすること で簡単に行えます。 外部 RAM を使用しない場合は、FPGA 内部のオンチップ RAM、または、レジスタを使用することになり、大きな 単位でのデータ転送は行えないので、例えば、8 バイト毎にデータを区切って送る場合ならば、外部 RAM は不要 となります。 外部 RAM を使用する場合としては、大容量 DRAM を使用して、FPGA のコンフィギュレーション・データの全て を一旦大容量 DRAM にバッファリングすることも可能です。この方法だと、大容量 DRAM にデータをバッファリン グした時点で外部入力をオフラインにできるため、使用するシステムの仕様によっては、こちらの方がメリットがあ る場合もあります。 図 2-2. C から SSRAM への書き込み ver. 1.0 2013 年 8 月 5/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 2-4. SSRAM から Flash メモリへの書き込み SSRAM にバッファリングされたデータを Flash Memory Controller 経由で Flash メモリに書き込みます。本デ モンストレーションでは、1 ブロック(0x20000 バイト)毎に SSRAM にバッファリングされたデータ読み出し、 Flash メモリ に書き込んでいます。 図 2-3. SSRAM から Flash メモリへの書き込み 2-5. MAX V CPLD 経由での FPGA コンフィギュレーション 次の電源投入時、または、nCONFIG のトグルにより、App2 Design で FPGA が起動します。 図 2-4. MAX V CPLD 経由での FPGA コンフィギュレーション ver. 1.0 2013 年 8 月 6/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 2-6. Flash メモリへの書き込みが失敗した場合 App2 Design の書き込み失敗などの要因で FPGA へのコンフィギュレーションが失敗した場合には、MAX V CPLD 内の PFL が Factory Design をコンフィギュレーションし、システムのはまり込みを回避します。 図 2-5. Flash メモリへの書き込みが失敗した場合 ver. 1.0 2013 年 8 月 7/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 3. ハードウェア構成 3-1. ボード構成 図 3-1 にボード構成を示します。Arria V GX スタータ開発キットには、多くの周辺デバイスが実装されています TM が、今回使用する外部デバイスは、赤で示した USB-Blaster 、MAX V CPLD、256 MByte Flash メモリ、2 MByte SSRAM となります。また、書き込まれているデザインの区別のために LCD の表示を使用します。 USB Blaster PFL Nios II Config ROM Work Memory 図 3-1.ボード構成 3-2. Qsys 今回使用する FPGA デザイン内の Qsys デザインの起動画面です。赤線部分が今回使用する Nios II ソフトコア・プロセッサと各種ペリフェラルとなります。bts_config デザイン内には、今回使用するペリフェラル 以外にもさまざまなペリフェラルがありますが、それらは今回使用しません。(ハードウェアとしては FPGA に実 装されるが、ソフトウェアからは使用しない。) 図 3-2.Qsys 起動画面 ver. 1.0 2013 年 8 月 8/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 3-3. Flash メモリ・マップ Arria V GX スタータ開発キットの Flash メモリ・マップを図 3-3 に記します。Factory hardware に Factory Design を格納します。User hardware1 に App1 Design/App2 Design を格納します。PFL option bits には、Config データを格納している領域の先頭アドレスと有効ビットが格納されます。これは、 MAX V CPLD 内の PFL が汎用 Flash メモリ内の FPGA のコンフィギュレーション・データの格納位置を 特定するために必要となります。PFL は、電源投入時にはじめに Option Bit にあるデータをリードし、コン フィギュレーションするべき対象コンフィギュレーション・データの先頭アドレスとそのデータが有効かどうか を判断します。有効であれば、そのアドレス位置からデータを読み出して、FPGA のコンフィギュレーション を行います。 図 3-3. Arria V GX スタータ開発キットの Flash メモリ・マップ ver. 1.0 2013 年 8 月 9/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 4. ソフトウェア実装 4-1. Nios II Software Build Tools (SBT) Qsys で作成したハードウェア・デザインを基にソフトウェア・プロジェクトを作成します。プロジェクトの生 成方法の詳細については、後ほど、デモンストレーション手順のところで、説明します。 図 4-1. Nios II Software Build Tools (SBT) ver. 1.0 2013 年 8 月 10/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 4-2. Nios II ソフトウェア 以下に、Nios II 上で動作させる Flash メモリ書き換え用の C 言語ソースコードを示します。 #include <stdio.h> #include <string.h> #include <io.h> #include "system.h" #include "sys/alt_flash.h" #include "sys/alt_flash_dev.h" #define UPDATE_FILE_NAME "/mnt/host/App2_Design.rbf" // ホストファイルシステムパス名+更新ファイル名 #define WRITE_ADDRESS 0x01640000 // CFI Flash メモリ書き込みアドレス #define WRITE_SIZE 0x01620000 // 全書き込みサイズ(ブロックサイズの倍数を指定) #define WRITE_UNIT 0x00020000 // 1サイクルの書き込みサイズ(ブロックサイズの倍数を指定) #define BLOCK_SIZE 0x10000 // Flash メモリ(PC28F00AP30BF)のブロックサイズ int main(void) { alt_flash_fd* fd; FILE* fp = char buffer[WRITE_UNIT]; int data_size; int address; int ret; NULL; printf( "CFI Flash ROM Program Demo Start!!\n" ); // LED 設定 LED[3:0]=OFF、OFF、OFF、OFF IOWR( LED_PIO_BASE, 0, 0xF ); // バッファ(SSRAM)の初期化 memset(buffer, 0xFF, WRITE_UNIT); // Flash メモリオープン fd = alt_flash_open_dev( EXT_FLASH_NAME ); // Flash メモリ・パーシャル・イレーズ(0x10000 単位で部分消去) for( address = WRITE_ADDRESS ; address < (WRITE_ADDRESS+WRITE_SIZE) ; address = address + BLOCK_SIZE ){ ret = alt_erase_flash_block( fd, address, 1 ); if( ret < 0 ){ printf( "Error : Erase Flash ROM at Byte Address = 0x%08x\n", address ); exit( 1 ); } printf( "Erase Flash ROM at Byte Address = 0x%08x\n", address ); } printf( "Erase Flash ROM Success!!\n" ); ver. 1.0 2013 年 8 月 11/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 つづき // LED 設定 LED[3:0]=OFF、OFF、ON、ON IOWR( LED_PIO_BASE, 0, 0xC ); // 更新用 FPGA ファイルオープン fp = fopen( UPDATE_FILE_NAME, "r"); if ( fp == NULL ){ printf( "Error : Cannot Open File %s\n", UPDATE_FILE_NAME ); exit (1); } printf( "Open FPGA File Success!!\n // LED 設定 Filename=%s\n", UPDATE_FILE_NAME ); LED[3:0]=ON、ON、OFF、OFF IOWR( LED_PIO_BASE, 0, 0x3 ); // Flash メモリへの書き込み(0x10000 単位で全サイズ分の繰り返し) for( address = WRITE_ADDRESS ; address < (WRITE_ADDRESS+WRITE_SIZE) ; address = address + WRITE_UNIT ){ // ホストファイルシステム(JTAG UART)経由で更新ファイルを 0x10000 単位でバッファへコピー data_size = fread( buffer, 1, WRITE_UNIT, fp); printf( "Copy FPGA File to Buffer(Ext RAM) : File Size = 0x%08x\n", data_size ); //バッファに書き込まれている 0x10000 単位の更新ファイルを Flash メモリへ書き込み alt_write_flash( fd, address, buffer, data_size ); printf( "Write Flash ROM : Write Address = 0x%08x, Write Size = 0x%08x\n", address, data_size ); } printf( "Write Buffer(Ext RAM) to Flash ROM Success!!\n" ); // LED 設定 LED[3:0]=ON、ON、ON、ON IOWR( LED_PIO_BASE, 0, 0x0 ); fclose( fp ); alt_flash_close_dev( fd ); printf( "Program Finish!!\n" ); return 0; } ver. 1.0 2013 年 8 月 12/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 5. MAX V CPLD への PFL の実装 5-1. 概要 Arria V GX スタータ開発キット工場出荷時の MAX V CPLD の状態は、Flash メモリへの書き込みに 対応していません。また、App Design がコンフィギュレーションできなかった場合に Factory Design をリコ ンフィギュレーションする機能も実装されていません。したがって、これらの機能を有効にするために、 MAX V CPLD デザインの編集が必要となります。 5-2. MAX V デザインの編集 max5.zip を適当なフォルダに展開し、Tools メニューから MegaWizard Plug-in Manager を起動し、Edit モードで p2.vhd ファイルを指定します。Parallel Flash Loader の画面が起動するので、General タブにて Flash メモリへの書き込み設定を有効にします。(図 5-1 を参照) 図 5-1. Flash メモリへの書き込み設定の有効化 ver. 1.0 2013 年 8 月 13/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 次に、FPGA Configuration タブに移動し、コンフィギュレーション異常の場合に Factory Design をリコ ンフィギュレーションするように設定します。“What should occur on configuration faliure?”を”Retry from fixed address”に変更します。“What is the byte address to retry from on failure?”を 00020000(Factory Hardware の先頭アドレス)に設定します。 図 5-2.コンフィギュレーション・エラー時の設定 これで必要な設定が終わったので、Finish をクリックして PFL のコアを生成します。コア生成後、 Quartus II のコンパイルを行い、生成された POF ファイルをボード上の MAX V CPLD に書き込みます。 この際、念のため、既存の MAX V CPLD から Examine で現状の POF ファイルをバックアップすることを 推奨します。 ver. 1.0 2013 年 8 月 14/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 6. Flash メモリへの書き込みファイルの生成方法 6-1. App1/2 Design、Factory Design の生成 ベースとなる FPGA デザイン(bts_config)から必要な各種 SOF ファイルを生成します。今回は、ハード ウェア構成は変更せず bts_config のまま作成します。FPGA に書き込まれているデザインを区別するた めに Nios II を使用して LCD にキャラクタ表示させるようにデザインを作成します。Nios II のプログラム をオンチップメモリ上から起動するように設定し、それぞれの SOF ファイルを生成します。 ► Factory Design LCD 表示:“Factory Design” C 言語ソースファイル:factory_design.c SOF ファイル名:Factory_Design.sof ► App1 Design LCD 表示:“App1 Design” C 言語ソースファイル:app1_design.c SOF ファイル名:App1_Design.sof ► App2 Design LCD 表示:“App2 Design” C 言語ソースファイル:app2_design.c SOF ファイル名:App2_Design.sof 6-2. 初期状態の作り方 初期状態では、PFL を正常に動作させるためのオプション・ビットの書き込みも行う必要があります。先 に説明したように、PFL は、FPGA へのコンフィギュレーション時にオプション・ビットに書き込まれた情報に 基づいて、FPGA へのコンフィギュレーション・データを判断するためです。 そのためには、Quartus II の Convert Programming File を使用して Factory Design、App1 Design を統合した POF ファイルを生成し、Quartus II の Programmer を使用して MAX V CPLD 上の PFL 経 由で Flash メモリを書き込む必要があります。 6-2-1. PFL (MAX V CPLD)経由での Flash メモリ書き込み 初期状態ファイル init_data.pof を MAX V CPLD 内の PFL 経由で書き込むことで、Option Bits、App1 Design、Factory Design が正しく書き込まれます。 図 6-1.PFL (MAX V CPLD) 経由での Flash メモリ書き込み ver. 1.0 2013 年 8 月 15/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 6-2-2. 初期状態 POF ファイル(init_data.pof)の生成 Quartus II Programmer を使用して JTAG⇒PFL (MAX V CPLD) 経由で Flash メモリを書き込む場 合には、Convert Programming Files ユーティリティーを使用します。 Quartus II の File メニュー⇒Convert Programming Files で図 6-2 のように設定することで、PFL 経由 でのコンフィギュレーションに必要な POF ファイルが生成されます。 ここでは、init_data.pof というファイル名を生成しています。Factory_Design.sof を page_0 に指定して、 スタートアドレスを 0x00020000 と設定しています。App1_Design.sof を page_1 に指定して、スタートアド レスを 0x01640000 に指定しています。Options ボタンで、Option Bit のアドレス設定を行います。ここでは、 0x00018000 と設定しています。これらのアドレスは、図 3-3. Arria V GX スタータ開発キットの Flash メモ リフォーマットで説明した内容と同一となります。 設定が終わったら、Generate ボタンをクリックで、プロジェクトフォルダ内に init_data_pof という名前の ファイルが生成されます。 図 6-2.初期状態 POF ファイル(init_data.pof)の生成 ver. 1.0 2013 年 8 月 16/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 6-2-3. 初期状態 POF ファイルの Flash メモリへの書き込み Quartus II Programmer を起動し、Auto Detect でボード上のデバイスを認識させます。MAX V CPLD の行をハイライトして、Edit メニュー⇒Attach Flash Device で CFI_1Gb を追加します。作成した初期状態 ファイル(init_data.pof)を CFI_1Gb の File 欄にて選択します。Page0、Page1、OPTION_BITS の Program/Configure をチェックします。ボード上の PGM_CONFIG ボタンを押しながら Quartus II Programmer の Start ボタンクリックで書き込みが開始されます。(FPGA のコンフィギュレーションが完了 した状態では Flash メモリのバス競合のために書き込みが正常に行われない場合があるため。) 図 6-3.初期状態 POF ファイル(init_data.pof)の Flash メモリへの書き込み ver. 1.0 2013 年 8 月 17/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 6-3. 更新ファイルの生成 (Nios II 経由) 更新ファイルは、App1_Design.sof に代わって更新される App2_Design.sof を指します。このファイル は SOF ファイルのままでは Flash メモリに書き込んでも正しく FPGA コンフィギュレーションが行われない のでファイル・フォーマット変換が必要となります。以下に、変換方法を説明します。 6-3-1. Nios II コマンド・シェルでのコマンド実行 ファイル・フォーマット変換には、Nios II コマンド・シェルを使用して行います。 Windows の[スタート]メニューより[すべてのプログラム(P)] ⇒ [Altera] ⇒ [Nios II EDS 13.0.0.156] ⇒ [Nios II 13.0 Command Shell] を選択して、Nios II Command Shell を起動します。以下のようにコマ ンドを入力して、最終的に PFL に対応した RBF ファイルを生成します。ここでは、App2_Design.rbf ファイ ルという名前のファイルを生成します。 図 6-4.更新ファイル(RBF ファイル)の生成 ver. 1.0 2013 年 8 月 18/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 7. デモンストレーション 7-1. デモンストレーション用ファイル一式 ELS_Niosii_Flash_Update_for_A5GX_StarterBD.zip に本デモンストレーションに必要なファイル一式 が格納されています。内容は、以下となります。 bts_config.zip Arria V GX デバイス用 Quartus II プロジェクトフォルダ max5_pfl_flash_write_for_a5gxstart.zip MAX V デバイス用 Quartus II プロジェクトフォルダ、PFL から Flash メモリを書き込み可能としたデザ イン fpga_files Factory_Design.sof、App1_Design.sof、App2_Design.sof ファイル格納用フォルダ software_files: Nios II 用 C 言語ソースファイル app1_design.c ⇒ LCD に”App1 Design”を表示 app2_design.c ⇒ LCD に”App2 Design”を表示 factory_design.c ⇒ LCD に”Factory Design”を表示 CFI_update_for_a5gx_start.c CFI Flash Memory の書き換えを行うプログラム 7-2. デモンストレーション前の状態 初期状態は、以下の状態となっていることを確認してください。 ・0x00020000 ⇒ Factory Design ・0x01640000 ⇒ App1 Design ・0x00018000 ⇒ Option Bits 初期状態の確認は、以下の操作で行えます。 ・Arria V GX スタータ開発キットの SW4-3 を OFF ポジションに設定 ・ボードの電源を投入 ・“Factory Design”が LCD に表示を確認 ・ボードの電源を落とす ・Arria V GX スタータ開発キットの SW4-3 を ON ポジションに設定 ・ボードの電源を投入 ・“App1 Design”が LCD に表示 ボードの初期状態 ・Arria V GX スタータ開発キットの SW4-3 を ON ポジションに設定 ・その他の各種設定(DIP スイッチなど)は、工場出荷時 ・PC-JTAG コネクタ間に JTAG ケーブルを接続 ・ボードの電源を投入し“App1 Design”が LCD に表示 ver. 1.0 2013 年 8 月 19/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 7-3. デモンストレーション概要 繰り返しになりますが、本デモンストレーションでは、初期状態で App1_Design が動作しているシステムを アップデートして App2_Design が起動するように処理を行います。Flash メモリ上には、更新前には 0x01640000 番地には App1_Design が書き込まれています。したがって、この状態では、ボード上の LCD には、“App1 Design”が表示されます。Nios II のホスト・ファイル・システム経由で JTAG UART インタフェー スから⇒ Nios II ⇒SSRAM Controller⇒SSRAM とデータを一旦 SSRAM にバッファリングします。次に SSRAM⇒SSRAM Controller ⇒ Nios II ⇒Flash Memory Controller⇒汎用 Flash メモリとデータを転送 して、最終的に図 7-1 の更新後の状態となります。(実際には、これらのフローを Flash メモリのブロック単位 である 0x10000Byte ごとに繰り返しています。詳細は、Nios II ソフトウェア C 言語ソースコードを参照くださ い。) Flash メモリの書き込みが正常に行われたならば、電源の再投入、または、nCONFIG のトグルで新たに 書き込まれた App2_Design で FPGA をコンフィギュレーションします。正常にコンフィギュレーションが行わ れれば、LCD には、“App2 Design”が表示されます。ここで、仮に Flash メモリの書き込みに失敗した場合に は、MAX V CPLD 内の PFL のリモート・アップデート機能により Factory Design がコンフィギュレーションさ れ、LCD には、“Factory Design”が表示されます。 図 7-1.デモンストレーション概要 ver. 1.0 2013 年 8 月 20/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 7-4. デモンストレーション手順 7-4-1. ベースとなるハードウェア・デザインの展開 bts_config.zip を適当なフォルダに展開します。日本語を含むパスやスペースを含むパスは使用できない で注意してください。Nios II SBT は、ここで展開したハードウェア・デザイン内の.sopcinfo ファイルを参照して Nios II ソフトウェア・プロジェクトを生成します。したがって、ここでは、Quartus II にてハードウェア・デザイ ンをコンパイルする必要はありません。ハードウェア・デザインの内容を確認したい場合には、展開したプロ ジェクトを Quartus II 13.0 でオープンして確認することも可能です。 7-4-2. Nios II 13.0 Software Build Tools for Eclipse を起動 File メニューから、または、デスクトップのショートカットから Nios II 13.0 Software Build Tools for Eclipse を起動します。Workspace Launcher が起動したら、適当なフォルダ(一般的に、(Project Folder)¥software¥workspace を推奨)にワークスペースを作成します。 図 7-2. Nios II 13.0 Software Build Tools for Eclipse の起動 ver. 1.0 2013 年 8 月 21/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 7-4-3. Nios II プロジェクトの作成 SBT が起動したら、File メニュー⇒New⇒ Nios II Application and BSP from Template から Nios II 用 のプロジェクトを作成します。画面が起動したら、図 7-3 の左図のように SOPC Information File の指定、 project_name の指定(CFI_update)、Location の指定(デフォルト)、Blank Project を選択、と設定し Next をクリックします。 次に、BSP プロジェクトの設定をしますが、ここでは、図 7-3 の右図のように設定は何も変えずにデフォル トのままとします。 Finish ボタンをクリックすることで、新規に Nios II プロジェクトと BSP プロジェクトが生成されます。 図 7-3. Nios II プロジェクトの作成 7-4-4. C 言語ソースファイルと RBF ファイルのインポート Windows のエクスプローラから Nios II SBT 上にドラッグ&ドロップで software_files/CFI_update_for_a5gx_start.c と更新ファイル App2_Design.rbf をインポートします。 または、 Windows のエクスプローラからプロジェクトフォルダに直接ファイルをコピーし、CFI_update を 右クリック⇒Refresh でファイルを反映させることもできます。 なお、デモデザインに App2_Design.rbf ファイルは用意しておりませんので、付属の App2_Design.sof を使用して変換作業を行う必要があります。変換方法は 6-3 章“更新ファイルの生成 (Nios II 経由)”を参照 ください。 図 7-4.C 言語ソースファイルと RBF ファイルのインポート ver. 1.0 2013 年 8 月 22/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 7-4-5. ホスト・ファイル・システムの設定 SBT 画面の Project Explorer ペインの CFI_update_bsp を右クリックし、Nios II ⇒BSP Editor を起動し ます。BSP Editor 画面が起動したら、Software Package タブに移り、ホスト・ファイル・システムを有効にしま す。(altera_hostfs をチェック、ホスト名:/mnt/host) 設定が終わったら、Exit で BSP Editor を終了し、CFI_update_bsp 右クリック⇒ Nios II ⇒Generate BSP として、BSP エディタの設定内容をプロジェクトに反映させます。 図 7-5.ホスト・ファイル・システムの設定 7-4-6. ソフトウェア・プログラムの実行 CFI_update をハイライトし、右クリックから Debug as⇒ Nios II Hardware を実行します。ホスト・ファイ ル・システムを使用しているため、ここでは、デバッグ・モードで実行することに注意してください。 図 7-6 に左図の画面が表示されたら、Yes をクリックしてください。Debug モード画面に切り替わったら、 Resume ボタンをクリックし、プログラムを実行します。右図のように進行のログが表示されたら OK です。 図 7-6.ソフトウェア・プログラムの実行 ver. 1.0 2013 年 8 月 23/25 ALTIMA Corp. / ELSENA,Inc. Nios II と PFL を使用した FPGA リモート・アップデート・システム構築 7-4-7. 結果の確認 問題なく処理が完了した場合、以下のようなログが表示されます。なお、Arria V デバイスでは、ファイル 容量が大きいため、全ての処理が完了するまでに、1 時間以上かかります。 次に、ボード上の DIP SW4-3 が ON ポジションであることを確認して、ボードの電源を入れ直し、LCD に “App2 Design”が表示されることを確認します。 図 7-7.結果の確認 7-4-8. Flash メモリの書き込みがエラーとなった場合の検証 先ほどの手順の通りに進めて Nios II 経由で Flash メモリのイレーズ処理が終わった辺りで強制的に赤 ボタンをクリックし Nios II の処理を止めます。この状態では、Flash メモリの 0x01640000 番地からの User hardware1 領域のデータが消去状態となり、App2_Design は正常にコンフィギュレーションされません。 この状態で、ボード上の DIP SW4-3 が ON ポジションであることを確認して、ボードの電源を再投入し、 LCD に”Factory Design”が表示されることを確認します。この操作で、MAX V CPLD に書き込んだコンフィ ギュレーション・エラー時の動作が正しいことを確認できたことになります。 また、Factory Design が起動している状態で、再度ソフトウェア・プログラムを実行し、Factory Design で も Flash メモリの書き換えができるか確認します。 図 7-8.Flash メモリの書き込みがエラーとなった場合の検証 ver. 1.0 2013 年 8 月 24/25 ALTIMA Corp. / ELSENA,Inc. 資料タイトル 8. 最後に 今回は、簡易デモンストレーションということで、Nios II SBT の機能であるホスト・ファイル・システムを使用して、 JTAG UART 経由で更新ファイル(App2_data.rbf)の Nios II への転送を行いました。 しかし、実際の構成では、今回のようにホスト・ファイル・システムは使用できないので、Ethernet や UART など のインタフェースを使用して外部からデータを転送する必要があります。このあたりは、ユーザ様の実装依存とな りますので、ご検討のシステム要件に沿った形でのデータ転送のためのインタフェースを実装頂ければと思いま す。 更新ファイル転送後の動作については、基本的に本デモンストレーションの内容を踏襲することで、現実の構成 を実現可能です。本デモンストレーションでは、外部 SSRAM に 0x10000Byte 単位で一旦データをバッファリング してから Flash メモリにデータをライトしていましたが、このあたりも、ご検討のシステム要件に沿った形でのデータ 転送をご検討頂ければと思います。 免責、及び、ご利用上の注意 弊社より資料を入手されましたお客様におかれましては、下記の使用上の注意を一読いただいた上でご使用ください。 1. 本資料は非売品です。許可無く転売することや無断複製することを禁じます。 2. 本資料は予告なく変更することがあります。 3. 本資料の作成には万全を期していますが、万一ご不明な点や誤り、記載漏れなどお気づきの点がありましたら、本資料を入手されました下記代理店までご 一報いただければ幸いです。 株式会社アルティマ : 〒222-8563 横浜市港区新横浜 1-5-5 マクニカ第二ビル 技術情報サイト EDISON : TEL: 045-476-2155 株式会社エルセナ : 〒163-0928 東京都新宿区西新宿 2-3-1 新宿モノリス 28F TEL: 03-3345-6205 技術情報サイト ETS : HP: http://www.altima.co.jp https://www.altima.jp/members/index.cfm HP: http://www.elsena.co.jp https://www.elsena.co.jp/elspear/members/index.cfm 4. 本資料で取り扱っている回路、技術、プログラムに関して運用した結果の影響については、責任を負いかねますのであらかじめご了承ください。 5. 本資料は製品を利用する際の補助的な資料です。製品をご使用になる場合は、英語版の資料もあわせてご利用ください。 ver. 1.0 2013 年 8 月 25/25 ALTIMA Corp. / ELSENA,Inc.