Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Shin さんと yama さんから頂いた最新情報(2015/12/06)
uio が Shin さんの報告通りに入らなかったので、Shin さんの方法を本文に追加させて頂きまし
た。更に、yama さんの報告にあったとおりに、ZYBO の U...
・このあと、SD カードに書き込み、ZYBO で linaro-Linux が起動したが、/dev/uio0 が見えなか
った。Ubuntu14.04 でも同じ現象が発生した。
・そこで、devicetree.dts ファイルを編集して、 bo...
Vivado and ZYBO Linux 勉強会資料
(事前準備)
1. ご自分のノートパソコンに、VirtualBox をインストールして下さい。
2. VirtualBox に Ubuntu14.04LTS をインストールして下さい。
3...
(注:Linux に慣れている方は dd コマンドでも可です)
(注:事前準備は必ずやっておいて下さい。なお、Linux 上に Vivado をインストールしないと
Linux 上に ARM プロセッサのツールチェーンが入りません)
6. Wi...
 Xming で X ウインドウを Windows で操作
 OpenCV インストール
 OpenCV サンプル・プログラムのコンパイル+顔認識アプリの実行
 ZYBO 用の Linaro Ubuntu のバージョンを 12.11 か...
2015/2/22
1
ZYNQ-7000の概要
小野雅晃
1
Zynq-7000について
 ARMプロセッサ(PS) + FPGA(PL)
 28nm HPLプロセス
 ロジック部分は7シリーズ相当
 最大1GHz動作のDual Co...
2015/2/22
2
PS
ブロック図
(1)
3
MIO
USB
USB
GigE
GigE
SD
SDIO
SD
SDIO
GPIO
UART
UART
CAN
CAN
I2C
I2C
SPI
SPI
I/O
Peripherals
SR...
2015/2/22
3
PSのシステム機能1
 システム レベル制御レジス タ (SLCR)
 PS の動作を制御する各種レジス タの総称
 ス ヌープ制御ユニ ッ ト (SCU)( L1 と L2 のコ ヒ ー
レ ンシを維持する)
...
2015/2/22
4
PSのメモリ インターフェース
 DDR コ ン ト ローラー
 DDR3、 DDR3L、 DDR2、 LPDDR-2 をサポー ト
 16ビットまたは 32ビット幅
 ECC をサポー ト (16ビットの場合)...
2015/2/22
5
PLの機能1
 7シリーズ互換
 コ ン フ ィ ギ ャ ラ ブル ロ ジ ッ ク ブロ ッ ク (CLB)
 6 入力ル ッ ク ア ッ プ テーブル (LUT)
 メモリ機能、シフトレジスタ
 36Kb ブ...
2015/2/22
6
11
PS
ブロック図
”Zynq-7000 All Programmable
SoC テクニカル リファレンス マ
ニュアル UG585 (v1.7) 2014 年 2
月 11 日” 26ページの図 1-1 :
Zy...
2015/2/22
7
PSとPL間のインターフェース2
 AXI_ACPスレーブ・インターフェース
 64ビットAXIスレーブ1ポート
 SCUに接続されて、CPUとPL間でキャッシュ・コヒーレンシ
を維持
 キャッシュに読み書きでき...
2015/2/22
8
SDKのアドレスマップ
15
引用文献
 Zynq-7000 All Programmable SoC テ ク ニカル リ
フ ァ レ ンス マニュ アル UG585 (v1.5) 2013 年 3
月 7 日
 h...
2015/2/18
1
VIVADOツール
概要
小野 雅晃
1
XilinxのFPGA用ツール概要
 ISE Design Suite14.7
 Spartan-3シリーズ、Spartan-6シリーズ、Virtex-6、7
シリーズ
 ...
2015/2/18
2
Project Navigatorの例
3
PlanAheadの例
4
2015/2/18
3
Vivado
5
ISEとVivadoの違い1
 サポートする言語
 ISE
 Verilog HDL, VHDL
 Vivado
 Verilog HDL, VHDL, SystemVerilog, VHDL...
2015/2/18
4
ISEとVivadoの違い2
 シミュレーション
 ISE
 ISim
 Vivado
 Vivado Simulator(シミュレーション速度が速い>ISim)
 内蔵ロジック・アナライザ
 ISE
 ...
2015/2/18
5
Embedded Design Tool
 IPをつないでいくことで回路を構成
 ISE
 XPS (Xilinx Platform Studio)
 1次元
 IP同士をプルダウンメニューで接続
 Viva...
2015/2/18
6
IP Integrator
11
VivadoでIP Integratorを使おう
 VivadoのIPIを使ってFPGAを構成しよう
 メリット
 IPIでは自動配線してくれるので楽ちん
 IPベースだとViv...
2015/2/18
7
ライブ・コーディング
 午後から一緒にVivadoのIPIを使ってコーディング
しよう
 LED点灯用AXIスレーブIPをウィザードを使って作
りましょう(カスタムIP)
 FPGAボードは、Zynq7010のZY...
2015/2/18
1
LED4 AXI LITE SLAVE
プロジェクト
(ライブ・コーディング)
小野雅晃
1
使用するツール
2
 VirtualBox 4.3.12にインストールした
Ubuntu14.04LTS
 Vivado ...
2015/2/18
2
事前準備
 ZYBO Board Definition FileをDigilent社のZYBOボー
ドサイトからダウンロードする(勉強会では用意し
ておきます)
 http://www.digilentinc.com...
2015/2/18
3
LED4_axi_lite_slave回路ブロック図
5
手順1
6
 Vivadoで新規プロジェクト作成
 ブロック・デザインを新規作成(IP Integrator)
 ARMプロセッサを追加、設定
 LED制...
2015/2/18
4
手順2
7
 LED動作にバグを発見
 IP Packagerを起動してLED制御用カスタムIPを修正
 再度、論理合成、インプリメント、ビットストリーム
の生成
 ハードウェアをエクスポートして、SDK起動
...
2015/2/18
5
Vivado起動
 Create
New
Project
アイコン
をクリッ
クする
9
New Projectダイアログ
 Next >
ボタンをク
リックする
10
2015/2/18
6
Project nameとProject locationを指定
 Project
nameと
Project
locationを
指定する
 Next >
ボタンを
クリックす
る
11
Project Typeの...
2015/2/18
7
Add Sources
 Add
Sources
 Next >ボタ
ンをクリッ
クする
13
Add Existing IP (optional)
 Add
Existing IP
(optional)
 Ne...
2015/2/18
8
Add Contraints (optional)
 Add
Contraints
(optional)
 Next >ボ
タンをク
リックする
15
ZYBOのZynqを選択
 ZYBOの
Zynqを選
択する
...
2015/2/18
9
New Project Summary
 New
Project
Summary
 Finishボタ
ンをクリッ
クする
17
Vivadoの起動
 Vivado
が起動
した
18
2015/2/18
10
IP Vendorの設定1
 Project
Manager
->
Project
Settings
を選択
する
19
IP Vendorの設定2
 左のIPアイコン
をクリックする
 Packagerタブを
...
2015/2/18
11
Block Designの作製
 Flow Manager -
> Create Block
Designをクリック
する
21
Block Designの名前の指定
 Design nameに
LED4と入力する...
2015/2/18
12
LED4ブロック・デザイン
 LED4ブロッ
ク・デザイ
ンが生成さ
れた
 Floatボタン
をクリックし
て、
Diagramウ
インドウを
フローリン
グにする
23
Zynq Processing Syst...
2015/2/18
13
processing_system_0
 processin
g_system
_0が入っ
た
 processin
g_system
_0をダブ
ルクリック
する
25
ZYNQ7 Processing Syst...
2015/2/18
14
Import XPS Settings
 Import
XPS
Settingsボ
タンをク
リックする
 …ボタンを
クリックす
る
 ZYBO_zyn
q_def.xml
を選択し
てOKボタ
ンをクリッ
ク...
2015/2/18
15
Run Block Automation
(processing_system_0)
 processing_
system_0が
変更された
 Run Block
Automation
をクリックす
る
29
R...
2015/2/18
16
DDRとFIXED_IOポートの追加
 DDRと
FIXED_I
Oポート
が追加
された
31
LED4 IPの追加1
(Create and Package IP…)
 Toolsメニュー
からCreate
a...
2015/2/18
17
LED4 IPの追加2
(Create and Package New IP)
 Create
and
Package
New IPダ
イアログ
が開く
 Next >ボ
タンをク
リックす
る
33
LED4 I...
2015/2/18
18
LED4 IPの追加4
(Peripheral Details)
 Nameに
LED4ipと
入力す
る
 Next >ボ
タンをク
リックす
る
35
LED4 IPの追加4
(Add Interfaces)
...
2015/2/18
19
LED4 IPの追加5
(Create Peripheral)
 Next
Steps:で
Edit IPの
ラジオボ
タンをク
リックする
 Finishボタ
ンをクリッ
クする
37
LED4ip_v1_0
...
2015/2/18
20
LED4ip_v1_0.vの修正1
39
 LED4ip_v1_0.vにVerilog HDLコードを追加する
 18行目に“output wire [3:0] LED4bit,”を入力する
LED4ip_v1_0...
2015/2/18
21
LED4ip_v1_0_S_AXI.vの修正1
41
 LED4ip_v1_0_S_AXI.vにVerilog HDLを追加する
 18行目に“output wire [3:0] LED4bit,”を追加
LED4...
2015/2/18
22
LED4ip_v1_0_S_AXI.vの修正3
43
 修正後のLED4ip_v1_0_S_AXI.v
 ファイルをセーブする(セーブ・アイコンをクリック)
LED4ip_v1_0_S_AXI_user_logic...
2015/2/18
23
LED4ip_v1_0_S_AXI_user_logic追加
分.v その245
// LED_Interval_Counter
always @(posedge S_AXI_ACLK) begin : proc_LE...
2015/2/18
24
Ports and Interfaces 1
47
 Package IP – LED4ipタブをクリックする
 Ports and Interfacesをクリックする
 Merge change from Po...
2015/2/18
25
Customization GUI
49
 Customization GUIを選択するとシンボルにLED4
bit[3:0]が追加されている
Review and Package
50
 Review and P...
2015/2/18
26
Add IP
51
 Diagramウ
インドウに
戻る
 右クリックメ
ニューから
Add IP…を
選択する
Add IPダイアログ
52
 Add IPダイアログのSearchテキストボックスにLED
と入...
2015/2/18
27
LED4ip_0のインスタンス
53
 LED4ip_0が
追加された
 Run
Connection
Automation
をクリックす
る
Run Connection Automationダイアログ
54
...
2015/2/18
28
IP追加と自動配線
55
 2つのIPが追加され自動配線が行われた
LED4bit出力ポートの外部出力1
56
 LED4ip_0
のLED4bit
出力ポー
トをクリッ
クする
 右クリック
して右ク
リックメ...
2015/2/18
29
LED4bit出力ポートの外部出力2
57
 LED4bit[3:0]ポートに出力することができた
レイアウトを再生成
58
 Regenerate
Layoutボタン
をクリックし
て、現在のレ
イアウトを破
棄...
2015/2/18
30
Validate Design
59
 Validate Designアイコンをクリックする
 Validate DesignダイアログでOKボタンをクリックする(成功)
 DockボタンをクリックしてVivad...
2015/2/18
31
HDL Wrapperファイルの生成1
61
 Sourcesウインドウ
のSourcesタブをク
リックする
 LED4ブロック・デザ
インを右クリックし
て、右クリックメ
ニューからCreate
HDL Wra...
2015/2/18
32
HDL Wrapperファイルの生成3
63
 LED4_wrapper.vが生成された
論理合成
64
 Flow Navigator -> Run
Synthesisをクリックして
論理合成を行う
2015/2/18
33
論理合成成功
65
 論理合成が成功した
 ダイアログのOpen Synthesized Designラジオボタンをクリックする
 OKボタンをクリックする
I/Oのプランニング
66
 Synthesized...
2015/2/18
34
I/O Stdの変更
67
 I/O PortsウインドウのLED4bit(4)のI/O Stdのdefault(LVCMOS18)の右の
▽をクリックしてLVCMOS33に変更する
Siteの入力
68
 Sit...
2015/2/18
35
69
 Save Constraintsダイアログが開く
 File nameに“LED4_wrapper”と入力する
 OKボタンをクリックする
LED4_wrapper.xdc
70
set_property...
2015/2/18
36
Synthesized Designの終了
71
 SourcesウインドウでSourcesタブをクリックした状態
 Synthesized Designの右端のXをクリックして終了させる
 Confirm Cl...
2015/2/18
37
Bitstream Generation Completed
73
 Bitstream Generation Completedダイアログが開く(成功した)
 Cancelボタンをクリックする
 Feedbac...
2015/2/18
38
Export Hardware
75
 File -> Export ->
Export Hardware...
を選択する
Export Hardwareダイアログ
76
 Export Hardwareダイアロ...
2015/2/18
39
SDK(Software Development Kit)を起動
77
 File -> Launch SDKを選択する
Launch SDKダイアログ
78
 OKボタンをクリックする
2015/2/18
40
SDKが起動した
79
SDK作業の前の準備作業1
80
 配布したか、または共有フォルダのFilesフォルダの下
のled4_axi_lite_slave.cをUbuntuのディレクトリにコ
ピーする。(この資料の...
2015/2/18
41
SDK作業の前の準備作業2
81
 LED4_axi_lite_slaveディレクトリにled4_axi_lite_slave.cをコ
ピー
Application Projectの生成
82
 File -> N...
2015/2/18
42
New Projectダイアログ1
83
 Project nameに
led4_axi_lite_slaveと
入力する
 Next >ボタンをクリッ
クする
New Projectダイアログ2
84
 Ava...
2015/2/18
43
プロジェクト生成完了
85
 led4_axi_lite_slaveとled4_axi_lite_slave_bspプロ
ジェクトができた
86
 ディレクトリに保存しておいたled4_axi_lite_slave...
2015/2/18
44
Cソースのコピー
87
 File OperationダイアログでCopy filesのラジオボタンが
クリックされているのを確認する
 OKボタンをクリックする
 (注)Vivado 2014.4はできているC...
2015/2/18
45
ZYBOの準備
89
 JP7 - VV5V0とUSB間をショートピンでショート
 JP5 - JTAGをショートピンでショート
 PROG UARTのマイクロUSBコネクタからパソコンの
USBコネクタに接続
...
2015/2/18
46
SDKでFPGAをプログラム1
91
 Xilinx Tools -> Program FPGAを選択する
SDKでFPGAをプログラム2
92
 Program FPGAダイ
アログが開く
 デフォルト値でOK...
2015/2/18
47
SDKでFPGAをプログラム3
93
 Progress Informationダイアログが表示される
 FPGAのコンフィグレーションが終わると自動的に
消える
 ZYBOのDONEランプが点灯する
Run C...
2015/2/18
48
Run Configurationの設定2
95
 Xilinx C/C++
application
(GDB)を右ク
リックし、右
クリックメ
ニューから
Newを選ぶ
Run Configurationの設定3
...
2015/2/18
49
gtktermの起動
97
 LX Terminalをも
う1つ立ち上げ、
sudo gtktermコ
マンドを入力す
る
 super userのパ
スワードを聞か
れるので、自分
のパスワードを
入れる
gtk...
2015/2/18
50
ソフトウェアの操作
99
 リターン
キーを
押すと
メッセー
ジが表
示され
る
LED Count Load Registerのロード
(バグ)100
 3キーを
押す
 LED
Count
Load
Reg...
2015/2/18
51
LED Interval Load Registerのロード
101
 4キーを押
す
 LED
Interval
Load
Registerの
ロード
 50000000
を入力
 100MHzク
ロックなの...
2015/2/18
52
ZYBOのLEDカウントの様子
103
AXIカスタムIPの修正
104
 LEDテスト・プロジェクト
 AXIカスタムIPを含むブロック・デザインを実機動作さ
せることができた
 だが、LED Count Lo...
2015/2/18
53
AXIカスタムIPの修正開始
105
 VivadoでLED4ブロック・デザインを表示する
 LED4ip_0を右クリックし、右クリックメニューからEdit in IP Packager
を選択する
Edit in...
2015/2/18
54
LED4ip_v1_0_project
107
 LED4ip_v1_0_projectが開く
LED4ip_v1_0_S_AXI.vのバグを修正
108
 LED4ip_v1_0_S_AXI.vの413行目の“s...
2015/2/18
55
Re-Package IP
109
 Package IP – LED4ipのタブをクリックする
 Review and PackageをクリックしてRe-Package IPボタンをク
リックする
Close P...
2015/2/18
56
Bitstreamの再生成
111
 再度、Flow Navigator ->
Program and Debug ->
Generate Bitstreamをク
リックする
 Synthesis is Out-o...
2015/2/18
57
Export Hardware
113
 File -> Export ->
Export Hardware...
を選択する
Export Hardwareダイアログ
114
 Export Hardwareダイ...
2015/2/18
58
Module Already Exportedダイアログ
115
 Module Already Exportedダイアログが開く
 Yesボタンをクリックする
SDK(Software Development K...
2015/2/18
59
Launch SDKダイアログ
117
 OKボタンをクリックする
SDK起動、ビルド
118
2015/2/18
60
ZYBOの準備
119
 JP7 - VV5V0とUSB間をショートピンでショート
 JP5 - JTAGをショートピンでショート
 PROG UARTのマイクロUSBコネクタからパソコンの
USBコネクタに接続...
2015/2/18
61
SDKでFPGAをプログラム1
121
 Xilinx Tools -> Program FPGAを選択する
SDKでFPGAをプログラム2
122
 Program FPGAダイ
アログが開く
 デフォルト値で...
2015/2/18
62
SDKでFPGAをプログラム3
123
 Progress Informationダイアログが表示される
 FPGAのコンフィグレーションが終わると自動的に
消える
 ZYBOのDONEランプが点灯する
Run ...
2015/2/18
63
Run Configurationの実行2
125
 Runボタ
ンをクリッ
クし、ソフ
トウェア
を起動す
る
gtktermの起動
126
 LX Terminalをも
う1つ立ち上げ、
sudo gtkter...
2015/2/18
64
gtktermの設定
127
 Configuration -> Local echoを選択し、チェックを入れる
 Configuration -> Portを選択する
 Port:/dev/ttyUSB1、Ba...
2015/2/18
65
LED Count Load Registerのロード
129
 3キーを
押す
 LED
Count
Load
Register
のロード
 0x4を入
力した
 ZYBOの
LEDは消
灯、点灯、
消灯、消...
2015/2/18
66
LEDカウント起動
131
 2を押すとLEDのカ
ウントが開始され
る
 もう一度2を押すと
LEDのカウントは
止まる
 5を押すとソフト
ウェアが終了する
 gtktermを終了す
る
 (注)LEDカ...
2015/2/18
67
led4_axi_lite_slave.c (1/3)
133
/*
* led4_axi_lite_slave.c
*
* Created on: 2013/12/16
* Author: Masaaki
*/
#i...
2015/2/18
68
led4_axi_lite_slave.c (3/3)
135
case '3' : // Set LED Counter Load Register (4bits, Please input hexadecimal)...
1 | 86
ZYBO Linux ハンズオン資料
ZYBO Linux ハンズオン資料
(注)実行するコマンドは赤字で表示します。
内容
ZYBO Linux ハンズオン資料 ....................................
2 | 86
ZYBO Linux ハンズオン資料
3 | 86
ZYBO Linux ハンズオン資料
1.ZYBO 用 u-boot のビルド 1
1.LXDE のスタートから、アクセサリ-> LXTerminal で LXTerminal を起動する。
2.ZYBO_Linux ディレクトリ...
4 | 86
ZYBO Linux ハンズオン資料
6.ZYBO 用の設定値を反映するため、コンフィギュレーションを行う。
make CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zybo_confi...
5 | 86
ZYBO Linux ハンズオン資料
9.u-boot を u-boot.elf としてコピーした。
cp u-boot u-boot.elf
6 | 86
ZYBO Linux ハンズオン資料
2. SDK で Boot.bin を作製
1. LXTerminal で xsdk と入力し、SDK を立ち上げる。
2. Workspace Lanucher ダイアログが起動する。
3....
7 | 86
ZYBO Linux ハンズオン資料
7. SDK が立ち上がった。
8. File -> New -> Application Project を選択する。
9. New Project ダイアログが開く。
10. File n...
8 | 86
ZYBO Linux ハンズオン資料
13. Available Templates から Zynq FSBL を選択して、Finish ボタンをクリックする。
14. FSBL プロジェクトと FSBL_bsp プロジェクトが生...
9 | 86
ZYBO Linux ハンズオン資料
15. FSBL プロジェクトで右クリックして、右クリックメニューから Create Boot Image を選択する。
16. Create Zynq Boot Image ダイアログが開く...
10 | 86
ZYBO Linux ハンズオン資料
18. Brows ボタンをクリックする。
19. 出てきたダイアログで、“2. SDK で Boot.bin を作製”で生成した u-boot.elf を指定する。
20. OK ボタンを...
11 | 86
ZYBO Linux ハンズオン資料
23. LED4_axi_lite_slave.sdk/FSBL/bootimage の下に Boot.bin が生成された。
24. SDK を終了する。
12 | 86
ZYBO Linux ハンズオン資料
3. ZYBO 用 Linux カーネルのビルド 2
注:FPGA の部屋、“ZYBO 用の Embedded Linux チュートリアル7(Linux カーネルのビルド)”の
画像を使用し...
13 | 86
ZYBO Linux ハンズオン資料
7. Linux カーネルのコンパイルを行った。(i5 プロセッサで 10 分程度)
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi...
14 | 86
ZYBO Linux ハンズオン資料
9. uImage を作製するために、u-boot-Digilent-Dev/tools ディレクトリへのリンクが必要なので、
PATH を設定する。(本来の PATH の指定は絶対パスで行...
15 | 86
ZYBO Linux ハンズオン資料
16 | 86
ZYBO Linux ハンズオン資料
4. デバイス・ツリーのコンパイル
1. ファイルマネージャーで、Linux-Digilent-Dev/arch/arm/boot/dts ディレクトリを表示する。
2. その中の zynq...
17 | 86
ZYBO Linux ハンズオン資料
5. 55 行目の operating-points を以下の様に変更した。3
operating-points = <650000 1000000>;
333 行目から 336 行目まで、...
18 | 86
ZYBO Linux ハンズオン資料
compatible = "generic-uio";
reg = < 0x43c00000 0x10000 >;
};
6. zynq-zybo.dts にセーブし(セーブ・アイコンを使用...
19 | 86
ZYBO Linux ハンズオン資料
5. Micro SD カードのフォーマット
Micro SD カードは必ず Class10 以上で、8GB 以上の物を用意ください。
新品でフォーマット済みの Micro SD カードを使...
20 | 86
ZYBO Linux ハンズオン資料
6. Micro SD カードにパーティションを作る 5
1. VirtualBox のデバイス -> USB デバイス -> Generic USB2.0 Device を選択する
2. ...
21 | 86
ZYBO Linux ハンズオン資料
4. LXTerminal を起動する。
5.
lsblk コマンドを実行して、SD カードを検索した。
6. /dev/sdb が SD カードのようだ。異なる名前の場合は sdb を入れ...
22 | 86
ZYBO Linux ハンズオン資料
8.
sudo fdisk /dev/sdb コマンドを実行して SD カードのフォーマットを開始した。
9. p コマンドで既存のパーティションを表示した。FAT32 パーティションが生成...
23 | 86
ZYBO Linux ハンズオン資料
プライマリ・ディスクのパーティション番号 1 に 64MB の領域を確保する
12. n コマンドで新たにパーティションを作製した。
13. p を押して、primary パーティションを指...
24 | 86
ZYBO Linux ハンズオン資料
プライマリ・ディスクのパーティション番号 1 を FAT32 にして、ブート可能フラグを付ける
24. t コマンドを入力した。
25. パーティション番号に 1 を入力した。
26. 16...
25 | 86
ZYBO Linux ハンズオン資料
31.
sudo mkfs.msdos -n ZYBO_BOOT /dev/sdb1 コマンドを実行し、パーティション1を FAT 形式
にフォーマットする。12
32.
sudo mkfs...
26 | 86
ZYBO Linux ハンズオン資料
27 | 86
ZYBO Linux ハンズオン資料
7. Ubuntu の ROOT File System を Micro SD カードへコピー6
1. VirtualBox のデバイス -> USB デバイス -> Generic USB...
28 | 86
ZYBO Linux ハンズオン資料
4. LXTerminal を起動する。
5. ZYBO_Linux ディレクトリに入る。
cd ZYBO_Linux
6. /linaro-precise-ubuntu-desktop-2...
29 | 86
ZYBO Linux ハンズオン資料
8. Ubuntu の root file system を SD カードに書き込む。(注:/media/ono/ROOT_FS は自分のユー
ザーでの ROOT_FS のマウントパスを指定...
30 | 86
ZYBO Linux ハンズオン資料
8. FAT32 パーティションへ必要なファイルをコピー
1. VirtualBox のデバイス -> USB デバイス -> Generic USB2.0 Device を選択する。
(マ...
31 | 86
ZYBO Linux ハンズオン資料
4. “2. SDK で Boot.bin を作製”で作製した BOOT.bin を Micro SD カードの ZYBO_BOOT ドライ
ブにコピーする。(BOOT.bin のパス:~/...
32 | 86
ZYBO Linux ハンズオン資料
6. “4. デバイス・ツリーのコンパイル”で作った devicetree.dtb を ZYBO_BOOT ドライブにコピー
する。(devicetree.dtb のパス:~/ ZYBO_L...
33 | 86
ZYBO Linux ハンズオン資料
示す。
11. MicroSD カードを取り外そう。
ZYBO_BOOT ドライブを右クリックして、右クリックメニューから“リムーバブル・メディアを
取り出す”を選択して、Micro SD ...
34 | 86
ZYBO Linux ハンズオン資料
9. ZYBO に SD カードを入れて Linux をブート
(注)ZYBO の USB シリアルのドライバが Windows に入っていない場合は、FTDI Chips の VCP
Dr...
35 | 86
ZYBO Linux ハンズオン資料
7. ボー・レート 115200bps、データ 8bit、パリティ none、ストップ 1bit、フロー制御 none に設定
する。
8. 下図のようにプロンプトが出てくるはずだ。出てこな...
36 | 86
ZYBO Linux ハンズオン資料
9. ZYBO にはタイマーIC がないので、時刻が設定されていない。後で NTP をインストールするまで
は、date コマンドで日時を入力しよう。(date MMDDHHmm[[CC]Y...
37 | 86
ZYBO Linux ハンズオン資料
10. ユーザーでログイン
1. 今までは root でコマンドを実行したが、ユーザー・アカウントでログインする。ユーザー名 linaro
のユーザーが既に登録されているので、ログインする。...
38 | 86
ZYBO Linux ハンズオン資料
39 | 86
ZYBO Linux ハンズオン資料
11. LED をカウントアップするソフトウェアを実行(UIO の実習)8
1. デバイス・ツリーの UIO が有効になっているか?を調べる。
2.
su – linaro コマンドを実行し...
40 | 86
ZYBO Linux ハンズオン資料
6.
cd uio/uio0; ls コマンドを実行して、/sys/devices/soc0/amba@0/43c00000.led4_axi_lite_slave
/uio/uio0 ディ...
41 | 86
ZYBO Linux ハンズオン資料
8. sys ディレクトリを見た所で、cd ~/Apps コマンドでホームディレクトリの下の Apps ディレクト
リに戻る。
9.
vi led4_axi_lslave_linux.c コ...
42 | 86
ZYBO Linux ハンズオン資料
16.
./led4_axi_lsalve_linux コマンドを実行する。
17. /dev/uio0 open error でエラー終了してしまう。
18.
ls -l /dev/uio...
43 | 86
ZYBO Linux ハンズオン資料
19.
sudo chmod 666 /dev/uio0 コマンドで、uio0 に、一般ユーザーに w パーミッションを与えた。
(注:ZYBO の電源を消すと/dev/uio0 の設定は消...
44 | 86
ZYBO Linux ハンズオン資料
22. 4 キーとリターンキーを押して、LED Interval Register を設定する。
23. 50000000 をタイプして、リターンキーを押す。このレジスタは LED のカウン...
45 | 86
ZYBO Linux ハンズオン資料
25. led4_axi_lsalve_linux ソフトウェアを終了しても LED のカウントは終了しない。ハードウェアが
LED のカウントを実行しているからだ。
26. LED のカウ...
46 | 86
ZYBO Linux ハンズオン資料
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <assert.h>
#include <sys/mm...
47 | 86
ZYBO Linux ハンズオン資料
printf("TeraTerm: Please Set Local Echo Mode.¥n");
printf("Press '1' to show all registers¥n");...
48 | 86
ZYBO Linux ハンズオン資料
led4_base[1] = val;
printf(" ¥n");
break;
case '4' : // Set LED Interval Register (32bits, Plea...
49 | 86
ZYBO Linux ハンズオン資料
12. NTP のインストール
1. ルーターから LAN ケーブルを ZYBO に接続する。DHCP 接続とする。(PC から USB ケーブルで
ZYBO の PROG/UART ポート...
50 | 86
ZYBO Linux ハンズオン資料
でログインしている時は、sudo su コマンドで root ユーザーに変更する)
7. date コマンドを実行すると、時刻は NTP であっていたが、タイムゾーンが UTC になっていた...
51 | 86
ZYBO Linux ハンズオン資料
9.
sudo vi /etc/ntp.conf で NTP サーバーの設定を行う。9
10. server 0 ~ server 3 の先頭に#を追加してコメントに変更した。
11. その...
52 | 86
ZYBO Linux ハンズオン資料
13. SSH のインストール
1.
apt-get install ssh で SSH をインストールする。インストールするか聞かれたら Y を押す。
2.
vi /etc/ssh/ssh...
53 | 86
ZYBO Linux ハンズオン資料
6. ifconfig を行って、DHCP で振られた IP アドレスを確認する。
7. 今の状態では、192.168.3.10 が割り振られている。
8. Tera Term をもう 1 ...
54 | 86
ZYBO Linux ハンズオン資料
10. SSH 認証ダイアログが出て、更に、セキュリティ警告が出る。
11. セキュリティ警告で、続行ボタンをクリックする。
12. SSH 認証ダイアログで、ユーザ名に linaro パス...
55 | 86
ZYBO Linux ハンズオン資料
56 | 86
ZYBO Linux ハンズオン資料
14. Xming で X ウインドウを Windows で操作
Xming X Server for Windows というツールを使用する。これを Windows パソコンにインストール...
57 | 86
ZYBO Linux ハンズオン資料
6. Finish configuration で、完了ボタンをクリックした。
7. すると、タスクトレイに、Xming Server が入っている。
8. ZYBO の Linux に移動...
58 | 86
ZYBO Linux ハンズオン資料
12. SSH ポート転送のダイアログで、”X クライントアプリケーションの転送 リモートの(X)アプリ
ケーションをローカルの X サーバーの表示する”にチェックを入れる。
13. OK ...
59 | 86
ZYBO Linux ハンズオン資料
60 | 86
ZYBO Linux ハンズオン資料
15. OpenCV インストール
1. linaro ユーザーで SSH を使用してログインする。
2. OpenCV をインストールする前の事前準備のために opencv_pre_ins...
61 | 86
ZYBO Linux ハンズオン資料
6. 下のコマンドを実行する。(make は長い時間が掛かる)10
tar xvzf opencv-2.4.6.1.tar.gz
cd opencv-2.4.6.1
mkdir build
...
62 | 86
ZYBO Linux ハンズオン資料
7. 結果は 48%だった。OpenCV 2.4.6.1 をインストールする前は 27%だった。
8. コンパイル結果が要らない場合は、make clean を実行するとディスク容量が減る。...
63 | 86
ZYBO Linux ハンズオン資料
sudo apt-get -yV install zlib1g-dev zlib1g-dbg
sudo apt-get -yV install v4l2ucp
#
sudo apt-get ...
64 | 86
ZYBO Linux ハンズオン資料
16. OpenCV サンプル・プログラムのコンパイル+顔認識アプリの実行
1. OpenCV の samples/c ディレクトリに入る
cd ../samples/c
2. サンプル・プ...
65 | 86
ZYBO Linux ハンズオン資料
66 | 86
ZYBO Linux ハンズオン資料
17. ZYBO 用の Linaro Ubuntu のバージョンを 12.11 から 14.04 LTS にアップグレード(おまけ)
なお、Ubuntu14.04LTS にできたのだが、シリ...
67 | 86
ZYBO Linux ハンズオン資料
4. デフォルトが Don't touch Keymap だったので、そのままにして、右向き矢印キーを押して を選
択してからエンター・キーを押した。
5. /etc/legal の Con...
68 | 86
ZYBO Linux ハンズオン資料
6. エラーが起こったアプリケーションが表示されたが、アップグレードは完了した。エンター・キー
を押した。
7. もう一度、起動すると、Ubuntu 14.04 LTS が表示された。アップ...
69 | 86
ZYBO Linux ハンズオン資料
ここからは、いろいろとトライしてみたので記憶が曖昧だが、表示をよく読んで、なんというコマンド
を使うと良いよ。。。という提案の通りにコマンドを使った。
使ったコマンドは、
強制的にパッケージ...
70 | 86
ZYBO Linux ハンズオン資料
root@linaro-ubuntu-desktop:~# sudo apt-get clean
root@linaro-ubuntu-desktop:~# df
Filesystem 1K...
71 | 86
ZYBO Linux ハンズオン資料
2016/02/12:追記
2015 年 12 月以降、Linux カーネルのバージョンが新しくなってからは Ubuntu 14.04 LTS にアップ
グレードは素直にできるようになった。...
72 | 86
ZYBO Linux ハンズオン資料
18. ARMhf の Root File System を入れる(おまけ)
ARMhf の Downloads(http://www.armhf.com/download/)の Root ...
73 | 86
ZYBO Linux ハンズオン資料
ID は debian パスワードも debian でログインできた。
df コマンドを実行すると、5% ほど使用している。
74 | 86
ZYBO Linux ハンズオン資料
top コマンドを実行すると、52 KB ほどメモリを使用している。Linaro Ubuntu の 1/3 程度だが、
デーモン(って今言わないのかな?)が動いていないせいもあるはず。。。
...
75 | 86
ZYBO Linux ハンズオン資料
もう一度、MicroSD カードを ZYBO に入れて、電源を ON した。
SSH でログインして、sudo apt-get update を実行したら動作した。因みに、これは 2 度目で...
76 | 86
ZYBO Linux ハンズオン資料
sudo apt-get upgrade で既存のモジュールをアップデートした。
オーナーとグループが root なので、debian に変更する。
cd /home
sudo chown ...
77 | 86
ZYBO Linux ハンズオン資料
gedit コマンドで、gedit を起動すると、今度は起動した。
ZYBO で Debian Wheezy 7.5 も使うことができるようになった。
ZYBO の ARMhf の Debi...
78 | 86
ZYBO Linux ハンズオン資料
sudo apt-get -yV build-dep opencv
#
sudo apt-get -yV install libqt4-dev
sudo apt-get -yV instal...
Vivado and zybo_linux勉強会資料2
Vivado and zybo_linux勉強会資料2
Vivado and zybo_linux勉強会資料2
Vivado and zybo_linux勉強会資料2
Vivado and zybo_linux勉強会資料2
Vivado and zybo_linux勉強会資料2
Vivado and zybo_linux勉強会資料2
Vivado and zybo_linux勉強会資料2
Upcoming SlideShare
Loading in …5
×

Vivado and zybo_linux勉強会資料2

6,428 views

Published on

Vivado and ZYBO Linux勉強会の資料です。
項目は、
Zynq-7000の概要
Vivadoツール概要
LED4_axi_lite_slave プロジェクトをウィザードで作製
ZYBOハンズオン資料
です。
VirtualBox上にUbuntu14.04LTSをインストールして、そこにLinux版のVivado 2014.4 WebPACKをインストールすることが出来る人に対象を限定します。

Published in: Technology
  • 2016年1月12日 "ZYBO_zynq_def.xmlの入手について"を2ページ目に追加しました。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • 資料の追加情報は以下のURLをご覧ください。http://marsee101.blog19.fc2.com/blog-entry-3079.html
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • ギムスハンさん、こんにちは。ダウンロードはできません。しかし、Vivado and ZYBO Linux勉強会資料3をアップロードしました。こちらのほうが見やすいと思います。 http://www.slideshare.net/marsee101/vivado-and-zybo-linux3
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • 私は韓国のギムスハンと呼ばれます。 FPGA初心者です。 FPGA複数のサイトを参考に探してみました。 そうするうちに、あなたのサイトを見つけました。 サイトを参考にしながら勉強します。 最近AXIバスを利用したFPGAの作業を進めています。 しかしながら、現在の作業が円滑に進行されていません。 あなたのサイトから関連する勉強会PPTファイルをSlideshareでみました。 プリントアウトしてみたいと思います。関連資料をダウンロードまたは印刷できないでしょうか? 参考までに、Zybo Boardを利用してVerilogで作業をみました。 最終的にFPGAを利用して、モータ制御や画像処理をしようとします。 お願いいたします。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • LED4ip_v1_0_S_AXI_user_logic追加分.v と led4_axi_lite_slave.c と led4_axi_lslave_linux.c はここに置いてあります。 http://marsee101.blog19.fc2.com/blog-entry-3080.html
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Vivado and zybo_linux勉強会資料2

  1. 1. Shin さんと yama さんから頂いた最新情報(2015/12/06) uio が Shin さんの報告通りに入らなかったので、Shin さんの方法を本文に追加させて頂きまし た。更に、yama さんの報告にあったとおりに、ZYBO の Ubuntu 12.10 の/sys/devices の下の uio の デ ィ レ ク ト リ 位 置 が 変 わ っ て い た の で 変 更 し ま し た 。 最 新 情 報 は 変 わ ら ず に http://marsee101.blog19.fc2.com/blog-entry-3079.html のコメント欄にあるので参照下さい。 yama さんの最新情報(2015/12/04) yama さんから頂いた最新情報が http://marsee101.blog19.fc2.com/blog-entry-3079.html のコ メント欄にあります。中でも貴重なのが Ubuntu の ROOT FS のダウンロード URL が変更にな ったことです。yama さんありがとうございました。 ZYBO Linux ハンズオン資料は修正してあります。 Shin さんから頂いた最新情報(2015/08/28) Shin さんが FPGA の部屋のブログ「Vivado and ZYBO Linux 勉強会を開催」のコメントとして 「ArchLinux で 「Vivado and ZYBO Linux 勉強会資料3」 をやってみました。」というコメン トを書いてくれました。 最近の Linux-Digilent-Dev では、drivers/uio/uio_pdrv_genirq.c の generic-uio が削除されてい るようだという情報とその解決方法も書いてくれました。これからこのチュートリアルをやるに あたって貴重な情報になると思います。以下にその全文を掲載させていただきます。 Shin さん、本当にありがとうございました。 ArchLinux で 「Vivado and ZYBO Linux 勉強会資料3」 をやってみました。 FPGA 初心者です。7 月に ZYBO を入手しました。目的はオーディオ音質向上のためです。FPGA で信号処理をして I2S で ADC/DAC とつなげば有利と思って勉強中です。 インストール環境は、Windows7 64bit に VirtualBox を入れて、そこに archlinux-2015.08.01-dual.iso をインストールしました。 ArchLinux では幾つか壁がありました。 ・Vivado(2014.4)を走らせるために、デスクトップ環境として xfce4 を導入した。 ・Vivado ライセンスを取得するために、ip add tuntap dev eth0...で擬似の eth0 と MAC アドレ スを設定し、xlicclientmgr でライセンスが取得出来た。 ・64bit 環境で 32bit を走らせるため、lib32-glibc lib32-ncurses lib32-libstdc++5 をインストー ルした。 ・LED4 の点滅することを確認した。 ・u-boot-Digilent-Dev のクロスコンパイルでエラー発生。python3 を削除して、python2 をイン ストールした。 ・Linux-Digilent-Dev のクロスコンパイルでエラー発生。bc をインストールした。
  2. 2. ・このあと、SD カードに書き込み、ZYBO で linaro-Linux が起動したが、/dev/uio0 が見えなか った。Ubuntu14.04 でも同じ現象が発生した。 ・そこで、devicetree.dts ファイルを編集して、 bootargs = ".... uio_pdrv_genirq.of_id=generic-uio"を追加したら、/dev/uio0 が見えた。 これを見つけるまで、かなり苦労しました。 どうやら、最近の Linux-Digilent-Dev では、drivers/uio/uio_pdrv_genirq.c の generic-uio が削 除されているようです。 ここに情報があります。 https://github.com/Xilinx/linux-xlnx/commit/7ebd62dbc727ef343b07c01c852a15fc4d9cc9e5 ZYBO_zynq_def.xml の入手について(2016/01/12) ZYBO_zynq_def.xml が必要なのですが、Digilent 社のサイトには無くなってしまいました。で すが、fpga-zynq/zybo/src/xml/ZYBO_zynq_def.xml (https://github.com/ucb-bar/fpga-zynq/blob/master/zybo/src/xml/ZYBO_zynq_def.xml) にあり ました。ここのコードをコピー&ペーストして、ZYBO_zynq_def.xml として保存すれば使える と思います。 ZYBO はボードの定義ファイルを Vivado のフォルダにコピーして使用するようになりました。 そのやり方は、FPGA の部屋の記事の“Digilent 社のボード・ファイルのインストール” (http://marsee101.blog19.fc2.com/blog-entry-3365.html) を御覧下さい。 Ubuntu 14.04 LTS にアップグレードした際のシリアルターミナルでエコーバックさ れない問題の解決方法(2016/02/12) Ubuntu 14.04 LTS にアップグレードしてから、apt-get update, apt-get upgrade すると、Tera Term などでシリアルターミナルを使用した場合に、自分でタイプした文字がエコーバックされな いという現象がある。それは、「CTRL+D」で再度自動ログインするとエコーバックされるように なる。(@YuuichiAkagawa さん、アドバイスありがとうございました)
  3. 3. Vivado and ZYBO Linux 勉強会資料 (事前準備) 1. ご自分のノートパソコンに、VirtualBox をインストールして下さい。 2. VirtualBox に Ubuntu14.04LTS をインストールして下さい。 3. Ubuntu14.04LTS 上に Vivado2014.4 をインストールして下さい。 (ア) インストール上の注意については、「VirtualBox 上の Ubuntu14.04LTS に Vivado 2014.4 をインストールし起動する時の覚書」 http://marsee101.blog19.fc2.com/blog-entry-2998.html と、 「リリース ノート 、 インストールおよびライセンス UG973 (v2014.4) 2014 年 11 月 19 日」 http://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2014_4/ug973-vi vado-release-notes-install-license.pdf を参照下さい。 4. 8GB Class10 の MicroSD カード 1 枚を用意して下さい。(必ず Class10 の MicroSD カード をご用意下さい) 5. MicroSD カードの入るメモリカードのリーダー/ライターを用意して下さい。 注:MicroSD カードスロットのあるノートパソコンを持っている場合でも、USB 接続でな いと VirtualBox でマウントできません。100 円ショップで売っているメモリカードのリーダ ー/ライターで十分ですが、通常のメモリカードのリーダー/ライターを持っている方はそれを お持ち下さい。  セリアで売っている USB 2.0 対応カードリーダースティックは Ubuntu のルート・ファ イル・システムをコピーしている間にエラーが発生しました。  ダイソーのマルチ・カードリーダーライターは Ubuntu のルート・ファイル・システム をコピーしても問題なかったので、これを推奨します。
  4. 4. (注:Linux に慣れている方は dd コマンドでも可です) (注:事前準備は必ずやっておいて下さい。なお、Linux 上に Vivado をインストールしないと Linux 上に ARM プロセッサのツールチェーンが入りません) 6. Windows の方は https://www.sdcard.org/jp/downloads/formatter_4/eula_windows/ から SD フォーマッター4.0 をダウンロードしておいて下さい。 Mac OS の方は https://www.sdcard.org/jp/downloads/formatter_4/eula_mac/ から SD フォ ーマッター4.0 をダウンロードしておいて下さい。 失敗した時にフォーマットするために使います。 勉強会の概要:  1 日目午前:Zynq-7000 の概要、Vivado ツールについて  2 日目午後:LED テストプロジェクトをライブコーディング(Vivado のウィザードで AXI カスタム IP を作る)  2 日目午前、午後 ハンズオン  ハードウェアは、1 日目の Vivado プロジェクトを使用する  ZYBO 用 u-boot のビルド  SDK で Boot.bin を作製  ZYBO 用 Linux カーネルのビルド  デバイス・ツリーのコンパイル  Micro SD カードのフォーマット  Ubuntu の ROOT File System のコピー  FAT32 パーティションへ必要なファイルをコピー  ZYBO に SD カードを挿して Linux をブート  ユーザーでログイン  LED をカウントアップするソフトウェアを実行(UIO の実習) 勉強会で行うのはここで終了です。 家でできるようにマニュアルを書いておこうと思っています。  NTP のインストール  SSH のインストール
  5. 5.  Xming で X ウインドウを Windows で操作  OpenCV インストール  OpenCV サンプル・プログラムのコンパイル+顔認識アプリの実行  ZYBO 用の Linaro Ubuntu のバージョンを 12.11 から 14.04 LTS にアップグレード (おまけ)  ARMhf の Root File System を入れる(おまけ)
  6. 6. 2015/2/22 1 ZYNQ-7000の概要 小野雅晃 1 Zynq-7000について  ARMプロセッサ(PS) + FPGA(PL)  28nm HPLプロセス  ロジック部分は7シリーズ相当  最大1GHz動作のDual Cortex-A9  ZYBOのZynq-7010は650MHz  PS(Processing System)とPL(Programming Logic)はAXIバス で接続  PS部分にDDRコントローラ、豊富なI/Oペリフェラル  FPGAはARMプロセッサのスレーブ  ARMプロセッサがブートして、FPGAをコンフィグ  FPGA単体ではブート出来ない 2
  7. 7. 2015/2/22 2 PS ブロック図 (1) 3 MIO USB USB GigE GigE SD SDIO SD SDIO GPIO UART UART CAN CAN I2C I2C SPI SPI I/O Peripherals SRAM/ NOR Memory Interface ONFI1.0 NAND Q-SPI CTRL FPU and NEON Engine ARM Cortex-A9 CPU MMU 32 KB I-Cache 32 KB D-Cache GIC Snoop Controller, AWDT, Timer FPU and NEON Engine ARM Cortex-A9 CPU MMU 32 KB I-Cache 32 KB D-Cache 512KB L2 Cache & Controller Clock Generation Reset Central Interconnect SWDT TTC System Level Control Regs DMA 8 Chanel OCM Interconnect 256K SRAM CoreSight Componets Application Processor Unit DAP DevC Programmable Logic to Memory Interconnect Memory Interfaces DDR2/3,3L, LPDDR2 Controller Processing System(PS) 2x USB 2x GigE 2x SD IRQ EMIO DMA Sync General-Pupose Ports IRQ High-Performance Ports ACPXADC 12 bit ADC Config AES/ SHA Programmable Logic(PL) Select IO Resoures AXI 32bit/64bit AXI 64bits AXI 32bit AHB 32bit APB 32bit ・ ・ ・ Custom ”Zynq-7000 All Programmable SoC テクニカル リファレンス マ ニュアル UG585 (v1.7) 2014 年 2 月 11 日” 26ページの図 1-1 : Zynq-7000 AP SoC の概要を参考 にした PSのプロセッサ  ARM v7 に対応し たデュ アル ARM Cortex-A9 MPCore CPU  シングル プロ セ ッ サ、 非対称/対称マルチプロ セ ッ シン グ (AMP/SMP) の各構成を実行時に選択可能  Linux + RTOSも可  NEON™ 128b SIMD コプロ セ ッ サおよび VFPv3 (各 MPCore に 1 つ)  32KB 命令/32KB データ L1 キ ャ ッ シ ュ (各 MPCore に 1 つ、パリティ付き)  512KB 共有可能 L2 キ ャ ッ シ ュ(パリティ付き)  プ ラ イベー ト タ イ マー と ウ ォ ッ チ ド ッ グ タ イ マー 4
  8. 8. 2015/2/22 3 PSのシステム機能1  システム レベル制御レジス タ (SLCR)  PS の動作を制御する各種レジス タの総称  ス ヌープ制御ユニ ッ ト (SCU)( L1 と L2 のコ ヒ ー レ ンシを維持する)  ア ク セ ラ レータ ・コ ヒ ーレ ンシ ・ポー ト (ACP)  PLからキャッシュへのアクセスが可能(OCMも)-コ ヒーレンシを維持したアクセスが可能(ReadはL1、 WriteはL2)  256KB のパ リ テ ィ 付きオンチ ッ プ SRAM (OCM) 5 PSのシステム機能2  DMA コ ン ト ローラー  PS 用に 4 チャ ネル (システム内の任意の メ モ リ と の間で双方向の メ モ リ コ ピー )  PL 用に 4 チャ ネル ( メ モ リ と PL 間)  汎用割 り 込みコ ン ト ローラー (GIC)  ウ ォ ッ チ ド ッ グ タ イ マー、 ト リ プル カ ウ ン ター /タ イ マー 6
  9. 9. 2015/2/22 4 PSのメモリ インターフェース  DDR コ ン ト ローラー  DDR3、 DDR3L、 DDR2、 LPDDR-2 をサポー ト  16ビットまたは 32ビット幅  ECC をサポー ト (16ビットの場合)  データ読み出し ス ト ローブの自動キ ャ リ ブレーシ ョ ン  各データ ビー ト に対する書き込みデータ バイト・イ ネーブルのサポー ト  DDR3 – 1333, 1066、DDR2 – 800, LPDDR2 – 800, DDR  ZYBOはDDR3-1050 x 32ビット、4.20GB/s, 33.6Gb/s  HD解像度のバイトレート148.5MHz x 4B=594MB/s  Quad-SPI コ ン ト ローラー  ス タ テ ィ ッ ク メ モ リ コ ン ト ローラー (SMC)  NAND コ ン ト ローラー  8/16 ビ ッ ト I/O 幅 (1 つのチ ッ プ セレ ク ト 信号)  パラ レル SRAM/NOR コ ン ト ローラー  8 ビ ッ ト データ バス幅 7 PSのI/Oペリフェラル  最大54のGPIO(MIO(Multiplexed I/O)経由)  EMIO(Extended Multiplexed I/O)経由で192のGPIO  ギガビ ッ ト イーサネ ッ ト コ ン ト ローラー (x2)  PSのMIOを仕様(ZedBoard,ZC702)  USB コ ン ト ローラー : ホス ト /デバイス/OTG (x2)  SD/SDIO コ ン ト ローラー (x2)  SPI コ ン ト ローラー (x2) : マス ターまたはスレーブ  CAN コ ン ト ローラー (x2)  UART コ ン ト ローラー (x2)  I2C コ ン ト ローラー (x2) 8
  10. 10. 2015/2/22 5 PLの機能1  7シリーズ互換  コ ン フ ィ ギ ャ ラ ブル ロ ジ ッ ク ブロ ッ ク (CLB)  6 入力ル ッ ク ア ッ プ テーブル (LUT)  メモリ機能、シフトレジスタ  36Kb ブロ ッ ク RAM  最大72ビット幅、デュアルポート  デジ タル信号処理 — DSP48E1 ス ラ イ ス  25 × 18 の 2 の補数乗算器  クロック管理  CMT(Clock Management Tile)  MMCM(Mixed Mode Clock Manager), PLL(Phase Locked Loop)  コ ン フ ィ ギ ャ ラ ブル I/O  HR (High Range) IO は 1.2V ~ 3.3V をサポー ト  HP (High performance) IO は 1.2V ~ 1.8V をサポー ト (7z030、 7z035、7z045、 および 7z100 デバイ ス) 9 PLの機能2  低消費電力ギガビ ッ ト ト ラ ンシーバー (7z015、 7z030、 7z035、7z045、 および 7z100 デバイ ス)  最大 12.5Gb/s の高性能 ト ラ ンシーバー (GTX)  アナロ グ/デジ タル コ ンバーター (XADC)  2 つの 12 ビ ッ ト 、 1MSPS のアナロ グ/デジ タル コ ン バーター (ADC)  最大 17 の柔軟でユーザー設定可能なアナロ グ入力  PCI Express デザイ ン向けのイ ン ターフ ェ イ ス ブロ ッ ク を 統合 (7z030、 7z045、 および 7z100 デバイ ス)  PCI Express Base Specification 2.1 と 互換性があ り 、 エン ド ポ イ ン ト と ルー ト ポー ト 機能に対応  Gen1 (2.5Gb/s) および Gen2 (5.0Gb/s) をサポー ト 10
  11. 11. 2015/2/22 6 11 PS ブロック図 ”Zynq-7000 All Programmable SoC テクニカル リファレンス マ ニュアル UG585 (v1.7) 2014 年 2 月 11 日” 26ページの図 1-1 : Zynq-7000 AP SoC の概要を参考 にした PSとPL間のインターフェース1  AXI_HPスレーブ・インターフェース  32ビット幅または64ビット幅のスレーブ4ポート  ReadとWriteの両方に128x64ビットのFIFOを使用  AXI 3.0 インターフェース(最大16バースト)  14 ~ 70コマンドのRead受け入れ(バースト長による)  8 ~ 32コマンドのWrite受け入れ(バースト長による)  HP0とHP1、HP2とHP3は内部でマルチプレックスされて1つにな る  PLからAXI_HPポートを2つ使用する場合はHP0, HP2を使用  FAXI_MAX 250MHz  HPポート、250MHz x 64ビット(8バイト) = 2.0 GB/s (1.86GiB/s)  AXI_GPマスタ&スレーブ・インターフェース  データバス32ビット幅のマスタ、スレーブそれぞれ2ポート  マスタポートの最大発行数:Read = 8, Write = 8  スレーブポートの最大受け入れ数:Read=8, Write=8 12
  12. 12. 2015/2/22 7 PSとPL間のインターフェース2  AXI_ACPスレーブ・インターフェース  64ビットAXIスレーブ1ポート  SCUに接続されて、CPUとPL間でキャッシュ・コヒーレンシ を維持  キャッシュに読み書きできるのでCPUとのデータ交換のレ イテンシが短い  コヒーレンシの維持には設定が必要  ARVALID と一緒に ARUSER[0] = 1 および ARCACHE[1] = 1  AWVALID と共に AWUSER[0] = 1 および AWCACHE[1] = 1  バースト転送のスループットはAXI_HPポートより少ない  データバス帯域の35 % ~ 71 %  AXI_HPポートは100%  http://marsee101.blog19.fc2.com/blog-entry-2773.html  http://marsee101.blog19.fc2.com/blog-entry-2774.html 13 アドレスマップ 14 ”Zynq-7000 All Programmable SoC テクニカル リファレンス マニュアル UG585 (v1.7) 2014 年 2 月 11 日” 103ページ 表 4-1 : システム レベルのア ド レス マップを引用
  13. 13. 2015/2/22 8 SDKのアドレスマップ 15 引用文献  Zynq-7000 All Programmable SoC テ ク ニカル リ フ ァ レ ンス マニュ アル UG585 (v1.5) 2013 年 3 月 7 日  http://japan.xilinx.com/support/documentation/user_ guides/j_ug585-Zynq-7000-TRM.pdf  Zynq-7000 All Programmable SoC Technical Reference Manual UG585 (v1.6.1) September 10, 2013  http://www.xilinx.com/support/documentation/user_ guides/ug585-Zynq-7000-TRM.pdf 16
  14. 14. 2015/2/18 1 VIVADOツール 概要 小野 雅晃 1 XilinxのFPGA用ツール概要  ISE Design Suite14.7  Spartan-3シリーズ、Spartan-6シリーズ、Virtex-6、7 シリーズ  メンテナンスモード、更新なし  Project Navigator  PlanAhead  Vivado Design Suite 2014.4  7シリーズ  Artix-7, Kintex-7, Virtex-7  Ultra Scale  Kintex UltraScale, Virtex UltraScale 2
  15. 15. 2015/2/18 2 Project Navigatorの例 3 PlanAheadの例 4
  16. 16. 2015/2/18 3 Vivado 5 ISEとVivadoの違い1  サポートする言語  ISE  Verilog HDL, VHDL  Vivado  Verilog HDL, VHDL, SystemVerilog, VHDL2008  制約ファイル  ISE  UCFファイル  Vivado  xdcファイル(SDC( Synopsys Design Constraints)のXilinx版) 6
  17. 17. 2015/2/18 4 ISEとVivadoの違い2  シミュレーション  ISE  ISim  Vivado  Vivado Simulator(シミュレーション速度が速い>ISim)  内蔵ロジック・アナライザ  ISE  ChipScope Pro  Vivado  Vivado Logic Analyzer 7 ISEとVivadoの違い3  Vivado HLS  高位合成ツール  C, C++, SystemCをHDL(IP)へ変換  AXIバスは自動生成(Pragmaで指定) 8
  18. 18. 2015/2/18 5 Embedded Design Tool  IPをつないでいくことで回路を構成  ISE  XPS (Xilinx Platform Studio)  1次元  IP同士をプルダウンメニューで接続  Vivado  IP Integrator  2次元(回路図そっくり)  自動的にIPを追加して配線 9 XPS 10
  19. 19. 2015/2/18 6 IP Integrator 11 VivadoでIP Integratorを使おう  VivadoのIPIを使ってFPGAを構成しよう  メリット  IPIでは自動配線してくれるので楽ちん  IPベースだとVivado HLSが使える  C, C++などで書いたアルゴリズムを簡単にHDLのIPへ  自作カスタムIPも簡単  間違っても簡単に修正可能  AXIバスもウィザートで自動生成してくれる  デメリット  Xilinxのバグの影響を受けやすい 12
  20. 20. 2015/2/18 7 ライブ・コーディング  午後から一緒にVivadoのIPIを使ってコーディング しよう  LED点灯用AXIスレーブIPをウィザードを使って作 りましょう(カスタムIP)  FPGAボードは、Zynq7010のZYBOを使います 13
  21. 21. 2015/2/18 1 LED4 AXI LITE SLAVE プロジェクト (ライブ・コーディング) 小野雅晃 1 使用するツール 2  VirtualBox 4.3.12にインストールした Ubuntu14.04LTS  Vivado 2014.4 Linux版をインストール  あらかじめVirtualBox 4.3.12、Ubuntu14.04LTS、 Vivado 2014.4 Linux版をインストールして来てくだ さい。
  22. 22. 2015/2/18 2 事前準備  ZYBO Board Definition FileをDigilent社のZYBOボー ドサイトからダウンロードする(勉強会では用意し ておきます)  http://www.digilentinc.com/Data/Products/ZYBO/ZYB O_def.zip  zipファイルを解凍すると、ZYBO_zynq_def.xml  ZYBOにおけるZynqの設定を定義したファイル  I/Oどれ使っているとか、入出力信号定義を定義  DDRの設定  クロック設定 3 これから何を作るのか? 4  ZYBOの4個のLEDを2進カウンタとして表示する  LEDはシリアルで制御する  ハード+ソフトで制御  LEDのカウントON/OFF(レジスタ0、オフセット0x0)  ビット0: 0 – 停止、1 – カウント動作  LEDの初期値のセット(レジスタ1、オフセット0x4)  ビット3~0:値のセット  LEDのカウント・インターバル・カウンタ(レジスタ3、オ フセット0xC)  32ビット幅の減算カウント値(100MHzクロック)  50,000,000をセットすると0.5秒間隔でLEDがカウントする
  23. 23. 2015/2/18 3 LED4_axi_lite_slave回路ブロック図 5 手順1 6  Vivadoで新規プロジェクト作成  ブロック・デザインを新規作成(IP Integrator)  ARMプロセッサを追加、設定  LED制御用カスタムIPを追加(AXI4 Lite Slave)  配線  論理合成、インプリメント、ビットストリームの生成  ハードウェアをエクスポートして、SDK起動  SDKプロジェクトを作製(ベアメタル・アプリケーション)  SDKコンパイル  実機テスト
  24. 24. 2015/2/18 4 手順2 7  LED動作にバグを発見  IP Packagerを起動してLED制御用カスタムIPを修正  再度、論理合成、インプリメント、ビットストリーム の生成  ハードウェアをエクスポートして、SDK起動  SDKコンパイル  実機テスト  正常動作を確認 さあ、始めよう  VirtualBox上のUbuntu のLX Terminalを開く  VivadoコマンドでVivado 2014.4を起動 8
  25. 25. 2015/2/18 5 Vivado起動  Create New Project アイコン をクリッ クする 9 New Projectダイアログ  Next > ボタンをク リックする 10
  26. 26. 2015/2/18 6 Project nameとProject locationを指定  Project nameと Project locationを 指定する  Next > ボタンを クリックす る 11 Project Typeの指定  Project Typeを指 定する  デフォルト のRTL Projectの ままとする  Next >ボタ ンをクリッ クする 12
  27. 27. 2015/2/18 7 Add Sources  Add Sources  Next >ボタ ンをクリッ クする 13 Add Existing IP (optional)  Add Existing IP (optional)  Next >ボ タンをク リックする 14
  28. 28. 2015/2/18 8 Add Contraints (optional)  Add Contraints (optional)  Next >ボ タンをク リックする 15 ZYBOのZynqを選択  ZYBOの Zynqを選 択する  Next >ボ タンをク リックす る 16
  29. 29. 2015/2/18 9 New Project Summary  New Project Summary  Finishボタ ンをクリッ クする 17 Vivadoの起動  Vivado が起動 した 18
  30. 30. 2015/2/18 10 IP Vendorの設定1  Project Manager -> Project Settings を選択 する 19 IP Vendorの設定2  左のIPアイコン をクリックする  Packagerタブを クリックする  Vendorに tsukubaと入力 する(noneだと Internal Exception とな る)  OKボタンをク リックする 20
  31. 31. 2015/2/18 11 Block Designの作製  Flow Manager - > Create Block Designをクリック する 21 Block Designの名前の指定  Design nameに LED4と入力する  他の設定項目は デフォルトとする  OKボタンをクリッ クする 22
  32. 32. 2015/2/18 12 LED4ブロック・デザイン  LED4ブロッ ク・デザイ ンが生成さ れた  Floatボタン をクリックし て、 Diagramウ インドウを フローリン グにする 23 Zynq Processing System  Add IPをク リックする  IPのリスト・ ダイアログ が表示され る  SearchでZy と入力する とZynq Processing Systemが表 示されるの で、クリック する  Returnキー をクリックす る 24
  33. 33. 2015/2/18 13 processing_system_0  processin g_system _0が入っ た  processin g_system _0をダブ ルクリック する 25 ZYNQ7 Processing SystemのRe- customize IPダイアログ  Import XPS Settingsを クリックす る 26
  34. 34. 2015/2/18 14 Import XPS Settings  Import XPS Settingsボ タンをク リックする  …ボタンを クリックす る  ZYBO_zyn q_def.xml を選択し てOKボタ ンをクリッ クする 27 ZYBOボード用コンフィグレーション  ZYBOボー ドに合う ようにI/O Peripheral sにチェッ クが入っ た  OKボタン をクリック する 28
  35. 35. 2015/2/18 15 Run Block Automation (processing_system_0)  processing_ system_0が 変更された  Run Block Automation をクリックす る 29 Run Block Automation (processing_system_0)  デフォルト のままOK ボタンをク リックする 30
  36. 36. 2015/2/18 16 DDRとFIXED_IOポートの追加  DDRと FIXED_I Oポート が追加 された 31 LED4 IPの追加1 (Create and Package IP…)  Toolsメニュー からCreate and Package IP…をクリック する 32
  37. 37. 2015/2/18 17 LED4 IPの追加2 (Create and Package New IP)  Create and Package New IPダ イアログ が開く  Next >ボ タンをク リックす る 33 LED4 IPの追加3 (Create a new AXI4 peripheral)  Create a new AXI4 peripher alのラジ オボタン をクリッ クする 34
  38. 38. 2015/2/18 18 LED4 IPの追加4 (Peripheral Details)  Nameに LED4ipと 入力す る  Next >ボ タンをク リックす る 35 LED4 IPの追加4 (Add Interfaces)  Nameを S_AXIに変 更  Number of Registors は4(デ フォルト 値)  Next >ボタ ンをクリッ クする 36
  39. 39. 2015/2/18 19 LED4 IPの追加5 (Create Peripheral)  Next Steps:で Edit IPの ラジオボ タンをク リックする  Finishボタ ンをクリッ クする 37 LED4ip_v1_0  LED4ip_ v1_0が できた 38
  40. 40. 2015/2/18 20 LED4ip_v1_0.vの修正1 39  LED4ip_v1_0.vにVerilog HDLコードを追加する  18行目に“output wire [3:0] LED4bit,”を入力する LED4ip_v1_0.vの修正2 40  71行目の最後に“,”を追加  72行目、“.LED4bit(LED4bit)”を追加  ファイルをセーブする(セーブ・アイコンをクリック)
  41. 41. 2015/2/18 21 LED4ip_v1_0_S_AXI.vの修正1 41  LED4ip_v1_0_S_AXI.vにVerilog HDLを追加する  18行目に“output wire [3:0] LED4bit,”を追加 LED4ip_v1_0_S_AXI.vの修正2 42  392行目の“// Add user logic here”と 394行目の“// User logic ends”の間の 393行目に別ファイル“Files¥LED4ip_Verilog_誤 ¥LED4ip_v1_0_S_AXI_user_logic追加分.v”のすべ ての内容をコピー&ペーストしてください  このVerilog HDLの内容には誤りがあります  後で、IP Packagerの機能で修正します
  42. 42. 2015/2/18 22 LED4ip_v1_0_S_AXI.vの修正3 43  修正後のLED4ip_v1_0_S_AXI.v  ファイルをセーブする(セーブ・アイコンをクリック) LED4ip_v1_0_S_AXI_user_logic追加 分.v その144 reg [3:0] LED_Display_Counter; reg [31:0] LED_Interval_Counter; reg slv_reg_wren_1d; // slv_reg_wren_1d generate always @(posedge S_AXI_ACLK) begin if (~S_AXI_ARESETN) slv_reg_wren_1d <= 1'b0; else slv_reg_wren_1d <= slv_reg_wren; end
  43. 43. 2015/2/18 23 LED4ip_v1_0_S_AXI_user_logic追加 分.v その245 // LED_Interval_Counter always @(posedge S_AXI_ACLK) begin : proc_LED_Interval_Counter if(~S_AXI_ARESETN) begin LED_Interval_Counter <= 32'd0; end else begin if (slv_reg0[0]) begin // Enable if (LED_Interval_Counter == 32'd0) LED_Interval_Counter <= slv_reg3; else LED_Interval_Counter <= LED_Interval_Counter - 32'd1; end else LED_Interval_Counter <= slv_reg3; end end LED4ip_v1_0_S_AXI_user_logic追加 分.v その346 //// Conteres // LED_Display_Counter always @(posedge S_AXI_ACLK) begin : proc_LED_Display_Counter if(~S_AXI_ARESETN) begin LED_Display_Counter <= 4'd0; end else begin if (slv_reg_wren_1d && axi_awaddr[ADDR_LSB+OPT_MEM_ADDR_BITS:ADDR_LSB]==2'h1) // Counter Load LED_Display_Counter <= slv_reg0[3:0]; // Error, slv_reg1[3:0] else if (slv_reg0[0]) begin // Enable if (LED_Interval_Counter == 32'd0) LED_Display_Counter <= LED_Display_Counter + 4'd1; end end end assign LED4bit = LED_Display_Counter;
  44. 44. 2015/2/18 24 Ports and Interfaces 1 47  Package IP – LED4ipタブをクリックする  Ports and Interfacesをクリックする  Merge change from Ports and Interfaces Wizardをクリック する Ports and Interfaces 2 48  LED4bit出力ポートが追加された
  45. 45. 2015/2/18 25 Customization GUI 49  Customization GUIを選択するとシンボルにLED4 bit[3:0]が追加されている Review and Package 50  Review and Packageをクリックし、Re-Package IPボタンをク リックし再度パッケージ化を行う  確認ダイアログが出るので、OKボタンをクリックする  edit_LED4ip_v1_0.xprが閉じる
  46. 46. 2015/2/18 26 Add IP 51  Diagramウ インドウに 戻る  右クリックメ ニューから Add IP…を 選択する Add IPダイアログ 52  Add IPダイアログのSearchテキストボックスにLED と入力する  LED4ip_v1.0をダブルクリックする
  47. 47. 2015/2/18 27 LED4ip_0のインスタンス 53  LED4ip_0が 追加された  Run Connection Automation をクリックす る Run Connection Automationダイアログ 54  Run Connection Automation ダイアログ が表示され た  OKボタンを クリックする
  48. 48. 2015/2/18 28 IP追加と自動配線 55  2つのIPが追加され自動配線が行われた LED4bit出力ポートの外部出力1 56  LED4ip_0 のLED4bit 出力ポー トをクリッ クする  右クリック して右ク リックメ ニューか らMake Externalを 選択する
  49. 49. 2015/2/18 29 LED4bit出力ポートの外部出力2 57  LED4bit[3:0]ポートに出力することができた レイアウトを再生成 58  Regenerate Layoutボタン をクリックし て、現在のレ イアウトを破 棄して再生 成した
  50. 50. 2015/2/18 30 Validate Design 59  Validate Designアイコンをクリックする  Validate DesignダイアログでOKボタンをクリックする(成功)  DockボタンをクリックしてVivadoのドックに入れる  LED4ブロック・デザインをセーブする ブロック・デザイン終了 60
  51. 51. 2015/2/18 31 HDL Wrapperファイルの生成1 61  Sourcesウインドウ のSourcesタブをク リックする  LED4ブロック・デザ インを右クリックし て、右クリックメ ニューからCreate HDL Wrapper…を 選択する HDL Wrapperファイルの生成2 62  Create HDL Wrapperダイアログが開く  Let Vivado manage wrapper and auto-updateのラジオ ボタンがクリックされている  OKボタンをクリックする
  52. 52. 2015/2/18 32 HDL Wrapperファイルの生成3 63  LED4_wrapper.vが生成された 論理合成 64  Flow Navigator -> Run Synthesisをクリックして 論理合成を行う
  53. 53. 2015/2/18 33 論理合成成功 65  論理合成が成功した  ダイアログのOpen Synthesized Designラジオボタンをクリックする  OKボタンをクリックする I/Oのプランニング 66  Synthesized Designが開く  Layout -> I/O Planningを選択する
  54. 54. 2015/2/18 34 I/O Stdの変更 67  I/O PortsウインドウのLED4bit(4)のI/O Stdのdefault(LVCMOS18)の右の ▽をクリックしてLVCMOS33に変更する Siteの入力 68  Siteを入力する  LED4bit[3] -> D18  LED4bit[2] -> G14  LED4bit[1] -> M15  LED4bit[0] -> M14  ファイル(.xdc)をセーブする(セーブ・アイコンをクリック)  Out of Date Designダイアログが出てくるのでOKボタンをク リックする
  55. 55. 2015/2/18 35 69  Save Constraintsダイアログが開く  File nameに“LED4_wrapper”と入力する  OKボタンをクリックする LED4_wrapper.xdc 70 set_property IOSTANDARD LVCMOS33 [get_ports {LED4bit[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED4bit[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED4bit[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED4bit[0]}] set_property PACKAGE_PIN D18 [get_ports {LED4bit[3]}] set_property PACKAGE_PIN G14 [get_ports {LED4bit[2]}] set_property PACKAGE_PIN M15 [get_ports {LED4bit[1]}] set_property PACKAGE_PIN M14 [get_ports {LED4bit[0]}]
  56. 56. 2015/2/18 36 Synthesized Designの終了 71  SourcesウインドウでSourcesタブをクリックした状態  Synthesized Designの右端のXをクリックして終了させる  Confirm Closeダイアログが出るので、OKボタンをクリック する Bitstreamを生成 72  Flow Navigator -> Program and Debug -> Generate Bit streamをクリックする  Synthesis is Out-of-dateダ イアログ出るので、Yesボタ ンをクリックする
  57. 57. 2015/2/18 37 Bitstream Generation Completed 73  Bitstream Generation Completedダイアログが開く(成功した)  Cancelボタンをクリックする  Feedback Requestダイアログが開く  Laterボタンをクリックする Project Summary 74
  58. 58. 2015/2/18 38 Export Hardware 75  File -> Export -> Export Hardware... を選択する Export Hardwareダイアログ 76  Export Hardwareダイアログが開く  Include bitstreamのチェックボックスにチェックを入 れる  OKボタンをクリックする
  59. 59. 2015/2/18 39 SDK(Software Development Kit)を起動 77  File -> Launch SDKを選択する Launch SDKダイアログ 78  OKボタンをクリックする
  60. 60. 2015/2/18 40 SDKが起動した 79 SDK作業の前の準備作業1 80  配布したか、または共有フォルダのFilesフォルダの下 のled4_axi_lite_slave.cをUbuntuのディレクトリにコ ピーする。(この資料の巻末にも載せてある)  方法  UbuntuのFirefox を立ち上げて共有フォルダからコピー  WindowsでエディタでCソースをすべて選択してコピーして、 Ubuntuでgeditを立ち上げて貼り付けし、名前を付けて セーブ  USBメモリに入れて、VirtualBoxのデバイス->USBデバイス からUSBメモリを選んでUbuntuにマウントし、そこからコ ピーする  LX Terminal からnautilusを起動して、そこにWindows から ドラックアンドドロップする
  61. 61. 2015/2/18 41 SDK作業の前の準備作業2 81  LED4_axi_lite_slaveディレクトリにled4_axi_lite_slave.cをコ ピー Application Projectの生成 82  File -> New -> Application Projectを選 択する
  62. 62. 2015/2/18 42 New Projectダイアログ1 83  Project nameに led4_axi_lite_slaveと 入力する  Next >ボタンをクリッ クする New Projectダイアログ2 84  Available Templates からEmpty Applycationを選択す る  Finishボタンをクリッ クする
  63. 63. 2015/2/18 43 プロジェクト生成完了 85  led4_axi_lite_slaveとled4_axi_lite_slave_bspプロ ジェクトができた 86  ディレクトリに保存しておいたled4_axi_lite_slave.cをド ラックアンドドロップでSDKのled4_axi_lite_slaveプロ ジェクトのsrcディレクトリにコピーする
  64. 64. 2015/2/18 44 Cソースのコピー 87  File OperationダイアログでCopy filesのラジオボタンが クリックされているのを確認する  OKボタンをクリックする  (注)Vivado 2014.4はできているCソースをコピーしな いとプロジェクトがコンパイルエラーになるようです led4_axi_lite_slave.cのビルド 88  led4_axi_lite_ salve.cがsrc ディレクトリの 下に入った  すぐにビルド され、ビルド が終了してい る
  65. 65. 2015/2/18 45 ZYBOの準備 89  JP7 - VV5V0とUSB間をショートピンでショート  JP5 - JTAGをショートピンでショート  PROG UARTのマイクロUSBコネクタからパソコンの USBコネクタに接続  ZYBOの電源をONする Digilent Adept USB Device 90  VirtualBoxのデバイス -> USBデバイス -> Digilent Adept USB Deviceを選択する(上の図はすでに選択さ れている)  Digilent Adept USB DeviceがUbuntuにマウントされる
  66. 66. 2015/2/18 46 SDKでFPGAをプログラム1 91  Xilinx Tools -> Program FPGAを選択する SDKでFPGAをプログラム2 92  Program FPGAダイ アログが開く  デフォルト値でOK  Programボタンをク リックする
  67. 67. 2015/2/18 47 SDKでFPGAをプログラム3 93  Progress Informationダイアログが表示される  FPGAのコンフィグレーションが終わると自動的に 消える  ZYBOのDONEランプが点灯する Run Configurationの設定1 94  led4_axi_lite_sl aveプロジェクト を右クリックし、 右クリックメ ニューからRun As -> Run Configuration… を選択する
  68. 68. 2015/2/18 48 Run Configurationの設定2 95  Xilinx C/C++ application (GDB)を右ク リックし、右 クリックメ ニューから Newを選ぶ Run Configurationの設定3 96  Runボタ ンをクリッ クし、ソフ トウェア を起動す る
  69. 69. 2015/2/18 49 gtktermの起動 97  LX Terminalをも う1つ立ち上げ、 sudo gtktermコ マンドを入力す る  super userのパ スワードを聞か れるので、自分 のパスワードを 入れる gtktermの設定 98  Configuration -> Local echoを選択し、チェックを入れる  Configuration -> Portを選択する  Port:/dev/ttyUSB1、Baud Rate:115200を選択する  OKボタンをクリックする
  70. 70. 2015/2/18 50 ソフトウェアの操作 99  リターン キーを 押すと メッセー ジが表 示され る LED Count Load Registerのロード (バグ)100  3キーを 押す  LED Count Load Register のロード  0x4を入 力した  ZYBOの LEDはす べて消 灯のま ま  バグ
  71. 71. 2015/2/18 51 LED Interval Load Registerのロード 101  4キーを押 す  LED Interval Load Registerの ロード  50000000 を入力  100MHzク ロックなの でカウント アップは 0.5秒 LEDカウント起動 102  2を押すとLEDのカ ウントが開始され る  もう一度2を押すと LEDのカウントは 止まる  5を押すとソフト ウェアが終了する  gtktermを終了す る  (注)LEDカウントし ているときにソフト ウェアを終了して も止まらない (ハード動作のた め)
  72. 72. 2015/2/18 52 ZYBOのLEDカウントの様子 103 AXIカスタムIPの修正 104  LEDテスト・プロジェクト  AXIカスタムIPを含むブロック・デザインを実機動作さ せることができた  だが、LED Count Load Registerのロードにバグあり  IP Packagerを使ってAXIカスタムIPのバグを修正し よう  AXIバスを使用しない通常のカスタムIPも同じ手順 でOK
  73. 73. 2015/2/18 53 AXIカスタムIPの修正開始 105  VivadoでLED4ブロック・デザインを表示する  LED4ip_0を右クリックし、右クリックメニューからEdit in IP Packager を選択する Edit in IP Packagerダイアログ 106  Edit in IP Packagerダイアログが表示される  OKボタンをクリックする
  74. 74. 2015/2/18 54 LED4ip_v1_0_project 107  LED4ip_v1_0_projectが開く LED4ip_v1_0_S_AXI.vのバグを修正 108  LED4ip_v1_0_S_AXI.vの413行目の“slv_reg0[3:0];”を “slv_reg1[3:0];”に修正してセーブ  上図は修正後
  75. 75. 2015/2/18 55 Re-Package IP 109  Package IP – LED4ipのタブをクリックする  Review and PackageをクリックしてRe-Package IPボタンをク リックする Close Projectダイアログ 110  Close Projectダイアログが表示される  OKボタンをクリックする  AXIカスタムIPを修正して、再パッケージした  LED4ip_v1_0_projectが閉じられた
  76. 76. 2015/2/18 56 Bitstreamの再生成 111  再度、Flow Navigator -> Program and Debug -> Generate Bitstreamをク リックする  Synthesis is Out-of-dateダ イアログが出るので、Yes ボタンをクリックする  SDKを閉じていない場合は 閉じておきます Bitstream Generation Completed 112  Bitstream Generation Completedダイアログが開く(成功した)  Cancelボタンをクリックする  Feedback Requestダイアログが開く  Laterボタンをクリックする
  77. 77. 2015/2/18 57 Export Hardware 113  File -> Export -> Export Hardware... を選択する Export Hardwareダイアログ 114  Export Hardwareダイアログが開く  Include bitstreamのチェックボックスにチェックを入 れる  OKボタンをクリックする
  78. 78. 2015/2/18 58 Module Already Exportedダイアログ 115  Module Already Exportedダイアログが開く  Yesボタンをクリックする SDK(Software Development Kit)を起動 116  File -> Launch SDKを選択する
  79. 79. 2015/2/18 59 Launch SDKダイアログ 117  OKボタンをクリックする SDK起動、ビルド 118
  80. 80. 2015/2/18 60 ZYBOの準備 119  JP7 - VV5V0とUSB間をショートピンでショート  JP5 - JTAGをショートピンでショート  PROG UARTのマイクロUSBコネクタからパソコンの USBコネクタに接続  ZYBOの電源をONする Digilent Adept USB Device 120  VirtualBoxのデバイス -> USBデバイス -> Digilent Adept USB Deviceを選択する(上の図はすでに選択さ れている)  Digilent Adept USB DeviceがUbuntuにマウントされる
  81. 81. 2015/2/18 61 SDKでFPGAをプログラム1 121  Xilinx Tools -> Program FPGAを選択する SDKでFPGAをプログラム2 122  Program FPGAダイ アログが開く  デフォルト値でOK  Programボタンをク リックする
  82. 82. 2015/2/18 62 SDKでFPGAをプログラム3 123  Progress Informationダイアログが表示される  FPGAのコンフィグレーションが終わると自動的に 消える  ZYBOのDONEランプが点灯する Run Configurationの実行1 124  led4_axi_lite_sl aveプロジェクト を右クリックし、 右クリックメ ニューからRun As -> Run Configuration… を選択する
  83. 83. 2015/2/18 63 Run Configurationの実行2 125  Runボタ ンをクリッ クし、ソフ トウェア を起動す る gtktermの起動 126  LX Terminalをも う1つ立ち上げ、 sudo gtktermコ マンドを入力す る  super userのパ スワードを聞か れるので、自分 のパスワードを 入れる
  84. 84. 2015/2/18 64 gtktermの設定 127  Configuration -> Local echoを選択し、チェックを入れる  Configuration -> Portを選択する  Port:/dev/ttyUSB1、Baud Rate:115200を選択する  OKボタンをクリックする ソフトウェアの操作 128  リターン キーを 押すと メッセー ジが表 示され る
  85. 85. 2015/2/18 65 LED Count Load Registerのロード 129  3キーを 押す  LED Count Load Register のロード  0x4を入 力した  ZYBOの LEDは消 灯、点灯、 消灯、消 灯 LED Interval Load Registerのロード 130  4キーを押 す  LED Interval Load Registerの ロード  50000000 を入力  100MHzク ロックなの でカウント アップは 0.5秒
  86. 86. 2015/2/18 66 LEDカウント起動 131  2を押すとLEDのカ ウントが開始され る  もう一度2を押すと LEDのカウントは 止まる  5を押すとソフト ウェアが終了する  gtktermを終了す る  (注)LEDカウントし ているときにソフト ウェアを終了して も止まらない (ハード動作のた め) ライブ・コーディング終了  これで、ライブ・コーディングは終了です。  うまく行きましたか? 132
  87. 87. 2015/2/18 67 led4_axi_lite_slave.c (1/3) 133 /* * led4_axi_lite_slave.c * * Created on: 2013/12/16 * Author: Masaaki */ #include <stdio.h> #include "xil_types.h" #include "xparameters.h" #include "xil_io.h" #include "xil_exception.h" #include "xscugic.h" #define XPAR_LED4IP_0_S_AXI_BASEADDR 0x43C00000 extern char inbyte(void); int main() { int inbyte_in; int val; while(1){ print("********************** LED4 TEST Start ***********************¥n¥r"); print("TeraTerm: Please Set Local Echo Mode.¥n¥r"); print("Press '1' to show all registers¥n¥r"); print("Press '2' to set LED4 Enable or Disable(Toggle, Command Register)¥n¥r"); print("Press '3' to set LED Counter Load Register (4bits, Please input hexadecimal)¥n¥r"); print("Press '4' to set LED Interval Register (32bits, Please input decimal)¥n¥r"); print("Press '5' to exit¥n¥r"); print("Selection : "); inbyte_in = inbyte(); print(" ¥r¥n"); print(" ¥r¥n"); led4_axi_lite_slave.c (2/3) 134 switch(inbyte_in) { case '1' : // Show all registers val = (int)Xil_In32((u32)XPAR_LED4IP_0_S_AXI_BASEADDR); printf("Command Register is %x¥r¥n", val); val = (int)Xil_In32((u32)(XPAR_LED4IP_0_S_AXI_BASEADDR+4)); printf("LED Counter Load Register is %x¥r¥n", val); val = (int)Xil_In32((u32)(XPAR_LED4IP_0_S_AXI_BASEADDR+8)); printf("LED Monitor Register is %x¥r¥n", val); val = (int)Xil_In32((u32)(XPAR_LED4IP_0_S_AXI_BASEADDR+0xc)); printf("LED Interval Register is %d (decimal)¥r¥n", val); break; case '2' : // Set LED4 Enable or Disable(Toggle, Command Register) val = (int)Xil_In32((u32)XPAR_LED4IP_0_S_AXI_BASEADDR); if (val & 1) { Xil_Out32((u32)XPAR_LED4IP_0_S_AXI_BASEADDR, (u32)0); print("LED4 count is Disable¥n¥r"); } else { Xil_Out32((u32)XPAR_LED4IP_0_S_AXI_BASEADDR, (u32)1); print("LED4 count is Enable¥n¥r"); } break;
  88. 88. 2015/2/18 68 led4_axi_lite_slave.c (3/3) 135 case '3' : // Set LED Counter Load Register (4bits, Please input hexadecimal) print("Please input LED Counter Load Register value (hexadecimal)"); scanf("%x", &val); Xil_Out32((u32)(XPAR_LED4IP_0_S_AXI_BASEADDR+4), (u32)val); print(" ¥r¥n"); break; case '4' : // Set LED Interval Register (32bits, Please input hexadecimal) print("Please input LED Interval Load Register value (decimal) "); scanf("%d", &val); Xil_Out32((u32)(XPAR_LED4IP_0_S_AXI_BASEADDR+0xc), (u32)val); print(" ¥r¥n"); break; case '5' : // exit print("exit¥r¥n"); return 0; } print(" ¥r¥n"); } }
  89. 89. 1 | 86 ZYBO Linux ハンズオン資料 ZYBO Linux ハンズオン資料 (注)実行するコマンドは赤字で表示します。 内容 ZYBO Linux ハンズオン資料 ................................................................................................................... 1 1. ZYBO 用 u-boot のビルド 1 ........................................................................................................ 3 2. SDK で Boot.bin を作製.................................................................................................................... 6 3. ZYBO 用 Linux カーネルのビルド 2............................................................................................ 12 4. デバイス・ツリーのコンパイル................................................................................................... 16 5. Micro SD カードのフォーマット Micro SD カードは必ず Class10 以上で、8GB 以上の物を用意 ください。........................................................................................................................................... 19 6. Micro SD カードにパーティションを作る 5................................................................................ 20 プライマリ・ディスクのパーティション番号 1 に 64MB の領域を確保する................................ 23 プライマリ・ディスクのパーティション番号 2 に約 7.7GB の領域を確保する............................ 23 プライマリ・ディスクのパーティション番号 1 を FAT32 にして、ブート可能フラグを付ける.. 24 SD カードへの書き込み................................................................................................................... 24 7. Ubuntu の ROOT File System を Micro SD カードへコピー6................................................... 27 8. FAT32 パーティションへ必要なファイルをコピー..................................................................... 30 9. ZYBO に SD カードを入れて Linux をブート ............................................................................ 34 10. ユーザーでログイン ................................................................................................................. 37 11. LED をカウントアップするソフトウェアを実行(UIO の実習)8 ........................................ 39 12. NTP のインストール................................................................................................................ 49 13. SSH のインストール ................................................................................................................ 52 14. Xming で X ウインドウを Windows で操作 ............................................................................ 56 15. OpenCV インストール ............................................................................................................. 60 16. OpenCV サンプル・プログラムのコンパイル+顔認識アプリの実行...................................... 64 17. ZYBO 用の Linaro Ubuntu のバージョンを 12.11 から 14.04 LTS にアップグレード(おま け) 66 18. ARMhf の Root File System を入れる(おまけ) .................................................................. 72 ZYBOのDigilent Linux Kernel にARMhfのRoot File Systemsを入れる2( Debian Wheezy 7.5) .......................................................................................................................................................... 72 ZYBO の ARMhf の Debian Wheezy 7.5 に OpenCV 2.4.10 をインストール............................... 77 ZYBO の Digilent Linux Kernel に ARMhf の Root File Systems を入れる 3(Ubuntu Trusty 14.04 LTS)............................................................................................................................................... 80 ZYBO の ARMhf の Ubuntu 14.04 LTS に OpenCV 2.4.10 をインストール............................... 82 参考文献............................................................................................................................................... 86
  90. 90. 2 | 86 ZYBO Linux ハンズオン資料
  91. 91. 3 | 86 ZYBO Linux ハンズオン資料 1.ZYBO 用 u-boot のビルド 1 1.LXDE のスタートから、アクセサリ-> LXTerminal で LXTerminal を起動する。 2.ZYBO_Linux ディレクトリを作製し、ZYBO_Linux ディレクトリに入る。 mkdir ZYBO_Linux cd ZYBO_Linux 3.git コマンドをインストールする。(パスワード入力を求められる) sudo apt-get install git 4.次の git コマンドで、U-Boot のソースコードを Digilent 社のリポジトリから取得した。(勉強会の 時はこちらで用意します) git clone -b master-next https://github.com/DigilentInc/u-boot-Digilent-Dev.git 5.u-boot-Digilent-Dev ディレクトリに入る。 cd u-boot-Digilent-Dev
  92. 92. 4 | 86 ZYBO Linux ハンズオン資料 6.ZYBO 用の設定値を反映するため、コンフィギュレーションを行う。 make CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zybo_config 7.U-Boot のビルドを行う。 make CROSS_COMPILE=arm-xilinx-linux-gnueabi- 8.u-boot ができた。成功。
  93. 93. 5 | 86 ZYBO Linux ハンズオン資料 9.u-boot を u-boot.elf としてコピーした。 cp u-boot u-boot.elf
  94. 94. 6 | 86 ZYBO Linux ハンズオン資料 2. SDK で Boot.bin を作製 1. LXTerminal で xsdk と入力し、SDK を立ち上げる。 2. Workspace Lanucher ダイアログが起動する。 3. Brows…ボタンをクリックする。 4. 1 日目の LED4_axi_lite_slave/LED4_axi_lite_slave.sdk を選択し、OK ボタンをクリックする。 5. Workspace Lanucher ダイアログに、LED4_axi_lite_slave/LED4_axi_lite_slave.sdk が入力され た。 6. OK ボタンをクリックする。
  95. 95. 7 | 86 ZYBO Linux ハンズオン資料 7. SDK が立ち上がった。 8. File -> New -> Application Project を選択する。 9. New Project ダイアログが開く。 10. File name:に FSBL と入力する。 11. Board Support Package はデフォルト値とする。 12. Next >ボタンをクリックする。
  96. 96. 8 | 86 ZYBO Linux ハンズオン資料 13. Available Templates から Zynq FSBL を選択して、Finish ボタンをクリックする。 14. FSBL プロジェクトと FSBL_bsp プロジェクトが生成された。
  97. 97. 9 | 86 ZYBO Linux ハンズオン資料 15. FSBL プロジェクトで右クリックして、右クリックメニューから Create Boot Image を選択する。 16. Create Zynq Boot Image ダイアログが開く。 17. LED4_warpper.bit を選択して、Add ボタンをクリックする。
  98. 98. 10 | 86 ZYBO Linux ハンズオン資料 18. Brows ボタンをクリックする。 19. 出てきたダイアログで、“2. SDK で Boot.bin を作製”で生成した u-boot.elf を指定する。 20. OK ボタンをクリックする。 21. Boot Image Partitions に u-boot.elf が入った。 22. Boot.bin を生成するために Create Image ボタンをクリックする。
  99. 99. 11 | 86 ZYBO Linux ハンズオン資料 23. LED4_axi_lite_slave.sdk/FSBL/bootimage の下に Boot.bin が生成された。 24. SDK を終了する。
  100. 100. 12 | 86 ZYBO Linux ハンズオン資料 3. ZYBO 用 Linux カーネルのビルド 2 注:FPGA の部屋、“ZYBO 用の Embedded Linux チュートリアル7(Linux カーネルのビルド)”の 画像を使用しているので、パスが一部違っていますが、ご了承ください。 1. ~/ZYBO_Linux に移動した。 cd ~/ZYBO_Linux 2. Digilent Linux を github から clone した。(勉強会ではファイルで提供します) git clone -b master-next https://github.com/DigilentInc/Linux-Digilent-Dev.git 3. ls コマンドでディレクトリを見ると Linux-Digilent -DEV ディレクトリができていた。 4. cd Linux-Digilent-Dev/ コマンドで、Linux-Digilent -DEV ディレクトリに入った。 5. ZYBO 用の設定値を反映するため、デフォルト・コンフィギュレーションを行った。 make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- xilinx_zynq_defconfig 6. ZYBO 用のデフォルト・コンフィギュレーションが終了した。
  101. 101. 13 | 86 ZYBO Linux ハンズオン資料 7. Linux カーネルのコンパイルを行った。(i5 プロセッサで 10 分程度) make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- Linux カーネルのコンパイルが成功した。 “画像の所に [M] と表示されているのがカーネルモジュールである。make menuconfig を実行 した時に選択で [*]と[M]を選べるが[*]とすると uImage(zImage,Image) の中に取り込んだ形に なり .ko ファイルとしては存在しなくなる。[M] を選択しておく方が後から取り外せたりするの で便利だ(モノによっては[*]にしないといけないのもある)。”12 8. Linux-Digilent-Dev/arch/arm/boot ディレクトリに zImage ができた。
  102. 102. 14 | 86 ZYBO Linux ハンズオン資料 9. uImage を作製するために、u-boot-Digilent-Dev/tools ディレクトリへのリンクが必要なので、 PATH を設定する。(本来の PATH の指定は絶対パスで行う。ここでは、1回だけしか使わないコ マンドのための PATH 指定であるため、あえて相対パスとした) PATH=$PATH:../u-boot-Digilent-Dev/tools/ 10. uImage を作製する。 make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- UIMAGE_LOADADDR=0x8000 uImage 11. Linux-Digilent-Dev/arch/arm/boot ディレクトリに uImage が作成された。
  103. 103. 15 | 86 ZYBO Linux ハンズオン資料
  104. 104. 16 | 86 ZYBO Linux ハンズオン資料 4. デバイス・ツリーのコンパイル 1. ファイルマネージャーで、Linux-Digilent-Dev/arch/arm/boot/dts ディレクトリを表示する。 2. その中の zynq-zybo.dts を Linux-Digilent-Dev ディレクトリにコピーする。(現在のカレントディ レクトリは Linux-Digilent-Dev) cp arch/arm/boot/dts/zynq-zybo.dts . 3. エディタで zynq-zybo.dts を編集する(ここでは gedit を使用した) gedit zynq-zybo.dts 4. 42 行目の bootargs の行を次に示す記述に書き換える(2015/12/04:修正 Shin さん、ありがと うございました。uio が見えなくなっていたのを見えるように uio_pdrv_genirq.of_id=generic-uio を追加しました) bootargs = "console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=1 uio_pdrv_genirq.of_id=generic-uio";
  105. 105. 17 | 86 ZYBO Linux ハンズオン資料 5. 55 行目の operating-points を以下の様に変更した。3 operating-points = <650000 1000000>; 333 行目から 336 行目まで、UIO の設定を記述する。 led4_axi_lite_slave@43c00000 {
  106. 106. 18 | 86 ZYBO Linux ハンズオン資料 compatible = "generic-uio"; reg = < 0x43c00000 0x10000 >; }; 6. zynq-zybo.dts にセーブし(セーブ・アイコンを使用した)、gedit を終了する。 7. DTC コンパイラで zynq-zyob.dts をコンパイルして、devicetree.dtb を作製する。4 scripts/dtc/dtc -I dts -O dtb -o devicetree.dtb zynq-zybo.dts 8. devicetree.dtb ができた。
  107. 107. 19 | 86 ZYBO Linux ハンズオン資料 5. Micro SD カードのフォーマット Micro SD カードは必ず Class10 以上で、8GB 以上の物を用意ください。 新品でフォーマット済みの Micro SD カードを使用する場合はこの章を飛ばしてください。 後の章の RootFS を書き込んで、再度書き込む場合は、この章を実行してください。 1. Windows の方は https://www.sdcard.org/jp/downloads/formatter_4/eula_windows/ から SD フォ ーマッター4.0 をダウンロードする。 Mac OS の方は https://www.sdcard.org/jp/downloads/formatter_4/eula_mac/ から SD フォーマ ッター4.0 をダウンロードする。 ライセンスの関係でコピーできないので、必ずダウンロードをお願いします。 2. ZIP ファイルを展開して、インストールする。 3. SDFormatter を起動する。 4. オプション設定ボタンをクリックし、消去設定を上書きフォーマット、論理サイズ調整を ON にす る。 5. OK ボタンをクリックする。 6. Drive が SD カードのドライブになっていることを確認して(必須)、フォーマット・ボタンをク リックして、SD カードをフォーマットします。
  108. 108. 20 | 86 ZYBO Linux ハンズオン資料 6. Micro SD カードにパーティションを作る 5 1. VirtualBox のデバイス -> USB デバイス -> Generic USB2.0 Device を選択する 2. Micro SD カードを Ubuntu にマウントするために、ダイアログの OK ボタンをクリックする。 3. 8GB ボリュームがマウントされた。
  109. 109. 21 | 86 ZYBO Linux ハンズオン資料 4. LXTerminal を起動する。 5. lsblk コマンドを実行して、SD カードを検索した。 6. /dev/sdb が SD カードのようだ。異なる名前の場合は sdb を入れ替えてください。 7. /dev/sdb1 のマウントを解除する。12 sudo umount /dev/sdb1
  110. 110. 22 | 86 ZYBO Linux ハンズオン資料 8. sudo fdisk /dev/sdb コマンドを実行して SD カードのフォーマットを開始した。 9. p コマンドで既存のパーティションを表示した。FAT32 パーティションが生成されていた。 10. d コマンドでパーティションを削除した。 11. p コマンドで見ると、パーティションが消去されていた。
  111. 111. 23 | 86 ZYBO Linux ハンズオン資料 プライマリ・ディスクのパーティション番号 1 に 64MB の領域を確保する 12. n コマンドで新たにパーティションを作製した。 13. p を押して、primary パーティションを指定した。 14. パーティション番号を 1 にセット。 15. 最初セクタで、リターンキーを入力した。 16. Last セクタで、+64M を入力して、64MB の領域を確保した。 17. p コマンドでパーティションを表示した。 プライマリ・ディスクのパーティション番号 2 に約 7.7GB の領域を確保する 18. n コマンドで新たにパーティションを作製した。 19. p を押して、primary パーティションを指定した。 20. パーティション番号を 2 にセット。 21. 最初セクタで、リターンキーを入力した。 22. Last セクタで、リターンキーを入力した。 23. p コマンドでパーティションを表示した。
  112. 112. 24 | 86 ZYBO Linux ハンズオン資料 プライマリ・ディスクのパーティション番号 1 を FAT32 にして、ブート可能フラグを付ける 24. t コマンドを入力した。 25. パーティション番号に 1 を入力した。 26. 16 進コードに、b を入力した。(W95 FAT32) 27. a コマンドを入力して、ブート可能フラグを付ける。 28. パーティション番号に 1 を入力した。 29. p コマンドでパーティションを表示した。 SD カードへの書き込み 30. w コマンドを実行した。パーティション・テーブルは変更された。
  113. 113. 25 | 86 ZYBO Linux ハンズオン資料 31. sudo mkfs.msdos -n ZYBO_BOOT /dev/sdb1 コマンドを実行し、パーティション1を FAT 形式 にフォーマットする。12 32. sudo mkfs.ext4 -L ROOT_FS /dev/sdb2 コマンドを実行し、パーティション 2 を EXT4 形式にフ ォーマットする。12 33. ファイルマネージャーを起動すると、ZYBO_BOOT と ROOT_FS がマウントされているのが見え る。
  114. 114. 26 | 86 ZYBO Linux ハンズオン資料
  115. 115. 27 | 86 ZYBO Linux ハンズオン資料 7. Ubuntu の ROOT File System を Micro SD カードへコピー6 1. VirtualBox のデバイス -> USB デバイス -> Generic USB2.0 Device を選択する。 (マウントしてあるのでしたら、1. 2. 3.の作業は必要ありません) 2. Micro SD カードを Ubuntu にマウントするために、ダイアログの OK ボタンをクリックする。 (ZYBO_BOOT と ROOT_FS の 2 回出ます) 3. ZYBO_BOOT と ROOT_FS がマウントされた。
  116. 116. 28 | 86 ZYBO Linux ハンズオン資料 4. LXTerminal を起動する。 5. ZYBO_Linux ディレクトリに入る。 cd ZYBO_Linux 6. /linaro-precise-ubuntu-desktop-20121124-560.tar.gz を wget する。(2015/12/03:変更 yama さんに教えて頂きました。ありがとうございました。 http://marsee101.blog19.fc2.com/blog-entry-3079.html#comment2723) wget https://releases.linaro.org/archive/12.11/ubuntu/precise-images/ubuntu-desktop/linaro-precise- ubuntu-desktop-20121124-560.tar.gz 7. SD カードのマウントパスを確認する。(下の図の場合は、/media/ono/ZYBO_ROOT, /media/ono/ROOT_FS)
  117. 117. 29 | 86 ZYBO Linux ハンズオン資料 8. Ubuntu の root file system を SD カードに書き込む。(注:/media/ono/ROOT_FS は自分のユー ザーでの ROOT_FS のマウントパスを指定して下さい) sudo tar --strip-components=3 -C /media/ono/ROOT_FS -xzpf linaro-precise-ubuntu-desktop-20121124-560.tar.gz binary/boot/filesystem.dir 9. SD カードの第 2 パーティション(ROOT_FS)には、Ubuntu の Root File System が入った。
  118. 118. 30 | 86 ZYBO Linux ハンズオン資料 8. FAT32 パーティションへ必要なファイルをコピー 1. VirtualBox のデバイス -> USB デバイス -> Generic USB2.0 Device を選択する。 (マウントしてあるのでしたら、1. 2. 3.の作業は必要ありません) 2. Micro SD カードを Ubuntu にマウントするために、ダイアログの OK ボタンをクリックする。 (ZYBO_BOOT と ROOT_FS の 2 回出ます) 3. ZYBO_BOOT と ROOT_FS がマウントされた。
  119. 119. 31 | 86 ZYBO Linux ハンズオン資料 4. “2. SDK で Boot.bin を作製”で作製した BOOT.bin を Micro SD カードの ZYBO_BOOT ドライ ブにコピーする。(BOOT.bin のパス:~/ HDL/Zynq/ZYBO/LED4_axi_lite_slave/LED4_axi_lite_slave.sdk/FSBL/bootimage) 5. “3. ZYBO 用 Linux カーネルのビルド”で作製した uImage を Micro SD カードの ZYBO_BOOT ドライブにコピーする。(uImage のパス:~/ ZYBO_Linux/Linux-Digilent-Dev/arch/arm/boot)
  120. 120. 32 | 86 ZYBO Linux ハンズオン資料 6. “4. デバイス・ツリーのコンパイル”で作った devicetree.dtb を ZYBO_BOOT ドライブにコピー する。(devicetree.dtb のパス:~/ ZYBO_Linux/Linux-Digilent-Dev) 7. ZYBO_BOOT ドライブに uEnv.txt を追加する。(u-boot のパラメータを書いておけるファイル) 8. LXTerminal で、gedit uEnv.txt コマンドを実行して、uEnv.txt を新規作成する。 9. gedit で、下の行を追加して、ZYBO_BOOT ドライブに名前を付けて保存する。7 uenvcmd=fatload mmc 0 0x03000000 uImage && fatload mmc 0 0x02A00000 devicetree.dtb && bootm 0x03000000 - 0x02A00000 10. ZYBO_BOOT ドライブへのコピーはこれで終了です。ZYBO_BOOT ドライブ下のファイルを下に
  121. 121. 33 | 86 ZYBO Linux ハンズオン資料 示す。 11. MicroSD カードを取り外そう。 ZYBO_BOOT ドライブを右クリックして、右クリックメニューから“リムーバブル・メディアを 取り出す”を選択して、Micro SD カードのマウントを外す。 12. VirtualBox のデバイス -> USB デバイス -> Generic USB2.0 Device を選択して、Micro SD カー ドを VirtualBox から外す。 13. Micro SD カードの ZYBO_BOOT が Windows で見えるようになる。 14. Windows からも Micro SD カードを外して、Micro SD カードを取り出す。
  122. 122. 34 | 86 ZYBO Linux ハンズオン資料 9. ZYBO に SD カードを入れて Linux をブート (注)ZYBO の USB シリアルのドライバが Windows に入っていない場合は、FTDI Chips の VCP Driver を下の URL からダウンロードして入れてください。 http://www.ftdichip.com/Drivers/VCP.htm 1. ZYBO に“8. FAT32 パーティションへ必要なファイルをコピー”までで作った Micro SD カード を挿入する。 2. ZYBO の JP7 のショートピンを USB に、JP5 のショートピンを SD に設定する。 (注:JP7 のショートピンを USB に設定すると ZYBO は USB から電源を取る事になります。現 在の回路規模での最大電流は 0.42A 程度でした。通常は 0.38A 程度です。USB2.0 の USB 電源の 最大電流は 0.5A ですので、回路規模が大きくなると最大電流を超える場合があります。その場合 は、最大電流 0.9A の USB3.0 から電源を取るか、もしくは、JP7 の設定を WALL に切り替えて J15 の DC プラグから電源を取って下さい) 3. ZYBO の PROG/UART の Micro USB ポートとパーソナル・コンピュータ(PC)の USB ポートをコ ードで接続する。 4. ZYBO の電源を ON する。 5. Tera Term を立ち上げ、シリアルポートのラジオボタンをクリックし、OK ボタンをクリックする。 シリアルポートに接続する。 6. 設定メニューのシリアルポートを選択する。
  123. 123. 35 | 86 ZYBO Linux ハンズオン資料 7. ボー・レート 115200bps、データ 8bit、パリティ none、ストップ 1bit、フロー制御 none に設定 する。 8. 下図のようにプロンプトが出てくるはずだ。出てこない場合は、リターンキーを押すとプロンプト が出てくる。
  124. 124. 36 | 86 ZYBO Linux ハンズオン資料 9. ZYBO にはタイマーIC がないので、時刻が設定されていない。後で NTP をインストールするまで は、date コマンドで日時を入力しよう。(date MMDDHHmm[[CC]YY][.ss]) date 122915042014 10. なお、ZYBO の電源を消す場合には、root ユーザーの時は shutdown –h now コマンドで、ユーザ ー・モードのときは、sudo shutdown –h now コマンドで必ずプロセスを停止すること。(注:必 ず reboot: System halted と表示が出てから、電源を OFF すること)
  125. 125. 37 | 86 ZYBO Linux ハンズオン資料 10. ユーザーでログイン 1. 今までは root でコマンドを実行したが、ユーザー・アカウントでログインする。ユーザー名 linaro のユーザーが既に登録されているので、ログインする。なお、パスワードは linaro だ。 su – linaro 2. pwd コマンドを実行すると、ディレクトリが linaro ユーザーのホーム(/home/linaro)に移動して いるのが確認できる。 3. Apps ディレクトリを作製する。 mkdir Apps
  126. 126. 38 | 86 ZYBO Linux ハンズオン資料
  127. 127. 39 | 86 ZYBO Linux ハンズオン資料 11. LED をカウントアップするソフトウェアを実行(UIO の実習)8 1. デバイス・ツリーの UIO が有効になっているか?を調べる。 2. su – linaro コマンドを実行して、linaro ユーザーでログインした状態だとします。 3. ls /dev/uio*コマンドを実行すると、/dev/uio0 ができているのがわかる。 4. cd /sys/devices; cd amcd /sys/devices/soc0/amba¥@0;ls コマンドを実行すると、最初に 43c00000.led4_axi_lite_slave があるのが見える。(yama さん、情報ありがとうございました) 5. cd 43c00000.led4_axi_lite_slave/; ls コマンドで、43c00000.led4_axi_lite_slave ディレクトリに入 ってファイルリストを見た。
  128. 128. 40 | 86 ZYBO Linux ハンズオン資料 6. cd uio/uio0; ls コマンドを実行して、/sys/devices/soc0/amba@0/43c00000.led4_axi_lite_slave /uio/uio0 ディレクトリに入って、ファイルリストを見た。 7. cat name version uevent コマンドを実行したところ、下に示す結果を得た。 led4_axi_lite_slave devicetree MAJOR=246 MINOR=0 DEVNAME=uio0
  129. 129. 41 | 86 ZYBO Linux ハンズオン資料 8. sys ディレクトリを見た所で、cd ~/Apps コマンドでホームディレクトリの下の Apps ディレクト リに戻る。 9. vi led4_axi_lslave_linux.c コマンドで vi を立ちあげて led4_axi_lslave_linux.c を新規作成する。 10. この章の巻末にある led4_axi_lslave_linux.c をタイプするか、勉強会フォルダの Files の下にある led4_axi_lslave_linux.c をエディタで開いてコピー&ペーストしてもよい。 11. vi では i キーをタイプするとインサートモードになりコピー&ペーストすることができる。 12. ESC キーでインサートモードを終了する。 13. SHIFT+ZZ、シフトキーを押しながら Z キーを 2 回押すと、セーブして終了する。 14. cc -o led4_axi_lslave_linux led4_axi_lslave_linux.c コマンドでコンパイルする。 15. led4_axi_lslave_linux ができた。
  130. 130. 42 | 86 ZYBO Linux ハンズオン資料 16. ./led4_axi_lsalve_linux コマンドを実行する。 17. /dev/uio0 open error でエラー終了してしまう。 18. ls -l /dev/uio*コマンドを実行すると、一般ユーザーに w パーミッションが与えられていない。
  131. 131. 43 | 86 ZYBO Linux ハンズオン資料 19. sudo chmod 666 /dev/uio0 コマンドで、uio0 に、一般ユーザーに w パーミッションを与えた。 (注:ZYBO の電源を消すと/dev/uio0 の設定は消えてしまうので、恒久的に設定を残したい場合 は、/etc/rc.local ファイルにコマンドを書いて下さい。その場合は、sudo を抜いて下さい) 20. もう一度、./led4_axi_lsalve_linux コマンドを実行する。 21. 今度は led4_axi_lsalve_linux ソフトウェアを実行することができた。
  132. 132. 44 | 86 ZYBO Linux ハンズオン資料 22. 4 キーとリターンキーを押して、LED Interval Register を設定する。 23. 50000000 をタイプして、リターンキーを押す。このレジスタは LED のカウントアップするイン ターバルを指定する。100MHz クロックなので、50000000 を設定すると 0.5 秒ごとに LED がカ ウントアップする。 24. 2 キーとリターンキーを押すと、LED のカウントが開始される。
  133. 133. 45 | 86 ZYBO Linux ハンズオン資料 25. led4_axi_lsalve_linux ソフトウェアを終了しても LED のカウントは終了しない。ハードウェアが LED のカウントを実行しているからだ。 26. LED のカウントを終了するには、2 キーを押す。 27. 最後に 5 キーを押すと、led4_axi_lsalve_linux ソフトウェアが終了する。 28. led4_axi_lslave_linux.c のソースコードを下に示す。 /* * led4_axi_lslave_linux.c * * Created on: 2014/12/30 * Author: Masaaki */
  134. 134. 46 | 86 ZYBO Linux ハンズオン資料 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <assert.h> #include <sys/mman.h> #include <fcntl.h> char inbyte(void){ char in_data; int ret_val; in_data = getc(stdin); if (in_data == '¥n') in_data = getc(stdin); return(in_data); }; int main() { int inbyte_in; int val; int fd; volatile unsigned int *led4_base; // LED4 (UIO0) fd = open("/dev/uio0", O_RDWR); // LED4 if (fd < 1){ fprintf(stderr, "/dev/uio0 open error¥n"); exit(-1); } led4_base = (volatile unsigned int *)mmap(NULL, 0x10000, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); if (!led4_base){ fprintf(stderr, "LED4 mmap error¥n"); exit(-1); } while(1){ printf("********************** LED4 TEST Start ***********************¥n");
  135. 135. 47 | 86 ZYBO Linux ハンズオン資料 printf("TeraTerm: Please Set Local Echo Mode.¥n"); printf("Press '1' to show all registers¥n"); printf("Press '2' to set LED4 Enable or Disable(Toggle, Command Register)¥n"); printf("Press '3' to set LED Counter Load Register (4bits, Please input hexadecimal)¥n"); printf("Press '4' to set LED Interval Register (32bits, Please input decimal)¥n"); printf("Press '5' to exit¥n"); printf("Selection : "); inbyte_in = inbyte(); printf(" ¥n"); printf(" ¥n"); switch(inbyte_in) { case '1' : // Show all registers val = led4_base[0]; printf("Command Register is %x¥n", val); val = led4_base[1]; printf("LED Counter Load Register is %x¥n", val); val = led4_base[2]; printf("LED Monitor Register is %x¥n", val); val = led4_base[3]; printf("LED Interval Register is %d (decimal)¥n", val); break; case '2' : // Set LED4 Enable or Disable(Toggle, Command Register) val = led4_base[0]; if (val & 1) { led4_base[0] = 0; printf("LED4 count is Disable¥n"); } else { led4_base[0] = 1; printf("LED4 count is Enable¥n"); } break; case '3' : // Set LED Counter Load Register (4bits, Please input hexadecimal) printf("Please input LED Counter Load Register value (hexadecimal)"); scanf("%x", &val);
  136. 136. 48 | 86 ZYBO Linux ハンズオン資料 led4_base[1] = val; printf(" ¥n"); break; case '4' : // Set LED Interval Register (32bits, Please input hexadecimal) printf("Please input LED Interval Load Register value (decimal) "); scanf("%d", &val); led4_base[3] = val; printf(" ¥n"); break; case '5' : // exit printf("exit¥n"); return 0; } printf(" ¥n"); } munmap((void *)led4_base, 0x1000); }
  137. 137. 49 | 86 ZYBO Linux ハンズオン資料 12. NTP のインストール 1. ルーターから LAN ケーブルを ZYBO に接続する。DHCP 接続とする。(PC から USB ケーブルで ZYBO の PROG/UART ポートに接続して、Ubuntu をインストールした SD カードからブートし ているとする) 2. ZYBO の電源を ON にする。 3. apt-get update を行う。(root で行う) 4. apt-get upgrade を行う。アップグレード・パッケージがある時は Y を押す。 5. ZYBO はバッテリバックアップのタイマーIC を持っていないので、電源 ON で Linux をブートし た時に date コマンドで日時を入れる必要がある。NTP で自動的に日時を入れるようにする。 6. シリアルの Tera Term で、apt-get install ntp コマンドを実行する(root で実行。linaro ユーザー
  138. 138. 50 | 86 ZYBO Linux ハンズオン資料 でログインしている時は、sudo su コマンドで root ユーザーに変更する) 7. date コマンドを実行すると、時刻は NTP であっていたが、タイムゾーンが UTC になっていた。 (その後、何回かやり直したところ日時が合っていない場合が多いようだ) 8. タイムゾーンを JST に変更する。/etc/localtime から、/usr/share/zoneinfo にシンボリックリンク を貼ると JST になった。 ln -sf /usr/share/zoneinfo/Japan /etc/localtime
  139. 139. 51 | 86 ZYBO Linux ハンズオン資料 9. sudo vi /etc/ntp.conf で NTP サーバーの設定を行う。9 10. server 0 ~ server 3 の先頭に#を追加してコメントに変更した。 11. その下に、server -4 ntp.nict.jp minpoll 4 maxpoll 10 を追加した。 12. /etc/init.d/ntp restart コマンドを実行し、ntpd をリスタートする。リスタート後、少なくとも数 分後には日時が合う。 13. 再起動後、電源 ON 時は、最初は日時が合っていないが、同様に数分後には日時が合う。
  140. 140. 52 | 86 ZYBO Linux ハンズオン資料 13. SSH のインストール 1. apt-get install ssh で SSH をインストールする。インストールするか聞かれたら Y を押す。 2. vi /etc/ssh/sshd_config を入力して、sshd_config を編集する。(エディタならばなんでも良いです) 3. 27 行目の PermitRootLogin を PermitRootLogin no にして、root でログイン出来ないようにす る。(行番号を表示するには、:set number をタイプする) 4. セーブして終了する。 5. /etc/init.d/ssh restart で sshd サービスの再起動を行う。
  141. 141. 53 | 86 ZYBO Linux ハンズオン資料 6. ifconfig を行って、DHCP で振られた IP アドレスを確認する。 7. 今の状態では、192.168.3.10 が割り振られている。 8. Tera Term をもう 1 つ立ち上げる。 9. TCP/IP のラジオボタンをクリックして、ホスト(T)に 192.168.3.10 と入力し、OK ボタンをクリ ックした。
  142. 142. 54 | 86 ZYBO Linux ハンズオン資料 10. SSH 認証ダイアログが出て、更に、セキュリティ警告が出る。 11. セキュリティ警告で、続行ボタンをクリックする。 12. SSH 認証ダイアログで、ユーザ名に linaro パスフレーズに linaro を入力する。 13. OK ボタンをクリックする。 14. 少し時間が掛かるが、ZYBO の Linux に linaro ユーザーとしてログインできる。
  143. 143. 55 | 86 ZYBO Linux ハンズオン資料
  144. 144. 56 | 86 ZYBO Linux ハンズオン資料 14. Xming で X ウインドウを Windows で操作 Xming X Server for Windows というツールを使用する。これを Windows パソコンにインストールす る。インストールの手順は、”フリーの Windows 用 X サーバー「Xming」のインストールと基本設定、 使い方”に書いてある。これを参照してインストールを行った。 Xming の設定と sshd の設定をするために参考にさせて頂いた Web サイトは、”SSH X11 フォワー ディングで Xming にリモートの X を転送する”と”Linux 上の画面(X11)を Windows 上で表示し,操 作する”だ。 1. Windows のスタート・メニューから Xming -> XLaunch を選択して立ちあげた。 2. Display settings で Multiple windows のラジオボタンがデフォルトで選択されているので、そ のまま次へ>ボタンをクリックした。 3. Session type で Start no client のラジオボタンがデフォルトで選択されているので、そのまま次 へ>ボタンをクリックした。 4. Additional parameters で Clipboard にチェックが入っている。Additional parameters for Xming に-dpi 100 をタイプした。 5. 次へ>ボタンをクリックした。
  145. 145. 57 | 86 ZYBO Linux ハンズオン資料 6. Finish configuration で、完了ボタンをクリックした。 7. すると、タスクトレイに、Xming Server が入っている。 8. ZYBO の Linux に移動して、root の Tera Term で、vim /etc/ssh/sshd_config でファイルを編集 する。 X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost yes が書いてあれば良いそうだが、上の 2 つは書かれていたので、X11UseLocalhost yes のみを追加した。 9. Tera Term を立ち上げる。 10. SSH で、linaro ユーザーとしてログインする。 11. TeraTerm の設定メニューから SSH 転送を選ぶ。
  146. 146. 58 | 86 ZYBO Linux ハンズオン資料 12. SSH ポート転送のダイアログで、”X クライントアプリケーションの転送 リモートの(X)アプリ ケーションをローカルの X サーバーの表示する”にチェックを入れる。 13. OK ボタンをクリックする。 14. Tera Term 起動時にこの設定を有効にしておくためには、設定メニューから設定の保存を行う。 15. gedit とタイプすると gedit のウインドウが開く。
  147. 147. 59 | 86 ZYBO Linux ハンズオン資料
  148. 148. 60 | 86 ZYBO Linux ハンズオン資料 15. OpenCV インストール 1. linaro ユーザーで SSH を使用してログインする。 2. OpenCV をインストールする前の事前準備のために opencv_pre_install.sh を実行する。(章末に opencv_pre_install.sh を示す) 3. opencv_pre_install.sh を SFTP でアップロードするか、gedit などでファイルを作製して実行権限 を与える。 chmod +x opencv_pre_install.sh 4. ./opencv_pre_install.sh を実行する。(時間がかかります) 5. wget ftp://ftp.jp.netbsd.org/pub/pkgsrc/distfiles/opencv-2.4.6.1.tar.gz で OpenCV 2.4.6.1 をダウ ンロードする。
  149. 149. 61 | 86 ZYBO Linux ハンズオン資料 6. 下のコマンドを実行する。(make は長い時間が掛かる)10 tar xvzf opencv-2.4.6.1.tar.gz cd opencv-2.4.6.1 mkdir build cd build cmake .. make 5. sudo make install sudo ldconfig を実行した。これで、OpenCV 2.4.6.1 のインストールは終了した。 6. Micro SD カードの容量を確かめるために df コマンドを実行した。
  150. 150. 62 | 86 ZYBO Linux ハンズオン資料 7. 結果は 48%だった。OpenCV 2.4.6.1 をインストールする前は 27%だった。 8. コンパイル結果が要らない場合は、make clean を実行するとディスク容量が減る。 9. opencv_pre_install.sh を下に示す。11 sudo apt-get -yV install build-essential sudo apt-get -yV install libboost1.46-all-dev # cd /tmp; sudo apt-get source opencv sudo apt-get -yV build-dep opencv # sudo apt-get -yV install libqt4-dev sudo apt-get -yV install libgtk2.0-dev sudo apt-get -yV install pkg-config # sudo apt-get -yV install opencl-headers # sudo apt-get -yV install libjpeg-dev sudo apt-get -yV install libopenjpeg-dev sudo apt-get -yV install jasper sudo apt-get -yV install libjasper-dev libjasper-runtime sudo apt-get -yV install libpng12-dev sudo apt-get -yV install libpng++-dev libpng3 sudo apt-get -yV install libpnglite-dev libpngwriter0-dev libpngwriter0c2 sudo apt-get -yV install libtiff-dev libtiff-tools pngtools
  151. 151. 63 | 86 ZYBO Linux ハンズオン資料 sudo apt-get -yV install zlib1g-dev zlib1g-dbg sudo apt-get -yV install v4l2ucp # sudo apt-get -yV install python sudo apt-get -yV install autoconf sudo apt-get -yV install libtbb2 libtbb-dev sudo apt-get -yV install libeigen2-dev sudo apt-get -yV install cmake sudo apt-get -yV install openexr sudo apt-get -yV install gstreamer-plugins-* sudo apt-get -yV install freeglut3-dev sudo apt-get -yV install libglui-dev sudo apt-get -yV install libavc1394-dev libdc1394-22-dev libdc1394-utils # ビデオ関係 sudo apt-get -yV install libxine-dev sudo apt-get -yV install libxvidcore-dev sudo apt-get -yV install libva-dev sudo apt-get -yV install libssl-dev sudo apt-get -yV install libv4l-dev sudo apt-get -yV install libvo-aacenc-dev sudo apt-get -yV install libvo-amrwbenc-dev sudo apt-get -yV install libvorbis-dev sudo apt-get -yV install libvpx-dev
  152. 152. 64 | 86 ZYBO Linux ハンズオン資料 16. OpenCV サンプル・プログラムのコンパイル+顔認識アプリの実行 1. OpenCV の samples/c ディレクトリに入る cd ../samples/c 2. サンプル・プログラムをコンパイルする。 ./build_all.sh 3. レナ像の顔認識+目の認識を 2 つ同時に行った。 ./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_eye.xml" --scale=1.3 lena.jpg
  153. 153. 65 | 86 ZYBO Linux ハンズオン資料
  154. 154. 66 | 86 ZYBO Linux ハンズオン資料 17. ZYBO 用の Linaro Ubuntu のバージョンを 12.11 から 14.04 LTS にアップグレード(おまけ) なお、Ubuntu14.04LTS にできたのだが、シリアルターミナルをローカルエコーにしないとキー入力 した文字が表示されないなどの不具合がある。12.11 から 14.04 LTS へのアップグレードが大変なこ とも含めて検討された方が良いと思う。Ubuntu14.04LTS にしてから OpenCV をコンパイルする場合 は、Ver. 2.4.6.1 を使用するとコンパイルに失敗するので、OpenCV 2.4.10 をお勧めする。 1. 前回から表示されているが、do-release-upgrade コマンドを実行した。 2. Package Configuration 画面が開いた。右向き矢印キーを押して を選択してからエンター・キー を押した。(値はデフォルト) 3. これは、デフォルトで が選択されていたと思うので、エンター・キーだけ押したと思う。
  155. 155. 67 | 86 ZYBO Linux ハンズオン資料 4. デフォルトが Don't touch Keymap だったので、そのままにして、右向き矢印キーを押して を選 択してからエンター・キーを押した。 5. /etc/legal の Configuration が出てきたが、Y を押して、リターンキーを押した。
  156. 156. 68 | 86 ZYBO Linux ハンズオン資料 6. エラーが起こったアプリケーションが表示されたが、アップグレードは完了した。エンター・キー を押した。 7. もう一度、起動すると、Ubuntu 14.04 LTS が表示された。アップグレード成功だ。
  157. 157. 69 | 86 ZYBO Linux ハンズオン資料 ここからは、いろいろとトライしてみたので記憶が曖昧だが、表示をよく読んで、なんというコマンド を使うと良いよ。。。という提案の通りにコマンドを使った。 使ったコマンドは、 強制的にパッケージをインストールする apt-get -f install アプリケーションで使われなくなったライブラリを自動的に削除してくれる apt-get autoremove 不要なパッケージファイルを消してくれる apt-get autoclean これらのコマンドは、ユーザー・モードから実行する時は、sudo を前に追加する。 apt-get clean を使ったら、14.04 適用後のディスク容量を 91% から 72% にすることができた。 root@linaro-ubuntu-desktop:~# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 7443384 6348376 693856 91% / devtmpfs 187692 4 187688 1% /dev none 4 0 4 0% /sys/fs/cgroup none 50668 520 50148 2% /run none 5120 0 5120 0% /run/lock none 253328 0 253328 0% /run/shm none 102400 0 102400 0% /run/user
  158. 158. 70 | 86 ZYBO Linux ハンズオン資料 root@linaro-ubuntu-desktop:~# sudo apt-get clean root@linaro-ubuntu-desktop:~# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 7443384 5018196 2024036 72% / devtmpfs 187692 4 187688 1% /dev none 4 0 4 0% /sys/fs/cgroup none 50668 520 50148 2% /run none 5120 0 5120 0% /run/lock none 253328 0 253328 0% /run/shm none 102400 0 102400 0% /run/user いろいろとトライして、長くかかったが、一応 Ubuntu 14.04 LTS にアップグレードできたようだ。 起動時のメッセージ。 終了時のメッセージ。
  159. 159. 71 | 86 ZYBO Linux ハンズオン資料 2016/02/12:追記 2015 年 12 月以降、Linux カーネルのバージョンが新しくなってからは Ubuntu 14.04 LTS にアップ グレードは素直にできるようになった。但し、Ubuntu 14.04 LTS にアップグレードしてから、apt-get update, apt-get upgrade すると、Tera Term などでシリアルターミナルを使用した場合に、自分でタ イプした文字がエコーバックされないという現象がある。それは、「CTRL+D」で再度自動ログインす るとエコーバックされるようになる。(@YuuichiAkagawa アドバイスありがとうございました)
  160. 160. 72 | 86 ZYBO Linux ハンズオン資料 18. ARMhf の Root File System を入れる(おまけ) ARMhf の Downloads(http://www.armhf.com/download/)の Root File Systems (no kernel)に Ubuntu Trusty 14.04 LTS と Debian Wheezy 7.5 がある。この 2 つの Root File System は、このマニュアルで 作ってきた Digilent Linux カーネルと DTB、uImage でブートすることができる。ZYBO に接続した シリアルコンソールにプロンプトはできないが、SSH で入ったターミナルでログインすることができ る。 ZYBO の Digilent Linux Kernel に ARMhf の Root File Systems を入れる 2( Debian Wheezy 7.5) http://marsee101.blog19.fc2.com/blog-entry-3061.html Debian Wheezy 7.5 の Root File Systems を MicroSD カードの 2nd パーティションに入れて、1st パーティションは、Digilent Linux Kernel, BOOT.bin, devicetree.dtb を入れた。 ブートしてみると、シリアルポート接続の Trea Term は、sshd で止まった。 しかし、DHCP で IP は取れている。現在は 192.168.3.2 だ。 この IP を使用して、Tera Term で SSH 接続した。
  161. 161. 73 | 86 ZYBO Linux ハンズオン資料 ID は debian パスワードも debian でログインできた。 df コマンドを実行すると、5% ほど使用している。
  162. 162. 74 | 86 ZYBO Linux ハンズオン資料 top コマンドを実行すると、52 KB ほどメモリを使用している。Linaro Ubuntu の 1/3 程度だが、 デーモン(って今言わないのかな?)が動いていないせいもあるはず。。。 sudo コマンドはエラーで実行できないので、sudo コマンドを使えるようにする。 パソコンの Ubuntu 14.04 LTS で MicroSD カードをマウントして、そこで chmod 4755 /usr/bin/sudo を実行した。
  163. 163. 75 | 86 ZYBO Linux ハンズオン資料 もう一度、MicroSD カードを ZYBO に入れて、電源を ON した。 SSH でログインして、sudo apt-get update を実行したら動作した。因みに、これは 2 度目で 1 度目 は debian のパスワード (debian) を入力した。 date コマンドを実行したら、時刻はあっているようだったが、タイムゾーンが UTC だった。 ln -sf /usr/share/zoneinfo/Japan /etc/localtime で、タイムゾーンを JST に変更した。
  164. 164. 76 | 86 ZYBO Linux ハンズオン資料 sudo apt-get upgrade で既存のモジュールをアップデートした。 オーナーとグループが root なので、debian に変更する。 cd /home sudo chown -R -f debian:debian debian で、オーナーとグループが debian になった。 logout して、もう一度、SSH で debian ユーザーでログインすると、.Xauthority が作られていた。
  165. 165. 77 | 86 ZYBO Linux ハンズオン資料 gedit コマンドで、gedit を起動すると、今度は起動した。 ZYBO で Debian Wheezy 7.5 も使うことができるようになった。 ZYBO の ARMhf の Debian Wheezy 7.5 に OpenCV 2.4.10 をインストール http://marsee101.blog19.fc2.com/blog-entry-3064.html opencv_pre_install.sh を作って、それを実行した。その内容を示す。 sudo apt-get -yV install build-essential sudo apt-get -yV install libboost1.46-all-dev # cd /tmp; sudo apt-get source opencv
  166. 166. 78 | 86 ZYBO Linux ハンズオン資料 sudo apt-get -yV build-dep opencv # sudo apt-get -yV install libqt4-dev sudo apt-get -yV install libgtk2.0-dev sudo apt-get -yV install pkg-config # sudo apt-get -yV install opencl-headers # sudo apt-get -yV install libjpeg-dev sudo apt-get -yV install libopenjpeg-dev sudo apt-get -yV install jasper sudo apt-get -yV install libjasper-dev libjasper-runtime sudo apt-get -yV install libpng12-dev sudo apt-get -yV install libpng++-dev libpng3 sudo apt-get -yV install libpnglite-dev libpngwriter0-dev libpngwriter0c2 sudo apt-get -yV install libtiff-dev libtiff-tools pngtools sudo apt-get -yV install zlib1g-dev zlib1g-dbg sudo apt-get -yV install v4l2ucp # sudo apt-get -yV install python sudo apt-get -yV install autoconf sudo apt-get -yV install libtbb2 libtbb-dev sudo apt-get -yV install libeigen2-dev sudo apt-get -yV install cmake sudo apt-get -yV install openexr sudo apt-get -yV install gstreamer-plugins-* sudo apt-get -yV install freeglut3-dev sudo apt-get -yV install libglui-dev sudo apt-get -yV install libavc1394-dev libdc1394-22-dev libdc1394-utils # sudo apt-get -yV install libxine-dev sudo apt-get -yV install libxvidcore-dev sudo apt-get -yV install libva-dev sudo apt-get -yV install libssl-dev sudo apt-get -yV install libv4l-dev sudo apt-get -yV install libvo-aacenc-dev sudo apt-get -yV install libvo-amrwbenc-dev sudo apt-get -yV install libvorbis-dev

×