- - PR -
前回「えっ、シリアルポートがない!! ターゲットボードとの接続」では、秋月電子通商の「AKI−H8/3069FフラッシュマイコンLANボード(以下、AKI−H8/3069F)」を用いて、マイコン上で動作するプログラムをフラッシュROMに書き込んで、マザーボード上のLEDやLCDが動作するかどうかを確認しました。また、プログラムをフラッシュROMへ書き込む際、通常、ホストPC上からシリアルポート経由で書き込まなければなりませんが、今回使用しているホストPC「KOHJINSHA SA5SX12A」のようにシリアルポートがない場合の対処方法についても併せて解説しました。
連載第3回となる今回は前回の予告どおり、H8マイコンを搭載した組み込み開発ボードAKI−H8/3069Fに、小型CPUで動作可能なLinux OS「uClinux」を載せ、実際に動かすことに挑戦したいと思います。こんな小さなマイコンでも“OS”が動作するなんて、まさに『ザ・組み込み』ですね。
それでは前置きはこれくらいにして、早速uClinuxのポーティングに取り掛かってみましょう。
| 関連リンク: | |
| 「はじめる組込みLinux H8マイコン×uClinuxで学べるマイコン開発の面白さ」 米田 聡 著/ソフトバンク クリエイティブ http://www.sbcr.jp/books/products/detail.asp?sku=4797337192 |
|
| 『はじめる組込みLinux』サポートサイト http://uclinux.quake4.jp/ |
|
| AKI−H8/3069FフラッシュマイコンLANボード(秋月電子通商) http://akizukidenshi.com/catalog/items2.php?c=h8kit&s=popularity&p=1&r=1&page=#K-00168 |
|
H8マイコンでuClinuxを動かすための心構え
まず、“この手のこと”を行うときには頭の中で図1のようなこと(構成)をしっかりとイメージできていなければなりません。
![]() |
図1 システム構成 |
H8マイコン上でuClinuxが動作して、コマンド入力を行えるシェルが起動したとしてもAKI−H8/3069Fには、キーボードの端子やモニターの端子がありません。つまり、AKI−H8/3069F単体では“この手のこと(入出力など)”ができないため、必ず“寄り添う”ホストPCが必要になるということです。
連載第1回「Windowsを傷付けずにUSBからLinuxをブートせよ!」で用意したホストPC(Linuxマシン)であれば、キーボードやモニターの端子が搭載されているだけではなく、ハードディスクやメモリが潤沢にあります。こうしたリソースを使わない手はありません。ホストPCのデバイス上にターゲットボードのOS(uClinux)の起動に必要なカーネルなどのファイルを置くことによって、非力なマイコンでもOSの起動を実現できるのです。
では、今回使用しているターゲットボード「AKI−H8/3069F」の場合、どうすればよいのでしょうか?
- BIOSに代わるプログラムは?
- カーネルはどこから起動されるの?
- ハードディスクなんかないけど、ファイルシステムのマウント先はどうするの?
など、さまざまな疑問がわいてくると思います。
このように『それなりの“OS”を起動する』といった瞬間に、いろいろな問題点や解決すべきことが浮かんできます。この辺りが、まさに組み込み機器の取り扱いを難しくさせている要因であり、かなり幅広い知識が要求される関門でもあります……。
「じゃあ、お手上げ〜」と白旗を振るのは簡単なことですが、それでは組み込みの世界の魅力を実感することもできないでしょう。手をこまぬいていたり、躊躇(ちゅうちょ)したりしていては何もはじまりません。本連載をはじめ、ほかのWebページや書籍などから、いろいろな情報を集めながら1つ1つ難問をクリアしていきましょう! これが組み込み開発のだいご味です。くじけずに付いてきてください!
H8マイコンでuClinuxを動かすための準備
それでは、uClinuxを動かす準備を具体的に進めていきましょう。
はじめに、ホストPCの設定からです。H8マイコンの開発環境と、このボード(AKI−H8/3069F)に搭載できるuClinuxのカーネルソースを準備します。以下のリンクから「h8tools_bin.tar.gz」と「uClinux-dist-sbcrbook20070218.tar.gz」の2つのファイルをダウンロードして、ホストPCの任意のディレクトリ(今回は、/root/3069Fとします)に保存します。
- 開発環境:「h8tools」(▼ダウンロードはこちら)
- カーネルソース:「uClinux-dist-sbcrbook」(▼ダウンロードはこちら)
開発環境のインストール
続いて、ダウンロードした開発環境(h8tools_bin.tar.gz)のインストールです。以下のコマンドを実行してください。
# cd ~/3069F |
ここで、インストールした開発環境をどこからでも使えるようにするために、以下のようにコマンドパスを通しておきます。
# export PATH=/opt/bin:$PATH |
うまくコマンドパスが通ったら、次回以降のシェル起動でもこのパスが有効になるように、ホームディレクトリの下にある「.bashrc」の末尾に「export PATH=/opt/bin:$PATH」を記述しておきます(リスト1)。
# .bashrc |
| リスト1 .bashrcの内容 |
uClinuxカーネルソースの準備
次に、以下のコマンドで先ほどダウンロードしたカーネルソース(uClinux-dist-sbcrbook20070218.tar.gz)を展開します。今回はカーネルソースを「/usr/local/src」に置いていますが、実際はどこに置いても構いません。
# tar zxvf uClinux-dist-sbcrbook20070218.tar.gz -C /usr/local/src |
そして、カーネルをコンパイルするためにカーネルソースを置いた場所に移動して、カーネルパラメータの設定を行います。細かいパラメータの設定は前回紹介した書籍「はじめる組込みLinux H8マイコン×uClinuxで学べるマイコン開発の面白さ」(ソフトバンク クリエイティブ)の中に書かれていますので、詳しく知りたい方はそちらを参考にしてください。
# cd /usr/local/src/uClinux-dist |
カーネルパラメータの設定をした後、以下のコマンドを実行します。
# make dep |
この配布されているカーネルソースは、uClinuxのカーネルの設定・生成だけではなく、BusyBoxなどの設定・生成も行っていますので、makeが終了するたびに各ツールの設定メニューが立ち上がります(その都度、詳細を設定してはmakeを実行する)。今回は筆者の方でカーネル「linux.bin」を準備しましたので、もしご自身で設定するのが面倒であれば以下のリンクからダウンロードして、「/root/3069F」に配置してください。
- カーネル:「linux.bin」(▼ダウンロードはこちら)
| 関連リンク: | |
| 組み込みLinuxで際立つ「BusyBox」の魅力 http://monoist.atmarkit.co.jp/fembedded/articles/busybox/busyboxa.html |
|
| 連載記事「いますぐ使える! BusyBox活用術」 http://monoist.atmarkit.co.jp/fembedded/index/busyboxtech.html |
|
ルートファイルシステムの準備
これでカーネルの準備ができました。続いて、「ルートファイルシステム」を用意します。こちらはカーネルソースに組み込まれていますので、それを流用するだけですが、デバイスノードの作成などを行う必要があります。詳細は書籍やWebなどの情報を参考にしていただくとして、今回は筆者が作成したルートファイルシステムの圧縮ファイル「romfs.tar.gz」を以下のリンクからダウンロードして、利用してください。
- ルートファイルシステム:「romfs.tar.gz」(▼ダウンロードはこちら)
これでカーネルとルートファイルシステムの準備ができました。ここでルートファイルシステムをあらかじめ展開しておきましょう。以下のコマンドで、先ほどダウンロードしたファイルのあるディレクトリに移動し(今回は~/3069F)、ファイルを展開します。
# cd ~/3069F |
ファイルの展開が完了すると「romfs」というディレクトリが作成されますが、この名前ではちょっと味気ないので、以下のコマンドを実行して意味のある名前(aki3069f)に変更します。
# mv /opt/romfs /opt/aki3069f |
これで準備ができましたが、これらのファイルをどこに置いて、どのような方法でH8マイコンに実行させるのでしょうか? 前回のようにプログラム全体をフラッシュROMに書き込めればよいのですが、H8マイコンuClinuxシステムが確立していない状況で、カーネルを含めたファイルをその都度ROM化するのも面倒ですし、今回はそうもいかないようなので……。
ブートローダの書き込み
そこで登場するのが「ブートローダ」です。世の中にはさまざまなブートローダが存在します。今回ホストPCで採用したVine Linux 4.2では「GRUB」、組み込み機器で多く採用されている「U-Boot」、さらに今回のターゲットとなるH8マイコンで採用されている「RedBoot」などがあります。
当然、今回はH8マイコンがターゲットなのでRedBootを用います。幸い、AKI−H8/3069F用にカスタマイズされたブートローダが以下のリンクにありますので、それを利用することにします(今回、ダウンロード先は「/root/3069F」とします)。
- H8ボード用ブートローダ(▼ダウンロードはこちら)
ブートローダのダウンロードが完了したら、USB−シリアル変換ケーブル(注)でホストPCとターゲットボードを接続し、「h8write」コマンドでこのファイル(redboot_std_2mb.srec)をH8マイコンのフラッシュROMに書き込みます(ボードの設定や書き込み手順については前回の解説を参照のこと)。
| 注:USB−シリアル変換ケーブルを利用する経緯などは、第2回「えっ、シリアルポートがない!! ターゲットボードとの接続」を参照のこと。 |
# ./h8write -f20 -3069 redboot_std_2mb.srec /dev/ttyUSB0 |
前回と比べて、今回はプログラムのサイズが大きいので、書き込みにかなり時間がかかります。メッセージの最後に「EEPROM Writing is successed.」と出力されれば、ブートローダの書き込みは完了です。
関連記事 半導体/エレクトロニクス
- 連載:イチから作って丸ごと学ぶ! H8マイコン道
- 特集:組み込みシステムに吹く“仮想化”の風
- 連載:組み込みマルチコア進化論(連載中)
- 連載:必修! FPGAタイミング解析の基礎(全5回)
- 連載:−ザ・組み込み−ソフトウェアのハードウェア化(連載中)
- 連載:S08ではじめるマイコン制御プログラミング(全6回)
- 連載:マイコン制御基礎の次(連載中)
- 連載:マイコン制御基礎の基礎(全10回)
- 連載:マイコン制御基礎以前(全10回)
- 連載:H8で学ぶマイコン開発入門(全13回)
- 連載:触って学ぼう FPGA開発入門(全6回)
- 連載:FPGA開発テクニック、チューニングの心得(全6回)
- 特集:いまさら聞けない FPGA入門
- 連載:バラして納得! 電子部品入門(全18回)
- 連載:完全マスター! 電子回路ドリル III(全14回)
- 連載:完全マスター! 電子回路ドリル II(全25回)
- 連載:完全マスター! 電子回路ドリル(全25回)
- 目指せ! 電子回路マスターへの道
- 目指せ! 電子回路マスターへの道 Part2
- 分かっておきたい、IP活用の落とし穴
組み込み開発フォーラム 新着記事
- フルスクラッチの“Hello World”を動かしてみよう(2011/3/31)
- FlexRayプロトコルの概要(その2)(2011/3/29)
- JASA、東北地域に拠点を置く会員企業を支援(2011/3/25)
- NEC、震災の影響を受けた4拠点の生産再開を発表(2011/3/23)
- 内部ブロック図の基礎と共通要素(2011/3/22)
- インテル、被災地におけるITインフラの復旧を支援(2011/3/22)
- Facts on AUTOSAR/AUTOSAR導入の現実(2011/3/18)
- 計測器・震災被害ホットラインを開設、テクトロニクス(2011/3/18)
- ZMP、地震の揺れを多角的に計測するアプリ無償配布(2011/3/16)
- メンター、3Dテレビ・マルチメディア検証プラットフォーム(2011/3/16)
- 【番外編】タチの良い計測値、悪い計測値とは?(2011/3/15)
- tarファイルシステムをAndroidに組み込む!!(2011/3/10)














