【发布时间】:2019-10-04 17:44:15
【问题描述】:
我正在尝试调试正在编写的虚拟机管理程序,并在 Vmware 播放器中的两个虚拟机之间设置了一个串行端口(我正在使用嵌套 vt-x 支持的虚拟机上测试虚拟机管理程序)。我的问题是如何在没有操作系统帮助的情况下将数据从管理程序传输到串行端口(当管理程序打开时,大多数软件堆栈操作系统都不可用)。我知道我可以看到其他系统如何实现发送到串行端口并以这种方式实现,但这比调试更重要,因为实现一个完整的串行接口接口可能比手动查找错误需要更多时间。我只需要发送一个数字或一个字符串,因此我正在寻找可能的极简解决方案。
直到知道我一直在使用 netconsole 来传递调试信息,但我现在面临的错误发生在内核取回控制权之前,因此 netconsole 无法发送任何数据。如果有人对如何传递调试信息而不是使用串行端口有更好的想法,我很乐意听到。
现在我已经进入那个资源 https://en.wikibooks.org/wiki/Serial_Programming/8250_UART_Programming ,这可能与我的问题有关,但如果有人能详细说明,通过使用 out 发送数据,我会很高兴,但是数据顺序搞砸了,不能用于调试,所以,到目前为止它没有帮助。
【问题讨论】:
-
任何操作系统内核或引导加载程序初始化代码都足以开始。
-
"我在两台虚拟机之间设置了一个串口" -- 一个串口不能同时服务两台机器。串行端口是外围设备,而不是通信链路。如果你在两台机器之间建立了一个串口link,那么你需要两个串口,每台机器一个。
标签: c linux-kernel serial-port vmware hypervisor