XG-BBEXT ALPHAPROJECT Linux Software Manual XG Series

XG Series
XG-BBEXT
BeagleBone Black Extension board
Cortex-A8 AM3358 CPU
Linux Software Manual
Rev 1.0
ダイジェスト版
ALPHAPROJECT
http://www.apnet.co.jp
Copyright©2014 ALPHAPROJECT Co.,LTD. All right reserved
XG-BBEXT
XG Series
目
1.
2.
3.
4.
次
概要
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
添付 DVD-ROM の構成(Linux 開発関連のみ) .................................................... 8
システムの動作
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.1
33
U-Boot 概要 .............................................................................................33
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHAPROJECT Co.,LTD All right reserved
ALPHA PROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
5.
6.
7.
8.
9.
4.2
ブートローダの起動 ...................................................................................34
4.3
ネットワーク設定 ......................................................................................36
4.4
eMMC 起動用の U-Boot の作成 .....................................................................40
4.5
SD 起動用の U-Boot の作成 .........................................................................42
4.6
Linux 起動用環境設定ファイル(uEnv.txt) .......................................................44
Linux
46
5.1
Linux システムの概要 .................................................................................46
5.2
Linux カーネルの作成 .................................................................................47
5.3
ルートファイルシステムの作成 .....................................................................49
プログラムの作成
53
6.1
プログラムの開発について ...........................................................................53
6.2
サンプルアプリケーション(テキスト) ...........................................................54
6.3
サンプルアプリケーション(LCD)...................................................................56
6.4
サンプルアプリケーション(センサー) .............................................................59
デバイスドライバの作成
61
7.1
サンプルデバイスドライバの概要 ..................................................................61
7.2
サンプルデバイスドライバ/アプリケーションのコンパイル................................63
7.3
動作確認 ..................................................................................................65
無線 LAN モジュールの使用
66
8.1
Linux カーネルの対応方法 ...........................................................................66
8.2
動作確認 ..................................................................................................68
ボードへのシステム構築
70
9.1
eMMC 構成 ..............................................................................................70
9.2
作業概要 ..................................................................................................70
9.3
microSD カードの作成................................................................................71
9.4
書き込み手順 ............................................................................................79
10. 製品サポートのご案内
85
11. エンジニアリングサービスのご案内
86
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHAPROJECT Co.,LTD All right reserved
ALPHA PROJECT
http://www.apnet.co.jp
XG Series
付録 A.
XG-BBEXT
起動ログ
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHAPROJECT Co.,LTD All right reserved
87
ALPHA PROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
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 カーネル、アプリケーション開発のための手順
を説明します。
本ドキュメントでは、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 メモリカードなどのストレージデバイスからのダウ
ンロードにも対応しています。
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
1
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
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 等で動作する専用パッケージを使用します。
ルートファイルシステム
Linux カーネル
ブートローダ
XG-BBEXT ボード
(BeagleBone Black)
ソフト
ウェア
ハード
ウェア
Fig 2.1-1 XG-BBEXT システム概要図
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
4
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
2.4
ルートファイルシステム
Linux は、カーネルとファイルシステムという 2 つの要素から構成されます。
Linux では、
全てのデータがファイルという形で管理されています。
アプリケーションプログラムやデバイスドライバをはじめ、
HDD や COM ポートなどの入出力デバイスもファイルとして扱われます。
Linux では全てのファイルがルートディレクトリを起点としたディレクトリ構造下に管理されており、これら全てのファイル構
造のことをファイルシステムと呼びます。また、システム動作に必要なシステムファイル群のこともファイルシステムと呼びま
す。
本ドキュメントでは、これらの意味を明確にするため、ファイル管理構造(ext2 や ext3)のことをファイルシステム、システム
動作に必要なファイル群のことをルートファイルシステムと表現しています。
Linux のルートファイルシステムは、そのシステムが必要とする機能に合わせて構築する必要があります。
XG-BBEXT では、以下のルートファイルシステムを用意しています。
●emmc ルートファイルシステム
eMMC 用に構成されたオリジナル Linux パッケージです。
ルートファイルシステムが eMMC 上に展開されるため、電源を落としても変
更した内容は破棄されませんが、電源を落とす前に適切な終了処理が必要に
なります。
本ドキュメントでは、emmc ルートファイルシステムを利用した Linux システムを eMMC-Linux システムと表現します。
RAM
emmc
Linux
emmc
カーネル
ルートファイル
システム
Fig 2.4-1 eMMC-Linux システム
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
6
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
2.6
添付 DVD-ROM の構成(Linux 開発関連のみ)
XG-BBEXT の Linux の開発には、Linux カーネルソース、Buildroot ソースファイル、クロスコンパイラ等が必要です。
これらは、弊社ホームページ及び関連リンクからダウンロードするか、添付 DVD-ROM から入手することができます。
`-- linux
|-- binaries
|
|-- emmc
|
|
|-- MLO
|
|
|-- u-boot.img
|
|
`-- uEnv.txt
|
|-- sd
|
|
|-- MLO
|
|
|-- u-boot.img
|
|
`-- uEnv.txt
|
|-- dfb-rect
|
|-- helloworld
|
|-- lcd
|
|-- sensor
|
|-- rootfs.tar.gz
|
|-- sample-app
|
|-- sample-driver.ko
|
`-- uImage-xgbbext
|-- index.html
|-- index_images
|-- license
|
|-- fdl.txt
|
|-- gpl.txt
|
`-- lgpl.txt
|-- manual
|
|-- xgbbext_linux_sw.pdf
|
`-- lk_install_xg335x.pdf
|-- sample
|
|-- devicedriver-X.X.tar.bz2
|
|-- dfb-rect-X.X.tar.bz2
|
|-- helloworld-X.X.tar.bz2
|
|-- lcd-X.X.tar.bz2
|
`-- sensor-X.X.tar.bz2
`-- sources
|-- buildroot-2013.11-xgbbext-X.X.tar.bz2
|-- dl-X.X.tar
|-- linux-3.2.0-xgbbext-X.X.tar.bz2
`-- u-boot-2013.01.01-xgbbext-X.X.tar.bz2
:emmc 用バイナリ
:SPL バイナリ
:U-Boot バイナリ(emmc ブート用)
:Linux ブート環境ファイル(emmc ブート用)
:SD 用バイナリ
:SPL バイナリ
:U-Boot バイナリ(sd ブート用)
:Linux ブート環境ファイル(sd ブート用)
:サンプルアプリ(DirectFB 確認用)
:サンプルアプリ
:サンプルアプリ(LCD 確認用)
:サンプルアプリ(センサー確認用)
:ファイルシステムバイナリ
:サンプルアプリ(デバイス確認用)
:サンプルデバイスドライバ
:Linux カーネルバイナリ
:インデックス HTML
:インデックス HTML イメージ
:GFDL 原文
:GPL 原文
:LGPL 原文
:XG-BBEXT Linux ソフトウェアマニュアル
:Linux 開発 インストールマニュアル
:サンプルデバイスドライバソース
:directFB ソース
:Helloworld アプリソース
:LCD ソース
:センサーソース
:Buildroot ソースファイル
:Buildroot ダウンロードファイル一式
:Linux カーネルソースファイル
:u-boot ソースファイル
Table 2.6-1 DVD-ROM 内容
※『X.X』はバージョン番号を示します。バージョン 1.0 の場合は『1.0』になります。
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
8
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
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 もしくは
無線 LAN モジュールを用いた動作確認時に使用
WM-RP-05S
microSD カード
SD ルートファイルシステム作成、MMC ブート確認等に使用
電源
AC アダプタ(DC5V±5%)
Table 3.1-1 動作環境
上記の環境は、XG-BBEXT の Linux の動作確認をするための環境となります。
カーネル等のコンパイルに使用する開発環境に関しては、『Linux 開発 インストールマニュアル』でご確認
ください。
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
9
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
3.4
XG-BBEXT ボードの接続
ホスト PC と XG-BBEXT ボードの接続例を示します。
LAN をネットワークと接続する場合は、ネットワーク管理者と相談し、設定に注意して接続してください。
AC アダプタ
microUSB ケーブル
ホスト PC
XG-BBEXT ボード
LAN クロスケーブル
Fig 3.4-1 XG-BBEXT ボードの接続(PC に接続する場合)
AC アダプタ
microUSB ケーブル
XG-BBEXT ボード
ホスト PC
LAN ストレートケーブル
Fig 3.4-2 XG-BBEXT ボードの接続(HUB に接続する場合)
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
12
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
3.5
Linux の起動
XG-BBEXT 上で Linux の起動を行います。
XG-BBEXT は、動作確認用に Linux がプリインストールされた状態で出荷しております。
以下の手順を行う前に、PC に USB/シリアル変換(MCP2200)のドライバがインストールされている必要が
あります。ドライバは、付属の DVD 内に入っていますので、インストールしてから行ってください。
①
XG-BBEXT の電源を入れる前に、付属のシリアル用ハーネス及びスイッチが以下になっていることを確認します。
詳細に関しては、『XG-BBEXT ハードウェアマニュアル』でご確認ください。
JSW1
BOOT
MicroSD - eMMC
※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:
DRAM:
ready
512 MiB
:
途中省略
:
Welcome to Buildroot
xg-bbext login:
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
13
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
3.7
Linux の動作確認
XG-BBEXT 上での Linux の動作確認を行います。
ログイン
Linux 起動後、ログインプロンプト『xg-bbext login:』が表示されます。
ログインを実行するにはユーザ『root』を入力してください。
ログイン設定
ユーザ
root
パスワード
なし
Table 3.7-1 ログイン設定
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
入力
入力
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
16
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
加速度センサー
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-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
25
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
4.2
ブートローダの起動
XG-BBEXT を起動して、U-Boot のコマンドコンソールに入る方法を説明します。
①
XG-BBEXT の電源を入れる前に、付属のシリアル用ハーネス及びスイッチが以下になっていることを確認します。
詳細に関しては、『XG-BBEXT ハードウェアマニュアル』でご確認ください。
JSW1
BOOT
MicroSD - eMMC
② 『3.5 XG-BBEXT ボードの接続』にしたがって、ホスト PC の USB ポートと XG-BBEXT の microUSB ポート(CN9)、
ホスト PC のイーサネットポートと BeagleBone Black のイーサネットポートを接続します。
ホスト PC に認識されて仮想 COM ポートが作成されます。
③
ホスト OS(Windows)のターミナルソフトを起動します。(設定は『3.2 シリアル初期設定値』を参照してください)
④
AC アダプタを接続して、XG-BBEXT の電源を入れます。
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
34
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
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
入力
マウントされているかどうかは、『mount』コマンドで確認できます。
以下のように、『/dev/sr0』が表示されている場合は、すでにマウントされています。
(『*******』は、DVD のボリュームラベルになります。)
$ mount
:
途中省略
:
/dev/sr0 on /media/******* type udf (ro,nosuid,nodev,uhelper=udisks,uid=1000,
gid=1000,iocharset=utf8,umask=0077)
省略
⑤
入力
ファイルをコピーします。コマンド途中の『*******』は、DVD のボリュームラベルになります。
そのため、その部分は挿入した DVD に合わせて入力してください。
省略
⑥
入力
DVD をアンマウントします。
省略
⑦
$ cp /media/*******/sources/u-boot-2013.01.01-xgbbext-X.X.tar.bz2 .
$ umount /dev/sr0
入力
ソースファイルを展開します。
省略
$ tar -xjpf u-boot-2013.01.01-xgbbext-X.X.tar.bz2
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
40
入力
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
作成
①
準備作業で展開した作業用ディレクトリの『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-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
41
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
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』は以下のようになっています。
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
各環境変数は以下の通りです。
環境変数名
bootargs
設定内容
コンソール出力を/dev/ttyO0 115200bps,ノーパリティ、8bit データに設定します。
メモリは 512Mbyte に設定します
ルートファイルシステムは/dev/mmcblk0p2 で読書き可能で、ファイルシステムタイ
プは ext3、ファイルシステムが起動するまで wait するように設定します。
bootcmd
カーネルをロードし、ロードしたアドレスから起動するように設定します。
デフォルトでは kloadaddr=0x80007fc0、bootfile=uImage-xgbbext に設定されて
います。
テスト的に別カーネルを起動する場合は${bootfile}の代わりに別カーネルのファイ
ル名を直接指定します。
uenvcmd
uenvcmd が設定されていますと uExt.txt を解析後、そのままブートが実行されます。
Table 4.6-1 uEnv.txt の環境変数
uEnv.txt はテキストファイルですので、Linux 起動後であれば vi などのエディタで簡単に編集できます。
eMMC にある uEnv.txt の編集手順を説明します。
①
boot パーティションをマウントします。
省略
②
# cd /mnt/emmc
入力
uEnv.txt が存在することを確認します。
省略
MLO
④
入力
マウントしたディレクトリに移動します。
省略
③
# mount /dev/mmcblk0p1 /mnt/emmc
# ls /mnt/emmc
入力
u-boot.img
uEnv.txt
uImage-xgbbext
エディタを立ち上げ、uEnv.txt を編集します。
省略
# vi uEnv.txt
入力
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
44
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
5.
Linux
5.1
Linux システムの概要
XG-BBEXT 用 Linux システムは、Linux カーネルとルートファイルシステムから構成されます。
Linux カーネルは、デバイスドライバとして UART、Ethernet、FlashROM 等をサポートし、ファイルシステムとして ext2、
ext3、JFFS2、cramfs、FAT、NFS 等をサポートしています。
ルートファイルシステムは、基本アプリケーションとして、コマンドユーティリティ郡「busybox」が収録されています。
ルートファイルシステム
busybox
Linux カーネル
ファイルシステム
デバイスドライバ
UART
EXT2
EXT3
RTC
JFFS2
CRAMFS
Ether
FAT
NFS
FlashROM
ハードウェア
XG-BBEXT
UART
RTC
Ether
FlashROM
Fig 5.1-1 Linux システム
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
46
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
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-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
48
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
ルートファイルシステムの作成
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
『arm-linux-gnueabihf-gcc: コマンドが見つかりません』のようなエラーが表示される場合には、クロス
コンパイラのインストールが正常にできていない可能性があります。
多くの場合でインストールマニュアルの『SDK インストール手順』の最後に行うパス設定が異なっている可能
性がありますので、再度ご確認ください。
④
ルートファイルシステムの make が正常に終了していると、『./output/images』ディレクトリに『rootfs.tar.gz』
ファイルが作成されています。
$ ls output/images/rootfs.tar.gz
output/images/rootfs.tar.gz
省略
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
入力
52
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
6.
プログラムの作成
本章では、XG-BBEXT 上で動作するアプリケーションの作成方法について説明します。
6.1
プログラムの開発について
ソースファイルのコンパイルから動作までの一連の流れを示します。
①
ゲスト OS 上でソースファイルを作成。
②
ゲスト OS 上でソースファイルをクロスコンパイルし、実行ファイルを作成。
③
XG-BBEXT ボード上でゲスト OS を nfs でマウントし、実行ファイルをダウンロード。
④
XG-BBEXT ボード上で動作を確認。
XG-BBEXT
PC/AT 互換機(LinuxOS)
①ソースコードの
作成
ソースコード
④実行
クロス開発環境
ARM 用クロスコンパイラ
ARM 用クロスアセンブラ
③実行ファイルの
ダウンロード
ARM 用実行ファイル
ARM 用リンカ
②実行ファイルの
作成
ARM 用実行ファイル
Fig 6.1-1 プログラムの開発手順
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
53
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
サンプルアプリケーションのコンパイル
サンプルアプリケーションのコンパイル手順を説明します。
①
準備作業で展開した作業用ディレクトリの『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] 温度[℃]
473.6
26.0
,E>
471.2
26.0
,E>
478.5
26.0
,E>
485.8
26.0
,E>
入力
加速度(x,y,z)
0.0
-1.8
10.1
地磁気(x,y,z)
-8.3 -49.7
-9.8
GPS
<3600.00000,N,13600.00000
0.5
-1.8
10.1
-8.4
-49.4
-9.7
<3600.00000,N,13600.00000
0.0
-2.3
10.6
-8.5
-49.8
-9.8
<3600.00000,N,13600.00000
0.5
-2.3
10.1
-8.6
-49.8
-9.8
<3600.00000,N,13600.00000
:
以降省略
:
なお、アプリケーションを終了する場合は、『Ctrl+c』を入力してください。
④
nfs をアンマウントします。
# umount /mnt/nfs
入力
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
60
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
7.
デバイスドライバの作成
本章では、XG-BBEXT 上の 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 サンプルデバイスドライバの概要
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
61
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
8.
無線 LAN モジュールの使用
本章では、XG-BBEXT に WM-RP-04S もしくは WM-RP-05S を接続して動作を行う方法を説明します。
8.1
Linux カーネルの対応方法
Linux カーネルのデフォルトでは、WM-RP-04S もしくは WM-RP-05S を使用する設定になっておりませんので、Linux カーネ
ルを再作成する必要があります。
再作成する手順を以下に説明します。
本手順では、『5.2 Linux カーネルの作成』によって一度 Linux カーネルが作成されていることを前提で説
明します。一度も行っていない場合は、一度作成手順を行ってください。
また、WM-RP-04S もしくは WM-RP-05S を使用するには、以下の 4 つのファイル(ファームウェア)が別途必要となります。
sbinst1, sbinst2, sbdata1, sbdata2
ファイルの入手方法に関しては、WM-RP シリーズの『ハードウェアマニュアル』にコンテンツのダウンロード方法が記載され
ておりますので、そちらでご確認ください。
なお、以下の手順では、~/wm-rp-firm にダウンロードされていることを前提で説明します。
①
『5.2 Linux カーネルの作成』で作成した Linux カーネルのフォルダに移動します。
省略
②
入力
無線 LAN モジュールのファームウェアをコピーします。
省略
省略
省略
省略
③
$ cd ~/xgbbext-lk/linux-3.2.0-xgbbext-X.X
$
$
$
$
cp
cp
cp
cp
~/wm-rp-firm/sbinst1
~/wm-rp-firm/sbinst2
~/wm-rp-firm/sbdata1
~/wm-rp-firm/sbdata2
./drivers/net/rs21/Firmware
./drivers/net/rs21/Firmware
./drivers/net/rs21/Firmware
./drivers/net/rs21/Firmware
入力
入力
入力
入力
『make ARCH=arm menuconfig』コマンドによって、コンフィグレーションメニューを表示します。
$ make ARCH=arm menuconfig
scripts/kconfig/mconf Kconfig
省略
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
入力
66
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
9.
ボードへのシステム構築
XG-BBEXT は、eMMC に U-Boot、Linux カーネル等が書き込まれた状態で出荷しております。
その eMMC へ弊社提供の U-Boot 等やお客様が作成されたデータを書き込みたい場合には、本章の手順に従って行ってくださ
い。
本手順では、MMC(microSD カード)ブートを使用して行いますので、Ubuntu 上で microSD カードへ
Linux カーネル等のデータをコピーする必要があります。
そのため、Ubuntu 上で認識できる SD カードリーダをご用意ください。
9.1
eMMC 構成
以下に、eMMC のパーティションマップを記載します。
次節より、このアドレスマップになるように FlashROM へ書き込む方法を説明します。
eMMC 2GByte
パーティション
領域名
フォーマット
1
ブート用(MLO, U-Boot, Linux)
FAT
2
ルートファイルシステム
EXT3
Fig 9.1-1 eMMC 構成
9.2
作業概要
eMMC に書き込む手順は、以下の 2 つの作業で行います。
1. MMC ブート用の microSD カードを作成します。
MMC ブートし eMMC 書込み用 Linux が起動できる microSD カードを作成します。
2. eMMC に用意したデータを書き込みます。
MMC ブートにより起動した Linux を利用して、eMMC にデータを書き込む。
次節より、上記の作業順番で説明します。
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
70
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
9.4
書き込み手順
起動 ~ パーティション作成
①
XG-BBEXT の電源を入れる前に、付属のシリアル用ハーネス及びスイッチが以下になっていることを確認します。
詳細に関しては、『XG-BBEXT ハードウェアマニュアル』でご確認ください。
JSW1
BOOT
MicroSD - eMMC
②
下図に従って、『9.3 microSD カードの作成』で作成した microSD カードを XG-BBEXT に挿入し、ホスト PC の USB
ポートと XG-BBEXT の microUSB ポート(CN9)を接続します。
ホスト PC に認識されて仮想 COM ポートが作成されます。
AC アダプタ
microUSB ケーブル
ホスト PC
XG-BBEXT ボード
microSD カード
Fig 9.4-1 ボードの接続
③
ホスト OS(Windows)のターミナルソフトを起動します。(設定は『3.2 シリアル初期設定値』を参照してください)
④
XG-BBEXT の電源を入れます。
XG-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
79
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
⑤
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-BBEXT Linux ソフトウェアマニュアル
Copyright©2014 ALPHA PROJECT Co.,LTD. All right reserved
80
(小数点以下切捨て)
ALPHAPROJECT
http://www.apnet.co.jp
XG-BBEXT
XG Series
謝辞
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]