(toppers-users 1173) Re: hello world 的なもの

Honda Hiroki hhonda @ ipflex.com
2003年 9月 3日 (水) 20:15:11 JST


> アプリケーションの修正を行っても、カーネル部分の再ビルドは基本的には
> 要りません。

そうですね。カーネルだけ別ディレクトリであらかじめコンパイルして
libkernel.a とかに固めておくことができますし、そうすれば hello world
アプリの Makefile が少し簡単になります。

しかし、同様に systask ディレクトリを事前コンパイルして libsystask.a 
に固めよう、と試みると、serial.c が #include "kernel_id.h" しているせ
いで、むむー、ということに…。

# JSP 1.3 の話です。

serial.c の場合は、spcb_table[] 定義を外に追い出せば (定義用のヘッダファ
イルを新設して serial.cfg から INCLUDE させれば)、kernel_id.h に依存し
なくなって事前コンパイル可能になりそうです。でも、一般のミドルウェアは 
        tcp_alloc_port(...) {
          wai_sem(SEM_TCP_CCEP);
          ...;
          sig_sem(SEM_TCP_CCEP);
        }
みたいに各種オブジェクト ID を直接使いたいでしょうから、kernel_id.h に
依存せざるを得ず、「ミドルウェアはアプリと一蓮托生でビルドしてください」
となります。

メモリ効率実行効率重視の組み込み向け RTOS としてはしかたない、というか、
逆にここまでメモリ効率実行効率を追求しているのは長所である、という感じ
でしょうか。

ただ、ビルドタイミングが一蓮托生だからといって Makefile まで一蓮托生で
ある必要はないので、「Makefile は kernel, systask などディレクトリごと
に独立して持ち、libkernel.a, libsystask.a 等に固める」という構成にすれ
ば、アプリ Makefile の敷居を低くできるかも。

# いやいや、ディレクトリを渡り歩いて再帰 make するなんてかえって
# わかりにくい、と感じる人もいるかも。

……というような話も「ビルド手順チュートリアル」で解説されていると
よさそうですね。

====
アイピーフレックス株式会社
R&D センター
本田広樹 (hhonda @ ipflex.com)