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タスクに限定、他タスクが使用中はエラーを返す