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
が表示された。 う、うれしい・・・。
|