ダイジェスト版 - 株式会社アルファプロジェクト

ALTERA SoC Board Series
LK-CY-A01
Cortex-A9
Cyclone V SoC FPGA BOARD
Software Manual
Rev 1.0
ダイジェスト版
ALPHAPROJECT
http://www.apnet.co.jp
Copyright©2015 ALPHAPROJECT Co.,LTD. All right reserved
ALTERA SoC Board Series
ご使用になる前に
このたびは LK-CY-A01 をお買い上げいただき誠にありがとうございます。
本製品をお役立て頂くために、このマニュアルを十分お読みいただき、正しくお使い下さい。
今後共、弊社製品をご愛顧賜りますよう宜しくお願いいたします。
梱包内容
本製品は、下記の品より構成されております。梱包内容をご確認のうえ、万が一、不足しているものがあれば
お買い上げの販売店までご連絡ください。
LK-CY-A01 梱包内容
●LAN ストレートケーブル 1 本
●AC アダプタ 1 本
●PC-USB-04(ケーブル付) 1 個
●USB ケーブル(A - B)
1本
コネクタの形状
●microSD カード(4GB、アダプター付き) 1 個
●CD-ROM
1枚
●保証書
1枚
■本製品の内容及び仕様は予告なしに変更されることがありますのでご了承ください。
LK-CY-A01 ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
ALPHA PROJECT
http://www.apnet.co.jp
ALTERA SoC Board Series
目
1.
2.
3.
次
概要
1
1.1
はじめに ................................................................................................... 1
1.2
Linux について........................................................................................... 1
1.3
U-Boot について ........................................................................................ 1
1.4
VirtualBox について.................................................................................... 2
1.5
Ubuntu について ........................................................................................ 2
1.6
GNU と FSF について .................................................................................. 2
1.7
GPL と LGPL について ................................................................................. 3
1.8
保証とサポート .......................................................................................... 3
システム概要
4
2.1
システム概要 ............................................................................................. 4
2.2
ブートローダ ............................................................................................. 5
2.3
Linux カーネル........................................................................................... 5
2.4
ルートファイルシステム............................................................................... 6
2.5
クロス開発環境 .......................................................................................... 7
2.6
添付 CD-ROM の構成................................................................................... 8
システムの動作
9
3.1
動作環境 ................................................................................................... 9
3.2
シリアル初期設定値 ...................................................................................10
3.3
ネットワーク初期設定値..............................................................................10
3.4
SA-Cy500S ボードの接続............................................................................12
3.5
Linux の起動 ............................................................................................13
3.6
Linux の動作確認.......................................................................................14
3.7
ネットワークの設定 ...................................................................................17
LK-CY-A01 ソフトウェアマニュアル
Copyright©2015 ALPHAPROJECT Co.,LTD All right reserved
ALPHA PROJECT
http://www.apnet.co.jp
ALTERA SoC Board Series
4.
5.
6.
7.
8.
ブートローダ
20
4.1
U-Boot 概要 .............................................................................................20
4.2
ブートローダの起動 ...................................................................................21
4.3
ネットワーク設定 ......................................................................................23
4.4
Preloader の作成.......................................................................................25
4.5
ブートローダの作成 ...................................................................................37
Linux
40
5.1
Linux システムの概要 .................................................................................40
5.2
Linux カーネルの作成 .................................................................................41
5.3
ルートファイルシステムの作成 .....................................................................43
5.4
DTB ファイルの作成...................................................................................51
5.5
RBF ファイルの準備 ...................................................................................52
5.6
RAMFS-Linux システムの起動 ......................................................................53
5.7
SD-Linux システムの起動............................................................................55
プログラムの作成
58
6.1
プログラムの開発について ...........................................................................58
6.2
サンプルアプリケーションのコンパイル..........................................................59
6.3
動作確認 ..................................................................................................61
デバイスドライバの作成
62
7.1
サンプルデバイスドライバの概要 ..................................................................62
7.2
サンプルデバイスドライバ/アプリケーションのコンパイル................................64
7.3
動作確認 ..................................................................................................66
タッチパネル LCD キットの使用
68
8.1
Linux カーネルの対応方法 ...........................................................................68
8.2
サンプルアプリケーションのコンパイル..........................................................70
8.3
動作確認 ..................................................................................................72
LK-CY-A01 ソフトウェアマニュアル
Copyright©2015 ALPHAPROJECT Co.,LTD All right reserved
ALPHA PROJECT
http://www.apnet.co.jp
ALTERA SoC Board Series
9.
ボードの初期化
77
9.1
microSD カードイメージの書き込み ..............................................................77
9.2
シリアル FlashROM 構成 .............................................................................78
9.3
作業概要 ..................................................................................................78
9.4
microSD カードの作成................................................................................79
9.5
書き込み手順 ............................................................................................81
10. 製品サポートのご案内
83
11. エンジニアリングサービスのご案内
84
付録 A.
85
起動ログ
付録 B. 付属品について
LK-CY-A01 ソフトウェアマニュアル
Copyright©2015 ALPHAPROJECT Co.,LTD All right reserved
90
ALPHA PROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
1.
概要
1.1
はじめに
SA-Cy500S は、CPU コアに ARM Cortex-A9 を採用したマイクロプロセッサ「Cyclone V SoC」(ALTERA)を搭載した
汎用 CPU ボードで、標準 OS に Linux を採用しています。
Linux を採用することで、世界中のプログラマによって日々開発される膨大なオープンソースソフトウェア資産をロイヤリティ
フリーで利用することができます。
本ドキュメントでは、SA-Cy500S の動作方法をはじめ、SPL、U-Boot、Linux カーネル、アプリケーション開発のための
手順を説明します。
本ドキュメントでは、VirtualBox を含めた開発環境が WindowsPC にインストールされていることが前提となっ
ています。開発環境をインストールされていない場合は、『Linux 開発 インストールマニュアル』に従って、先
に開発環境の作成を行ってください。
1.2
Linux について
Linux とは 1991 年に Linus Torvalds 氏によって開発された、オープンソースの UNIX 互換オペレーティングシステムです。
Linux はオープンソース、ロイヤリティフリーという特性から、世界中のプログラマたちにより日々改良され、今では大手企業
のサーバーや、行政機関などにも広く採用されています。
また、Linux の特長として CPU アーキテクチャに依存しないということがあげられます。これは、GNU C コンパイラの恩恵に
もよるものですが、数多くのターゲット(CPU)に移植されており、デジタル家電製品を中心に非 PC 系製品にも採用されるよう
になりました。
Linux は、カーネルと呼ばれる OS の核となる部分とコマンドやユーティリティなど多くのソフトウェアから構成されます。こ
れらのソフトウェアの多くは FSF の GNU プロジェクトによるフリーソフトウェアです。
本ドキュメントでは、Linux のごく一部の機能と使い方のみを説明しています。
Linux の詳細については、一般書籍やインターネットから多くの情報を得られますので、それらを参考にしてください。
1.3
U-Boot について
U-Boot は、DENX Software Engineering 社の Wolfgang Denk 氏が保守を行っているオープンソフトウェアの汎用ブートロ
ーダです。多くの開発者によって支援され、現在最も機能が豊富で柔軟性に富み、開発が活発に行われています。対応している
アーキテクチャは、SuperH、PPC、ARM、AVR32、MIPS、x86、68k、Nios、MicroBlaze などです。またプログラムのダウ
ンロードに関しても、ネットワークを介した TFTP の他に、CF カード、SD メモリカードなどのストレージデバイスからのダウ
ンロードにも対応しています。
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
1
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
2.
システム概要
2.1
システム概要
SA-Cy500S は、CPU コアに ARM Cortex-A9 を採用したマイクロプロセッサ「Cyclone V SoC」(ALTERA)を搭載した汎用 CPU
ボードです。
Linux システムは、ブートローダと Linux カーネル、
ルートファイルシステムから構成されます。ブートローダに SPL と U-Boot、
Linux カーネルに Linux-3.10、
ルートファイルシステムには RAM,microSD カード等で動作する専用パッケージを使用します。
ルートファイルシステム
Linux カーネル
ブートローダ
SA-Cy500S ボード
ソフト
ウェア
ハード
ウェア
Fig 2.1-1 SA-Cy500S システム概要図
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
4
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
2.4
ルートファイルシステム
Linux は、カーネルとファイルシステムという 2 つの要素から構成されます。
Linux では、
全てのデータがファイルという形で管理されています。
アプリケーションプログラムやデバイスドライバをはじめ、
HDD や COM ポートなどの入出力デバイスもファイルとして扱われます。
Linux では全てのファイルがルートディレクトリを起点としたディレクトリ構造下に管理されており、これら全てのファイル構
造のことをファイルシステムと呼びます。また、システム動作に必要なシステムファイル群のこともファイルシステムと呼びま
す。
本ドキュメントでは、これらの意味を明確にするため、ファイル管理構造(ext2 や ext3)のことをファイルシステム、システム
動作に必要なファイル群のことをルートファイルシステムと表現しています。
Linux のルートファイルシステムは、そのシステムが必要とする機能に合わせて構築する必要があります。
SA-Cy500S では、以下のルートファイルシステムを用意しています。
●ramfs ルートファイルシステム
RAM 上で動作するように構成されたオリジナル Linux パッケージです。
RAM 上に展開されるため、電源を落とすと変更した内容は破棄されます。
●sd ルートファイルシステム
SD カード用に構成されたオリジナル Linux パッケージです。
ルートファイルシステムが SD カード上に展開されるため、電源を落として
も変更した内容は破棄されませんが、電源を落とす前には適切な終了処理が
必要になります。
本ドキュメントでは、ramfs ルートファイルシステムを利用した Linux システムを RAMFS-Linux システム、sd ルートファイ
ルシステムを利用した Linux システムを SD-Linux システムと表現します。
RAM
SD カード
RAM
SD カード
Linux
Linux
sd
カーネル
カーネル
ルートファイル
システム
ramfs
ルートファイル
システム
Fig 2.4-2 SD-Linux システム
Fig 2.4-1 RAMFS-Linux システム
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
6
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
ネットワークの設定
IP アドレス
192.168.128.211
サブネットマスク
255.255.255.0
ゲートウェイ
192.168.128.254
DNS サーバ
192.168.128.1
Table 3.3-3 ホスト OS ネットワーク設定
本ドキュメントでは、上記のネットワーク設定を使用して説明を進めます。
お客様の環境によって変更する場合には、以降の説明では、適宜読み替えてください。
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
11
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
3.4
SA-Cy500S ボードの接続
ホスト PC と SA-Cy500S ボードの接続例を示します。
LAN をネットワークと接続する場合は、ネットワーク管理者と相談し、設定に注意して接続してください。
SA-Cy500S ボード
ホスト PC
LAN クロスケーブル
AC アダプタ
PC-USB-04
シリアルインタフェース
USB ケーブル
ケーブル
Fig 3.5-1 SA-Cy500S ボードの接続(PC に接続する場合)
SA-Cy500S ボード
ホスト PC
LAN ストレートケーブル
AC アダプタ
PC-USB-04
シリアルインタフェース
USB ケーブル
ケーブル
Fig 3.5-2 SA-Cy500S ボードの接続(HUB に接続する場合)
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
12
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
3.5
Linux の起動
SA-Cy500S 上で Linux の起動を行います。
SA-Cy500S は、動作確認用に Linux がプリインストールされた状態で出荷しております。
①
SA-Cy500S の電源をいれる前にスイッチが以下の設定になっていることを確認します。
スイッチの設定の詳細に関しては、『SA-Cy500S ハードウェアマニュアル』でご確認ください。
②
『3.5 SA-Cy500S ボードの接続』にしたがって、ホスト PC と SA-Cy500S を接続します。
PC-USB-04 がホスト PC に認識されて仮想 COM ポートが作成されます。
③
ホスト OS(Windows)のターミナルソフトを起動します。(設定は『3.2 シリアル初期設定値』を参照してください)
④
AC アダプタを接続して、SA-Cy500S の電源を入れます。
⑤
Linux カーネルが自動起動し、全ての起動までにはおよそ 20 秒ほどかかります。
なお、起動ログに関しては、本ドキュメントの『付録 A. 起動ログ』でご確認ください。
U-Boot 2013.01.01 (Aug 08 2015 - 13:29:57)
CPU
: Altera SOCFPGA Platform
BOARD : Alphaproject SA-Cy500S Board
I2C: ready
DRAM: 512 MiB
:
途中省略
:
Welcome to Buildroot
buildroot login:
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
13
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
3.6
Linux の動作確認
SA-Cy500S 上での Linux の動作確認を行います。
ログイン
Linux 起動後、ログインプロンプト『buildroot login:』が表示されます。
ログインを実行するにはユーザ『root』を入力してください。
ログイン設定
ユーザ
root
パスワード
なし
Table 3.7-1 ログイン設定
Welcome to Buildroot
buildroot login: root
入力
USB(CN5) -USB メモリUSB メモリをファイルシステム上の任意のディレクトリにマウントすることにより、他のファイルと同様にアクセスすること
ができます。活線挿抜に対応しているため、電源を ON にした状態でも USB メモリの抜き差しが可能です。
なお、USB メモリを使用する場合には、以下のように接続します。
SA-Cy500S ボード
USB ホスト変換ケーブル
USB メモリ
Fig 3.7-2 SA-Cy500S ボードと USB メモリの接続
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
14
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
4.2
ブートローダの起動
SA-Cy500S を起動して、U-Boot のコマンドコンソールに入る方法を説明します。
①
SA-Cy500S の電源を入れる前に、スイッチが以下のようになっていることを確認します。
スイッチの各設定の詳細に関しては、『SA-Cy500S ハードウェアマニュアル』でご確認ください。
②
『3.5 SA-Cy500S ボードの接続』にしたがって、ホスト PC と SA-Cy500S を接続します。
PC-USB-04 がホスト PC に認識されて仮想 COM ポートが作成されます。
③
ホスト OS(Windows)のターミナルソフトを起動します。(設定は『3.2 シリアル初期設定値』を参照してください)
④
AC アダプタを接続して、SA-Cy500S の電源を入れます。
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
21
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
4.4
Preloader の作成
ゲスト OS(Ubuntu)上で Preloader をコンパイルするための手順を説明します。
作成の準備
Preloader, U-boot の作成には FPGA のプロジェクトおよび U-Boot のソースファイルが必要になります。
SA-Cy500S 用 FPGA サンプルプロジェクトの入手方法およびコンパイル方法に関しては、『AN5102 SA-Cy500S(Cyclone
V SoC CPUBoard) サンプル HDL プログラム解説』を参照してください。
コンパイルを行った HDL プロジェクトをホスト OS からゲスト OS にコピーし、作業用ディレクトリに配置します。
①
ソースコードディレクトリ『sacy500s-lk/src』をホームディレクトリに作成します。
すでに作成されている場合は、手順②にお進みください。
省略
②
$ mkdir -p ~/sacy500s-lk
入力
手順①で作成した作業用ディレクトリに移動します。
HDL プロジェクトは guest ユーザのホームディレクトリにコピーしたものとします。
省略
$ mv ~/sacy500s_sample_1.0 ~/sacy500s-lk
入力
続いて、U-Boot のソースファイルを配置するソースコードディレクトリ『sacy500s-lk/src』を作成し、ソースファイルを
配置します。
①
ソースコードディレクトリ『sacy500s-lk/src』をホームディレクトリに作成します。
すでに作成されている場合は、手順②にお進みください。
省略
②
入力
手順①で作成した作業用ディレクトリに移動します。
省略
③
$ mkdir -p ~/sacy500s-lk/src
$ cd ~/sacy500s-lk
入力
作業用ディレクトリに付属 CD 内の以下の 1 つのファイルをコピーします。
手順④~⑥で例として CD から直接コピーする方法を記述します。他の方法でコピーする場合には、コピー作業
完了後に、手順⑦にお進みください。
uboot-socfpga-sacy500s-X.X.tar.gz
※『X.X』にはバージョン番号が入ります。Ver1.0 の場合は、『1.0』
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
25
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
4.5
ブートローダの作成
ゲスト OS(Ubuntu)上でブートローダをコンパイルするための手順を説明します。
作成の準備
U-boot の作成には前もって Preloader の生成が必要です。
Preloader の生成が行われていない場合、『4.4 Preloader の作成』を参照して Preloader の生成を行ってください。
U-boot の作成
①
Preloader のコンパイルで生成した U-boot のプロジェクトに移動します。
省略
②
クロスコンパイラをエクスポートします。
省略
③
$ export CROSS_COMPILE=~/socfpga-toolchain/bin/arm-linux-gnueabihf-
入力
プロジェクトを初期化します。
省略
④
$ cd ~/sacy500s-lk/sacy500s_sample/software/spl_bsp/uboot-socfpga-sacy500s-1.0
$ make mrproper
入力
SA-Cy500S 用の設定を適用します。
$ make sacy500s_config
Configuring for sacy500s board...
省略
⑤
入力
コンパイルを行います。
$ make
Generating include/autoconf.mk
Generating include/autoconf.mk.dep
:
途中省略
:
make[1]: ディレクトリ `/home/guest/sacy500s-lk/sacy500s_sample/software/spl_bsp/
uboot-socfpga/examples/api' に入ります
make[1]: `all' に対して行うべき事はありません.
make[1]: ディレクトリ `/home/guest/sacy500s-lk/sacy500s_sample/software/spl_bsp/
uboot-socfpga/examples/api' から出ます
省略
⑥
入力
make が正常に完了すると『uboot-socfpga』ディレクトリに『u-boot.img』が生成されます。
省略 $ ls u-boot.img
u-boot.img
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
37
ALPHAPROJECT
http://www.apnet.co.jp
入力
LK-CY-A01
SoC FPGA Series
U-boot Script 作成の準備
①
作業用ディレクトリ『sacy500s-lk』をホームディレクトリに作成します。
すでに作成されている場合は、手順②にお進みください。
省略
②
入力
手順①で作成した作業用ディレクトリに移動します。
省略
③
$ mkdir ~/sacy500s-lk
$ cd ~/sacy500s-lk
入力
作業用ディレクトリに付属 CD 内の以下の 1 つのファイルをコピーします。
手順④~⑥で例として CD から直接コピーする方法を記述します。他の方法でコピーする場合には、コピー作業
完了後に、手順⑦にお進みください。
uboot-script-sacy500s-1.0.tar.gz
※『X.X』にはバージョン番号が入ります。Ver1.0 の場合は、『1.0』
④
CD をドライブに挿入します。
デフォルトでは、自動でマウントされますが、マウントされない場合は、以下のコマンドを実行します。
省略
$ gvfs-mount -d /dev/sr0
入力
マウントされているかどうかは、『mount』コマンドで確認できます。
以下のように、『/dev/sr0』が表示されている場合は、すでにマウントされています。
(『*******』は、CD のボリュームラベルになります。)
$ mount
:
途中省略
:
/dev/sr0 on /media/******* type udf (ro,nosuid,nodev,uhelper=udisks,uid=1000,
gid=1000,iocharset=utf8,umask=0077)
省略
⑤
入力
ファイルをコピーします。コマンド途中の『*******』は、CD のボリュームラベルになります。
そのため、その部分は挿入した CD に合わせて入力してください。
省略
⑥
入力
CD をアンマウントします。
省略
⑦
$ cp /media/*******/sources/uboot-script-sacy500s-X.X.tar.gz .
$ umount /dev/sr0
入力
カーネルソースを展開します。
省略
$ tar -zxvf uboot-script-sacy500s-X.X.tar.gz
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
38
入力
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
U-boot Script の作成
U-boot のブートスクリプトを生成する方法を説明します。
ブートスクリプトの生成には、前もって U-Boot のコンパイルを行っておく必要があります。
①
準備作業で展開した作業用ディレクトリの『uboot-script-sacy500s-X.X』へ移動します。
省略
②
$ cd ~/sacy500s-lk/uboot-script-sacy500s-X.X
入力
U-boot スクリプト『u-boot.scr』を生成します。
省略
$
~/sacy500s-lk/sacy500s_sample/software/spl_bsp/uboot-socfpga-sacy500s-1.0/tools/
mkimage -A arm -O linux -T script -C none -a 0 -e 0 -d uboot-script-sacy500s-1.0.txt
u-boot.scr
Image Name:
Created:
Tue Sep 1 16:59:11 2015
Image Type:
ARM Linux Script (uncompressed)
Data Size:
135 Bytes = 0.13 kB = 0.00 MB
Load Address: 00000000
Entry Point: 00000000
Contents:
Image 0: 127 Bytes = 0.12 kB = 0.00 MB
入力
③
生成した『u-boot.scr』を『/tftpboot』にコピーします。
省略
$ cp u-boot.scr /tftpboot
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
入力
39
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
5.
Linux
5.1
Linux システムの概要
SA-Cy500S 用 Linux システムは、Linux カーネルとルートファイルシステム(ramfs, sd)から構成されます。
Linux カーネルは、デバイスドライバとして UART、Ethernet 等をサポートし、ファイルシステムとして ext2、ext3、JFFS2、
cramfs、FAT、NFS 等をサポートしています。
ルートファイルシステムは、基本アプリケーションとして、コマンドユーティリティ郡「busybox」が収録されています。
ルートファイルシステム
busybox
Linux カーネル
ファイルシステム
デバイスドライバ
UART
EXT2
EXT3
SFlash
JFFS2
CRAMFS
Ether
FAT
NFS
ハードウェア
SA-Cy500S
UART
SFlash
Ether
Fig 5.1-1 Linux システム
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
40
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
Linux カーネルの作成
Linux カーネルをコンパイルする方法を説明します。
Linux カーネルの設定データは Linux カーネルソースディレクトリ以下『arch/arm/configs/sacy500s_defconfig』に
保存されています。
①
準備作業で展開した作業用ディレクトリの『linux-socfpga』へ移動します。
省略
②
$ cd ~/sacy500s-lk/linux-socfpga-sacy500s-X.X
入力
Linux カーネルの設定データを呼び出します。
$ make ARCH=arm sacy500s_defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
省略
入力
#
# configuration written to .config
#
③
make を実行します。終了までに数分から数時間かかる場合があります。
$ make ARCH=arm CROSS_COMPILE=$HOME/socfpga-toolchain/bin/arm-linux-gnueabihfLOADADDR=0x8000 zImage
scripts/kconfig/conf --silentoldconfig Kconfig
WRAP
arch/arm/include/generated/asm/auxvec.h
WRAP
arch/arm/include/generated/asm/bitsperlong.h
省略
入力
:
途中省略
:
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
Image arch/arm/boot/zImage is ready
④
make が正常に終了すると『./arch/arm/boot』ディレクトリに Linux カーネルイメージ『zImage』が作成されます。
$ ls arch/arm/boot/zImage
arch/arm/boot/zImage
省略
⑤
入力
『/tftpboot』ディレクトリに Linux カーネルイメージ『zImage』をコピーし、名前を『zImage-sacy500s』に変更
します。
省略
$ cp arch/arm/boot/zImage /tftpboot/zImage-sacy500s
入力
『arm-linux-gnueabihf-gcc: コマンドが見つかりません』のようなエラーが表示される場合には、クロス
コンパイラのインストールが正常にできていない可能性があります。
多くの場合でインストールマニュアルの『SDK インストール手順』の最後に行うパス設定が異なっている可能
性がありますので、再度ご確認ください。
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
42
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
ramfs ルートファイルシステムの作成
①
ルートファイルシステムの make が正常に終了すると、『./output/images』ディレクトリに『rootfs.cpio.gz』
ファイルが作成されます。
$ ls output/images/rootfs.cpio.gz
output/images/rootfs.cpio.gz
入力
省略
②
U-Boot 用のルートファイルシステムに変換します。
$ mkimage -A arm -O linux -T ramdisk -C gzip -d output/images/rootfs.cpio.gz outpu
t/images/uInitrd-sacy500s
Image Name:
Created:
Mon Aug 24 16:14:00 2015
Image Type:
ARM Linux RAMDisk Image (gzip compressed)
Data Size:
2079599 Bytes = 2030.86 kB = 1.98 MB
Load Address: 00000000
Entry Point: 00000000
省略
入力
③
TFTP を使用してロードできるように、『/tftpboot』ディレクトリにルートファイルシステム『uInitrd-sacy500s』を
コピーします。
省略
$ cp output/images/uInitrd-sacy500s /tftpboot
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
46
入力
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
DTB ファイルの作成
DTB のソースコードである DTS ファイルはテキストベースで編集を行うことができます。今回作成する DTB ファイルの設定
は、LK-CY-0A 用の設定となっています。
DTS ファイルの詳細や文法については Device Tree Usage のページ(http://www.devicetree.org/Device_Tree_Usage)を
参照してください。
①
準備作業で展開した作業用ディレクトリ『sacy500s-lk』へ移動します。
省略
②
$ cd ~/sacy500s-lk
入力
DTS ファイルを DTB ファイルへ変換します。
$ dtc -I dts -O dtb -o sacy500s.dtb dts-sacy500s-1.0.dts -f
DTC: dts->dtb on file "dts-sacy500s-1.0.dts"
省略
③
変換が正常に終了すると DTB ファイル『sacy500s.dtb』が生成されます。
$ ls sacy500s.dtb
sacy500s.dtb
省略
④
入力
『/tftpboot』ディレクトリに『sacy500s.dtb』ファイルをコピーします。
省略
5.5
入力
$ cp sacy500s.dtb /tftpboot
入力
RBF ファイルの準備
ゲスト OS(Ubuntu)上で、ブートのためのサンプル RBF ファイルを準備する手順を説明します。
①
『4.4 Preloader の作成』で用意した FPGA のプロジェクトファイル『sacy500s_sample』に移動します。
用意されていない場合、件の解説を参照に FPGA プロジェクトファイルの準備を行ってください。
省略
②
$ mv ~/sacy500s-lk/sacy500_sample
入力
『/tftpboot』ディレクトリに RBF ファイル『Sa-Cy500S_sample.rbf』をコピーし、名前を『sacy500s.rbf』に
変更します。
省略
③
$ cp output/Sa-Cy500S_sample.rbf /tftpboot/sacy500s.rbf
入力
『sacy500s.rbf』の許可を変更します。
$ sudo chmod 664 /tftpboot/sacy500s.rbf
[sudo] password for guest:
省略
入力
入力
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
52
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
5.6
RAMFS-Linux システムの起動
U-Boot を使用し、『5.2 Linux カーネルの作成』で作成した Linux カーネル『zImage-sacy500s』と ramfs ルートファ
イルシステム『uInitrd-sacy500s』をネットワーク経由(TFTP)でダウンロードし RAMFS-Linux システムを起動する方法を
示します。
①
『5.3 ルートファイルシステムの作成』で作成した microSD カードを SA-Cy500S に挿入します。
②
Linux カーネルイメージ『zImage-sacy500s』を RAM 上にダウンロードします。
SA-Cy500S# tftp 8000 zImage-sacy500s
link up on port 0, speed 1000, full duplex
Using cpsw device
TFTP from server 192.168.128.210; our IP address is 192.168.128.200
Filename 'zImage-sacy500s'.
入力
:
途中省略
:
done
Bytes transferred = 3086944 (2f1a60 hex)
③
ramfs ルートファイルシステム『uInitrd-sacy500s』を RAM 上にダウンロードします。
SA-Cy500S# tftp 360000 uInitrd-sacy500s
link up on port 0, speed 1000, full duplex
Using cpsw device
TFTP from server 192.168.128.210; our IP address is 192.168.128.200
Filename 'uInitrd-sacy500s'.
入力
:
途中省略
:
done
Bytes transferred = 2079600 (1fbb70 hex)
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
53
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
6.
プログラムの作成
本章では、SA-Cy500S 上で動作するアプリケーションの作成方法について説明します。
6.1
プログラムの開発について
ソースファイルのコンパイルから動作までの一連の流れを示します。
①
ゲスト OS 上でソースファイルを作成。
②
ゲスト OS 上でソースファイルをクロスコンパイルし、実行ファイルを作成。
③
SA-Cy500S ボード上でゲスト OS を nfs でマウントし、実行ファイルをダウンロード。
④
SA-Cy500S ボード上で動作を確認。
SA-Cy500S
PC/AT 互換機(LinuxOS)
①ソースコードの
作成
ソースコード
④実行
クロス開発環境
ARM 用クロスコンパイラ
ARM 用クロスアセンブラ
③実行ファイルの
ダウンロード
ARM 用実行ファイル
ARM 用リンカ
②実行ファイルの
作成
ARM 用実行ファイル
Fig 6.1-1 プログラムの開発手順
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
58
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
サンプルアプリケーションのコンパイル
サンプルアプリケーションのコンパイル手順を説明します。
①
準備作業で展開した作業用ディレクトリの『helloworld』へ移動します。
省略
②
$ cd ~/sacy500s-lk/helloworld-1.0
入力
サンプルアプリケーションをコンパイルします。
$ make
~/$HOME/socfpga-toolchain/bin/arm-linux-gnueabihf-gcc
helloworld
省略
③
入力
-Wall
helloworld.c
アプリケーションプログラムを NFS の共有ディレクトリにコピーします。
省略
$ cp helloworld /nfs
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
入力
60
ALPHAPROJECT
http://www.apnet.co.jp
-o
LK-CY-A01
SoC FPGA Series
7.
デバイスドライバの作成
本章では、SA-Cy500S 上の LED にアクセス可能なサンプルデバイスドライバの作成方法とそのデバイスドライバを使用したア
プリケーションの作成方法について説明します。
本章で作成するプログラムは、Linux カーネルソースが事前にコンパイル済みである必要があります。
カーネルのコンパイルについては、『5.2 Linux カーネルの作成』をご確認ください。
7.1
サンプルデバイスドライバの概要
サンプルデバイスドライバは LED デバイスへのアクセス関数を提供します。
デバイスドライバの概要
ユーザプログラム上からデバイスにアクセスする際、通常はデバイスファイルを通じてシステムコールを発行し、デバイスドラ
イバに処理を依頼します。デバイスドライバはデバイスへのアクセス関数を提供することにより、ユーザプログラム上からデバ
イスにアクセスする手段を提供します。
サンプルデバイスドライバはキャラクタ型デバイスドライバになり、モジュールとしてコンパイルします。このデバイスドライ
バは、ユーザプログラム上から LED デバイスにアクセスするための関数を提供します。システムコール(API)は『open』、
『close』、『write』になります。サンプルデバイスドライバを示すデバイスファイルは『/dev/sample0』になります。
ユーザプログラム
①システムコールを発行
②デバイスファイルを通じて
デバイスドライバにアクセス
デバイスファイル(/dev/sample0)
Linux ユーザ空間
キャラクタ型デバイス
サンプルデバイスドライバ
(sample-driver.ko)
open
close
Linux カーネル空間
write
③システムコールに対応した
関数を実行する
デバイス
ハードウェア
Fig 7.1-1 サンプルデバイスドライバの概要
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
62
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
サンプルデバイスドライバのコンパイル
サンプルデバイスドライバのコンパイル手順を説明します。
①
準備作業で展開した作業用ディレクトリの『devicedriver/driver』へ移動します。
省略
②
$ cd ~/sacy500s-lk/devicedriver/driver
入力
汎用デバイスドライバをコンパイルします。
$CROSS_COMPILE=$HOME/socfpga-toolchain/bin/arm-linux-gnueabihf- KBUILD=~/sacy500slk/linux-socfpga-sacy500s-X.X/ make
make ARCH=arm -C /home/guest/sacy500s-lk/linux-socfpga-sacy500s-1.0/ M=/home/guest/
sacy500s-lk/devicedriver/driver modules
make[1]: ディレクトリ `/home/guest/sacy500s-lk/linux-socfpga-sacy500s-1.0' に入ります
CC [M] /home/guest/sacy500s-lk/devicedriver/driver/sample-driver.o
Building modules, stage 2.
MODPOST 1 modules
CC
/home/guest/sacy500s-lk/devicedriver/driver/sample-driver.mod.o
LD [M] /home/guest/sacy500s-lk/devicedriver/driver/sample-driver.ko
make[1]: ディレクトリ `/home/guest/sacy500s-lk/linux-socfpga-sacy500s-1.0' から出ます
省略
入力
KBUILD は、Linux カーネルのソースディレクトリを指定します。
カーネルのコンパイルについては、『5.2 Linux カーネルの作成』をご確認ください。
③
作成した汎用デバイスドライバを NFS の共有ディレクトリにコピーします。
省略
$ cp sample-driver.ko /nfs
入力
サンプルアプリケーションのコンパイル
サンプルアプリケーションのコンパイル手順を説明します。
①
準備作業で展開した作業用ディレクトリの『devicedriver/application』へ移動します。
省略
②
$ cd ~/sacy500s-lk/devicedriver/application
入力
サンプルアプリケーションをコンパイルします。
$ CROSS_COMPILE=$HOME/socfpga-toolchain/bin/arm-linux-gnueabihf- make
/home/guest/sacy500s-lk/toolchain-sacy500s-1.0/bin/arm-linux-gnueabihf-gcc -Wall
sample-app.c
-o sample-app
入力
省略
③
アプリケーションプログラムを NFS の共有ディレクトリにコピーします。
省略
$ cp sample-app /nfs
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
入力
65
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
8.
タッチパネル LCD キットの使用
本章では、SA-Cy500S に LCD-KIT-B01 を接続して動作を行う方法を説明します。
8.1
Linux カーネルの対応方法
Linux カーネルのデフォルトでは、LCD-KIT-B01 を使用する設定になっておりませんので、Linux カーネルを再作成する必要
があります。
再作成する手順を以下に説明します。
本手順では、『5.2 Linux カーネルの作成』によって一度 Linux カーネルが作成されていることを前提で説
明します。一度も行っていない場合は、一度作成手順を行ってください。
①
『5.2 Linux カーネルの作成』で作成した Linux カーネルのフォルダに移動します。
省略
②
$ cd ~/sacy500s-lk/linux-socfpga-sacy500s-X.X
『make ARCH=arm menuconfig』コマンドによって、コンフィグレーションメニューを表示します。
$ make ARCH=arm menuconfig
scripts/kconfig/mconf Kconfig
省略
③
入力
入力
メニューの『Device Drivers』-『Input device support』-『Touchscreens』と選択して、以下の画面の
『LCD-KIT-B01 based touch screen』を選択します。
上記の画面で何も項目が表示されない場合は、一つ上の階層の『Touchscreens』がチェックされているか
ご確認ください。
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
68
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
8.3
動作確認
『8.1 Linux カーネルの対応方法』で作成したカーネルで起動した SA-Cy500S 上で、タッチパネル LCD キット用のサンプ
ル
アプリケーションを動作させる手順を説明します。
なお、ルートファイルシステムは、『5.3 ルートファイルシステムの作成』で作成した ramfs ルートファイルシステムを使用
した方法で説明します。
①
『4.2 ブートローダの起動』の手順に従って、U-Boot を起動します。
なお、SA-Cy500S ボードには、以下のようにタッチパネル LCD キットを接続します。
詳しい接続方法に関しては、使用するタッチパネル LCD キットの『ハードウェアマニュアル』でご確認ください。
SA-Cy500S ボード
LCD-KIT-B01
Fig 8.3-1 SA-Cy500S とタッチパネル LCD キットの接続
②
『8.1 Linux カーネルの対応方法』で作成した Linux カーネルイメージ『zImage-sacy500s-lcdkit』を RAM 上に
ダウンロードします。
SA-Cy500S# tftp 8000 zImage-sacy500s-lcdkit
link up on port 0, speed 1000, full duplex
Using cpsw device
TFTP from server 192.168.128.210; our IP address is 192.168.128.200
Filename 'zImage-sacy500s'.
入力
:
途中省略
:
done
Bytes transferred = 3086944 (2f1a60 hex)
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
72
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
⑮
SA-Cy500S からゲスト OS の『/nfs』ディレクトリをマウントします。
# mkdir -p /mnt/nfs
# mount -t nfs -o nolock 192.168.128.201:/nfs /mnt/nfs
入力
⑯
入力
アプリケーションを実行します。
タッチパネルをタッチするとその時のタッチパネル LCD キットから取得した値を画面上に表示します。
終了する場合は、『Ctrl+c』を入力してください。
# /mnt/nfs/lcdkit-sample
LCD-KIT-B01 sample program start...
Touch Screen: (
-,
-)
入力
LCD-KIT-B01 はマルチタッチとなりますが、表示しているのは『1st Finger touch』のみと
なります。
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
76
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
9.
ボードの初期化
SA-Cy500S は、シリアル Flash に U-Boot、Linux カーネル等が書き込まれた状態で出荷しております。
また、MMC ブートに使う microSD カードのイメージデータ(オールインワンイメージ)の提供も行っております。
MMC ブート用 microSD カードの初期化を行いたいか、再度シリアル FlashROM へ U-Boot 及び Linux カーネル等を書き込み
たい場合は、本章の手順に従って行ってください。
本手順では、MMC(microSD カード)ブートを使用して行いますので、Ubuntu 上で microSD カードへ
Linux カーネル等のデータをコピーする必要があります。
そのため、Ubuntu 上で認識できる SD カードリーダをご用意ください。
9.1
microSD カードイメージの書き込み
SA-Cy500S に使用している microSD カードにオールインワンイメージの書き込みを行う手順を以下に記します。
作業はホスト PC 上で行います。
準備
オールインワンイメージの書き込みには Win32DiskImager というアプリケーションを使用します。
Win32DiskImager は以下のサイトからダウンロードできますので、ホスト PC にインストールしてください。
http://sourceforge.net/projects/win32diskimager/
オールインワンイメージの書き込み
①
準備でインストールした Win32DiskImager を起動します。
ユーザーアカウントの警告が表示された場合、許可を選択してください。
②
『Device』に書き込む microSD カードを挿入しているドライブを選択し、『Image File』にオールインワンイメージ
ファイル(sacy500s_sd_v1_0.img)を選択し、『Write』を選択します。
意図しない Device を選択しデータを書き込んでしまった場合、ホスト PC が立ち上がらなくなる
可能性があります。
操作には注意してください。
SA-Cy500S ソフトウェアマニュアル
Copyright©2015 ALPHA PROJECT Co.,LTD. All right reserved
77
ALPHAPROJECT
http://www.apnet.co.jp
LK-CY-A01
SoC FPGA Series
謝辞
Linux、U-Boot の開発に関わった多くの貢献者に深い敬意と感謝の意を示します。
著作権について
・本文書の著作権は、株式会社アルファプロジェクトが保有します。
・本文書の内容を無断で転載することは一切禁止します。
・本文書の内容は、将来予告なしに変更されることがあります。
・本文書の内容については、万全を期して作成いたしましたが、万一ご不審な点、誤りなどお気付きの点がありましたら弊社までご連絡下さい。
・本文書の内容に基づき、アプリケーションを運用した結果、万一損害が発生しても、弊社では一切責任を負いませんのでご了承下さい。
商標について
・Cyclone V は、ALTERA 株式会社の登録商標、商標または商品名称です。
・Linux は、Linus Torvalds の米国およびその他の国における登録商標または商標です。
・U-Boot は、DENX Software Engineering の登録商標、商標または商品名称です。
・Windows®の正式名称は、Microsoft®Windows®Operating System です。
・Microsoft、Windows は、米国 Microsoft Corporation.の米国およびその他の国における商標または登録商標です。
・Windows®8、Windows®7、Windows®Vista は、米国 Microsoft Corporation.の商品名称です。
・VirtualBox は、OracleCorporation の商品名称です。
本文書では下記のように省略して記載している場合がございます。ご了承下さい。
Windows®8 は、Windows 8 もしくは Win8
Windows®7 は、Windows 7 もしくは Win7
Windows®Vista は、Windows Vista もしくは WinVista
・その他の会社名、製品名は、各社の登録商標または商標です。
ALPHA PROJECT Co.,LTD.
株式会社アルファプロジェクト
〒431-3114
静岡県浜松市東区積志町 834
http://www.apnet.co.jp
E-MAIL : [email protected]