< Tako2 Lab!

NDS ソフト/HOS

最終更新:

tako2lab

- view
管理者のみ編集可

HOS-V4 (Hyper Operating System V4)

  • μITRON4.0仕様の組み込み向けリアルタイムOSをDSに移植
  • 移植の記録と関連するファイルを公開
  • 何に使おうか?

ソースコードの入手


ライブラリのコンパイル

  • 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 のあるディレクトリに書き換えること