• 検索結果がありません。

Hello Worldプログラム

ドキュメント内 B5size manual.dot (ページ 31-34)

第 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.ctest.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コマンドによるモジュール削除を繰 り返してみてください。

その都度、メッセージが表示されることがわかります。

ドキュメント内 B5size manual.dot (ページ 31-34)