見本

第

1.1

1章

ソフトもハードもプログラミング！
ARM Cortex-A9搭載FPGA Zynq
ナンテいい時代！ こんなに高機能なのに今すぐキットで誰でも試せるています．

Zynq の概要

実際に Zynq 搭載評価ボードを動作させてみた感じ
では，Zynq 自身はデバイスとしては完全に ARM コア●単なる ARM コア内蔵 FPGA ではない

SoC ととらえることができます．電源投入後，FPGA

Xilinx 社が提供する新しいデバイス“Zynq”（ジンク

をコンフィグレーションせずに先に ARM コアが立ちと発 音 ）は，ARM Cortex-A9 のデュ アルコア・ プロ

上がる仕様であったり，FPGA 部を PL と呼ぶことから

セッサとFPGAを搭載した新しいタイプのSoC（System

も，Xilinx 社からの「FPGA という枠を超えた SoC 」でOn a Chip）です（写真 1）．Zynq の内部を大ざっぱにあるというメッセージが受け取れます．

示すと図 1.1 のようになります．同社では ARM コアや周辺コントローラ，メモリ・コントローラ部分を，PS（プロセッシング・システム），FPGA 部分を PL（プログラマブル・ロジック）と呼びます．

DSP を搭載した SoC は市場にいくつもあり，確かに，
そのアプローチは多くの柔軟性を持っています．
Zynq は FPGA を高いレベルで SoC に統合しており，
PL 部には，既存の FPGA と同様ハードウェアを構成

Zynq というデバイスを，FPGA を搭載した SoC，あできます．うたい文句にあるようにまさに Zynq は“All

るいはその逆の SoC を搭載した FPGA とだけ見るのは

Programmable SoC”であり，ソフトウェアもハード

少々早合点かもしれません．今後の市場への展開と浸ウェアさえもプログラムできる，プログラマとしては透度にもよるので慎重に評価しなければなりませんが，腕の見せ所の多いデバイスといえます．

筆者は新しい分野の SoC が出現したという印象を持っPS（プロセッシング・システム）部

ARM Cortex-A9
デュアルコア

ARM
プロセッサ
部分

I/O

L2キャッシュ

USB，Ethernet，
SD，UART，
2
SPI，I C，
GPIO

DDR
メモリ・
コントローラ

DDR
SDRAM

FPGA
PL（プログラマブル・ロジック）部
FPGA部分

I/O
図 1.1

ARM コアと FPGA を内蔵する Zynq

写真 1.1

Zynq の外観

1.1

Zynqの概要﻿

9

●Linux のカスタマイズ～第 6 章～
この章から Zynq 向け Linux のディープな世界に入っはすでにその仕組みを持っています．ツールを使いこなすことでIPコアを使ったり作ることができるように，ていきます．MIO と EMIO といった Zynq の特別な機

次の項目について解説しました．

能からはじまり，次の技術的なポイントについてに言・既存の IP コアを追加する及しました．

・最新 Linux カーネルへの対応

・ Zynq の初期化の詳細

・デバイス・ツリーの自動生成

・ Linux の再構築

・オリジナル IP コアを作成し追加する・デバイス・ツリー

・オリジナル IP コアをカスタマイズする・クロス・コンパイル・ルート・ファイル・システムの構築
Linux のカーネルは意図的に古いソースから構築しこれらを一通り読んで，実践することで，IP コアをるようにしました．
●カスタム IP コアの追加～第 8 章～

めです．デバイス・ツリーにおいては ARM Linux のIP コアときっても切り離せないのがバスの理解です．

本家に採用されている技術でありながら，資料が多くこの章ではバスとは何かといった基本的なことを AXIありません．最新の技術への理解の足がかりになれば

バスを中心に記述しています．また簡単なサンプルをと思います．

通して，IP コアの作成方法を別の角度から理解します．

るはずです．

付属の SD カードから Linux を起動して，コンソールから操作する

ZedBoard のセットアップとLinux の起動

（4）付属の USBホスト用コネクタ（コネクタ J13 に接続）
（5）付属の電源ケーブル（付属の電源アダプタを接続）
写真 2.1 に，ZedBoard と各種ケーブルを接続した様

それでは， 早 速 ZedBoard を動かしてみましょ う．

子を示します．とりあえず Linux が起動することを確

ZedBoard には標準で Linux が書き込まれた SD カード

認したいという場 合は，（3）と（5）を用 意して，Zedが付属しています．これを使って Linux を起動してみBoard と PC を接続してください．

ます．
●ジャンパ設定と電源 ON●ZedBoard のセットアップ
まずは必要な機材を用意します．

電源 ON の前に，各種ジャンパの状態を確認してください．まず起動モードの設定ジャンパは，写真 2.2

・ ZedBoard 一式に示すように，・ホスト・パソコン（Windows が動く PC で良い）・ MIO2 を GND 側FPGA が SoC の中に取り込まれていけば，最終的に・ ZedBoard 用ディスプレイ（DVI-D 対応のもの）

・ MIO3 を GND 側・ USB フラッシュ・メモリ（用意できれば）・ MIO4 を 3V3 側は問題解決のための特別なコプロセッサが用意され，●ハードウェア・ロジックの追加～第 7 章～

2章

●例題を追いながら具体的な作り方を学ぶ～第 9 章～

ルート・ファイル・システムの構築までできれば，Linux でシステムを組む事はそう難しくなくなってい

2.1

使う，利用する，作って提供するといったことができています．これはステーブルであることと，その後のデバイス・ツリーの仕様変更との差異を明確にするた

第まずはZedBoardを動かしてみようさらにソフト的には GLSL のようにコンパイラとの統PC には，TeraTerm などのターミナルソフトもイン・ MIO5 を 3V3 側

この章からは Zynq の FPGA 部分に焦点を当てます．

合などがなされるのではないかと（希望的観測も含め

ストー ルしておいてください． なお， とりあえず・ MIO6 を GND 側

今後，ハードウェアとソフトウェアの融合が進めば，て）筆者は予測しています．

Linux が起動することを確認する程度であれば，ディに設定にしてください．またジャンパ JP6 をショート

スプレイは無くてもかまいません．

（MIO［0］を GND）し，さらにジャンパ JP2 と JP3 をど

誰もがカスタマイズされたハードウェアを利用できる

ARM が用意する ACP は，SoC にコプロセッサ的な環 境が整 っ てくることでしょ う． その際にはハー ド機能を追加できる面白いインターフェースです．ここウェアをブラック・ボックス的なライブラリとして使では ACP で DCT をアクセラレートして，ARM からラしてください（写真 2.1）．

用することが多くなるでしょう．Xilinx 社のツールにイブラリとして使用する例を掲げます．

（1）HDMI 扌 DVI-D ケーブル（ディスプレイと接続）

トに付属の SD カードを差し込み，ZedBoard の電源を

（2）Ethernet ケーブル（PC と接続．ハブ経由でも直結

入れてください．すると電源が入ったことを示す緑色

さらに次のケーブルを用意して，ZedBoard と接続でも OK）（3）マイクロ USB ケーブル（コネクタ J14 と PC を接続）

写真 2.1

16

第1章 ソフトもハードもプログラミング！ARM Cortex-A9搭載FPGA Zynq

ZedBoard と各種ケーブルの接続

ちらもショートしてください（USB ホスト電源供給）．
以上を確認してから ZedBoard の SD カード・スロッの LED（LD13）が点灯します．
そして十数秒すると，Zynq が起動したことを示す青写真 2.2

ZedBoard を SD カードから起動させるジャンパ設定

2.1

ZedBoardのセットアップとLinuxの起動

17

（8）FSBL では通常，基本的な周辺機器のみ初期化す

短縮されます．

る（CLK，DDR SDRAM，MIO 等）．これでとりあえ
ず DDR SDRAM は使えるようになる（9）FSBL で は さ ら に BOOT.bin の ヘ ッ ダ を 見 て，

2.5

Linux としてよりよい環境を作るには？

FPGA 部分をコンフィグレーションする（10）FPGA 部分のコンフィグレーションが終了する

第

ZedBoard 付 属の Linux を使 っ てみると， いろいろと，ZedBoard 上の青い LED が点灯するな改善点が浮かび上がってきます．大半は他の Zynq

（11）続いて，第二段階ブートローダ（SSBL）を読み込システムにも共通する問題です．本書では次のようなむ（ここでは U-Boot）

ストーリで，最終的には非常に使いやすい Linux シス

3.1

3章

開発ツールPlanAheadのインストールと実践
ISE Design Suite 同梱の開発ツール
PlanAhead を使った Zynq の開発手順

開発ツールの入手方法とセットアップ手順・ Xilinx SDK（Software Developer Kit）
Xilinx 社が用意している C/C++ の統合開発環境です．Eclipse をベースにしています．以下 SDK と呼び（12）U-Boot が実行される

テムを仕上げていきます．

（13）U-Boot はスクリプトを実行し，Linux カーネル

（1）Linux なしでの実行（zImage）を DDR SDRAM へ展開する（2）すでにある Linux を実行

ルが必要です．ここでは ISE Design Suite 14.4 を使用（14）続 い て devicetree.dtb を DDR SDRAM へ（3）クロス・コンパイルによりアプリケーションを追し ま す（ 図 3.1）．Zynq の 開 発 に は 無 償 版 の ISE

システム全体の設計・解析を可能とする統合ツール

WebPACK が使用可能です．ISE Design Suite をインです．今回は XPS で設計したハードウェアのデザイン

ストールすると次のツールが同時にインストールされの合成や，後述の XPS と SDK の橋渡しに使います．

展開する（15）さ ら に ramdisk8M.image.gz をDDR SDRAM
へ展開する（16）最 後 に Linux の 先 頭 ア ド レ ス で あ る 0x8000 へ
ジャンプする加（4）ルート・ファイル・システムを自由に作れるような環境の構築（5）PL（プログラマブル・ロジック）に既存の IP コア

ZedBoard を使っての開発には Xilinx 社の開発ツー

ます．

ます．
・ PlanAhead

各自のシステムに ISE Design Suite 14.4（またはそれ・ Xilinx Platform Studio（XPS）

以降）をインストールしてください．筆者は 64 ビット

プロセッサを使用したエンベデッド・システムを構

版 Windows 7 に ISE をインストー ルし使 用しました．

築する際に使用するツールセットです．Zynq プロセッ

また，Linux のクロス・コンパイル環境として，必要にを追加して合成し Linux から確認

サに対してバスや IP コアを選択し接続することでハー応じて 64 ビット版の Ubuntu サーバを使用しています．

gz）の SD カードからの展開が早くはないので，起動に開発環境あるいは製品化を目指すための有用なベー

ドウェアの構築を可能にします．以下XPSと呼びます．

は少々時間がかかります．SD カードからの起動ではな

ス・システムを構築するために，いろいろと改良してく，クワッド SPI から起動させる場合は，起動時間はいきましょう．

（17）Linux が起動する
ルート・ファイル・システム（ramdisk8M.image.

を追加して合成し Linux から確認
（6）PL（プログラマブル・ロジック）に自作の IP コア

ダウンロード図 3.1

30

第2章 まずはZedBoardを動かしてみよう

ISE Design Suite 14.4 のダウンロード

3.1

開発ツールの入手方法とセットアップ手順

31

第図 3.26

図 3.27

4章

次世代ツールVivadoを使ってみようZynq 対応開発ツールの最新版
Vivado を使った Zynq の開発手順

Xilinx 社は新しい FPGA 開発ツール Vivado を発表し

グレー トできます（IP Integrator）． また，VHDL やました．登場当初は Zynq に対応していなかったので

Verilog HDL を使った今まで通りの FPGA の開発もシすが，バージョンアップにより Zynq 対応になりましミュレーション（XSIM）ももちろんサポートされていた．ZedBoard の BSP も初めから用意されたので，実ます．できあがった回路図はインターフェースをつけに簡単に Vivado を使えることがわかりました．

てやれば IP コアとしてパッケージ化できます．作成さVivado は，今までのツール群をさらに統合を進めた

れたパッ ケー ジはツー ル非 依 存・ 業 界 標 準の IP-形になっています．まず，プロセッサを使用した開発

XACT で，IP Integrator で汎用的に使うことができる

を中心に既存の IP コアを組み合わせて IP コアをインテようになります．

Create Zynq Boot Image の確認

Boot Image に u-boot.elf を追加

図 3.28

TeraTerm で Linux 起動の確認

ramdisk8M.image.gz（ ファ イル・ システム ）を（FPGA なし）の実行 / デバッグ

理 解する必 要があります． 次 章 以 降で実 際に Linux（3）あらかじめある Linux を立ち上げる

カー ネルを作り，devicetree.dtb を理 解し作 成（4）Linux アプリケーションのデバッグすることで解決していきます．ここでは Linux が起動（5）PlanAhead で BSP のデフォルト設定の PL 部の合成することだけを確認しましょう．

（6）FSBL の作成

＊

＊

＊

ここまで来たことで，次のことが達成できました．
（1）PlanAhead を使い ZedBoard の BSP を使ってプロジェクトを作成（2）SDK を 使 っ て ス タ ン ド ア ロ ン・ プ ロ グ ラ ム

ダウンロード（7）Linux を立ち上げるための SD カードの作成
なお，いくつか詳しく説明せずに飛ばした内容もあります．
・ devicetree.dtb とはなにか？
・ Linux 用の ramdisk の設定
これらは次章以降で説明します．
図 4.1

64

第3章

開発ツールPlanAheadのインストールと実践

Vivado のダウンロード

65うまくいけば Zynq のプロンプトを見ることができま作成した SoC は SDK によるデバッグと Vivado の信号線の波形表示を使って，ソフトウェアとハードウェ

す．
また，devmem コマンドで GPIO をアクセスするこ

アの動きを同時に把握することができます．その際には TCF という新しい技術を使っていました．

とも可能です．

zynq> devmem 0x41200000 32 0xff

Vivado の方向性は一企業の閉じた世界ではなく，多これにより ZedBoard 上の LED が点灯します．現時

くの IP ベンダがやソフトウェア開発会社が参加可能な点では AXI の GPIO をカーネルにインストールしてい第5章

Xylon社のリファレンス・デザインを使う
グラフィックス・アクセラレータが組み込まれた
Zynq デザイン

ように相互接続性の高い技術が選択されています．
さらに VivadoHLS を使えば，IP-XACT に対応した前章までで，Linux の立ち上げができるようになり

例えばビデオの入出力はインターフェースの規格だ

IP コアを C/C++ から作ることができます． 実 際にました．この章ではちょっと寄り道をして，Linux でけで，単純な RGB のパラレルのタイプから，HDMI，

BRAM（0x40000000）もアクセス可 能です．BRAM

Xilinx 社では VivadoHLS によって作成した sobel フィの応用方法をのぞいてみたいと思います．

Camera-Link，FPD-Link I/II/III，MIPI，MDDI などの容量は 64K バイトに設定しました．64K バイトを超

ルタをリファレンス・デザインとして用意しています．

Linux を使う大きな理由の一つは「OS を意識したくなど，さまざまな規格が存在し，扱う形式も ARGB のないこともあり GPIO ドライバ経由ではアクセスできません．

えた領 域をアクセスするとどのような挙 動になるでしょう？興味のある方は実験してください．

また，IP コアの統合ツールとしてだけではなく，旧ない」「既存のライブラリを有効に利用したい」など，

32 ビット，16 ビット，ベイヤーパターンなど，サイズ

来の VHDL や Verilog HDL からの設 計を経てシミュ

ある目的に一直線に向かって行くための近道として利においていは QVGA，VGA，SVGA，XGA，HD…，

用するためでしょう．

さらに各規格は年々バージョンアップされ，扱うサイ

なお，devmem をした瞬間に Linux がハングアップ

レー ショ ンするといっ たツー ルも統 合されており，する場 合， 前 述の ps7_post_config を忘れている可 能

ハードウェア技術者のニーズに細かく対応しています．

この章ではすでにあるリファレンス・デザインを，性があります．手順を再度確認してみてください．

特にハードウェア技術者にとっての Hello World とも

応 用 的に使う方 法を示します． またこのリファ レン

そんな中で，自分の欲しい機能をパーフェクトに備いえるスイッチや LED を使った回路設計もでき，それ

ス・デザインには，Linux のフレーム・バッファ用ド

え て い る SoC が あ る と は 限 り ま せ ん． 例 え ばを IP コア化可能である点も含めて素晴らしいツールにライバが用意されているため，容易に Linux から利用

QVGA/16 ビット・カラーで十分なのに高機能で複雑仕上がっています．

することができます．

なインターフェースしか用意されていなかったり，あ

＊

＊

＊

以上，新しい統合開発ツールとしての Vivado を見

ズは大きくなる傾向にあります．

てきました． 既にある ARM の IP コアを中 核として，あとは IP コアが増えて，いろいろな IP コアが容易に

この章ではリファレンス・デザインを使い，SD カー

るいは 10 ビットの高解像特殊用途に使いたくても SoC

AXI につながる Xilinx 社が用意した IP コアを組み合わ接続できるようになり，VivadoHLS による高位合成のドから簡 単に Linux を立ち上げることから始め，SDが持 っ ていない， 持 っ ていても今 度は他のインターせることで，迅速に自分の SoC を作ることができます．

例も増え，対応する Linux ライブラリやアプリケーショ

カードのパーティションを切り直して，より Linux ら

フェースがないなどのケースです．運よく見つかってIP コアは IP-XACT（IEEE1685）に準拠した標準的な形ンも増えると，より一層使いやすいツールになることしい使い方へと変えていき，最終的には Linux 上でのも，チップが特殊であればあるほど常にディスコン（生式になっています．

でしょう．

プログラミングを可能にするところまでを説明します．

産中止）を気にすることになります．

用意されたリファレンス・デザインを使用すること

Zynq の基本コンセプトは「すでにインターフェース

で，IP コアのパワーを Linux を通して簡便に利用できとして確立され地位のある USB 2.0 や Ethernet などはます．

あらかじめ用意します．ユーザがフレキシビリティを必要とするビデオの入出力や画像処理部分は PL 部で5.1

Zynq のリファレンス・デザイン●Zynq にはグラフィックス・コントローラがない

第4章

次世代ツールVivadoを使ってみようというところにあるようです．
●Zynq は FPGA 部分に自分の望む回路を実装できる

Zynq ではさまざまな I/O が最 初から使えるように

図 5.1 に Zynq のリファレンス・デザインとして公開

なっ ています．UART，SD カー ド・ コントロー ラ，

されている，ソベル・フィルタ（輪郭抽出）の例を示し

USB， ギガビッ ト Ethernet など， 一 通りのインターます．入力は HDMI 相当で FMC-IMAGEON ボードをフェースがすぐに使えるようになっています．ただ 1

通して内部メモリに展開され，さらにその画像をハー

種類だけ，それも意図的に固定的なハードウェアとしドウェアでソベル・フィルタを実行し，表示用のマルて実装していないものがあります．それはグラフィッチレイヤ（OSD ともいう ）に対 応した IP コアにより，

クス機能，とりわけビデオ入出力に関する機能です．

HDMI からフル HD 相当（1920 × 1080/60 フレーム / 秒）

近年の SoC はカメラ入力と DVI-D や HDMI などの表の出力をしています．OS は Linux，GUI などの制御部

示機能を一通り持っているものが多く，それはそれで122

柔軟に対応しましょう．それがZynqというSoCです．」

分は Qt で書かれています．

便利なのですが，いざ使ってみるとその制約の多さなデモはクリック一つで，ハードウェアでのソベル・どから，「帯に短し襷に長し」となることもあるようでフィルタ処理とソフトウェアでのフィルタ処理を切りす．

替えることができるようになっています．実際に試し

5.1

Zynqのリファレンス・デザイン

123

第

図 5.24IP コアで画像を回転・拡大・縮小

リスト 5.6

回転・拡大・縮小処理プログラム

for( k = 0 ; k < 360 ; k++ ) {box_fill(2, x - w/2, y - h/2, w * 2, h * 2,0xFF000000 );//Thread.sleep(10);rotate_copy_image(1, x, y, w, h, 2, x, y, k);//Thread.sleep(10);}（a）バッファリングなし

enable_layer(2);set_buffer(2, READ_BUFFER, 0);
set_buffer(2, WRITE_BUFFER, 1);for( k = 0 ; k < 360 ; k += 10 ) {box_fill(2, x, y, w, h, 0xFF000000);
rotate_copy_image(1, x, y, w, h, 2, x, y, k);switch_buffer(2);}（b）バッファリングあり

バッファリングを使用していないので，ちょっとちと思えば，RAM ディスクを変更したり，SD カードにらつくようです．Thread.sleep のコメントを外すとそ

ext2 や ext3 などの Linux 用ファイル・システムを構築のちらつきは顕著になります．そこで，バッファリン

してマウントする必要があります．

グさせながら表示してみましょう．リスト 5.6（b）にプ

6章

Linuxのカスタマイズ手順
Linux カーネルを最新のバージョンにしたり，ドライバの追加も自由自在！

ここまでで，すでに用意された Zynq の Linux シス

つのピンで共有されていいます．Zynq での MIO のピ

テムを自分なりに変更して，アプリケーションを使い，ンとしてどのように共有されているかを図 6.2 に示しまIP コアを有効利用するまでの簡単な方法を見てきましす．

た．より深く使いこなすなら，ライブラリの構築やカー

例えば，MIO の 28 番は Ethernet 1 の tx ck，USB 0

ネルの構築を自分で行う必要があることもわかりましの data，SPI 0 の ck，SDIO 0 の ck，SDIO のカード検た．

出トライとプロテクト，SDIO 電 源 制 御 0，NOR/

この章では，Zynq の I/O（Input/Output）をおさら

SRAM のアドレス 13，CAN 1 の tx，UART 1 のいした後，Zynq の初期化からルート・ファイル・シ

tx，I2C 1 の ck，TTC1 の w，GPIO の 28 で共有さステムの構築まで，よりディープに使えるシステムにれています．実際のピンは一つしかないので，そのう仕上げていきます．

ちの 1 機能を使うようにします．特定のレジスタに値・ Zynq の初期化の詳細を入れることで，その機能が選択されます．

・ Linux の再構築

ここで，USB 0 を選択してしまうと他の機能が使え・デバイス・ツリー

なくなるかというとそうではありません．共有されて・クロス・コンパイルいる機能の中には，他の MIO ピンにアサインすること・ルート・ファイル・システムの構築が可能なペリフェラルがあります．例えば CAN 1 のtx/rx は，12 組の MIO から選択可能です．

6.1

Linux 上の IP コアを使うためには専用のデバイス・

Zynq の MIO/EMIO

ドライバが望ましいのですが，それを構築するのが大ログラムを示します．

変な場 合は，/dev/mem を使えば良いでしょ う． しここでは MIO と EMIO を中心に，ARM SoC として

ファの切り替えは VSYNC のタイミングで行われるの

かし，/dev/mem はセキュ リティ・ ホー ルになりやの構造と組み込みLinuxでの関係を整理しておきましょで，ちらつきはまったくありません（図 5.24）．

すいので，そこにライブラリをラッピングすると使い

う．

＊

＊

な る の で し ょ う か？ Zynq に は 大 き な 特 徴 と し てやすくなります．さらにスクリプト言語でラッピング
すると，より簡単に使うことができるようになります．

●MIO とはZynq を簡 単に使えると配 布されている Linux は，

より深く活用するなら，ライブラリの構築やカーネル

Zynq を含め SoC のチップは多くの機能を盛り込んでRAM ディスクであったり FAT ファイル・システムしの構築を自分でする必要があります．その方法についいます．それらの機能を，ユーザが全部使い切るといか使っていないなど，Linux システムのデモ・レベルては，次章以降で説明します．

うことはまずないでしょう．Ethernet を二つ使うことのものが多いようです．自分独自のシステムを作ろう

Ethernet は他の MIO ピンにアサインされていません． それでは，CAN1 を使うと Ethernet1 は使えなくすると描画の過程が表示されなくなりました．バッ＊●EMIO とは

I/Oは
選択可能

PS
（プロセッシング・システム）部

UART

もあれば，別のユーザでは一切使わないかもしれません．使わない機能は無駄にはなります．
この時，Zynq を含めたほとんどの SoC は， 全ての機能を同時に使えるような構造にはしていません．使

GPIO
ユーザ・
ロジックを
通すことも
可能

わない機能のために SoC のピン（SoC から出ている足）

ユーザ・
ロジック

を割り当てるのは無駄なので，いくつかの機能を各ピンで共有させています（図 6.1）．
Zynq では MIO（Multiplexed I/O）と命 名していますが，要はマルチプレクサのことで，複数の I/O が一

第5章

Xylon社のリファレンス・デザインを使う

PL（プログラマブル・
ロジック）
部

単純に
配線する
ことも可能
図 6.1

146

CPUコア

I/O の出し方

6.1

Zynq の MIO/EMIO

147

8192

blockspergroup,

8192

SERIALfragments per groupttyPS0::respawn:-/bin/sh

2048 inodes per group

＊

～中略～

＊

＊

７章

第

最新の環境や新しいライブラリを利用しようとした

Allocating group tables: done

ハードウェア・ロジックの追加
標準で用意されている GPIO の追加から，独自のハードウェア CQ 版 GPIO の作成＆組み込みまで

Writing inode tables: done

ときに，Linux カーネルの再構築を要求されることがWriting superblocks and filesystem

あります．Linux の最新のカーネルは git で管理されて

accounting information: done

いるので，簡単にダウンロードしてコンパイルが可能

この章からは Zynq の FPGA 部分に焦点を当てます．

この手法はビジネスを加速させるうえでも重要です．

> sudo mount -o loop ramdisk8M.

です．それに合わせて用意されているハードウェアとついに「 やわらかいハー ド 」の核 心 部 分に到 達です．

必要なロジック（IP コア）を調達して SoC を組み立て，

image /mnt
> cd buildroot-2012.11.1/output/

適切なデバイス・ドライバを選択するため，バイナリ

ハードウェア・ロジック（ここでは IP コアと同義）を市場の開発スピードに負けないようにするためにも，である dtb が必要です．dtb は dts をコンパイルするこ

追加して自分のスーパー SoC を構築することが可能であるものを有効に使い，一番上のアイデア部分で特徴

images> sudo tar xvf rootfs.tar -C /mntとで用意できます．dts の記述とドライバは整合性があす．

のあるものを開発して差別化していくという方法は今る必要があるので注意が必要です．dts には IP アドレ

ハードウェア・ロジック（IP コア）の追加方法には> sudo umount /mnt
> gzip ramdisk8M.image

スやルート・ファイル・システムの設定が記述できまい く つ か あ り ま す． 一 つ は ツ ー ル で あ る Xilinx

一方，必要なロジックが特殊であるために自分で開す．

Platform Studio（XPS）上にすでに用 意されているロ

発しなければならないこともあるでしょう．昔からあ> ls -l ramdisk8M.image.gz-rwxr-xr-x 1 root root 3556918

2

月 18 00:42 ramdisk8M.image.gz

後の主流になるでしょう．

完成した Linux でライブラリやアプリケーションをジックを選択して追加する方法です．Xilinx 社が用意る秋葉原的手法と言ってもよいかもしれません．アマ

作るには，PC 用 Linux でクロス・コンパイルしたオブしているものからサードパーティが用意しているもの，

チュアの方にとっては世界のどこにもない一品物がつくれる魅力的な手法と言えます．

ジェクトを作る必要があります．Avian と Jikes を用意

無償のもの，有償のものと様々な選択肢の中から必要

このルー ト・ ファ イル・ システムで立ち上げるとすれば，Zynq だけの環境で Java によるアプリケーショなロジックを選んで自分のシステムの中に組み込むこ

ここではその二つの方法を紹介します．さらに作成

getty が動き，コンソールに login プロンプトがでます．

ン開 発がある程 度できるようになります． ルー ト・とができます．まさに自分だけの ARM SoC を作るこした IP コアを，別のデザインに再利用する方法も紹介

筆 者はこれを sh がいきなり動 作するように /etc/

ファイル・システムを最新の eglibc にすると，より汎とができるようになります．

します．

inittab を書き換えました．

用性が広がります．ルート・ファイル・システムの構# Put a getty on the serial port

築には軽量のbuildroot が使えます．作成したルート・# ttyPS0::respawn:/sbin/getty -L

ファイル・システムをさらに書き換えて，/bin/shttyPS0 115200 vt100 # GENERIC_が立ち上がる環境を作ることができました．

図 7.1

164

第6章

Linuxのカスタマイズ手順

PlanAhead から XPS を呼び出す

165

このPDFは，CQ出版社発売の「ARM Cortex-A9×2！ZynqでワンチップLinux on FPGA」の一部見本です．
内容・購入方法などにつきましては以下のホームページをご覧下さい．
内容
http://shop.cqpub.co.jp/hanbai/books/46/46091.htm
購入方法
http://www.cqpub.co.jp/order.htm

見本