eCos on iPAQの作り方。

Last-modified:

目次

Interface誌2001年12月号も参照してください。

eCosとは

eCosとは、RedHat社が中心となって開発している、μITRON互換のリアルタ イムOSです。特に、組み込み用途に向いています。

eCos Native API

ecos/packages/kernel/current/include/kapi.h
で定義されています。

カーネル内部のAPIは
ecos/packages/kernel/current/src/common/kapi.XXX
で定義されているC++のAPIになっています。

なお、インストールに関しては、けいさんによる、 Using eCosも参考に して下さい。


eCos on iPAQ

1.RedBootを入れる

RedBootとは、RedHat社が出しているbootloaderです。 注意! eCosを試してみる前に、必ず
iPAQ で Linux
などを参考にしてバックアップをとっておいて下さい。

では、実際にredbootをiPAQに入れてみましょう。

まず、

http://sources.redhat.com/ecos/boards/redbootbins/ipaq/
からOsloaderをダウンロードします。

その後、Active Syncを利用して、OsloaderをiPAQに送り込みます。(Active Syncからエクスプローラを立ち上げてドラッグ&ドロップ)
その後、"Osloader"を"osloader.exe"と名前を変え、「マイポケットPC」の直下 に置きます。
次に上のURLから取ってきた、Redboot_WinCE.binをbootldr(bootloaderの意味) と名前を変え、同じ感じで送り込みます。

iPAQのWinC上でEosloader.exeを起動し、Tools->bootLdr->Run after loading from fileを選択します。
そうすると、さっき置いたbootldrを読み込んで、redbootが起動します。LCD上 には

RedBoot(tm) bootstrap and debug(ここから先は切れてる)
Platform: Compaq iPAQ Pocket P(ここから先は切れてる)
Copyright (C) 2000, 2001, Red(ここから先は切れてる)

RAM: 0x00000000-0x20000000, 0x(ここから先は切れてる)
RedBoot>
と出てきます。シリアルコンソール上には全部見えるはずなんで試してみて下さ い。
他にも、仮想キーボードも出てくるはずです。最初に仮想キーボードの"q"キー をずーっと押しっぱなしにしとかないと、仮想キーボードがenableされないので、 注意です。失敗したら、リセットして、osloader.exeからやり直しましょう。

RedBootをiPAQダウンロードする

注意! この動作をしてしまうと、もう、後には戻れません…(まあ、そのために、さっ きCFにバックアップを取ったんだけどね)
RedBootをiPAQに入れます。これをすると、常にRedBootが立ち上がるようになり ます。

これからは、シリアルで接続されていることを前提とします。
iPAQの場合、38400で、8bit,パリティなし、stop bitは1bitでつないで下さい。 途中からつないでもだめですよ。ちゃんとリセットしてくださいね。
tftpでつないで、と打ちます。

RedBoot> lo -r -b 0x100000 /tftpboot/redboot_ROM.bin      
RedBoot> fi loc -f 0x50000000 -l 0x40000      
RedBoot> fis init      
RedBoot> fi unl -f 0x50040000 -l 0x40000      
RedBoot> fi cr RedBoot -b 0x100000      
RedBoot> fi loc -f 0x50040000 -l 0x40000      
RedBoot> reset


2. eCosカーネルのMake

大体のながれ。

  1. ecosconfigをとってくる
  2. とりあえずソースをとってくる
  3. binutilでの、クロスコンパイル環境を整える
  4. PATHとかを通して、buildの準備
  5. build

2.1 eCOSコンフィグレーションツールの入手

CUIコンフィグレーションツール(ecosconfig)の場合、

http://sources.redhat.com/ecos/anoncvs.html
からecosconfigをダウンロードします。

あとは、展開して、ecosconfigに名前を変えて、chmodして、適当なディレクト リに移して、PATHを通します。

GUIの場合は、configtoolというものもありますが、試していないので。

2.2 Anonymous CVS からのeCocカーネルのcheckout

cvs -d :pserver:anoncvs@sources.redhat.com:/cvs/ecos login
cvs -d :pserver:anoncvs@sources.redhat.com:/cvs/ecos -z 9 co -P ecos

パスワードはanoncvsです。一度チェックアウトしたらあとはupdateで十分。 coをupdateに変えて実行。

2.3 buildの準備

pathと、環境変数ECOS_REPOSITORYをセットします。以下に示すのは例なので、 適宜PATHなどを読み変えて下さい。

sh、kshかbashを使っているのなら、

      $ PATH=/opt/ecos/ecos-1.4.x/tools/bin:/usr/cygnus/\
      DEVTOOLSVERSION/H-i686-pc-linux-gnu/bin:$PATH
      $ export PATH

cshかtcshを使用しているのなら、

      $ setenv PATH /opt/ecos/ecos-1.4.x/tools/bin:/usr/cygnus/\
      DEVTOOLSVERSION/H-i686-pc-linux-gnu/bin:$PATH

% refresh
を忘れないで下さい。

同様に環境変数ECOS_REPOSITORYを設定します。

sh、kshかbashを使っているのなら、

      $ ECOS_REPOSITORY=/opt/ecos/ecos-1.4.x/packages
      $ export ECOS_REPOSITORY

cshかtcshを使用しているのなら、

      $ setenv ECOS_REPOSITORY /opt/ecos/ecos-1.4.x/packages

とします。 /opt/以下は適当に変えて下さい。

2.4 GNUツールの入手とbuild

http://sources.redhat.com/binutils/
からbinutilsを、
http://gcc.org
からgcc-2.95.2.tar.gzをとってきます。

また、

http://sources.redhat.com/gdb/
から、insightをとってきます。別にgdbでも構いませんが。

それからパッチ当てとbuildをします。
自信があるならAnonymous CVSから最新のコードをcheckoutしてきたほうがいい かもですね。

展開。PATHとかは適宜読み変えてね。

% mkdir /usr/local/src/binutils /usr/local/src/gcc /usr/local/src/gdb
% cd /usr/local/src/binutils
% tar jxvf /PATH_NAME/binutils-2.11.2.tar.bz2
%
% cd /usr/local/src/gcc
% tar jxvf /PATH_NAME/gcc-2.95.2.tar.gz
% cd gcc-2.95.2
% patch -p0 < ecos-gcc-2952.patch
% contrib/egcs_update --touch

% cd /usr/local/src/gdb
% tar jxvf /PATH_NAME/insight-5.0.tar.bz2
build。PATHとかは適宜読み変えてね。

% mkdir ~/tmp/build/binutils
% cd ~/tmp/build/binutils
% /usr/local/src/binutils/binutils-2.10.1/configure --target=arm-elf \
   --prefix=/usr/local/ecos/-- \
   --exec-prefix=/usr/local/ecos/H-i686-pc-linux-gnu
% make -w all install

% export PATH=/usr/local/ecos/H-i686-pc-linux-gnu/bin:$PATH (bashね)
% set path = (/usr/local/ecos/H-i686-pc-linux-gnu/bin $path) (cshね)

% mkdir ~/tmp/build/gcc
% cd ~/tmp/build/gcc
% /usr/local/src/gcc/gcc-2.95.2/configure --target=arm-elf \
   --prefix=/usr/local/ecos/-- \
   --exec-prefix=/usr/local/ecos/H-i686-pc-linux-gnu \
   --with-gnu-as --with-gnu-ld --with-newlib
% make -w all-gcc install-gcc LANGUAGES="c c++"

% mkdir ~/tmp/build/ggdb
% cd ~/tmp/build/ggdb
% /usr/local/src/gdb/insight-5.0/configure --target=arm-elf \
   --prefix=/usr/local/ecos/-- \
   --exec-prefix=/usr/local/ecos/H-i686-pc-linux-gnu
% make -w all install

2.5 eCosカーネルのbuild

まず始めにディレクトリを作成します。
% mkdir ~/Work/ecos/ipaq_ecos/
% cd ~/Work/ecos/ipaq_ecos/
% ecosconfig new ipaq net
% ecosconfig add romfs
% ecosconfig import NFD.ecm
% ecosconfig tree
% gmake   <-- gmakeじゃないとだめなようです。

NFD.ecmはeCosのページから取得しましょう。

これでeCos自体のmakeは終りました。

2.6 ターゲットセットアップ

  1. シリアルを通じてつなげる場合
  2. (gdb) set remotebaud 38400    
    (gdb) target remote /dev/ttyS0
    
    Insightでは、File ->Target Settingsを選びます。
    
    Target: Remote/Serial     
    Baud Rate: 38400     
    Port: /dev/ttyS0
    
  3. etherを通じてつなげる場合
  4. (gdb) target remote :
    
    Insightでは、 File -> Target Settings を選びます。
    
    Target: Remote/TCP     
    Hostname:  Port: 
    

2002年6月現在、RedbootがPCMCIA-Ether Cardを認識せず、また、シリアル でのセットアップもうまくいかないため、これより先の作業は検証できていませ ん。

2.7 ROM imageの作成

    1. 必要があれば新規作成から始めます。
    2. File-> New を選びます。
    3. Build -> Templates を選び, ARM PID hardwareを選択します。
    4. While still displaying the Build -> Templates ダイアログがでている間、 GDB stub イメージを作成するために、"stubs"テンプレートを選択します。 また、CygMon(ROM モニタ)を作成するために、"cygmon"テンプレートを選択し、 OKを押します。
    5. Build -> Libraryを選択して、buildします。
    6. buildが終了すると、/bin/ディレクトリに"gdb_module"という名前が頭についた GDB stub ROMイメージか、"cygmon"という名前が頭についたCygMon イメージが できているはずです。
  1. ecosconfigを使ったbuildのやりかた
    1. buildツリーを作るための空のディレクトリを作り、cdします。
    2. GDB stub ROM imageを作るために、以下のコマンドを打ちます
    3.       % ecosconfig new ipaq stubs
      
      もしくは、CygMon ROM monitor imageを作るために、以下のコマンドを打ちます。
            % ecosconfig new ipaq cygmon
      
    4. 以下のコマンドを打ちます
    5.       % ecosconfig tree
            % make
      
    6. buildが終了すると、/bin/ディレクトリに"gdb_module"という名前が頭についた GDB stub ROMイメージか、"cygmon"という名前が頭についたCygMon イメージがで きているはずです。
Compaq iPAQ PocketPC Hardware Setup For setting up the iPAQ to run with RedBoot, see the the RedBoot User's Guide. Connections may be made using the Compact Flash Ethernet interface. A serial cable may be connected directly, or via the cradle. Serial communication uses the parameters 38400,8,N,1. The LCD/Touchscreen may also be used as an interface to RedBoot and eCos applications.

2.8 実行ファイルの変換

% arm-elf-objcopy -O binary ~/Work/ecos/ipaq_ecos/
faw@geocities.co.jp
[Send Mail]