もちろん、Duskwuffは正しいです。なぜ低レベルになり、APIを使用しないのですか?あなたがに話しているデバイスは、あなたがそれに話をするシリアルポートを使用することができるはずRS-232、 に似た何かをサポートしている場合
:
はhttp://www.tldp.org/HOWTO/text/IO-Port-Programmingセクション6.3を参照してください。 Linux シリアルドライバは、ほとんどすべてのアプリケーションで十分であるはずです( はシリアルポートを直接プログラムする必要はないはずです)、おそらく にカーネルドライバを書き込まなければなりません。それは非常に汎用性がありますので、非標準のbpsレートを使用している などは問題ではありません。ここでは、これを説明するために
は「ボー・レートを設定する方法」の元の質問への答えです:ポート(COM1用など0x3F8)に加えて
を、次のいくつかのポート番号が使用されています様々な制御目的のために使用される。ボーレートを設定するには、まず除数115200/[希望のボーレート]を計算します。例えば。あなたは38400のボーをしたい場合は、除数はその後3です:
- はPORT + 3
- の最上位ビットをセットPORT
- に除数の最下位バイトを送るの最上位バイトを送信 :PORT + 1
- クリアPORT + 3の最上位ビット(同時に、下位ビットはパリティを設定するために使用することができ、ビット等を停止)コードで
に除数
outb(PORT + 3, 0x80); // Enable DLAB (set baud rate divisor)
outb(PORT + 0, 0x03); // Set divisor to 3 (lo byte) 38400 baud
outb(PORT + 1, 0x00); // (hi byte)
outb(PORT + 3, 0x03); // 8 bits, no parity, one stop bit
出典ここにある:http://wiki.osdev.org/Serial_Ports
「私は、Linuxのtty文字の上書きを我慢する必要はありませんので、*この時、私はINBとOUTBの機能を使用してと思ってい*。」あなたが作っています物事*多く*正当な理由でより複雑です。 rawモードでポートを置くことは簡単です。 –
このベアメタルをやっていたら、DOSなどで、ドキュメントを読むだけです。しかし、あなたはlinuxにタグを付けて、api呼び出しを使ってuartを処理するだけです。 –