我目前正在使用兼容16550的UART,我希望能够更改FIFO中断触发电平(我在高UART负载下丢弃字节,我想降低阈值 - 这是一个动力不足的嵌入式系统)。当然,如果我愿意,我可以在8250_port.c驱动程序中更改它:
[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只有16550 使用16字节缓冲区,更好的UARTS具有更大的缓冲区。
如果有办法这样做(例如一些新的ioctl),那么seterial (8)和stty (1)尚未暴露界面。
答案 0 :(得分:0)
我认为这个问题的一般解决方案是使用setserial来进行uart更改模式。例如,使用pericom PI7C9X7958,您可以使用多种操作模式,例如“550”和950模式。这些对应于16550或16950标准uart类型。每种模式都有一定的与其相关的fifo大小和一些其他功能。
因此,如果您的设备支持它,您可以尝试
setserial -v / dev / ttyS1 uart 16950
然后验证
setserial -g / dev / ttyS1 / dev / ttyS1,UART:16950/954,端口:0xc800,IRQ:16