第 3 章 初歩の RTLinux プログラミング 27
3.2 Hello Worldプログラム
まずは古くからの慣例に従い、「Hello World」をコンソールに表示させてみます。
エディタを立ち上げ、下記に示すプログラムを入力し、ファイル名を『sample1.c』として保存し てください。これは、一番単純なRTLinuxプログラムです。
★プログラム中のコメントについて
サンプルプログラムには、理解しやすいよう、日本語コメントを用いています。
しかし、プログラム中に日本語を用いてコンパイルすると、正常にコンパイルできないことがあります。
その時は、日本語コメントを削除してコンパイルしてください。
sample1.c 1
2 3 4 5 6 7 8 9 10 11 12 13 14
#include <rtl.h>
/* 初期化関数(insmodコマンドでモジュールを読み込む時、呼ばれる関数) */
int init_module(void) {
rtl_printf("Hello World!!¥n");
return 0;
}
/* 終了関数(rmmodコマンドでモジュールを排除する時、呼ばれる関数) */
void cleanup_module(void) {
rtl_printf("bye bye¥n");
}
次に、またエディタを立ち上げ、下記Listに示すプログラムを入力し、ファイル名を『makefile』
として保存してください。
これは、上記プログラムをコンパイルするメイクファイルです。
makefile 1
2 3 4 5
include /usr/include/rtlinux/rtl.mk all: sample1.o
sample1.o:sample1.c
$(CC) $(INCLUDE) $(CFLAGS) -o sample1.o -c sample1.c
★include /usr/include/rtlinux/rtl.mkは何のためにある?
このメイクファイルでインクルードしている/usr/include/rtlinux/rtl.mk というファイルは、私たちの
RTLinux モジュールをコンパイルするために必要な定義を、全て行ってくれています(ヘッダファイル
のインクルード等)。
この方法でコンパイルを行うのもよいですが、作成するRTLinuxモジュール名とソースファイル名とが 同じ場合(拡張子は除く。例えばtest.cとtest.oのような場合)、暗黙的ルールを使用することで、メイ クファイルは、
include /usr/include/rtlinux/rtl.mk all: test.o
それでは、コンパイルして動かします。
コンソールに以下を入力し、Enterキーを押します。
# make
すると、次のファイルができ上がります。
# ls
makefile sample1.c sample1.o
この「sample1.o」ファイルが、RTLinuxモジュールです。
それでは、早速RTLinuxモジュールを、組み込んでみます。
X Windowで使用されている方は、rtl_printf関数の出力内容が画面で確認できるよう、コンソール をもう一つ立ち上げ、次のコマンドを入力してください。
# tail –f /var/log/messages
コンソール画面で作業されている方は、次のように打ち込んでください。
# tail –f /var/log/messages &
これにより、rtl_printf関数が出力する内容が画面で確認できます。
★/var/log/messages
syslogやcron等で実行されたサービスのログ等の情報は、「/var/log/」に保存されます。通常、ログは
「/var/log/messages」に保存されます。
RTLinuxでは、rtl_printf関数を使って、ここに出力し、デバッグプリントができるようになっています。
(そのままコンソール画面に出力されるようには、なっていません)
上の用例では、tailコマンドを使って、このログ出力を常に表示状態にしています。
コンソール画面で用いた&(アンパサンド)コマンドはジョブコマンドの一種で、tailコマンドをバックグ ランドで実行させています。
コンソール画面では、X Windowのように幾つもコンソールを起動することができないので、こうやって 対処しています。
準備ができたら、RTLinuxモジュールを組み込みます。
コンソールに以下を入力し、Enterキーを押します。
# insmod sample1.o
すると、コンソール画面に、以下のメッセージが表示されます。
(X Windowでは、メッセージは、tailコマンドを実行中の画面に表示されます)
# insmod sample1.o Hello World!!
このメッセージが表示された時、作ったRTLinuxモジュールが動いています。
次に、組み込んだRTLinuxモジュールを一覧で確認します。
確認は、lsmodコマンドで行います。
# lsmod
Module Size Used by
sample1 320 0 (unused) ← 組み込んだモジュール名 rtl_sched 43104 0 (unused)
rtl_fifo 9968 0 (unused) rtl_posixio 7184 0 [rtl_fifo]
rtl_time 10000 0 [rtl_sched rtl_posixio]
rtl 27184 0 [sample1 rtl_sched rtl_fifo rtl_posixio rtl_time]
リストの中に「sample1」の名前が見て取れます。組み込まれていることが確認できました。
次に、組み込んだRTLinuxモジュールを削除します。
コンソールに以下を入力し、Enterキーを押します。
# rmmod sample1
すると、コンソール画面は、以下のメッセージが表示されます。
# rmmod sample1 bye bye
RTLinuxモジュールが削除されたことが判ります。
何度か、insmodコマンドによるモジュール組み込みとrmmodコマンドによるモジュール削除を繰 り返してみてください。
その都度、メッセージが表示されることがわかります。