現在、16550互換のUARTを使用していますが、FIFO割り込みトリガレベルを変更することができます(高UART負荷の下でバイトを削除します。このスレッショルドは、低消費電力の組込みシステムです)。Linuxユーザ空間から16550A UARTハードウェアFIFO割り込みレベルを設定する
[PORT_NS16550A] = {
.name = "NS16550A",
.fifo_size = 16,
.tx_loadsz = 16,
.fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10,
.flags = UART_CAP_FIFO | UART_NATSEMI,
},
をしかし、カーネルを再コンパイルすることなくユーザ空間からそれを変更することがはるかに便利になります:もちろん、私は私がしたい場合8250_port.cドライバでそれを変更することができます。
私はfollowing documentationが古くなっていることを期待しています:Linuxユーザは、(setserialには、それを行うことはできません)を直接これら 設定することができます方法はありませんでした
2000年後半のとおり。多くのPCは16バイトのバッファを持つ16550 しか持っていませんが、より良いUARTSにはさらに大きなバッファがあります。そうするための手段(例えば、いくつかの新しいっぽいのioctl)がある場合、seterial (8)とstty (1)はまだインターフェイスを公開していない
。
ああ、isaset -y -f 0x3fA 0x07(/ dev/ttyS0のFCRレジスタを直接ポークする)はカウントされません! – Damien
'isaset'がカウントされない場合、他の解決策はなぜカウントされますか? –
ポートが再オープンされると変更が失われるためです。さらに、特権を持つユーザが行う必要があります。また、ユーザ空間からランダムなIOポートを突き出すことは、一般的に安全な選択肢ではありません! – Damien