Interface誌2001年12月号も参照してください。
eCosとは、RedHat社が中心となって開発している、μITRON互換のリアルタ イムOSです。特に、組み込み用途に向いています。
ecos/packages/kernel/current/include/kapi.h
で定義されています。
カーネル内部のAPIは
ecos/packages/kernel/current/src/common/kapi.XXX
で定義されているC++のAPIになっています。
なお、インストールに関しては、けいさんによる、 Using eCosも参考に して下さい。
では、実際に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>と出てきます。シリアルコンソール上には全部見えるはずなんで試してみて下さ い。
これからは、シリアルで接続されていることを前提とします。
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
大体のながれ。
CUIコンフィグレーションツール(ecosconfig)の場合、
http://sources.redhat.com/ecos/anoncvs.htmlからecosconfigをダウンロードします。
あとは、展開して、ecosconfigに名前を変えて、chmodして、適当なディレクト リに移して、PATHを通します。
GUIの場合は、configtoolというものもありますが、試していないので。
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に変えて実行。
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/以下は適当に変えて下さい。
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
% 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は終りました。
(gdb) set remotebaud 38400 (gdb) target remote /dev/ttyS0 Insightでは、File ->Target Settingsを選びます。 Target: Remote/Serial Baud Rate: 38400 Port: /dev/ttyS0
(gdb) target remote: Insightでは、 File -> Target Settings を選びます。 Target: Remote/TCP Hostname: Port:
% ecosconfig new ipaq stubsもしくは、CygMon ROM monitor imageを作るために、以下のコマンドを打ちます。
% ecosconfig new ipaq cygmon
% ecosconfig tree % make