ザビタン開発日記
2009 | 01
2008 | 01 | 02 | 06 | 12
2007 | 10 | 11 | 12
11月 05 (月曜日) 2007
21:16
FIFO間通信完了!しかし・・・!?
 
よーし! OK。
FIFO間(タスク間?)通信、とりあえず成功したぞ!
あとはコマンドの仕様を決めて実装すれば、FDタスクを制御できる!!

・・・っと思ったんだけど、問題点が・・・
それは「待ち」なんですよねぇ・・・


  1. INTで割り込みを起こしてAPIを呼ぶ。
  2. APIは親タスクのFIFOにデータを送信する。
  3. 親タスク内のループで判断し、番号がFD命令用ならFDタスクのFIFOに発信!
  4. FDタスクはFIFOにデータが来るとそれを読み、命令だったらFDにアクセス・・・

さあここ!
4でFDが動く。ほんのわずかだが時間がかかる。
しかし、1では既に指令を出し終わっている。つまり、次のプログラムが
書いてあったらそっちの実行を始めてしまう・・・
1の時点を、FDタスクが完了したと返事をするまで待っていてもらう。
返事がきたら続きの動作をする。

・・・これ、どうしたらいいかなぁ・・・・

こんなことをしてみた・・・

else if (edx == 0x4E) {
char *search_f_name;
char *fbuf;

int i,i2;

search_f_name = (cons, (char *) eax + ds_base);
fbuf = (cons, (char *) ebx + ds_base);

i = 0;

fifo32_put(MainFifo,3200);

fbuf[i] = 0x00;

// reg[7] = 0;

for (;;){}

}

console.c内でFIFOのデータを判断する部分。ここに無限ループを置く
当然これなら、「dir2」でエンターした後固まってくれる。

つまり、その下のreturnが実行されない限り、戻らずに停止してくれるようだぞ!??

じゃ、このfor内で、返事が返ってくるまでループしていればいいのかな????
(このループ内でFIFOを監視してゲットするとか・・・)
 
30日を過ぎたBlogにはコメントできません。

Referer  (5)
(1) 2 3 4 5 6 7 8 9 10 » 

PopnupBlog V3 Denali created by Bluemoon inc.