「NDS ソフト/HOS」の編集履歴(バックアップ)一覧に戻る

NDS ソフト/HOS - (2008/06/02 (月) 22:38:49) のソース

** 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 割り込みを利用
#ref(test_hos.png)

*** ダウンロード
- 自己責任の上で使用してください(参考程度に)
- HOS-V4 DS 移植部分のファイル差分 ([[hos-v4-diff-for-nds080602.zip>http://www41.atwiki.jp/tako2lab/?cmd=upload&act=open&page=NDS%20%E3%82%BD%E3%83%95%E3%83%88%2FHOS&file=hos-v4-diff-for-nds080602.zip]])
-- 実はμITRON の仕様についてはよく知っていないので、これが正しいかどうか正確にはわかりません
-- 特に IRQ ハンドラからの遅延ディスパッチのあたりが怪しいです
-- 大部分は動作未確認です (テストプログラム程度)
- テストプログラム([[test_hos080602.zip>http://www41.atwiki.jp/tako2lab/?cmd=upload&act=open&page=NDS%20%E3%82%BD%E3%83%95%E3%83%88%2FHOS&file=test_hos080602.zip]])
-- テストプログラムでハマったのが iprintf で、スタックを 2KB 程使ってしまいサイズが小さいとハングするので、念のため 4KB を指定しています
-- Makefile の HOSDIR を hos-v4 のあるディレクトリに書き換えること
人気記事ランキング
目安箱バナー