Qemu 连接到特定的访客 UART 设备
Qemu connecting to specific guest UART device
我用 qemu-system-arm 模拟嵌入式设备的固件。通过将“console=ttyAMA0”附加到内核,控制台的输出工作正常。在来宾上有一个二进制文件,它打开另一个串行端口以在 /dev/ttyGS0 上进行通信(双向)并侦听该端口。现在我需要从主机连接到这个端口,向二进制文件发送命令并接收输出。
我已经尝试过不同的东西,比如创建字符设备和伪 ttys,但我不知道如何为来宾定义串行设备。
有办法吗?
提前致谢。
如果您将多个 -serial 选项传递给 QEMU,它们将被解释为定义您要对 UART 0、1、2 等执行的操作。例如“-serial stdio -serial tcp::4444,服务器”会将 UART 0 发送到您的终端,并将 UART 1 连接到端口 4444 上的 TCP 服务器,然后您可以使用 netcat 或类似实用程序连接到该服务器。 (您可以将串行输出连接到许多不同的后端,而不仅仅是 stdio 或 TCP:查看 QEMU 文档。)
(注意:当然,这取决于您的电路板模型实际上创建多个 UART 并将它们正确连接到命令行选项。)
我用 qemu-system-arm 模拟嵌入式设备的固件。通过将“console=ttyAMA0”附加到内核,控制台的输出工作正常。在来宾上有一个二进制文件,它打开另一个串行端口以在 /dev/ttyGS0 上进行通信(双向)并侦听该端口。现在我需要从主机连接到这个端口,向二进制文件发送命令并接收输出。
我已经尝试过不同的东西,比如创建字符设备和伪 ttys,但我不知道如何为来宾定义串行设备。
有办法吗? 提前致谢。
如果您将多个 -serial 选项传递给 QEMU,它们将被解释为定义您要对 UART 0、1、2 等执行的操作。例如“-serial stdio -serial tcp::4444,服务器”会将 UART 0 发送到您的终端,并将 UART 1 连接到端口 4444 上的 TCP 服务器,然后您可以使用 netcat 或类似实用程序连接到该服务器。 (您可以将串行输出连接到许多不同的后端,而不仅仅是 stdio 或 TCP:查看 QEMU 文档。)
(注意:当然,这取决于您的电路板模型实际上创建多个 UART 并将它们正确连接到命令行选项。)