« SH-2 Linux上でのリアルタイム OS 開発環境 (その1 クロスコンパイラ構築編) | Main | SH-2 Linux上でのリアルタイム OS 開発環境 (その3 ROM 書き込み編) »

October 05, 2006

SH-2 Linux上でのリアルタイム OS 開発環境 (その2 リアルタイムOS編)

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 だが、元々のファイルのレジスタアドレスがいくつか間違っていたので訂正しておいた。ただし、全てを修正し尽くしたわけではないので、注意してもらいたい。

|

« SH-2 Linux上でのリアルタイム OS 開発環境 (その1 クロスコンパイラ構築編) | Main | SH-2 Linux上でのリアルタイム OS 開発環境 (その3 ROM 書き込み編) »

Comments

cyam さん、どうも情報有難うございます。
SPAM なトラックバックを消そうとして間違えてコメントを消してしまいました。申し訳ありません。

sh7144rom.tgz は再アップロードして、正常になっています。

ところが、同様の症状が、sh7144hw00.tgz にも出ているのですが、これは再アップロードしても修正されません。
只今、なんとかしようとしていますが、何故か上手くいかない状態です。

Posted by: 野田篤司 | October 09, 2006 at 11:04 AM

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/94422/12165407

Listed below are links to weblogs that reference SH-2 Linux上でのリアルタイム OS 開発環境 (その2 リアルタイムOS編):

« SH-2 Linux上でのリアルタイム OS 開発環境 (その1 クロスコンパイラ構築編) | Main | SH-2 Linux上でのリアルタイム OS 開発環境 (その3 ROM 書き込み編) »