我目前使用16550兼容的UART,我希望能夠更改FIFO中斷觸發級別(我在高UART負載下丟棄字節,我想減少門檻 - 這是一個動力不足的嵌入式系統)。當然,我可以在8250_port.c駕駛員改變它,如果我想:從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,
},
但它會更方便將其從用戶空間的改變而無需重新編譯內核。
我希望的following documentation已過時:
截至2000年年末,有沒有辦法在Linux用戶可以設置這些 直接(setserial的不能做到這一點)。雖然許多PC只有1650字節的緩衝區,但更好的UARTS具有更大的緩衝區。
如果這樣做(例如一些新十歲上下的ioctl)的手段,那麼seterial (8)和stty (1)還沒有暴露的接口。
哦,並且isaset -y -f 0x3fA 0x07(它直接掃描/ dev/ttyS0的FCR寄存器)不計數! – Damien
如果'isaset'不計數,爲什麼其他解決方案會計數? –
因爲只要端口重新打開,更改就會丟失。此外,它必須由特權用戶完成 - 並且從用戶空間中撥出隨機IO端口通常不是安全選項! – Damien