Comments
Description
Transcript
InterLink
CoDeveloper_SUZAKU_HelloWorld_jp.doc アットマークテクノ社製ボード SUZAKU を用いた、 Impulse Accelerated Technologies 社 CoDeveloper Xilinx MicroBlaze プラットフォームサポートパッケージの操作手順チュートリアル プラットフォームサポートパッケージ 使用ボード:株式会社アットマークテクノ SUZAKU-S(SZ030-U00) 使用ソフト:Xilinx 社 Platform Studio(Embedded Development Kit)バージョン7.1+ServicePack ISE バージョン7.1+ServicePack Impulse Accelerated Technologies 社 CoDeveloper バージョン2.0 使用アプリケーション:CoDeveloper とともにインストールされる HelloWorld( HelloWorld(MicroBlaze Examples) Examples) InterLink PLD ソリューションプロダクトグループ ストラテジックマーケティンググループ 〒224-0045 横浜市都筑区東方町1番地 TEL:045(474)7028 FAX:045(474)5583 URL:http://ppg.teldevice.co.jp/ mailto:[email protected] (輸入元) (有)インターリンク TEL:045-663-5940 FAX:045-663-5945 [email protected] 1 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc 第1章:概要 このチュートリアルでは、Impulse C(※)で記述された"HelloWorld"アプリケーションを、アットマークテ クノ社製評価ボード上で動作させます。 (※)Impulse C:ANSI-C に、ハードウェア化の為のしかけを組み込んだ言語とそのツールセットの呼称 HelloWorld の Impulse C ソースファイルは第6章をご参照ください。 操作を進めていく過程において、以下の手順について解説致します。 ' CoDeveloper による、ハードウェア(VHDL)とソフトウェア・インタフェースの生成 ' CoDeveloper の開発環境から Xilinx 開発環境へプロジェクトを移行(半自動) ' ISE と Platform Studio での操作 ' SUZAKU の FPGA をコンフィグレーション ' 動作確認 また、このチュートリアルを行うにあたり、SUZAKU 付属のドキュメントも併せてご参照ください。 2 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc 第2章:操作フロー 操作フロー( フロー(サマリ) サマリ) 「CoDeveloper」 ' Example アプリケーションのロード ' デスクトップシミュレーション ' HDL やソフトウェアインタフェース部を生成 ' プロジェクトファイルをエクスポート 「Xilinx ISE と Platform Studio」 ' CoDeveloper のハードウェアとソフトウェアをプロジェクトへ追加 ' 論理合成・配置配線・コンフィグレーションデータ作成 ' コンフィグレーション SUZAKU 「ターミナルウィンドウ」 ' 信号観測 3 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc 第3章:CoDeveloper の操作 ステップ3 ステップ3−1:HelloWorld アプリケーションを アプリケーションをロードする ロードする CoDeveloper Application Manager を起動します。Windows の[スタート]ボタン→[すべてのプログラム]→ [Impulse Accelerated Technologies]→[CoDeveloper]グループから選択します。 Xilinx MicroBlaze 用の Hello World サンプルプロジェクトを開きます。メニュー[File]→[Open Project…] を選択します。するとダイヤログが開くので、 <CoDeveloper インストールディレクトリ¥Examples¥Xilinx¥Microblaze¥HelloWorld> までナビゲートし、プロジェクトファイル HelloWorld.icProj を開きます。 (必要があれば、チュートリアルを始める前に Example ディレクトリのファイルを他のディレクトリにバック アップコピーしておいてください) プロジェクトファイルが開かれると、下図のように表示されます: HelloWorld プロジェクトには下記のファイルが含まれています: Source Files:HelloWorld.c Files HelloWorld.c、HelloWorld_sw.c HelloWorld.c HelloWorld_sw.c、HelloWorld_hw.c HelloWorld_sw.c HelloWorld_hw.c−これらソースファイルは完全なアプリ HelloWorld_hw.c ケーション、すなわち main()ファンクション、consumer と producer ソフトウェアプロセス、一つのハードウ ェアプロセス、を記述しています。 ソースファイルについては、 「第6章:Hello World サンプルアプリケーションについて」もご参照ください。 4 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc ステップ3 ステップ3−2:シミュレーションの シミュレーションの為にアプリケーションを アプリケーションをコンパイルする コンパイルする 機能検証の為に、アプリケーションのコンパイルとシミュレーションを行います: 1. メニュー[Project]→[Build Software Simulation Executable]を選択し、HelloWorld.exe 実行ファイル をビルドします。するとコンパイルとリンクのメッセージが下記のように表示されます: 2. Windows 実行ファイルの HelloWorld アプリケーションがデスクトップ(コンソール)ソフトウェアアプリ ケーションとして作成されました。このアプリケーションを実行するには、 メニュー[Project]→[Launch Software Simulation Executable]を選択します。コマンドウィンドウが開き、 下図のようにアプリケーションが実行されます: 5 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc シミュレーションは下記のように出力している事を確認します: CPU listing for hello… FPGA hardware says: 0 FPGA hardware says: 1 FPGA hardware says: 2 FPGA hardware says: 3 FPGA hardware says: 4 FPGA hardware says: 5 FPGA hardware says: 6 FPGA hardware says: 7 FPGA hardware says: 8 FPGA hardware says: 9 アプリケーションでは FPGA ハードウェアが上記値を生成したとのメッセージを表示していますが、実際は、 シミュレーションの為にハードウェアプロセスがソフトウェアプロセスとしてホスト開発システム(Windows) 上でコンパイルされています。 6 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc ステップ3 ステップ3−3:Xilinx ツールの ツールのプロジェクトフォルダの プロジェクトフォルダの準備 このチュートリアルでは、既に用意してある Xilinx ツールのプロジェクトを作業ディレクトリへコピーしま す。CD の suzakuData フォルダ下に suzakuHello_org フォルダがあります。この suzakuHello_org フォルダご と HelloWorld プロジェクトフォルダ下へコピーにしてください。 また suzakuHello_org のフォルダ名を、ここでは suzaku に変えます: デザインを CD から PC へコピーした際、デザインファイルに「読み取り専用属性」が付加されている場合があ ります。その場合、作業してもデザインファイルが変更できない為エラーが発生してしまいます。エクスプロ ーラ等でコピーしたデザインの「読み取り専用属性」は外してください。 ここで使用している suzaku フォルダの中身は、アットマークテクノ社のウェブや SUZAKU の添付 CD により提 供されている、SUZAKU Hardware manual でも使用されている Xilinx FPGA プロジェクトを一部変更(このチ ュートルアルでは使用しない code フォルダの削除や、microblaze のインスタンス名変更など)したものです。 7 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc ステップ3 ステップ3−4:Platform Support Package の定義 ハードウェア生成コンパイル(HDL 生成)や関連するソフトウェアインタフェースファイルの出力に先だって、 ターゲットとなるプラットフォームの選択を行います。下記のようないくつかの設定項目があります: • ターゲットプラットフォームの選択 • コンパイル実行中における最適化のタイプ • ハード/ソフト生成ディレクトリ • ハード/ソフトデザインエクスポート先ディレクトリ(Xilinx ツールのプロジェクトディレクトリ) ターゲットとなるプラットフォームを定義するには、メニュー[Project]→[Options]を選択し、開いたダイヤ ログから[Generate]タブを選択します: Platform Support Package プルダウンメニューから、[Xilinx MicroBlaze OPB(VHDL)]を選択します。また、 Hardware Build Directory として「hw hw」 sw」 hw 、Software Build Directory として「sw sw を定義します。また、Hardware Export Directory と Software Export Directory を「suzaku suzaku¥ suzaku¥xps_proj」とします。設定が済んだら、[適用] xps_proj →[OK]ボタンを押しダイヤログを閉じます。 サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(MicroBlaze プロセッサ で動作)と、OPB バスにおいてシングルストリームを介して通信するハードウェアプロセス(FPGA で動作)と が含まれます。 8 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc ステップ3 ステップ3−5:ハードウェアプロセスとなる ハードウェアプロセスとなる HDL を生成する 生成する HDL フォームでのハードウェア、関連するソフトウェア・インタフェースやライブラリファイルを生成するに は、メニュー[Project]→[Generate HDL]を選択します。すると、下図のように一連の処理が実行され、画面 には実行ログが表示されます: 処理が完了すると、プロジェクトディレクトリ下の「hw」と「sw」ディレクトリの中に、いくつかのファイル が生成されます。ファイルの生成までは、マシンの処理能力に依りますが数分かかります。各ディレクトリに は以下が含まれます: ハードウェアディレクトリ( ハードウェアディレクトリ(hw) hw) • ハ ー ド ウ ェ ア プ ロ セ ス を 記 述 し て い る VHDL ソ ー ス フ ァ イ ル ( HelloWorld_comp.vhd と HelloWorld_top.vhd)と、ハードウェアストリームインタフェースが生成されています。 • lib サブディレクトリがあり、ディレクトリの中に VHDL ライブラリ要素が含まれます。 • pcore サブディレクトリがあり、ディレクトリの中には Xilinx EDK ツールに必要なファイルが生成され ています。 ソフトウェアディレクトリ( ソフトウェアディレクトリ(sw) sw) • プロジェクトから抽出された、組み込みプロセッサへのコンパイルに必要な C ソースファイル(今回は HelloWorld.c と HelloWorld_sw.c) 。 • ハードウェアイニシャライズファンクションが記述されている C ファイル(co_int.c)が作成されていま 9 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc す。このファイルは、組み込みプロセッサへのコードとしてコンパイルされます。 • driver サブディレクトリがあり、ディレクトリの中には組み込みソフトウェアアプリケーションの一部 としてコンパイルされるソフトウェアライブラリが含まれます。 これらのライブラリはハードウェア/ソ フトウェア・インタフェースのソフトウェア側にインプリメントされます。 Xilinx ISE や Platform Studio の操作に馴れている場合には、以上のファイルを Xilinx ツールのプロジェク トフォルダへマニュアルでコピーすることもできます。しかしながら、次のステップでは、CoDeveloper の「ハ ードウェアとソフトウェアエクスポート機能」を使用して、これらのファイルを Xilinx Platform Studio プ ロジェクトへ半自動的に移します。 ステップ3 ステップ3−6:CoDeveloper からファイル からファイルを ファイルをエクスポート 前の作業で、サブディレクトリ hw と sw に HDL やソフトウェアインタフェースファイルが生成されています。 これらを先の「ステップ3−3」で用意した Xilinx ツールのプロジェクトフォルダ(suzaku¥xps_proj)へエ クスポートします。 Generate Options ダイヤログを開き(メニュー[Project]→[Options]を選択し、開いたダイヤログから [Generate]タブを選択) 、エクスポート先となるディレクトリ名の設定内容を再度確認してください: これらエクスポートディレクトリは、CoDeveloper のエクスポートソフトウェアとエクスポートハードウェア 機能を使用した際に、生成されたハードウェアとソフトウェアプロセスのコピー先として定義されているディ レクトリです。ここで定義されたディレクトリ(ここでは suzaku¥xps_proj)は、先に生成された Platform 10 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc Support Package アーキテクチャライブラリファイルの格納ディレクトリとして定義されています。よって、 エクスポート作業を行う前に、Platform Support Package が正しく選択されていることを必ず確認してくだ さい。 ビルドディレクトリ(ここでは"hw"と"sw")からエクスポートディレクトリ(ここでは"suzaku¥xps_proj"デ ィレクトリ)へファイルをエクスポートするには、メニューの[Project]→[Export Generated Hardware(HDL)] と[Project]→[Export Generated Software]をそれぞれ実行します。実行すると、実行ログが下図のように表 示されます: Note:次のステップへ進む前に、必ずソフトウェアとハードウェアのエクスポートを実行してください。 また、以降のステップでは、Xilinx ISE や Platform Studio ソフトウェアが必要です。 これまでの操作により、必要な全てのファイルが CoDeveloper から Xilinx ツール環境へエクスポートされま した。 11 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc 第4章:Xilinx ツールの ツールの操作 ステップ4 ステップ4−1:Xilinx ISE プロジェクトを プロジェクトを開く ここからは Xilinx ツールの操作に移ります。Xilinx ISE や Platform Studio を使用して、 ' CoDeveloper が作成したハード/ソフトを Xilinx ツールのプロジェクトへ追加 ' 論理合成や配置配線 ' コンフィグレーションファイルの作成 等を行います。 また、ここからの作業は、SUZAKU Hardware Manual の「FPGA プロジェクト構築方法」を元に行いますので、 SUZAKU Hardware Manual も併せてご参照ください。 [スタート]ボタン→[すべてのプログラム]→[Xilinx ISE 6]→[Project Navigator]で Xilinx Project Navigator を起動します。 メニュー[File]→[New Project]を選択し、新規プロジェクトを作成します。 Project Name:top Project Location:c:¥…¥Impulse¥CoDeveloper¥Examples¥Xilinx¥Microblaze¥OPB¥HelloWorld¥suzaku として、[次へ]をクリックします: ここでは"top"とした ステップ3−3で準備したフォルダ suzaku を指定 12 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc 続くダイヤログで、下記を設定します: Device Family:Spartan-3 Device:xc3s1000(このチュートリアルでは、SZ030-U00 の使用を想定しています) Package:ft256 Speed Grade:-4 Synthesis Tool:XST(VHDL/Verilog) 以下の画像が出るまで[次へ]をクリックし、最後に[完了]をクリック。 13 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc メニュー[Project]→[Add Source]を選択し、開いたダイヤログで"top.vhd"と"top.ucf"を選択し、[開く]を クリックします: すると下記ダイヤログが表示されますので、"VHDL Design File"を選択し、[OK]をクリックします: 再度メニュー[Project]→[Add Source]を選択し、今度は xps_proj フォルダ下にある、xps_proj¥xps_proj.xmp を選択し、[開く]をクリックします: 14 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc 以上で新規プロジェクトができました。 下記のような表示となります: 15 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc ステップ4 ステップ4−2:CoDeveloper で生成した 生成したハードウェア したハードウェアを ハードウェアを、Platform Studio 上で追加する 追加する Project Navigator から xsp_proj をダブルクリックします。すると、Platform Studio が開きます: "xps_proj"をダブルクリック Platform Studio 起動 16 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc HelloWorld ハードウェアプロセスとして記述されているモジュールをターゲットシステムへ追加します。メ ニュー[Project]→[Add/Edit Cores]を選択し、下記ダイヤログボックスを表示させます。 CoDeveloper で作成された IP コア、opb_hello opb_hello を選択し[Add]ボタンをクリックします。Peripherals リスト の左側に opb_hello モジュールが表示されます: Peripheral タブにおいて、CoDeveloper で作成したハードウェア「opb_hello」 が Platform Studio の他 IP と供にリス トされている opb_hello を選択して[<<Add]を押し、 opb_hello をプロジェクトへ追加する 次に[Bus Connections]タブを選択します。 マトリックスボックスの、opb_hello_0 sopb 行と mb_opb 列が交わる箇所をクリックして、opb_hello_0 イン スタンスを OPB バスへ接続します。小さいグレーの s がボックスに表示されます: 17 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc 次に[Ports]タブを選択します。右側のリストから opb_hello_0 インスタンスの中にある opb_clk ポートを選 択し、[<< Add]ボタンをクリックします。opb_clk opb_clk ポートがリスト左側の最後に表示されます(確認するには 表示をスクロールダウンする必要があります)。 また下図のように、Net Name を SYS_CLK に変更します: Net Name は SYS_CLK をプルダウンメニ ューから選択する 18 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc 次に[Addresses]タブを選択します。 ここではプラットフォーム上にある各ペリフェラルのアドレスを定義します。ここではアドレスを自動割り当 てしてみます。[Generate Address]ボタンを押すとアドレスが自動でアサインされます。 [Generate Address] ボ タ ン を 押 す と 、 opb_hello_0 のアドレスが自動生成される [適用]→[OK]ボタンをクリックして、 「Add/Edit Hardware Platform Specifications」ダイヤログを閉じます。 また、プロジェクトを保存します。 以上の操作で、全ての必要なハードウェアファイルが CoDeveloper から Xilinx ツールの環境へエクスポート され、新しいプラットフォームがコンフィグレーションされました。次のステップではソフトウェアファイル を新しいプラットフォームへ構築します。 19 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc ステップ4 ステップ4−3:CoDeveloper で生成した 生成したソフトウェア したソフトウェアを ソフトウェアを、Platform Studio 上で追加する 追加する ここでは、Platform Studio プロジェクトへ関連するソフトウェアソースファイルをインポートします。 プロジェクトビューの[Application]タブをクリックします。 続いて、メニュー[Project]→[Add SW Application Project…]を選択し、ソフトウェアプロジェクトを新規 作成します。 ここでは、新規ソフトウェアプロジェクトの名前に suzakuHello を使用しています: ソフトウェアの新規プロジェクト suzakuHello を追加する プロジェクト boot は、このチュートリアルでは使用しませんので、inactive になっています。 20 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc 次に Sources の上でマウス右クリックし、出現するポップアップメニューから[Add Files]を選択します: すると「Add Source and Header Files to the current processor」ダイヤログが開きます。下図のように suzaku¥xps_proj ディレクトリ下の"code"ディレクトリにあるファイルを全て選択します: [Open]ボタンをクリックして、これらの3つのファイルをプロジェクトへ追加します。 21 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc 追加されたソースファイルは、MicroBlaze CPU 上で動作するソフトウェア・アプリケーションを構成します。 以上の操作により、FPGA コンフィグレーションファイルを作成するのに必要な、ハードウェア/ソフトウェ ア・アプリケーションの準備が整いました。 22 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc ステップ4 ステップ4−4:Platform Studio でのコンパイル でのコンパイルの コンパイルの実行 つづいて Platform 上で、以下の作業順番に行います: ' メニュー[Tools]→[Generate Libraries and BSPs] ' メニュー[Tools]→[Build All User Applications] ' メニュー[Tools]→[Generate Netlist] Generate Netlist 完了には数分要します。 以上で Platform Studio での作業は終わりです。 メニュー[File]→[Exit]で、Platform Studio を終了します。 23 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc ステップ4 ステップ4−5:プログラミングファイルを プログラミングファイルを作成する 作成する Project Navigator の作業に移ります。 「Source in Project」で top.vhd を選択し、[Generate Programming File]をダブルクリックし、コンパイル を実行します。 Generate Programming File 完了には十数分要します。 top.vhd を選択 "Generate Programming File"をダブルクリックする Generate Programming File が完了すると、top.bit ファイルが生成されます。 top.bit は FPGA コンフィグレーション用の元ファイルになります。実際にコンフィグレーションプログラム をする為に、次の手順で top.bit を MCS ファイルに変換します。 24 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc ステップ4 ステップ4−6:BIT ファイルから ファイルから MCS ファイルへ ァイルへ変換する 変換する "Generate PROM.ACE or JTAG File"をダブルクリックします: "Generate PROM.ACE or JTAG File" をダブルクリックする すると次のようなダイヤログが開きます: 25 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc [x]PROM File を選択し、[次へ]を押します: [x]Xilinx Serial PROM を選択し、PROM ファイルの名前と保存場所を指定して、[次へ]を押します: ここでは MCS ファイル名を"top"とし、 保存先をステップ3−3で準備したフォ ルダ suzaku としています 26 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc 下図のようにプルダウンメニューから[xc18v]と[xc18v04]を選択して[Add]を押します。 つづいて[次へ]を押します: これまでのサマリが表示されますので、そのまま[次へ]を押します: 27 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc 下記画面では、[Add File]を押します: 新しく生成された Bit file(ここでは top.bit)を選択して[開く]をクリックします: 下記のダイヤログが表示されますので、[いいえ]をクリックします: 28 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc 下記のダイヤログが表示されますので、[完了]をクリックします: 下記のダイヤログが表示されますので、[はい]をクリックします: 以上で、BIT ファイルから MCS ファイルへの変換は終了です。 ISE プロジェクトフォルダの中に、ファイル top.mcs が生成されています。 29 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc 第5章:アプリケーションを アプリケーションをボード上 ボード上で動作させる 動作させる 最後に、アプリケーションを SUZAKU で実行し、結果をターミナルウィンドウで確認します。 ステップ5 ステップ5−1:ターミナルプログラムの ーミナルプログラムの設定 Windows の HyperTerminal、または他のターミナルプログラムを開きます。 今回使用している Xilinx プロジェクト suzaku では、シリアル通信で以下の設定がされていますので、ターミ ナルウィンドウの設定を以下のとおりにしてください: 項目 設定 転送レート 115,200bps データ長 8bit ストップビット 1bit パリティ なし フロー制御 なし Windows 付属のターミナルウィンドウを使用する場合:スタートボタン→すべてのプログラム→アクセサリ→ 通信→ハイパーターミナル 30 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc ステップ5 ステップ5−2:SUZAKU へコンフィグレーションデータを コンフィグレーションデータをプログラムする プログラムする 前のステップで生成したMCSファイルをSUZAKUへプログラムします。 SUZAKUではFPGAのコンフィグレーションに東京エレクトロンデバイスのTE7720を使用しています。 TE7720の動作については、 「SUZAKU Hardware manual」の「FPGAコンフィグレーション」をご参照ください。 また、TE7720について東京エレクトロンデバイスのホームページから詳細資料をダウンロードできます。 ' まず、新しく生成された"MCS file(ここではtop.mcs)"を"device.def"と"lbplay2.exe"と同じフォルダ にコピーします。 ("device.def"と"lbplay2.exe"は、プロジェクトトップファイルと同じフォルダsuzaku にも入っています。) ' SUZAKUの SUZAKUの電源が 電源がオフとなっている事を確認してください。 オフ ' CON2の"FPGAプログラム用JTAG"にXilinx社製Parallel Cable等のJTAGケーブルを接続します。 ' JP2ジャンパ JP2ジャンパを ジャンパをショートします。 ショート ' SUZAKU の電源を 電源をオンにします。 オン ' コマンドプロンプトを開き. 先ほどのMCS file や"device.def"、"lbplay2.exe"があるフォルダに移動し ます。 31 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc ' "lbplay2 –deb top.mcs"とタイプします。 表示される CheckSum の値が合っている 事を必ず確認してください ' 以下のエラーが発生した場合は、CD-ROM の¥lbplay2¥lbplay2_6.2_problem_workaround-ja.txtに記載し てある手順で、ドライバをインストールしてください。 “ERROR: Please check WINNT¥system32¥drivers¥windrvr.sys.” ' プログラム完了後、チェックサム チェックサム値 SUZAKU の電源を チェックサム値が合っていることを確認 っていることを確認し, 確認 電源をオフにします。 オフ ' 何かの原因 かの原因で 原因でエラーを エラーを起こし、 こし、チェックサムが チェックサムが違っていた場合 っていた場合は 場合は、SUZAKU を動作させない 動作させないでください。 させない 間違ったデータをプログラムしたり、またプログラム中に何かの原因でエラーを起こした場合は、電源を 切断し、必ず゛JP2 ゛をショートし、再プログラミングを行ってください。 ' JP2 ジャンパを ジャンパをオープンにします。 オープン ' SUZAKU の電源を 電源をオンにします。 オン 32 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc SUZAKU の電源投入後、ハイパーターミナルウィンドウに、下図のようにデスクトップシミュレーションと同 じ内容(ステップ3−2)が観測されます: 33 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc 第6章:Hello World サンプルアプリケーションについて サンプルアプリケーションについて Hello World ソースファイルの基本的な中身について見てみます。 この"Hello World"サンプルプロジェクトには、ソフトウェアプロセス(MicroBlaze プロセッサで動作)と、 OPB バスにおいてシングルストリームを介して通信するハードウェアプロセス(FPGA で動作)とが含まれます。 ハードウェアへコンパイルしようとしているプロセスは、HelloWorld_hw.c に下記のように記述されていま す: void say_hello(co_stream hello_out, co_parameter arg) このハードウェアプロセスは、コンパイルタイムパラメータ arg の値に従い、データを出力ストリーム (hello_out hello_out)に単純に出力します。 hello_out HelloWorld_hw.c ファイルの中で、ハードウェアプロセスは、hello_out 出力ストリームと対応するソフトウ ェアプロセス hear_hello 入力ストリームとの接続を定義する configuration function(config_hello)を持 ちます。 hear_hello(HelloWorld_hw.c の最初の方で extern function として宣言されている)プロセスはソースファ hear_hello イル HelloWorld_sw.c の中で定義されています。このプロセスはコンパイルされると、PowerPC プロセッサに ロードされ、自動生成されたハードウェア/ソフトウェア・インタフェース経由で FPGA ハードウェア部と通 信を行います。今回のチュートリアルの場合、ソフトウェアプロセスはハードウェアプロセスの出力するデー タをストリーム経由で単純に読み込みます。 (典型的な Impulse C アプリケーションでは、関連するハードウ ェアプロセスからの複数の入力/出力ストリームがあります。 ) もう一つのソースファイル HelloWorld.c には、アプリケーションの main 関数が含まれます。この main function は、ローレベルの configuration file について Impulse C ファンクション co_initialize()を経由 co_initialize() して言及しています。また、co_initialize() co_initialize()は co_initialize() HelloWorld_hw.c の中で extern function として宣言されて います。 Hello World ソースコード HelloWorld_sw.c //////////////////////////////////////////////////////////// // Copyright (c) 2003, Impulse Accelerated Technologies, Inc. // All Rights Reserved. // // HelloWorld_sw.c: Process to be executed on the target CPU. // #include "co.h" #include "cosim_log.h" #include <stdio.h> 34 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc #ifdef IMPULSE_C_TARGET #define printf xil_printf #endif void hear_hello(co_stream hello_in) { int i; int hi = 0; IF_SIM(cosim_logwindow log = cosim_logwindow_create("hear_hello");) co_stream_open(hello_in, O_RDONLY, INT_TYPE(32)); printf("CPU listening for hello...¥n¥r"); for ( i = 0; i < 10; i++ ) { co_stream_read(hello_in, &hi, sizeof(int)); printf("FPGA hardware says: %d¥n¥r", hi); } co_stream_close(hello_in); } HelloWorld_hw.c ////////////////////////////////////////////////////////////// // Copyright (c) 2003, Impulse Accelerated Technologies, Inc. // All Rights Reserved. // // HelloWorld_hw.c: Hardware processes and configuration code. // #ifdef WIN32 #include <windows.h> #endif #include <stdio.h> #include "co.h" #define MONITOR #ifdef MONITOR #include "cosim_log.h" #endif // Software process extern void hear_hello(co_stream hello_in); void say_hello(co_stream hello_out, co_parameter arg) { #ifdef MONITOR IF_SIM(cosim_logwindow log_say_hello;) #endif co_int32 count = 0; co_int32 iterations = (co_int32) arg; #ifdef MONITOR IF_SIM(log_say_hello = cosim_logwindow_create("say_hello");) #endif 35 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc co_stream_open(hello_out, O_WRONLY, INT_TYPE(32)); for ( count = 0; count < iterations; count++ ) { co_stream_write(hello_out, &count, sizeof(co_int32)); } co_stream_close(hello_out); } void config_hello(void * arg) { int iterations = (int)arg; co_process say_hello_proc, hear_hello_proc; co_stream hello_stream = co_stream_create("hello_stream", INT_TYPE(32), 8); #ifdef MONITOR IF_SIM(cosim_logwindow_init();) #endif say_hello_proc = co_process_create("say_hello", (co_function)say_hello, 2, hello_stream, 10); hear_hello_proc = co_process_create("hear_hello", (co_function)hear_hello, 1, hello_stream); co_process_config(say_hello_proc, co_loc, "PE0"); } co_architecture co_initialize(int arg) { return co_architecture_create("hello", "xilinx_mb_opb", config_hello, (void *) arg); } HelloWorld.c ///////////////////////////////////////////////////////////// // Copyright (c) 2003, Impulse Accelerated Technologies, Inc. // All Rights Reserved. // // HelloWorld.c: Main function. // #include "co.h" #include <stdio.h> extern co_architecture co_initialize(int arg); int main(int argc, char * argv) { int iterations = 10; co_architecture arch = co_initialize(iterations); co_execute(arch); IF_SIM( 36 - 37 CoDeveloper_SUZAKU_HelloWorld_jp.doc printf("Press any key to continue..."); getc(stdin); ) } 37 - 37