28
Copyright©2014 ALPHAPROJECT Co.,LTD. All right reserved ALPHAPROJECT http://www.apnet.co.jp XG Series XG-BBEXT Linux Software Manual Rev 1.0 BeagleBone Black Extension board Cortex-A8 AM3358 CPU ダイジェスト版

XG-BBEXT Linux Software Manual - apnet.co.jpapnet.co.jp/support/man/xgbbext_linux_sw_d.pdf · 本ドキュメントでは、emmcルートファイルシステムを利用したLinuxシステムをeMMC-Linuxシステムと表現します。

Embed Size (px)

Citation preview

Copyright©2014 ALPHAPROJECT Co.,LTD. All right reserved

ALPHAPROJECT http://www.apnet.co.jp

XG Series

XG-BBEXT Linux Software Manual Rev 1.0 BeagleBone Black Extension board

Cortex-A8 AM3358 CPU ダイジェスト版

XG Series XG-BBEXT

XG-BBEXT Linux ソフトウェアマニュアル

Copyright©2014 ALPHAPROJECT Co.,LTD All right reserved

ALPHA PROJECT http://www.apnet.co.jp

目 次

1. 概要 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

2. システム概要 4

2.1 システム概要 ............................................................................................. 4

2.2 ブートローダ ............................................................................................. 5

2.3 Linux カーネル........................................................................................... 5

2.4 ルートファイルシステム............................................................................... 6

2.5 クロス開発環境 .......................................................................................... 7

2.6 添付 DVD-ROM の構成(Linux 開発関連のみ) .................................................... 8

3. システムの動作 9

3.1 動作環境................................................................................................... 9

3.2 シリアル初期設定値 ...................................................................................10

3.3 ネットワーク初期設定値..............................................................................10

3.4 XG-BBEXT ボードの接続.............................................................................12

3.5 Linux の起動 ............................................................................................13

3.6 Linux の終了 ............................................................................................15

3.7 Linux の動作確認.......................................................................................16

3.8 ネットワークの設定 ...................................................................................29

4. ブートローダ 33

4.1 U-Boot 概要 .............................................................................................33

XG Series XG-BBEXT

XG-BBEXT Linux ソフトウェアマニュアル

Copyright©2014 ALPHAPROJECT Co.,LTD All right reserved

ALPHA PROJECT http://www.apnet.co.jp

4.2 ブートローダの起動 ...................................................................................34

4.3 ネットワーク設定 ......................................................................................36

4.4 eMMC 起動用の U-Boot の作成.....................................................................40

4.5 SD 起動用の U-Boot の作成 .........................................................................42

4.6 Linux 起動用環境設定ファイル(uEnv.txt) .......................................................44

5. Linux 46

5.1 Linux システムの概要.................................................................................46

5.2 Linux カーネルの作成.................................................................................47

5.3 ルートファイルシステムの作成 .....................................................................49

6. プログラムの作成 53

6.1 プログラムの開発について...........................................................................53

6.2 サンプルアプリケーション(テキスト) ...........................................................54

6.3 サンプルアプリケーション(LCD)...................................................................56

6.4 サンプルアプリケーション(センサー).............................................................59

7. デバイスドライバの作成 61

7.1 サンプルデバイスドライバの概要 ..................................................................61

7.2 サンプルデバイスドライバ/アプリケーションのコンパイル................................63

7.3 動作確認..................................................................................................65

8. 無線 LAN モジュールの使用 66

8.1 Linux カーネルの対応方法 ...........................................................................66

8.2 動作確認..................................................................................................68

9. ボードへのシステム構築 70

9.1 eMMC 構成 ..............................................................................................70

9.2 作業概要..................................................................................................70

9.3 microSD カードの作成................................................................................71

9.4 書き込み手順 ............................................................................................79

10. 製品サポートのご案内 85

11. エンジニアリングサービスのご案内 86

XG Series XG-BBEXT

XG-BBEXT Linux ソフトウェアマニュアル

Copyright©2014 ALPHAPROJECT Co.,LTD All right reserved

ALPHA PROJECT http://www.apnet.co.jp

付録 A. 起動ログ 87

XG Series XG-BBEXT

1 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

1. 概要

1.1 はじめに

XG-BBEXT は、BeagleBone Black をセットにした拡張 CPU ボードです。BeagleBone Black は CPU コアに ARM Cortex-A8

を採用したマイクロプロセッサ「AM3358」(TEXAS INSTRUMENTS)を搭載した汎用 CPU ボードで、標準 OS に Linux を採

用しています。

Linux を採用することで、世界中のプログラマによって日々開発される膨大なオープンソースソフトウェア資産をロイヤリティ

フリーで利用することができます。

本ドキュメントでは、XG-BBEXT の動作方法をはじめ、SPL、U-Boot、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 メモリカードなどのストレージデバイスからのダウ

ンロードにも対応しています。

本ドキュメントでは、VirtualBox を含めた開発環境が WindowsPC にインストールされていることが前提となっ

ています。開発環境をインストールされていない場合は、『Linux 開発 インストールマニュアル』に従って、先

に開発環境の作成を行ってください。

XG Series XG-BBEXT

4 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

2. システム概要

2.1 システム概要

XG-BBEXT は BeagleBone Black をセットにした拡張 CPU ボードです。BeagleBone Black は CPU コアに ARM Cortex-A8

を採用したマイクロプロセッサ「AM3358」(TEXAS INSTRUMENTS)を搭載した汎用 CPU ボードです。

Linuxシステムは、ブートローダとLinuxカーネル、ルートファイルシステムから構成されます。ブートローダにSPLとU-Boot、

Linux カーネルに Linux-3.2、ルートファイルシステムには eMMC 等で動作する専用パッケージを使用します。

Fig 2.1-1 XG-BBEXT システム概要図

XG-BBEXT ボード

(BeagleBone Black)

ルートファイルシステム

Linux カーネル

ブートローダ ソフト

ウェア

ハード

ウェア

XG Series XG-BBEXT

6 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

2.4 ルートファイルシステム

Linux は、カーネルとファイルシステムという 2 つの要素から構成されます。

Linuxでは、全てのデータがファイルという形で管理されています。アプリケーションプログラムやデバイスドライバをはじめ、

HDD や COM ポートなどの入出力デバイスもファイルとして扱われます。

Linux では全てのファイルがルートディレクトリを起点としたディレクトリ構造下に管理されており、これら全てのファイル構

造のことをファイルシステムと呼びます。また、システム動作に必要なシステムファイル群のこともファイルシステムと呼びま

す。

本ドキュメントでは、これらの意味を明確にするため、ファイル管理構造(ext2 や ext3)のことをファイルシステム、システム

動作に必要なファイル群のことをルートファイルシステムと表現しています。

Linux のルートファイルシステムは、そのシステムが必要とする機能に合わせて構築する必要があります。

XG-BBEXT では、以下のルートファイルシステムを用意しています。

●emmc ルートファイルシステム eMMC 用に構成されたオリジナル Linux パッケージです。

ルートファイルシステムが eMMC 上に展開されるため、電源を落としても変

更した内容は破棄されませんが、電源を落とす前に適切な終了処理が必要に

なります。

本ドキュメントでは、emmc ルートファイルシステムを利用した Linux システムを eMMC-Linux システムと表現します。

RAM

Linux

カーネル

Fig 2.4-1 eMMC-Linux システム

emmc

emmc

ルートファイル

システム

XG Series XG-BBEXT

8 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

2.6 添付 DVD-ROM の構成(Linux 開発関連のみ)

XG-BBEXT の Linux の開発には、Linux カーネルソース、Buildroot ソースファイル、クロスコンパイラ等が必要です。

これらは、弊社ホームページ及び関連リンクからダウンロードするか、添付 DVD-ROM から入手することができます。

※『X.X』はバージョン番号を示します。バージョン 1.0 の場合は『1.0』になります。

`-- linux |-- binaries | |-- emmc :emmc 用バイナリ | | |-- MLO :SPL バイナリ | | |-- u-boot.img :U-Boot バイナリ(emmc ブート用) | | `-- uEnv.txt :Linux ブート環境ファイル(emmc ブート用) | |-- sd :SD 用バイナリ | | |-- MLO :SPL バイナリ | | |-- u-boot.img :U-Boot バイナリ(sd ブート用) | | `-- uEnv.txt :Linux ブート環境ファイル(sd ブート用) | |-- dfb-rect :サンプルアプリ(DirectFB 確認用) | |-- helloworld :サンプルアプリ | |-- lcd :サンプルアプリ(LCD 確認用) | |-- sensor :サンプルアプリ(センサー確認用) | |-- rootfs.tar.gz :ファイルシステムバイナリ | |-- sample-app :サンプルアプリ(デバイス確認用) | |-- sample-driver.ko :サンプルデバイスドライバ | `-- uImage-xgbbext :Linux カーネルバイナリ |-- index.html :インデックス HTML |-- index_images :インデックス HTML イメージ |-- license | |-- fdl.txt :GFDL 原文 | |-- gpl.txt :GPL 原文 | `-- lgpl.txt :LGPL 原文 |-- manual | |-- xgbbext_linux_sw.pdf :XG-BBEXT Linux ソフトウェアマニュアル | `-- lk_install_xg335x.pdf :Linux 開発 インストールマニュアル |-- sample | |-- devicedriver-X.X.tar.bz2 :サンプルデバイスドライバソース | |-- dfb-rect-X.X.tar.bz2 :directFB ソース | |-- helloworld-X.X.tar.bz2 :Helloworld アプリソース | |-- lcd-X.X.tar.bz2 :LCD ソース | `-- sensor-X.X.tar.bz2 :センサーソース `-- sources |-- buildroot-2013.11-xgbbext-X.X.tar.bz2 :Buildroot ソースファイル |-- dl-X.X.tar :Buildroot ダウンロードファイル一式 |-- linux-3.2.0-xgbbext-X.X.tar.bz2 :Linux カーネルソースファイル `-- u-boot-2013.01.01-xgbbext-X.X.tar.bz2 :u-boot ソースファイル

Table 2.6-1 DVD-ROM 内容

XG Series XG-BBEXT

9 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

3. システムの動作

3.1 動作環境

Linux の起動を確認するためには、CPU ボードと以下の環境が必要です。

●ホスト PC

Linux では PC をコンソール端末として使用します。

XG-BBEXT にはコンソールポートのシリアル・USB 変換機能が内蔵されており、XG-BBEXT と PC を USB ケーブルで接続

することで、PC 上では仮想シリアルポートとして認識します。

なお、仮想シリアルポートを使用した通信には、ハイパーターミナル等のターミナルソフトウェアが別途必要となります。

使用機器等 環 境

CPU ボード XG-BBEXT(BeagleBone Black)

HOST PC PC/AT 互換機

OS Windows Vista/7/8

メモリ 使用 OS による

ソフトウェア ターミナルソフト

USB ポート 1 ポート

LAN ポート 10/100BASE-TX 1 ポート

SD カードスロット microSD カードを読み込めるスロット(Ubuntu から認識できること)

microUSB ケーブル XG-BBEXT とコンソール(仮想シリアルポート)で使用

LAN ケーブル ホスト PC と接続時はクロスケーブルを使用

ハブと接続時はストレートケーブルを使用

WM-RP-04S もしくは

WM-RP-05S

無線 LAN モジュールを用いた動作確認時に使用

microSD カード SD ルートファイルシステム作成、MMC ブート確認等に使用

電源 AC アダプタ(DC5V±5%)

Table 3.1-1 動作環境

上記の環境は、XG-BBEXT の Linux の動作確認をするための環境となります。

カーネル等のコンパイルに使用する開発環境に関しては、『Linux 開発 インストールマニュアル』でご確認

ください。

XG Series XG-BBEXT

12 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

3.4 XG-BBEXT ボードの接続

ホスト PC と XG-BBEXT ボードの接続例を示します。

LAN をネットワークと接続する場合は、ネットワーク管理者と相談し、設定に注意して接続してください。

XG-BBEXT ボード

Fig 3.4-1 XG-BBEXT ボードの接続(PC に接続する場合)

ホスト PC

LAN クロスケーブル

microUSB ケーブル AC アダプタ

Fig 3.4-2 XG-BBEXT ボードの接続(HUB に接続する場合)

LAN ストレートケーブル

XG-BBEXT ボード

ホスト PC

microUSB ケーブル AC アダプタ

XG Series XG-BBEXT

13 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

3.5 Linux の起動

XG-BBEXT 上で Linux の起動を行います。

XG-BBEXT は、動作確認用に Linux がプリインストールされた状態で出荷しております。

① XG-BBEXT の電源を入れる前に、付属のシリアル用ハーネス及びスイッチが以下になっていることを確認します。

詳細に関しては、『XG-BBEXT ハードウェアマニュアル』でご確認ください。

※BeagleBone Black に microSD カードが挿入されている場合には、抜いてください。

② 『3.5 XG-BBEXT ボードの接続』にしたがって、ホスト PC の USB ポートと XG-BBEXT の microUSB ポート(CN9)、

ホスト PC のイーサネットポートと BeagleBone Black のイーサネットポートを接続します。

ホスト PC に認識されて仮想 COM ポートが作成されます。

③ ホスト OS(Windows)のターミナルソフトを起動します。(設定は『3.2 シリアル初期設定値』を参照してください)

④ AC アダプタを接続して、XG-BBEXT の電源を入れます。

⑤ Linux カーネルが自動起動し、全ての起動までにはおよそ 15 秒ほどかかります。

なお、起動ログに関しては、本ドキュメントの『付録 A. 起動ログ』でご確認ください。

U-Boot 2013.01.01 (Apr 07 2014 - 10:30:35) ALPHAPROJECT XG-BBEXT vX.X(eMMC)

I2C: ready

DRAM: 512 MiB

途中省略

Welcome to Buildroot

xg-bbext login:

MicroSD - eMMC

BOOT

JSW1

以下の手順を行う前に、PC に USB/シリアル変換(MCP2200)のドライバがインストールされている必要が

あります。ドライバは、付属の DVD 内に入っていますので、インストールしてから行ってください。

XG Series XG-BBEXT

16 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

3.7 Linux の動作確認

XG-BBEXT 上での Linux の動作確認を行います。

ログイン

Linux 起動後、ログインプロンプト『xg-bbext login:』が表示されます。

ログインを実行するにはユーザ『root』を入力してください。

Welcome to Buildroot

xg-bbext login: root

時刻設定

Linux は起動時に RTC から時刻を読み出し、以後は RTC にアクセスすることなく、CPU 内のタイマーモジュールによって時刻

を管理しています。Linux のコマンドライン上から RTC にアクセスするには『hwclock』コマンドを使用します。

① RTC に設定されている時刻を読み出すには『hwclock』コマンドを引数無しで入力します。

# hwclock

Sat Jan 1 12:00:00 2000 0.000000 seconds

② RTC に設定されている時刻を変更する際には『date』コマンドを使用し、システムの時刻を設定し、その更新されたシス

テムの時刻を『hwclock』コマンドで RTC に対して設定します。

例として時刻を 2014 年 2 月 4 日 15 時 30 分に設定します。

『date -s '2014-02-04 15:30'』実行後、『hwclock -w』を実行してください。

# date -s '2014-02-04 15:30'

Tue Feb 4 15:30:00 JST 2014

# hwclock -w

ログイン設定

ユーザ root

パスワード なし

入力

Table 3.7-1 ログイン設定

入力

入力

入力

XG Series XG-BBEXT

25 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

加速度センサー

XG-BBEXT には 3 軸の加速度センサーが搭載されています。加速度の値は以下のようにして簡単に得ることができます。

# cd /sys/class/i2c-adapter/i2c-3/3-004c

# ls *_axis_force

all_axis_force z_axis_force x_axis_force y_axis_force

① 3 軸の値を一度に読み込みます。

# cat all_axis_force

(3,1,22)

② 各軸の値を個別に読み込みます。

# cat x_axis_force

3

# cat y_axis_force

1

# cat z_axis_force

22

入力

入力

入力

入力

入力

入力

XG Series XG-BBEXT

34 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

4.2 ブートローダの起動

XG-BBEXT を起動して、U-Boot のコマンドコンソールに入る方法を説明します。

① XG-BBEXT の電源を入れる前に、付属のシリアル用ハーネス及びスイッチが以下になっていることを確認します。

詳細に関しては、『XG-BBEXT ハードウェアマニュアル』でご確認ください。

② 『3.5 XG-BBEXT ボードの接続』にしたがって、ホスト PC の USB ポートと XG-BBEXT の microUSB ポート(CN9)、

ホスト PC のイーサネットポートと BeagleBone Black のイーサネットポートを接続します。

ホスト PC に認識されて仮想 COM ポートが作成されます。

③ ホスト OS(Windows)のターミナルソフトを起動します。(設定は『3.2 シリアル初期設定値』を参照してください)

④ AC アダプタを接続して、XG-BBEXT の電源を入れます。

MicroSD - eMMC

BOOT

JSW1

XG Series XG-BBEXT

40 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

4.4 eMMC 起動用の U-Boot の作成

ゲスト OS(Ubuntu)上で MMC 起動用の U-Boot をコンパイルするための手順を説明します。

作成の準備

① 作業用ディレクトリ『xgbbext-lk』をホームディレクトリに作成します。

すでに作成されている場合は、手順②にお進みください。

$ mkdir ~/xgbbext-lk

② 手順①で作成した作業用ディレクトリに移動します。

$ cd ~/xgbbext-lk

③ 作業用ディレクトリに付属 DVD 内の以下の 1 つのファイルをコピーします。

手順④~⑥で例として DVD から直接コピーする方法を記述します。他の方法でコピーする場合には、コピー作業

完了後に、手順⑦にお進みください。

u-boot-2013.01.01-xgbbext-X.X.tar.bz2

※『X.X』にはバージョン番号が入ります。Ver1.0 の場合は、『1.0』

④ DVD をドライブに挿入します。

デフォルトでは、自動でマウントされますが、マウントされない場合は、以下のコマンドを実行します。

$ gvfs-mount -d /dev/sr0

⑤ ファイルをコピーします。コマンド途中の『*******』は、DVD のボリュームラベルになります。

そのため、その部分は挿入した DVD に合わせて入力してください。

$ cp /media/*******/sources/u-boot-2013.01.01-xgbbext-X.X.tar.bz2 .

⑥ DVD をアンマウントします。

$ umount /dev/sr0

⑦ ソースファイルを展開します。

$ tar -xjpf u-boot-2013.01.01-xgbbext-X.X.tar.bz2

入力

入力

入力

入力

省略

省略

省略

省略

マウントされているかどうかは、『mount』コマンドで確認できます。

以下のように、『/dev/sr0』が表示されている場合は、すでにマウントされています。

(『*******』は、DVD のボリュームラベルになります。)

$ mount

途中省略

/dev/sr0 on /media/******* type udf (ro,nosuid,nodev,uhelper=udisks,uid=1000,

gid=1000,iocharset=utf8,umask=0077)

省略 入力

入力 省略

入力 省略

XG Series XG-BBEXT

41 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

作成

① 準備作業で展開した作業用ディレクトリの『u-boot-2013.01.01-xgbbext-X.X』へ移動します。

$ cd ~/xgbbext-lk/u-boot-2013.01.01-xgbbext-X.X

② コンパイルします。

途中の『O=xgbbext_emmc』の O は、英字大文字の O(オー)ですので、ご注意ください。

$ make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm O=xgbbext_emmc xgbbext_emmc

Configuring for xgbbext_emmc - Board: am335x_evm, Options: SERIAL1,CONS_INDEX=1,BBE

XT_EMMC_BOOT

make

make[1]: ディレクトリ `/home/guest/xgbbext-lk/u-boot-2013.01.01-xgbbext-X.X' に入ります

Generating /home/guest/xgbbext-lk/u-boot-2013.01.01-xgbbext-X.X/xgbbext_emmc/include/aut

oconf.mk

途中省略

make[2]: `all' に対して行うべき事はありません.

make[2]: ディレクトリ `/home/guest/xgbbext-lk/u-boot-2013.01.01-xgbbext-X.X/examples/api

'から出ます

make[1]: ディレクトリ `/home/guest/xgbbext-lk/u-boot-2013.01.01-xgbbext-X.X' から出ます

③ make が正常に終了すると『xgbbext_emmc』ディレクトリに『MLO』と『u-boot.img』が作成されます。

$ ls xgbbext_emmc/{MLO,u-boot.img}

xgbbext_emmc/MLO xgbbext_emmc/u-boot.img

入力

入力 省略

省略

省略 入力

『arm-linux-gnueabihf-gcc: コマンドが見つかりません』のようなエラーが表示される場合には、クロス

コンパイラのインストールが正常にできていない可能性があります。

多くの場合でインストールマニュアルの『SDK インストール手順』の最後に行うパス設定が異なっている可能

性がありますので、再度ご確認ください。

XG Series XG-BBEXT

44 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

4.6 Linux 起動用環境設定ファイル(uEnv.txt)

XG-BBEXT(BeagleBone Black)では U-Boot にて setenv コマンドで環境変数を永続的に保存することはできません。

『4.3 ネットワークの設定』にて U-Boot の IP 関連設定をソースファイルにて設定する方法について解説してありますが

Linux の起動に関する環境変数を変更したい場合、毎回 U-Boot をソースの修正、ビルド、eMMC へ書き込みをするのは大変

です。

そのため Linux の起動に関する環境変数の設定はブートパーティション(/dev/mmcblk0p1)にある uEnv.txt というファイル

にて設定します。

出荷時の『uEnv.txt』は以下のようになっています。

各環境変数は以下の通りです。

uEnv.txt はテキストファイルですので、Linux 起動後であれば vi などのエディタで簡単に編集できます。

eMMC にある uEnv.txt の編集手順を説明します。

① boot パーティションをマウントします。

# mount /dev/mmcblk0p1 /mnt/emmc

② マウントしたディレクトリに移動します。

# cd /mnt/emmc

③ uEnv.txt が存在することを確認します。

# ls /mnt/emmc

MLO u-boot.img uEnv.txt uImage-xgbbext

④ エディタを立ち上げ、uEnv.txt を編集します。

# vi uEnv.txt

環境変数名 設定内容

bootargs コンソール出力を/dev/ttyO0 115200bps,ノーパリティ、8bit データに設定します。

メモリは 512Mbyte に設定します

ルートファイルシステムは/dev/mmcblk0p2 で読書き可能で、ファイルシステムタイ

プは ext3、ファイルシステムが起動するまで wait するように設定します。

bootcmd カーネルをロードし、ロードしたアドレスから起動するように設定します。

デフォルトでは kloadaddr=0x80007fc0、bootfile=uImage-xgbbext に設定されて

います。

テスト的に別カーネルを起動する場合は${bootfile}の代わりに別カーネルのファイ

ル名を直接指定します。

uenvcmd uenvcmd が設定されていますと uExt.txt を解析後、そのままブートが実行されます。

bootargs=console=ttyO0,115200n8 mem=512M root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait

bootcmd=mmc rescan; fatload mmc 1:1 ${kloadaddr} ${bootfile}; bootm ${kloadaddr}

uenvcmd=boot

Table 4.6-1 uEnv.txt の環境変数

省略

省略

省略

省略

入力

入力

入力

入力

XG Series XG-BBEXT

46 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

5. Linux

5.1 Linux システムの概要

XG-BBEXT 用 Linux システムは、Linux カーネルとルートファイルシステムから構成されます。

Linux カーネルは、デバイスドライバとして UART、Ethernet、FlashROM 等をサポートし、ファイルシステムとして ext2、

ext3、JFFS2、cramfs、FAT、NFS 等をサポートしています。

ルートファイルシステムは、基本アプリケーションとして、コマンドユーティリティ郡「busybox」が収録されています。

Fig 5.1-1 Linux システム

Linux カーネル

デバイスドライバ

UART

ルートファイルシステム

busybox

ファイルシステム

ハードウェア

EXT2

XG-BBEXT

Ether

UART

FlashROM

RTC

Ether

EXT3

JFFS2 CRAMFS

FAT NFS

RTC

FlashROM

XG Series XG-BBEXT

48 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

Linux カーネルの作成

Linux カーネルをコンパイルする方法を説明します。

Linux カーネルの設定データは Linux カーネルソースディレクトリ以下『arch/arm/configs/xgbbext_defconfig』に保存

されています。

① 準備作業で展開した作業用ディレクトリの『linux-3.2.0-xgbbext-X.X』へ移動します。

$ cd ~/xgbbext-lk/linux-3.2.0-xgbbext-X.X

② Linux カーネルの設定データを呼び出します。

$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xgbbext_defconfig

HOSTCC scripts/basic/fixdep

HOSTCC scripts/kconfig/conf.o

SHIPPED scripts/kconfig/zconf.tab.c

SHIPPED scripts/kconfig/zconf.lex.c

SHIPPED scripts/kconfig/zconf.hash.c

HOSTCC scripts/kconfig/zconf.tab.o

HOSTLD scripts/kconfig/conf

#

# configuration written to .config

#

③ make を実行します。終了までに数分から数時間かかる場合があります。

$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage

scripts/kconfig/conf --silentoldconfig Kconfig

WRAP arch/arm/include/generated/asm/auxvec.h

WRAP arch/arm/include/generated/asm/bitsperlong.h

途中省略

Load Address: 80008000

Entry Point: 80008000

Image arch/arm/boot/uImage is ready

④ make が正常に終了すると『./arch/arm/boot』ディレクトリに Linux カーネルイメージ『uImage』が作成されます。

$ ls arch/arm/boot/uImage

arch/arm/boot/uImage

入力

入力

入力

入力 省略

省略

省略

省略

『arm-linux-gnueabihf-gcc: コマンドが見つかりません』のようなエラーが表示される場合には、クロス

コンパイラのインストールが正常にできていない可能性があります。

多くの場合でインストールマニュアルの『SDK インストール手順』の最後に行うパス設定が異なっている可能

性がありますので、再度ご確認ください。

XG Series XG-BBEXT

52 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

ルートファイルシステムの作成

Buildroot はテキストベースで設定を行うことができます。今回作成するルートファイルシステムの設定データは、設定ファイ

ルとして保存されているため、その設定ファイルより設定データを読み出してファイルシステムを作成します。

設定ファイルは Buildroot ソースディレクトリ下『configs』ディレクトリに保存されています。

① 準備作業で展開した作業用ディレクトリの『buildroot-2013.11-xgbbext-X.X』へ移動します。

$ cd ~/xgbbext-lk/buildroot-2013.11-xgbbext-X.X

② XG-BBEXT 用に buildroot のコンフィグレーションを行います。

『make xgbbext_defconfig』を実行します。

$ make xgbbext_defconfig

mkdir -p /home/guest/xgbbext-lk/buildroot-2013.08.1-xgbbext-X.X/output/build/buildroot-c

onfig/lxdialog

make CC="/usr/bin/gcc" HOSTCC="/usr/bin/gcc" obj=/home/guest/xgbbext-lk/buildroot-2013.0

8.1-xgbbext-X.X/output/build/buildroot-config -C support/kconfig -f Makefile.br conf

途中省略

#

# configuration written to /home/guest/xgbbext-lk/buildroot-2013.08.1-xgbbext-X.X/.config

#

③ make を実行します。終了までに数分から数時間かかる場合があります。

$ make

/usr/bin/make -j2 HOSTCC="/usr/bin/gcc" HOSTCXX="/usr/bin/g++" silentoldconfig

make[1]: ディレクトリ `/home/guest/xgbbext-lk/buildroot-2013.08.1-xgbbext-X.X' に入ります

途中省略

cp support/misc/target-dir-warning.txt /home/guest/xgbbext-lk/buildroot-2013.08.1-xgbbex

t-X.X/output/target/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM

gzip -9 -c /home/guest/xgbbext-lk/buildroot-2013.08.1-xgbbext-X.X/output/images/rootfs.t

ar > /home/guest/xgbbext-lk/buildroot-2013.08.1-xgbbext-X.X/output/images/rootfs.tar.gz

④ ルートファイルシステムの make が正常に終了していると、『./output/images』ディレクトリに『rootfs.tar.gz』

ファイルが作成されています。

$ ls output/images/rootfs.tar.gz

output/images/rootfs.tar.gz

入力

入力

入力 省略

省略

省略

入力 省略

『arm-linux-gnueabihf-gcc: コマンドが見つかりません』のようなエラーが表示される場合には、クロス

コンパイラのインストールが正常にできていない可能性があります。

多くの場合でインストールマニュアルの『SDK インストール手順』の最後に行うパス設定が異なっている可能

性がありますので、再度ご確認ください。

XG Series XG-BBEXT

53 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

6. プログラムの作成

本章では、XG-BBEXT 上で動作するアプリケーションの作成方法について説明します。

6.1 プログラムの開発について

ソースファイルのコンパイルから動作までの一連の流れを示します。

① ゲスト OS 上でソースファイルを作成。

② ゲスト OS 上でソースファイルをクロスコンパイルし、実行ファイルを作成。

③ XG-BBEXT ボード上でゲスト OS を nfs でマウントし、実行ファイルをダウンロード。

④ XG-BBEXT ボード上で動作を確認。

Fig 6.1-1 プログラムの開発手順

PC/AT 互換機(LinuxOS)

クロス開発環境

ARM 用クロスコンパイラ

ARM 用クロスアセンブラ

ARM 用リンカ

ソースコード

ARM 用実行ファイル

②実行ファイルの

作成

XG-BBEXT

ARM 用実行ファイル ③実行ファイルの

ダウンロード

④実行

①ソースコードの

作成

XG Series XG-BBEXT

60 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

サンプルアプリケーションのコンパイル

サンプルアプリケーションのコンパイル手順を説明します。

① 準備作業で展開した作業用ディレクトリの『sensor』へ移動します。

$ cd ~/xgbbext-lk/sensor

② サンプルアプリケーションをコンパイルします。

$ make

arm-linux-gnueabihf-gcc -Wall sensor.c -o sensor

③ アプリケーションプログラムを NFS の共有ディレクトリにコピーします。

$ cp sensor /nfs

動作確認

作成したサンプルアプリケーションを XG-BBEXT 上で動作させる手順を説明します。

① XG-BBEXT で Linux を起動します。起動方法に関しては『3.7 Linux の起動』でご確認ください。

② XG-BBEXT からゲスト OS の『/nfs』ディレクトリをマウントします。

# mount -t nfs -o nolock 192.168.128.210:/nfs /mnt/nfs

③ アプリケーションを実行します。

# /mnt/nfs/sensor

照度[lx] 温度[℃] 加速度(x,y,z) 地磁気(x,y,z) GPS

473.6 26.0 0.0 -1.8 10.1 -8.3 -49.7 -9.8 <3600.00000,N,13600.00000

,E>

471.2 26.0 0.5 -1.8 10.1 -8.4 -49.4 -9.7 <3600.00000,N,13600.00000

,E>

478.5 26.0 0.0 -2.3 10.6 -8.5 -49.8 -9.8 <3600.00000,N,13600.00000

,E>

485.8 26.0 0.5 -2.3 10.1 -8.6 -49.8 -9.8 <3600.00000,N,13600.00000

,E>

以降省略

なお、アプリケーションを終了する場合は、『Ctrl+c』を入力してください。

④ nfs をアンマウントします。

# umount /mnt/nfs

入力

入力

入力 省略

省略

省略

入力

入力

入力

XG Series XG-BBEXT

61 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

7. デバイスドライバの作成

本章では、XG-BBEXT 上の LED にアクセス可能なサンプルデバイスドライバの作成方法とそのデバイスドライバを使用したア

プリケーションの作成方法について説明します。

7.1 サンプルデバイスドライバの概要

サンプルデバイスドライバは LED デバイスへのアクセス関数を提供します。

デバイスドライバの概要

ユーザプログラム上からデバイスにアクセスする際、通常はデバイスファイルを通じてシステムコールを発行し、デバイスドラ

イバに処理を依頼します。デバイスドライバはデバイスへのアクセス関数を提供することにより、ユーザプログラム上からデバ

イスにアクセスする手段を提供します。

サンプルデバイスドライバはキャラクタ型デバイスドライバになり、モジュールとしてコンパイルします。このデバイスドライ

バは、ユーザプログラム上から LED デバイスにアクセスするための関数を提供します。システムコール(API)は『open』、

『close』、『write』になります。サンプルデバイスドライバを示すデバイスファイルは『/dev/sample0』になります。

ユーザプログラム

デバイスファイル(/dev/sample0)

キャラクタ型デバイス

サンプルデバイスドライバ

(sample-driver.ko)

open

close

write

①システムコールを発行

デバイス

Linux ユーザ空間

Linux カーネル空間

ハードウェア

②デバイスファイルを通じて

デバイスドライバにアクセス

③システムコールに対応した

関数を実行する

Fig 7.1-1 サンプルデバイスドライバの概要

本章で作成するプログラムは、Linux カーネルソースが事前にコンパイル済みである必要があります。

カーネルのコンパイルについては、『5.2 Linux カーネルの作成』をご確認ください。

XG Series XG-BBEXT

66 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

8. 無線 LAN モジュールの使用

本章では、XG-BBEXT に WM-RP-04S もしくは WM-RP-05S を接続して動作を行う方法を説明します。

8.1 Linux カーネルの対応方法

Linux カーネルのデフォルトでは、WM-RP-04S もしくは WM-RP-05S を使用する設定になっておりませんので、Linux カーネ

ルを再作成する必要があります。

再作成する手順を以下に説明します。

また、WM-RP-04S もしくは WM-RP-05S を使用するには、以下の 4 つのファイル(ファームウェア)が別途必要となります。

sbinst1, sbinst2, sbdata1, sbdata2

ファイルの入手方法に関しては、WM-RP シリーズの『ハードウェアマニュアル』にコンテンツのダウンロード方法が記載され

ておりますので、そちらでご確認ください。

なお、以下の手順では、~/wm-rp-firm にダウンロードされていることを前提で説明します。

① 『5.2 Linux カーネルの作成』で作成した Linux カーネルのフォルダに移動します。

$ cd ~/xgbbext-lk/linux-3.2.0-xgbbext-X.X

② 無線 LAN モジュールのファームウェアをコピーします。

$ cp ~/wm-rp-firm/sbinst1 ./drivers/net/rs21/Firmware

$ cp ~/wm-rp-firm/sbinst2 ./drivers/net/rs21/Firmware

$ cp ~/wm-rp-firm/sbdata1 ./drivers/net/rs21/Firmware

$ cp ~/wm-rp-firm/sbdata2 ./drivers/net/rs21/Firmware

③ 『make ARCH=arm menuconfig』コマンドによって、コンフィグレーションメニューを表示します。

$ make ARCH=arm menuconfig

scripts/kconfig/mconf Kconfig

本手順では、『5.2 Linux カーネルの作成』によって一度 Linux カーネルが作成されていることを前提で説

明します。一度も行っていない場合は、一度作成手順を行ってください。

省略 入力

入力 省略

省略

省略

省略

省略

入力

入力

入力

入力

XG Series XG-BBEXT

70 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

9. ボードへのシステム構築

XG-BBEXT は、eMMC に U-Boot、Linux カーネル等が書き込まれた状態で出荷しております。

その eMMC へ弊社提供の U-Boot 等やお客様が作成されたデータを書き込みたい場合には、本章の手順に従って行ってくださ

い。

9.1 eMMC 構成

以下に、eMMC のパーティションマップを記載します。

次節より、このアドレスマップになるように FlashROM へ書き込む方法を説明します。

9.2 作業概要

eMMC に書き込む手順は、以下の 2 つの作業で行います。

1. MMC ブート用の microSD カードを作成します。

MMC ブートし eMMC 書込み用 Linux が起動できる microSD カードを作成します。

2. eMMC に用意したデータを書き込みます。

MMC ブートにより起動した Linux を利用して、eMMC にデータを書き込む。

次節より、上記の作業順番で説明します。

eMMC 2GByte

パーティション 領域名 フォーマット

1 ブート用(MLO, U-Boot, Linux) FAT

2 ルートファイルシステム EXT3

Fig 9.1-1 eMMC 構成

本手順では、MMC(microSD カード)ブートを使用して行いますので、Ubuntu 上で microSD カードへ

Linux カーネル等のデータをコピーする必要があります。

そのため、Ubuntu 上で認識できる SD カードリーダをご用意ください。

XG Series XG-BBEXT

79 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

9.4 書き込み手順

起動 ~ パーティション作成

① XG-BBEXT の電源を入れる前に、付属のシリアル用ハーネス及びスイッチが以下になっていることを確認します。

詳細に関しては、『XG-BBEXT ハードウェアマニュアル』でご確認ください。

② 下図に従って、『9.3 microSD カードの作成』で作成した microSD カードを XG-BBEXT に挿入し、ホスト PC の USB

ポートと XG-BBEXT の microUSB ポート(CN9)を接続します。

ホスト PC に認識されて仮想 COM ポートが作成されます。

③ ホスト OS(Windows)のターミナルソフトを起動します。(設定は『3.2 シリアル初期設定値』を参照してください)

④ XG-BBEXT の電源を入れます。

Fig 9.4-1 ボードの接続

microSD カード

XG-BBEXT ボード ホスト PC

microUSB ケーブル AC アダプタ

MicroSD - eMMC

BOOT

JSW1

XG Series XG-BBEXT

80 ALPHAPROJECT

http://www.apnet.co.jp XG-BBEXT Linux ソフトウェアマニュアル Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved

⑤ Linux が起動したら root でログインします。

Welcome to Buildroot

xg-bbext login: root

⑥ eMMC 書込みファイルのあるディレクトリに移動します。

# cd /build

⑦ eMMC に入っている既存のデータを一旦消去します。

# blockdev --flushbufs /dev/mmcblk1

# dd if=/dev/zero of=/dev/mmcblk1 bs=16M count=16

16+0 records in

16+0 records out

⑧ microSD カードの容量を確認するため『fdisk -l /dev/mmcblk1』を実行します。

# fdisk -l /dev/mmcblk1

Disk /dev/mmcblk1: 1920 MB, 1920991232 bytes

4 heads, 16 sectors/track, 58624 cylinders

Units = cylinders of 64 * 512 = 32768 bytes

Disk /dev/mmcblk1 doesn't contain a valid partition table

入力

入力

以降の作業でシリンダ数の入力があります。その時の値は、ディスクの総容量(上記ログの『1920991232 バ

イト』)から計算した値を設定する必要があります。

計算式は、「全容量 ÷ 255 ÷ 63 ÷ 512」で求めることができ、今回の値では、以下の計算となります。

1920991232 ÷ 255 ÷ 63 ÷ 512 = 233 (小数点以下切捨て)

入力

入力

入力

XG Series XG-BBEXT

謝辞

Linux、U-Boot の開発に関わった多くの貢献者に深い敬意と感謝の意を示します。

著作権について

・本文書の著作権は、株式会社アルファプロジェクトが保有します。

・本文書の内容を無断で転載することは一切禁止します。

・本文書の内容は、将来予告なしに変更されることがあります。

・本文書の内容については、万全を期して作成いたしましたが、万一ご不審な点、誤りなどお気付きの点がありましたら弊社までご連絡下さい。

・本文書の内容に基づき、アプリケーションを運用した結果、万一損害が発生しても、弊社では一切責任を負いませんのでご了承下さい。

商標について

・AM3358 は、TEXISAS INSTRUMENTS 株式会社の登録商標、商標または商品名称です。

・Linux は、Linus Torvalds の米国およびその他の国における登録商標または商標です。

・U-Boot は、DENX Software Engineering の登録商標、商標または商品名称です。

・Windows®の正式名称は、Microsoft®Windows®Operating System です。

・Microsoft、Windows は、米国 Microsoft Corporation.の米国およびその他の国における商標または登録商標です。

・Windows®8、Windows®7、Windows®Vista、Windows®XP は、米国 Microsoft Corporation.の商品名称です。

・VirtualBox は、OracleCorporation の商品名称です。

本文書では下記のように省略して記載している場合がございます。ご了承下さい。

Windows®8 は、Windows 8 もしくは Win8

Windows®7 は、Windows 7 もしくは Win7

Windows®Vista は、Windows Vista もしくは WinVista

Windows®XP は、Windows XP もしくは WinXP

・その他の会社名、製品名は、各社の登録商標または商標です。

ALPHA PROJECT Co.,LTD. 株式会社アルファプロジェクト

〒431-3114 静岡県浜松市東区積志町 834 http://www.apnet.co.jp E-MAIL : [email protected]