マツドサイエンティスト・研究日誌 保存版
SH-2 Linux上でのリアルタイム OS 開発環境 (その2 リアルタイムOS編)

初出:2006年10月05日 元々のブログ・コンテンツへのリンク
カテゴリーのインデックス: パソコン・インターネット
シリーズのインデックス: SH-2・リアルタイム OS Linux

Interface 6月号付録の SH-2 基板に、Linux 上でプログラミングについての第二回目として、リアルタイムOS について述べる。

HOSのダウンロード
リアルタイム OS は、フリーの ITRON 4.0 である HOS を用いた。

HOS には、リリース版の V4 と、開発版の V4 Advance がある。
本当は安定版である V4 の方が良かったのだが、V4 Advance のお知らせに「Interface2006年6月号付録SH2基板で動き始めました」とあったので、V4 Advance を使うことにした。だが、V4 Advance は、開発途中ということもあり、今後、変更される可能性も高いので、V4 にすべきだったかと思うこともある。

さて、HOS-V4 Advance のソースコードをダウンロードするのだが、これは、cvs を使う必要がある。もし、Debian Linux で、cvs をインストールしていなければ、
# apt-get install cvs
として、cvs をインストールしておくこと。

$ cd ~/
$ cvs -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/hos login
Logging in to :pserver:anonymous@cvs.sourceforge.jp:2401/cvsroot/hos
CVS password: (パスワードは、改行のみ)
$ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/hos co hos/hos-v4a
$ cvs -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/hos logout
Logging out of :pserver:anonymous@cvs.sourceforge.jp:2401/cvsroot/hos


カーネルモジュールを作る
$ cd ~/hos/hos-v4a/kernel/build/sh/sh2/gcc
$ make -f gmake.mak


サンプルプログラムを作る

$ cd ~/hos/hos-v4a/sample/sh/sh7144/gcc/


ここで、gmake.mak の中の
h4acfg-sh2.exe を h4acfg-sh2 に変更する。


$ make -f gmake.mak


これで、sample.mot が作成される。
ただし、この sample.mot は、RAM 上で動作するものらしい。RAM を追加していない SH-2 基板では動かないようなので、動作チェックしていない。

ROM 化
HOS を使ったプログラムを ROM 化し、SH-2 内蔵のフラッシュ ROM に書き込めるようにした。

何故、ROM 化するかと言うと、SH-2 に RAM を接続すると、せっかく沢山ある I/O ピンの多くが使えなくなってしまうからだ。
また、実際に組み込み用途に使うことを考えると、電源を入れる度に、母艦となるパソコンから RAM にプログラムをアップするよりも、ROM 化した方が便利だ。

もう一つ、MMU が無く、メモリ保護の無い SH-2 のような CPU の場合、RAM 上にロードしたプログラムを書き換えてしまう可能性があるからだ。
万一の場合、ウォッチドックタイマなどで緊急対策用のプログラムに飛ぶように作っていても、飛び先のプログラムが消えていては何にもならない。その点、書き換えできない ROM 上にプログラムがあれば、大丈夫だ。もっとも、SH-2 で、そんな信頼性の必要なプログラムをするか、どうかは別問題だ。まさか、宇宙船の制御をするつもりなわけじゃない。(事も無いことも無いこともない・・・・・)

ROM 化のデメリットとしては、SH-2 の内蔵 ROM の書き換え回数は 100 回だそうで、これが制約になりかねない。
また、ROM 化すると、モニターが無いのでデバッガーを走らせられない事もデメリットと言われそうだ。実は、私はデバッガーを使わない人なので、この点については全く困らない。特にタイミングが命のリアルタイム OS だと、デバッガーを使ったデバッグは余り意味が無いので、この点は余りデメリットとはならないと思うのだが、いかがだろう。

ROM 化するプロセスを再現すると長くなるので、すぐに ROM 化できるようなサンプルプログラムを用意しておいた。

下記のファイルをダウンロードする。
「sh7144rom.tar.gz」をダウンロード
(もし、ダウンロードしたファイルが「sh7144rom.tar.gz.gz」になっていたら、「sh7144rom.tar.gz」にリネームすること。)

$ cd ~/hos/hos-v4a/sample/sh/
$ tar zxvf sh7144rom.tar.gz
$ cd sh7144rom/gcc/
$ make -f gmake.mak


これで、ROM に書き込める sampleRom.mot ができる。
なお、sh7144rom.tgz に入っている regs_sh7144.h だが、元々のファイルのレジスタアドレスがいくつか間違っていたので訂正しておいた。ただし、全てを修正し尽くしたわけではないので、注意してもらいたい。
inserted by FC2 system