...

InterLink

by user

on
Category: Documents
35

views

Report

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
Fly UP