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