Qemu - 将主机输入重定向到裸机内核的访客 UART

Qemu - Redirect host input to guest UART for bare metal kernel

我正在用 Rust 从头开始​​为 64 位 ARM 设备编写内核。出于测试目的,我使用 Qemu virt machine.

目前,我可以通过 UART 从来宾向主机控制台写入字符。现在我想做相反的事情,即将字符从主机控制台发送到来宾 UART 端口。有没有办法做到这一点?我应该向 Qemu 添加一些参数吗?

I 运行 Qemu virt 机器具有以下参数:

qemu-system-aarch64 -M virt -cpu cortex-a57 -nographic -serial pty -S -kernel target/aarch64-unknown-none/debug/cortex-a57

它给了我一个新的 pty,我可以用 screen /dev/pts/mypty 附加它。然后我 运行 程序在 Qemu 控制台中点击 c。 我想使用相同的 pty(或新的?)向来宾写入数据。

QEMU 总是将访客 UART 的输入和输出重定向到同一个地方;这适用于所有“-serial stdio”、“-nographic”(隐含的“-serial mon:stdio”)和“-serial pty”。所以你不需要做任何额外的事情。如果 UART 输入不工作,那么问题可能是您的访客代码中的错误。

只需读取相同的 TTY,因为 Qemu 会将所有输入重定向到同一个地方。