【问题标题】:linux-device-driver - serial 8250 loopback driver code?linux-device-driver - 串行 8250 环回驱动程序代码?
【发布时间】:2012-10-16 18:15:26
【问题描述】:

我想在 linux-3.6.1 内核中的 /drivers/tty/serial/8250.c 中的 8250.c 中实现串行环回驱动程序代码。 我不想使用硬件环回(即通过短接标准串行端口的引脚 2(tx)和 3(rx)),而是我想修改 8250.c 驱动程序,以便来自用户空间的数据将传输从“serial8250_tx_char”函数直接到“serial8250_rx_char”而不去硬件,即我想接收发送的内容?

一种可能的实现是将传输循环缓冲区数据放入 tty 翻转缓冲区,然后将此数据推送到 tty 核心,以便用户空间可以接收它? 我想知道如何在代码中做到这一点。我们可以搜索上面提到的“rx 和 tx”函数——这就是我正在寻找的地方,我将如何测试它,意味着在设备文件上写入,然后立即接收。

我也有一个示例补丁,但不确定它是否会起作用。

任何帮助将不胜感激......

阿比吉特

【问题讨论】:

  • 这太疯狂了。 Linux 上没有回显设备吗?试试 /dev/echo。
  • 嘿汉斯......想法是改变驱动程序代码并在那里添加一个环回代码......然而,正如我所见,与超级终端/teraterm类型相反,没有用于回显的设备应用程序,可以检查字符的回显。
  • TIOCM_LOOP 是你的解脱。

标签: serial-port linux-device-driver


【解决方案1】:
`@@ -2112,6 +2116,7 @@ static int serial8250_startup(struct uart_port *port)
                if (is_real_interrupt(up->port.irq))
                        up->port.mctrl |= TIOCM_OUT2;

   + up->port.mctrl |= TIOCM_LOOP;
    serial8250_set_mctrl(&up->port, up->port.mctrl);

    /* Serial over Lan (SoL) hack:

这会将 UART 设置为内部环回模式。`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多