< Tako2 Lab!
HOS
最終更新:
tako2lab
-
view
HOS-V4 (Hyper Operating System V4)
- μITRON4.0仕様の組み込み向けリアルタイムOSをDSに移植
- 移植の記録と関連するファイルを公開
- 何に使おうか?
ソースコードの入手
- http://sourceforge.jp/projects/hos/
- 上記サイトで HOS-V4 のアーカイブ(h4_102.tgz)をダウンロード
ライブラリのコンパイル
- HOS-V4 ライブラリをビルド
- 使用する環境は devkitARM r23b + libnds-071023
- 作業ディレクトリとして hos-v4/lib/arm/nds を利用
- hos-v4/lib/arm/gcc/h4arm.mak を変更して makefile に利用
% cd hos-v4/lib/arm/nds % make -f h4arm.mak
移植
- プロセッサ依存のインクルードファイル(hos-v4/include/arm/hospac.h)の修正
- 依存部分の API の対応
hospac_ini_sys | 初期化 |
hospac_dis_int | 割り込み禁止 |
hospac_ena_int | 割り込み許可 |
hospac_cre_ctx | 実行コンテキスト作成 |
hospac_swi_ctx | 実行コンテキスト切り替え |
hospac_set_tex | 例外処理実行設定 |
hospac_idle | アイドル時処理 |
- 割り込み処理の対応
hos4cfg のコンパイル
- cygwin の環境で make
- DS 用の環境は msys なので CFLAGS と LFLAGS に -mno-cygwin を追加
- msys で引数がうまくわたらないので、hos4cfg.cpp を修正 (テストプログラム以外で使う場合、要注意)
% cd hos-v4/config % make -f gcc.mak
テストプログラム
- コンフィギュレーションファイルの作成
- タイマー関連の実装
- 1ms をシステムタイムの単位として、その時間毎に isig_tim() を呼び出す必要あり
- これを行うため TIMER3 割り込みを利用
ダウンロード
- 自己責任の上で使用してください(参考程度に)
- HOS-V4 DS 移植部分のファイル差分 (hos-v4-diff-for-nds080602.zip)
- 実はμITRON の仕様についてはよく知っていないので、これが正しいかどうか正確にはわかりません
- 特に IRQ ハンドラからの遅延ディスパッチのあたりが怪しいです
- 大部分は動作未確認です (テストプログラム程度)
- テストプログラム(test_hos080602.zip)
- テストプログラムでハマったのが iprintf で、スタックを 2KB 程使ってしまいサイズが小さいとハングするので、念のため 4KB を指定しています
- Makefile の HOSDIR を hos-v4 のあるディレクトリに書き換えること