【问题标题】:Qemu connecting to specific guest UART deviceQemu 连接到特定的访客 UART 设备
【发布时间】:2021-05-18 16:58:39
【问题描述】:

我使用 qemu-system-arm 模拟嵌入式设备的固件。通过将“console=ttyAMA0”附加到内核,控制台的输出工作正常。在客户机上有一个二进制文件,它在 /dev/ttyGS0 上打开另一个用于通信(双向)的串行端口,并在该端口上侦听。现在我需要从主机连接到这个端口,将命令发送到二进制文件并接收输出。

我已经尝试过不同的东西,比如创建字符设备和伪 tty,但我不知道如何为访客定义串行设备。

有没有办法做到这一点? 提前致谢。

【问题讨论】:

    标签: serial-port arm qemu uart


    【解决方案1】:

    如果您将多个 -serial 选项传递给 QEMU,它们将被解释为定义您想要对 UART 0、1、2 等执行的操作。例如,“-serial stdio -serial tcp::4444,server”将将 UART 0 发送到您的终端并将 UART 1 连接到端口 4444 上的 TCP 服务器,然后您可以使用 netcat 或类似实用程序连接到该服务器。 (您可以将串行输出连接到许多不同的后端,而不仅仅是 stdio 或 TCP:请查看 QEMU 文档。)

    (注意:这取决于您的板子模型实际上创建了多个 UART 并将它们正确连接到命令行选项,当然。)

    【讨论】:

    • 感谢您的回答!如果我查看客户机上的 /dev/,它至少列出了六个 UART 设备:ttyACM0、ttyAMA0、ttyAMA1、ttyAMA2、ttyAMA3 和 ttyGS0。根据您的回答,我需要将 -serial 选项添加六次,最后一个是 ttyGS0 的序列号?
    • 这取决于您的主板型号。您应该查看它的文档或实现,这比来宾操作系统碰巧探测或认为可能存在的串行设备更可靠地表明实际存在哪些串行设备。
    • 嗯好吧,我用的是vexpress-a9机器类型,但我不知道真正的板子。我会看看是否可以确定使用哪个端口。
    • vexpress-a9 有 4 个 PL011 UART。作为一般规则,如果您有来宾代码想要在特定硬件上运行,那么如果您尝试在其他硬件上运行它就不会很好地工作。这里的 ttyGS0 是 USB“小工具串行驱动程序”,在 vexpress-a9 上没有实现 USB h/w。您可以通过将“/dev/ttyGS0”节点设置为真正的 ttyAMA1 或其他东西(这将是 vexpress 上的第二个 pl011)来使其正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 2015-11-05
    • 2020-05-24
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 2014-10-12
    相关资源
    最近更新 更多