AKI-H8/3069FでuClinuxを動作させる方法(前編)

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

AKI-H8ボード/3069Fの動作確認では、H8上で動作するファームウェアを書き込み、マザーボード上のLEDやLCDの動作確認をした。
ここでは、AKI-H8/3069Fに小型CPUで動作可能なuClinuxを載せ、実際に動作させる。

まず、uCLinuxを載せるには、下図の構成を覚えておく。

AKI-H8 3069F uCLinux 1.jpg


AKI-H8/3069F上でuClinuxが動作して、コマンド入力を行えるシェルが起動したとしても、キーボードやディスプレイは接続できない。
つまり、AKI-H8/3069F単体では入出力等ができないため、必ず、Linux PCが必要になる。
Linux PC上に、AKI-H8/3069F上のuClinuxの起動に必要なカーネル等のファイルを置くことによって、OSの起動を実現できる。

ここでは、以下の問題を解決していく。
この辺りの問題が、組み込み機器の取り扱いを難しくさせている要因であり、幅広い知識が要求される。

  • BIOSに代わるプログラムは何か。
  • カーネルはどこから起動されるのか。
  • HDD / SSDは無いが、ファイルシステムのマウント先はどうするのか。



AKI-H8/3069F上でuClinuxを動作させるための準備

uClinuxを動作させるための準備を具体的に見ていく。

Linux PCの設定

H8の開発環境とAKI-H8/3069Fに載せるuClinuxのカーネルソースをダウンロードする。
以下のWebサイトから、h8tools_bin.tar.gzとuClinux-dist-sbcrbook20070218.tar.gzをダウンロードする。


開発環境であるh8toolsをインストールする。
まず、h8tools_bin.tar.gzファイルを解凍して、/optディレクトリにコピーする。

tar zxvf h8tools_bin.tar.gz -C /opt


次に、.bashrcファイルにパスを通す。

# .bashrcファイル
export PATH=/opt/bin:$PATH


.bashrcファイルの設定を反映させる。

source .bashrc


最後に、パスが通っているか確認する。

which h8300-linux-elf-gcc


次に、uCLinuxのカーネルソースであるuClinux-dist-sbcrbook20070218.tar.gzを解凍する。
ここでは、カーネルソースを/usr/local/srcディレクトリに配置している。

tar zxvf uClinux-dist-sbcrbook20070218.tar.gz -C /usr/local/src


カーネルをコンパイルするために、カーネルソースを配置したディレクトリに移動して、カーネルパラメータの設定を行う。
細かいパラメータの設定は、"はじめる組込みLinux H8マイコン×uClinuxで学べるマイコン開発の面白さ"の中に記載されているので、
詳細はその書籍を参照する。

cd ~/uClinux-dist
make clean
make menuconfig 


以下のように、uCLinuxのカーネルパラメータの設定を行う。
まず、ベンダーを選択する。

Vendor/Product Selection
Vender (Akizuki)
Akizuki Products (AE3068)

[Exit]を選択して完了する。

次に、カーネルのバージョンと標準Cライブラリを選択する。

Kernel/Library/Defaults Selection
Kernel Version (linux-2.4.x)
Libc Version (uClibc)
[*] Default all settings
[*] Customize Kernel Settings
[*] Customize Vendor/User Settings
[ ] Update Default Vendor Settings

[Exit]を2回選択した後、[Y]キーを押下して、新しい設定を保存する。

ブロックデバイスの設定を行う。

Block devices
[ ] ROM disk memory block device(blkmem)

[Exit]を選択して完了する。

ネットワークの設定を行う。

Networking options
[*] TCP/IP networking
[*] IP: kernel level autoconfiguration
[*] IP: DHCP support (NEW)

[Exit]を選択して完了する。

ファイルシステムの設定を行う。

File systems
[ ] ROM file system support

Network File Systems
[*] NFS file system support
[*] Provide NFSv3 client support
[*] Root file system on NFS

[Exit]を3回選択した後、[Y]キーを押下して新しい設定を保存する。
シェルの設定を行う。

CoreApplecations
(sash) Shell Program
( ) Sash
(X) nwsh

[Exit]を選択して完了する。

Webサーバ(thttpd)を標準でインストールする。

Network Applications
[*] thttpd

[Exit]を選択して完了する。

BusyBoxをインストールする。

BusyBox
[*] echo
[*] echo: fancy (NEW)
[*] free

[Exit]を2回選択した後、[Y]キーを押下して新しい設定を保存する。

カーネルパラメータの設定が完了した後、以下のコマンドを実行する。

make dep
make


このカーネルソースは、uClinuxのカーネルの設定・生成だけではなく、BusyBoxなどの設定・生成も行っているので、
makeコマンドが終了するたびに各ツールの設定メニューが立ち上がる。(その都度、詳細を設定してはmakeを実行する)

設定するのが面倒であれば、以下のWebサイトからカーネルであるlinux.binをダウンロードする。(/root/3069Fに配置する)
カーネル : linux.bin
関連リンク : 組み込みLinuxで際立つ「BusyBox」の魅力

ルートファイルシステムの準備

ルートファイルシステムを準備する。
これは、カーネルソースに組み込まれているので、それを流用するだけであるが、デバイスノードの作成などを行う必要がある。
詳細は書籍やWebサイトの情報を参照すること。

まず、ルートファイルシステムの圧縮ファイルであるromfs.tar.gzファイルを、以下のWebサイトからダウンロードする。
ルートファイルシステム : romfs.tar.gz

次に、ルートファイルシステムを展開する。

tar zxvf romfs.tar.gz -C /opt 


ファイルの展開が完了後、romfsディレクトリが作成されるので、ファイル名をaki3069fに変更する。

sudo mv /opt/romfs /opt/aki3069f 


以上で、カーネルとルートファイルシステムの準備が完了する。


ブートローダの書き込み

組み込み機器で採用されているブートローダには、U-BootやRedBoot等がある。
AKI-H8/3069Fでは、RedBootを使用する。

以下のWebサイトに、AKI-H8/3069F用にカスタマイズされたブートローダがあるので、それを使用する。(/root/3069Fに配置する)
H8ボード用ブートローダ : redboot_std_2mb.srec

USB-シリアル変換ケーブルを接続して、h8writeコマンドでredboot_std_2mb.srecをAKI-H8/3069FMに書き込む。
ファームウェアのサイズが大きいので、書き込み時間が長いので注意する。

h8write -f20 -3069 redboot_std_2mb.srec /dev/ttyUSB0



シリアル通信ソフトの準備

Linuxにおけるシリアル通信ソフトをインストールするため、uucpとminicomをインストールする。

# RHEL
sudo dnf install uucp minicom

# SUSE
sudo zypper install uucp minicom


minicomの設定を行うため、以下のコマンドを実行する。
なお、minicomの場合、標準のシリアルポートデバイスが/dev/ttyS1である。

minicom -s 


minicomの起動画面にて、ファイル転送プロトコルを選択する。
ファイル転送プロトコル画面では、[I]キーを入力して、[Enter]キーで移動する。
minicomが/usr/local/binディレクトリにインストールされているので、パスを変更する。

次に、[Enter]キーで起動画面に戻り、シリアルポートを選択する。
シリアルポートの設定画面では、[A]キーを入力して、デバイスのファイル名を/dev/ttyUSB0に変更する。(各自の環境に合わせてファイル名を指定する)
上記と同様に、[Enter]キーで起動画面に戻り、["dfl"に設定を保存]を選択して保存する。

最後に、[Minicomを終了]を選択する。

minicomの設定画面から抜ける場合は、[Ctrl] + [A]キーを押下後、[Z]キーを押下する。
[minicomのコマンド一覧]画面が表示されるので、[X]キーを入力して[リセットして終了]を選択する。

また、cuコマンドの終了方法は、~.を入力して[Enter]キーを押下する。

~.


最後に、cuコマンドとminicomコマンドでの接続確認を行う。
Linux PCとAKI-H8/3069FをUSB-シリアル変換ケーブルで接続して、AKI-H8/3069FのSW1を下図のように設定する。
(fconfigコマンドからファームウェアを書き換えられるようにするため、4をONにする)

AKI-H8 3069F uCLinux 3.jpg


AKI-H8/3069FにACアダプタを接続して、以下のコマンドを実行する。

sudo cu -l /dev/ttyUSB0 -s 38400 


もし、/var/lockディレクトリ下のファイルに書き込み権限が無い場合、
強引ではあるが、/var/lockディレクトリ下のファイルに全パーミッションを付与する。

sudo chmod 777 /var/lock/
sudo cu -l /dev/ttyUSB0 -s 38400


接続に成功した場合は、"Connected."メッセージが表示される。

minicomを起動するため、以下のコマンドを実行する。

sudo minicom