• 検索結果がありません。

uclinux チュートリアル 画像エッジ検出の例

N/A
N/A
Protected

Academic year: 2021

シェア "uclinux チュートリアル 画像エッジ検出の例"

Copied!
40
0
0

読み込み中.... (全文を見る)

全文

(1)

uClinuxチュートリアル

画像エッジ検出の例

(2)

目的

' 実用的な例での実装を体験

' uClinux下での実装評価方法

(3)

uClinux コンソール

(HyperTerminal)

開発システム

Xilinx

®

ISE, EDK

Impulse CoDeveloper™

シリアル・ケーブル パラレル・ケーブ(JTAG) ネットワーク・ケーブル

FTP サーバー

(画像ファイル転送) uClinux Image Filter実装後実装後実装後実装後

の の の の作業内容作業内容作業内容作業内容 1. TIFF 画像の元ファイルをFTP 経由でAlbertにPCから ダウンロード 2. TIFF画像を ソフトで処理 (Microblaze) 3. TIFF画像を ハードで処理 (FPGAハード化 エンジン) 4. 画像処理後の TIFFファイルをFTP経由で V2MB1000からPCに アップロードして結果を見る Xilinx® MicroBlaze™ ソフトコア組み込みプロセッサ上で uClinux が走行 テスト環境、マルチタスク処理を提供

uClinux Image Filter

Memec

Virtex-II 評価ボード V2MB1000

(4)

uClinux SFL BUS構成とペリフェラル

MicroBlaze LMB_BRAM IF_CNTLR OPB_V20 OPB_TIMER SYS_Clk / SYS_Rst OPB_INTC BRAM BLOCK OPB_UART LITE LMB_V10 OPB_ETHERNET PC COM1<=Serial Port Ethernet PHY OPB_SDRAM FPGA    外部外部外部外部ボードボードボードボード上上上上 DDR SDRAM LMB_BRAM IF_CNTLR LMB_V10 I-Side LMB D-Side LMB D-Side OPB I-Side OPB FSL_V20 FSL_V20 fsl_img FPGA    外部外部外部外部ボードボードボードボード上上上上 OPB_MDM PC LPT1<=<=<=<=JTAG Debug OPB_UART LITE Debug Port

(5)

エッジ検出システム方式 1/2

sw/hwの関係

sw process フルカラー画像(24bit)ファイル からデータを読み出し、 そのまま32bit単位で エンジンに送信 hw process edge_detect_process sw process フルカラー画像(24bit)ファイル のデータ部へ 受信データを直接書き込み source TIF/Bitmap file result TIF/ Bitmap file (file_data_out) call_fpga 関数 edge_detect エンジン fromcpu stream source_file_data 32bit tocpu stream result_file_data 32bit call_fpga 関数 hw processes:パイプラインで構成 フルカラー画像(24bit)ファイルの データ列を受信し、エッジ検出結果を フルカラー画像ファイルに直接書き 込めるデータ列として出力 (file_data_in) output_stream input_stream output_stream input_stream

(6)

エッジ検出hwシステム 2/2

istream source_pixel_data 32bit hw process prep_proc 3x3 画素処理の 切り出し処理 hw process edge_detectを4つのプロセスで構成 4段のパイプライン hw process filter 3x3 画素の フィルタリング処理 r2 header_ready Pixels_in prep_run関数 stream 32bit x 3 filter_run関数 ostream result_pixel_data 32bit r0 r2 r1 r2 r1 r0 output_stream input_stream unpack関数 input_stream pack関数 r2 input_stream fromcpu stream source_file_data 32bit tocpu stream result_file_data 32bit row0 row2 row1 output_stream output_stream hw process unpaker fileデータから ピクセルデータに 変換処理 hw process paker ピクセルデータから fileデータに 変換処理

(7)

filter_run関数の 3x3 画像フィルタ

画像フィルタは注目している画素(ピクセル)と

隣接する8画素を加えた3X3に切り出した9画素の

線形演算を基本とする。

例での演算は下図「(8近傍)ラプラシアン・フィルタ」

-1

-1

-1

-1

8

-1

-1

-1

-1

header _ready Pixel s_in

メインループ:1画素/ループ

(8)

prep_run関数

k+1

-n

k

-n

k-1

-n

k+1

k

k-1

k+1

+n

k

+n

k-1

+n

k+2

-n

k+1

-n

k

-n

k-1

-n

k+2

k+1

k

k-1

k+2

+n

k+1

+n

k

+n

k-1

+n

新たに

必要

不要に

なる

header _ready Pixel s_in

メインループ:1画素/ループ

注目画素が

k => k+1 に進んだ時に「

「新

新たに

たに

たに

たに」

演算に必要になる3つの画素を決定して

ストリーム出力

(9)

unpack関数とpack関数

R2

B1

G1

R1

G3

R3

B2

G2

B4

G4

R4

B3

R5

B5

G5

R5

B1

G1

R1

0

B2

G2

R2

0

B3

G3

R3

0

B4

G4

R4

0

………

………

unpack

pack

画像ファイル・データ ピクセル・データ header _ready Pixel s_in

メインループ:4画素/ループ

(10)

hw処理速度の見積もり

Results: unpack -Stages: 7 Block #1 loop: Stages: 5 Operators: 3 Comparator(s) (32 bit) Results: prep_run -Stages: 20 Block #1 loop: Stages: 3 Block #3 loop: Stages: 3 Block #6 loop: Stages: 2 Operators: 4 Adder(s)/Subtractor(s) (32 bit) 4 Comparator(s) (32 bit) Results: filter_run -Stages: 10 Block #1 pipeline: Latency: 8 Rate: 2 Operators: 27 Adder(s)/Subtractor(s) (16 bit) 1 Comparator(s) (32 bit) Results: pack -Stages: 7 Block #1 loop: Stages: 5 Operators: 4 Comparator(s) (32 bit) header _ready Pixel s_in r 2

(11)

hw処理速度の見積もり

unpack:

 4 pixel を 5 stage で処理

=> 8  pixel/10stage

prep_run:

 1 pixel を 2 stage で処理

=> 5 pixel/10stage

filter_run:

 1 pixel を 2 stage で処理

=> 5  pixel/10stage

pack:

 4 pixel を 5 stage で処理

=> 8  pixel/10stage

=> 

2 clock / pixcel

50MHzで24bit 512x512 フルカラー ~ 11ms

header _ready Pixel s_in r 2

(12)
(13)

Lab4での操作内容

uClinux評価環境下のイメージフィルタ(エッジ検出)実装と評価

1. デスクトップシミュレーションのビルドと実行

2. 動作合成

3. Stage Master Explorer

4. 既に用意されているXPSプロジェクトへ、CoDeveloperのファイルを追加 5. XPSプロジェクトを開き、CoDeveloperで作られたハードを追加 6. 論理合成→配置配線→ビットマップファイル生成(バッチ括処理) 7. ハードウェアをダウンロード 8. uClinuxをボードへダウンロード 9. Makefile編集後、ソフトウェア部をコンパイル 10. 評価用入力ファイルとソフトウェアをTFTPでボードへ送る 11. ボード上でエッジ検出を実行 12. ボード上で処理された画像ファイルをPCへ送り確認する

(14)

CoDeveloperのプロジェクトを開く

File→Open Project…

ファイルを開くダイヤログで C(D):¥Impulse¥Lab4¥ImageFilter_uClinux の中にある img.icProjを開きます

(15)

設定確認

Project→Options→Buildタブ

ハードウェアを含むファイル

ソフトウェアを含むファイル

デスクトップシミュレーションに使用さ

れるファイルやコンパイルオプション

シミュレーション実行ファイル名

(16)

設定確認(続き)

Project→Options→Simulateタブ

シミュレーション実行ファイルと実行

ファイルのオプション

(17)

設定確認(続き)

Project→Options→Generateタブ

生成したハードウェアとソフトウェア

の格納ディレクトリ

EDKプロジェクトディレクトリ

→ここで指定したディレクトリ下に

必要なファイルが展開される

(18)

デスクトップ・シミュレーション

Project→Launch Simulation Executable

作業ディレクトリ内にエッジ検出後

の画像出力:result.tiffが生成される

入力:peppers.tiff

(19)

Xilinx XPSのプロジェクト

'Lab4では、既に準備してあるXPS

プロジェクトディレクトリ「uclinux_edk」

を使用します。

'uclinux_edkには、「CoDeveloperか

ら生成・追加されるHW/SW」以外の

全てが既に用意されています。

'以降の作業では、uclinux_edkに

CoDeveloperで生成したHW/SWと追

加していきます。

(20)

ハードウェア・ソフトウェア生成

Project→Generate HDL

Cソースを解析し、ハードウェア化

が行われる。

(21)

EDKプロジェクトへ移行

Project→Export Generated Hardware

Project→Export Generated Software

Project→Options→Generate

で指定したディレクトリ下へ必

要なファイルが展開される

(22)

• 以上でCoDeveloper上での作業は終了です。

• ここまでの作業により、下記が行われました。

' コンフィグレーション関数で指定したプロセス、unpack、

prep_run、filter_run、packをハード化(HDL)

' Xilinxの環境に必要なファイルをCoDeveloperから

Xilinx環境へ移行

• ここからは、既に用意してあるXilinx Platform Studioのプ

ロジェクトを開き、CoDeveloperで作成したハード(fsl_img)

をハードウェアプラットフォームへ追加します。

(23)

XPSのプロジェクトを開く

C(D):¥Impulse¥Lab4¥ImageFilter_uClinux¥uclinux_edk の中にある

(24)

Add/Edit Coreダイヤログを開く

Xilinx Platform Studioの

メニュー[Project]

→[Add/Edit Cores...(dialog)]

を選択

(25)

パラメータの編集

C_FSL_LINKSを1→3へ変更:

イメージフィルタの入力と出力

のStreamの数ぶん

(26)

CoDeveloperで作成したハードをEDK上で追加

CoDeveloperで作成したハードウェ

ア部「fsl_img」がEDKの他IPと供に

リストされている

(27)

バスを追加しfsl_imgをバスへ接続

バスを追加: fsl_v20_v1_00_bを2つ追加 fsl_imgをバスへ接続: microblaze_0 mfsl1とfsl_v20_0を接続(Mが表示) microblaze_0 sfsl2とfsl_v20_1を接続(sが表示) fsl_img_0 sfsl0とfsl_v20_0を接続(sが表示) fsl_img_0 mfsl1とfsl_v20_1を接続(Mが表示)

(28)

ポート追加

fsl_img_0のclkを追加、Net Nameはsys_clk

fsl_v20_0のFSL_Clkを追加、Net Nameはsys_clk

fsl_v20_0のSYS_Rstを追加、 Net Nameはnet_gnd

fsl_v20_1のFSL_Clkを追加、Net Nameはsys_clk

fsl_v20_1のSYS_Rstを追加、 Net Nameはnet_gnd

Net Nameのsys_clkはプルダウンメニューから選択

Net Nameのnet_gndは、直接入力

(29)

配置配線・ビットマップファイル生成

Tools→Generate Bitstream:

論理合成、配置配線、ビットストリー

ム生成が一括処理される

(30)

PCとボードの接続

Hub

uClinuxコンソール

ISE、EDK、 CoDeveloper、 及び画像ファイル

FPGAにインプリメン

トされたMicroBlaze

上でuClinuxが動作

MicroBlaze上の

uClinuxを操作

コンフィグレーションと

FTPサーバ

PC1

PC2

Main boardのcom

ダウンロードケーブル

P160のcom

(31)

ビットマップファイルをダウンロード

Tools→Download:

イメージフィルタ(fsl_img)や

MicroBlaze、その他必要なハードウェ

ア構成がFPGA上に展開される

(32)

ターミナルウィンドウを開く

uClinuxのコンソールウィンドウとな

るターミナルウィンドウを開いておく。

ここでの設定は:115200 8-N-1

拡張ボードP160のCOMポートに繋がるPC

をuClinuxのコンソールマシンとして使用

(33)

Xilinx Xygwinの起動

Startボタン

→すべてのプログラム

→Xilinx Platform Studio 6.3i

→Xygwin Shell

(34)

Xygwinでカーネルダウンロードスクリプトを実行

'Xilinx Xygwinを起動 'uclinux_edkディレクトリまでcdコマンドで移動 'ダウンロードスクリプト「./dl.sh」を実行 uClinuxダウンロード完了後、ター ミナルウィンドウにログインプロン プトが表示されるので、rootでログ イン。

(35)

イメージフィルタ・ソフトウェアをビルド

'Xilinx Xygwinでuclinux_edk下のcodeディレクトリへ移動 'codeディレクトリ内にあるMakefileの環境変数 IMPULSE_HOMEが実際のCoDeveloperまでのパスと一致 している事を確認 'コマンド「make FSL=1」を実行

(36)

• 以上で、FPGAに実装するハードウェア、ソフトウェ

アに対する必要な処理が全て完了しました。

• 続いて、評価ボードを用いた実機検証に移りま

す。

• TFTPという簡易FTPを用いて、エッジ検出ソフト

imgとテスト用画像peppers.tiffをボードへ送り、ボー

ド上でエッジ検出を実行します。

(37)

TFTPのセットアップ

TFTPを起動し、Base Directoryの設定を 「アプリケーションプログラム:img」と 「入力ファイル:peppers.tiff」があるディレクトリ (ここではuclinux_edk)に設定する 実際にはどこにあって もかまいませんが、作 業が楽です。ここでは uclinux_edkへ置くこと にして話を進めます。 TFTPはImageFilter_uClinux¥tftpフォルダにあります。 ファイルtftpd32.exeをダブルクリックすると、プログラム が起動します。

(38)

ftpコマンドでファイル転送

コンソールから下記コマンドを使用してimgとpeppers.tiffを ボードへ送ります: 'cd tmp 'tftp –g –r peppers.tiff ホストPCのアドレス 'tftp –g –r img ホストPCのアドレス 'コマンドlsで、ファイルが転送されている事を確認 •/tmpはRAMディスク •ファイル転送には数秒 要します。

(39)

エッジ検出プログラムの実行

ファイルのアクセス権を変更後、プログラムを実行: 'chmod 777 img

(40)

出力ファイルの確認

結果ファイルの確認の為、results.tiffをPCへ送ります: 'tftp –p –r results.tiff ホストPCのアドレス

参照

関連したドキュメント

在宅医療 注射 画像診断 その他の行為 検査

学期 指導計画(学習内容) 小学校との連携 評価の観点 評価基準 主な評価方法 主な判定基準. (おおむね満足できる

本審議会では、平成 29 年 11 月 28 日に「 (仮称)芝浦一丁目建替計画」環境影

八王子市の一部 (中央自動車道以北で国道16号線以西の区域) 、青梅市、あきる野市、日の出町、檜原村及び奥多摩町 3 管理の目標.

1. 液状化評価の基本方針 2. 液状化評価対象層の抽出 3. 液状化試験位置とその代表性.

○炭素とイオン成分は、Q の Mass を用いて構成比を算出 ○金属成分は、PF の Mass