TaiseiIto / hariboslinux

Haribote OSをLinux環境で開発しよう
MIT License
3 stars 0 forks source link

シリアル出力を割り込みでやろう #37

Closed TaiseiIto closed 2 years ago

TaiseiIto commented 2 years ago

変な文字は出ているが割り込みが発生していないっぽい

TaiseiIto commented 2 years ago

タイマ割り込み、キーボード割り込み、マウス割り込みは正常に処理されているが、シリアル割り込みだけが起きていない

TaiseiIto commented 2 years ago

実機では謎のエラーで再起動する

TaiseiIto commented 2 years ago

put_char_serialの処理を無くすと実機でも正常動作する

TaiseiIto commented 2 years ago

https://wiki.osdev.org/Serial_Ports を参考に、initscrn.binでシリアル通信を初期化するときにシリアル通信が利用可能であるかどうかを確認する手順を踏むようにしよう

TaiseiIto commented 2 years ago

なぜか上の判別法では仮想マシンでもunavailableと判定される

TaiseiIto commented 2 years ago

put_char_serial関数のenqueue部分とdequeue部分を削除したらうまく動いたので、enqueue, dequeueの内部でCPU例外が発生している可能性が高い

TaiseiIto commented 2 years ago

init_serial_interrupt関数を実行しないようにしても動かないので、init_serial_interrupt関数が実行される前に割り込み前提の処理をしてしまっている可能性がある。SCRATCH_REGISTERを使うのではなく、普通にフラグ変数を使ったらうまく動くかも

TaiseiIto commented 2 years ago

queueに1KiB以上溜まったらqueueを削除して溜まらないようにしよう