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]
© Copyright 2024 ExpyDoc