AKI-H8/3069FでuClinuxを動作させる方法(前編)
概要
AKI-H8ボード/3069Fの動作確認では、H8上で動作するファームウェアを書き込み、マザーボード上のLEDやLCDの動作確認をした。
ここでは、AKI-H8/3069Fに小型CPUで動作可能なuClinuxを載せ、実際に動作させる。
まず、uCLinuxを載せるには、下図の構成を覚えておく。
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
- カーネルソース : uClinux-dist-sbcrbook
開発環境である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に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