Fu−Rtos
有限会社 富士設計
MGG03420@nifty.ne.jp
http://www.d1.dion.ne.jp/~fujisekk
http://fujisekk--ltd.eco.coocan.jp/

対応CPU
 H8 300Hシリーズ ”組込 み実績あり”
  
開発環境 HEWに対応。

 TK-78K0シリーズ
  
開発環境 PM plus 対応。

 TI
 MSP-430
シリーズ
 開発環境 CCS 対 応。

 Freescale
HC08S
シリーズ ”組込み実績あり”
 開発環境  CodeWarrior 対 応。

 ARM CortexM3/M4
 開発環境  IAR

仕様
 同時に処理可能なタスクは4まで
 登録可能タスク制限なし
 (ROM上にあるプログラムはすべて実行可 能)


* API
  
uiTORNに準じた関数、変数名前をつかいます
  6個のみです、必要に応じ追加するつもり


タスク
main()はタスクとして生き続ける
 
mainより必要なタスクを生成する。

 タスクの休止
  char tslp_tsk(unsigned int tim_cnt)
   
tim_cnt*スティックタイムだけ休止

 タスクの生成
  char acre_tsk (unsigned short * Task_name)
   戻り値 task_id

 タスクの消滅

  自
タスクの消滅
   void ext_tsk(void)

  タスクの消 滅 id=task_id
   char ter_tsk(unsigned char id)
       実装は
各タスクのシステムコール時エラーコードを返す。
       各タスクはtslp_tskを呼んだ時の戻り値が−1の時ext_tskで終了するコードを実装しなければならない。
       この部分でタイマーなど資源を解放する(未使用状態にする)ことでデバイスドライバー無しで済ましている。
    戻り値
     -1 失敗
     正の数  
task_id

イベント
 
イベントid は各システムで任意に決める
 idは8まで設定出来る

 イベント待ち
  char wai_flg(char id)

 イベントフラグをセットする
      iset_flg(char id)

 イベントフラグをクリアする
      iclr_flg(char id)


 その他
  メモリー管理
   fu_malloc
   
malloc/freeの代替関数

* マルチタスクの実現方法

 char acre_tsk (unsigned short Task_name)
   Task_name="C"の関数名
 ここではエントリーの登録とスタックの割り付けのみ
 実際はtslp_tsk等が発行されてデスパッチャに制御が移ってからになる

 void ext_tsk(void)
  Task_name="C"の関数、で呼ばれる関数の終了する箇所に必ず記述する
   main以外に3個以内であれば
終了する必要はない

  なお現在の所、他に関数を起動可能とする方法はない


* デスパッチヤーの設計

  RUN <--- REDY
  ↑↑    ↑
 <−event
  │└---->WAIT
  ↓   
  DOMANT

 WAIT、REDYからDOMANTへの方法はないが、下記の方法で可能。
 メッセージ受信でWAIT->REDY (
ここで実行中task がtslp_tsk等を発行すると)->RUN
 制御が目的のタスクに移れば、ext_tsk()でRUN->DOMANT

その他機能

malloc
Fu-mallock
  ガーベージコレクションなしの制限版、OSが管理する。
 1タスクに限定、他タスクが使用中はエラーを返す