アットウィキロゴ

HOS-V4

HOSの入手


転送ソフト[h8write.exe]

kz_h8write を使用。

μITRON ver4の仕様書

次のURLから入手できます.
http://www.assoc.tron.org/jpn/document.html#uITRON4.02

コンフィグレータのビルド

HOSをダウンロードし解凍するとフォルダhos-v4が得られます。
hos-v4\documentのhos4cfg.txtを参考にし,コンフィギュレータのmakeを行ってください.
g++が必要になるため、g++がない場合、apt-getでインストールする。
$ apt-get install gcc3*

$ cd hos-v4/config
$ make -f gcc.mak

カーネルライブラリのビルド

HOSのカーネルをライブラリとして生成しておき、このライブラリをリンカから呼び出す方法を取る。
そのため、ここでカーネルライブラリのビルドを行う。
hos-v4/document/h83.txtを参考にし,ライブラリのmakeを行ってください.
h4h83.makの修正が必要。
「hms」を「elf」に書き換え
「メモリヒープ」の部分だけ、「/」が「\」になっていたので「/」に書き換え

gcc4のアンインストール

後述する h8300-hms-gcc のrpmパッケージインストールでファイル競合するため
こうするとgcc3が残る

サンプルプログラムのビルド

hos-v4/sample/h83 へ移動。
h83048.x をコピー&リネームして、適当に h83048_elf.x などとする。
これを開き、先頭部分の「OUTPUT_FORMAT("coff-h8300")」を、「OUTPUT_FORMAT("elf32-h8300)"」
に書き換える。
次にgcc.makをelf用に改造。
  • 中身のhmsをelfに書き換える
  • 中身の「リンカスクリプト」部分の「h83048.x」を「h83048_elf.x」
に書き換え、gcc_elf.makとする。

このあとで、
make -f gcc_elf.mak
これでsample.motが生成できるようになった。しかし、、

今後!
リンカスクリプト(.x)もやヘッダファイル(.h)等も、サンプルでは3048ターゲットのようなので、
3069用に修正しなければならない、と思う。現在情報集め中。
これら、makeを通す過程で使用するファイルたちで3069用に変更しなければならないものは
http://www.xstech.co.jp/hosv4/H4_index.htm
http://tokyo-ct.net/usr/kosaka/for_students/RTOS/iguchi3052/RTOS/RTOS.htm
を参考にして用意するしかない。ネット調べてみたが3069用に用意されているものは見つからない(どっかにあるとは思うんだが。。)
うまく修正できて、makeが通れば、ROMで動作する.motが生成できるはず、と思う。


参考情報

リンカスクリプトとスタートアップルーチン

リンカスクリプトとはメモリーマップ上にデータは何処に置けるか、プログラムは何処に置けるか等を定義したロケート情報が入っている>ld(リンカ)のスクリプトです。オブジェクトにアドレスを振る(リンクする)際に必要となります。メモリマップはターゲットのCPUのプログラムメモリやワークメモリや外部メモリのアドレスやサイズによって変化するので、リンカスクリプトはターゲットのハード構成ごとに、作成する必要があります。
GCCではロケート情報をリンカスクリプトにすることでリンカがアドレスを解決します。GCCのリンカスクリプトの詳細な内容は以下の資料を参考にしてください。
↓Redhatの 組込みトップ > 組込み・ダウンロードのリンカスクリプト
http://www.jp.redhat.com/download/cygnus/doc/linker-scripts.pdf

スタートアップルーチンはCPUがプログラムを動かす上で最初に必要な動作が記述されているアセンブラソースです。具体的には、スタックポインタの初期化とかROMのデータをRAMに再配置とかmain関数の呼び出し等です。Cのプログラムはmain関数から始まりますが、プログラムはプログラムカウンタのリセット値(0である場合が多い)から始まるわけですから、プログラムカウンタの値をmain関数の位置にとばすプログラムも必要になります。main関数はさらに引数があるので、スタックが必要になります。だからmain関数を呼ぶ前にスタックポインタを初期化する必要があるわけです。

実はこの2つのどちらを使っても割り込みベクタを記述することが可能です。どちらに書くかはプログラマ次第です。gccコマンドはオプション-vを追加してコンパイルするとコンパイルの各動作が表示されるので、コレを見ながら正しくコンパイルされているか確認します。

OSを用いる場合と用いない場合の比較


★最終的にここ↑の通りにやって, 3069f用のsample.motをビルドすることができた。
makeの時にリンカに怒られるので、ここのとおりにする
http://thru.jugem.jp/?eid=3

minicom の通信設定は以下?
38400 8N1

しかし、結局、シリアル通信まではできたが、00000:Task1を表示してとまってしまう問題が解決できず、hos-v4の使用をあきらめた(16.8.26)

タグ:

+ タグ編集
  • タグ:
最終更新:2016年08月28日 22:21