トップページ > SH-2基板 > HOS編

インターフェース誌 付録SH-2基板 HOS編 by 浜本正樹

 間違いのご指摘、ご意見などがございましたら、「掲示板」へご遠慮なく書き込んで下さい。

2009年3月7日
 こんどは、数年前に購入して本棚の肥やしになったままの「ITRONプログラミング入門 H8マイコンとHOSで始める組み込み開発(濱原和明 著)」をひっぱりだしてみた。

HOS(Hyper OS)には、hos-v4(バージョン4)と、hos-v4advanceがあるようなので、両方ともダウンロードしてみた。
解凍してみると、hos-v4advanceのほうにはsh7144¥shcというフォルダがあるが、hos-v4のほうにはsh2gccしかない。それもsh7045のようだ。
そこで、hos-v4advanceのほうで試してみることにした。

H8マイコンとHOS
HEWを起動して、まずはライブラリを構築する。
ソースファイルをプロジェクトに追加しようとしたが、どのファイルを追加すればよいのかよくわからない。
advance版は、ちゃっちゃとあきらめて、hos-v4のほうで試してみることにした。

こちらは、上記の参考書の付録Aや、「HOSを使ってみる」のとおりにソースファイルをプロジェクトに追加してコンパイルしたら、ライブラリが正常に出来た。
次に、SH7144Fの新規プロジェクトを作った。
起動ファイルはhos-v4advanceのほうから持ってきて追加してみた。
ここにはdbsct.cが含まれているが、HEWで生成されたdbsct.cの内容と同じようだ。

その次に、コンフィギュレーションファイルsystem.cfgのコメント部分の削除などを行うためにプリプロセスする(PreConfigure)。
shc.exeでプリプロセスしようとしたが、エラーが出る。 どーすりゃいいの?
WEBで検索してみると、hamayanさんのブログで同じような質問をしている人がいて、hamayanさんの回答は「ボーランドのBCC55をインストールすればぁ?」というのですが、それも大変そうだ。
ものは試しで参考書に記載されているH8用の
「ch38.exe -CPU=300HA -PREP=system.i system.cfg」
を実行してみたら、エラーも出ないでsystem.iが生成された。
SH2のプロジェクトでH8のch38.exeを使うのはちょっと体裁が悪いが、とりあえずこれでいいや。

hos-v4advanceのsystem.cfgを、hos-v4のhos4cfg.exeで通すとエラーが出る。
hos-v4のsystem.cfgと比べてみると、HOS_TIM_TICなどのAPI名が違うようだ。おんなじにしてくれればいいのに・・・。
やむなくhos-v4のほうのsystem.cfgを少しいじくってhos-v4のhos4cfg.exeで通した。
これでやっとコンフィギュレーションが出来た。

参考書の「タスク2本を走らせてみよう」を参考にしてsample.cなどを改造し、コンパイル・リンクすると、_kernel_int_spと__kernel_vector_144がUndefinedと出た。
hos-v4のほうのcrt0.sやvector.sを参考にしてそれらを盛り込んだ。
つぎはぎだらけもいいところ。

さらに、セクション(X)がnot assignedと出る。
HEWのdefaultでは初期化データのRAMへのコピー先のセクション名はRだが、HOSでのセクション名はXが使用されているようだ。
リンカのセクションの設定をRの代わりにXに変更し、dbsct.cの__sectop("R")も__sectop("X")に変えてみた。

こんどは、セクション(B)がオーバーフローと出る。 8KBの内蔵RAMだけでは無理なのだろうか?
system.cfgのヒープメモリが4KBに設定してあったので、とりあえず1KBに減らしてみる。
やっとエラーが出なくなった。

シリアルのケーブルをパソコンとつなげて、PARTNER-Jでプログラムを起動すると、
パソコンに
 HOS
 00000:Task1
 00003:Task2
 01003:Task1
 01006:Task2
 02005:Task1
 02009:Task2

が表示された。 う、うれしい・・・。



トップページ > インターフェース誌付録SH-2基板 > HOS編
NORTi編
W5300編


エスペランサ トップページへ