RedBootの移植


Linuxカーネルを起動するためには、周辺機器の最低限の初期化と、カーネルのRAMへの転送を行うためのブートローダが必要になる。
そこで、ここではRedHat社が開発したeCosという組み込み機器向けRTOSを使用したブートローダ兼ROMモニタである、Redbootを使用することにした。

(2004.09.21 追記) ecosconfigを実行したときに"Version subdirectory `common' does not have a CDL script `hal.cdl'."等のエラーメッセージが出る場合がある。
最近のCygwin(cygwin1.dllのバージョン1.5.10-3以降?)では、eCosのecosconfig/configtoolが正常に動作しなくなっているらしい。(参考資料)
ここにecosconfigとconfigtoolの最新版があるので、差し替えれば正常に動作する。

eCosのインストール

eCosはLinuxやWindows + cygwinなどの上で動作するが、ここではWindows + cygwin上にインストールした。
eCos Downloading and Installationに従って、以下のようにしてインストールする。
$ mkdir /opt
$ cd /opt
$ wget --passive-ftp ftp://ecos.sourceware.org/pub/ecos/ecos-install.tcl
(ecos-install.tclのダウンロードが始まる)
$ sh ecos-install.tcl
(ダウンロード元は適当に選ぶ。インストール先はデフォルトの/opt/ecos。インストールするGNUツールはarm-elfだけで良い。)
~/.bash_profile の最後に次の行を加える
source /opt/ecos/ecosenv.sh
これでインストールは完了した。

Kompressorボード用halの実装

eCosではハードウェアに依存する部分をhal(Hardware Abstruction Layer)としてアプリケーションから切り離して記述している。そこで、別のボード用のhalの記述を元に書き換えて、Kompressorボード用にhalを実装した。
まず、 ecos_kompressor.tar.gzと、 ecos_kompressor_flash.tar.gzを ダウンロードして、/opt に置く。そして、
$ tar zxvf ecos_kompressor.tar.gz
$ tar zxvf ecos_kompressor_flash.tar.gz
として解凍する。 さらに、 ecos.dbをダウンロードして/opt/ecos/ecos-2.0/packagesにあるecos.dbに上書きする。(念のため、ecos.dbの変更点のみを抜き出したパッチファイルも置いておく。)

RedBootのコンパイル

書き換えが終わったら、
$ mkdir /tmp/redboot_ROM
$ cd /tmp/redboot_ROM
$ ecosconfig --srcdir=${ECOS_REPOSITORY} new kompressor redboot
$ ecosconfig --srcdir=${ECOS_REPOSITORY} import ${ECOS_REPOSITORY}/hal/arm/sa11x0/kompressor/v2_0/misc/redboot_ROM.ecm
$ ecosconfig --srcdir=${ECOS_REPOSITORY} tree
$ make
としてコンパイルする。/tmp/redboot_ROM/install/bin/redboot.bin ができていれば完成。(コンパイル済みバイナリ)

FlashROMへの書き込み

Kompressorボードに付属しているJTAG.EXEを使用して、生成したredboot.binをFlashROMの0番地に書き込む。
JTAG.EXEはWindows9x系でしか動作しないので注意が必要。
Xilinx Parallel III Cable相当のJTAGケーブルでPCとKompressorボードを接続し、DOSプロンプトで
$ jtag -p redboot.bin
とすれば書き込める。

動作確認

  1. Kompressorボードの電源を切る
  2. KompressorボードとPCをシリアルケーブル(クロスケーブル)で接続する。
  3. PCでxmodemプロトコルが使用可能なターミナルソフト(TeraTermProなど)を使用してCOMポートを開く。
  4. 通信速度を適切に設定する。
  5. Kompressorボードの電源を入れる。
  6. RedBootが起動してプロンプトが出るはずである。
文字が化けて出るような場合は通信速度を確認すると良い。

[△ Kompressor BoardでLinuxのページへ]
[開発ツールのコンパイル >>]

[藤田研究室 トップページへ]

SASAKI Shunsuke