如何配置VirtualBox中的虚拟机的串口

2019-07-12 20:13发布

http://www.crifan.com/summary_how_to_configure_virtualbox_serial_port/ http://blog.csdn.net/ralphsage/article/details/5626014

正在进行嵌入式Linux设备驱动开发,在主机的Ubuntu OS环境下,我使用的串口工具是 PuTTY SSH Client(个人感觉很好的东东),但是因为需要对终端产品的NorFlash进行空白烧写,或者需要在bootloader出问题后进行NorFlash重写,都需要使用BDI2000工具,而我手中的BDI2000的配置工具,以及与BDI连接的服务器程序都是Windows应用程序,它们也都需要使用串口对BDI2000进行配置和交互。没有办法,只有想办法在virtualbox中来操作PC的物理串口,来完成这样的工作了~~~~~   本人使用的VirtualBox环境: Host OS:Ubuntu 10.04        Guest OS: Deepin WinXP        VirtualBox Version: 3.1.8   1、VirtualBox的设置,如图所示:     端口编号是指在VirtualBox中的WinXP中串口的符号; 端口模式选择Host Device,表示VirtualBox和主机Ubuntu共用同一个物理串口; 端口位置/dev/ttyS0表示虚实共用的物理端口在Host OS Ubuntu中的设备号 ———这样VirtualBox中的端口1就成功设定了     2、 进入Guest OS WinXP后的动作:         (1)虽然在VirtualBox中已经为Guest OS WinXp 设定了串口设备,但是进入WinXP后却无法在设备管理器中看见,于是,进入控制面板-->添加硬件,选择 “是,我已经连接了此硬件” --> "添加新的硬件设备" --> "搜索并自动安装硬件",有时这样即可自动检测出COM1并安装;       (2)如果此处并未自动搜索出COM设备,则需要手动选择“端口(com和LPT)”-->"标准端口类型"-->"通讯端口",不过这样不会得到COM1而是COM3设备,并且没有正确地被驱动; 在设备管理器中,右键选择COM3-->属性-->资源-->手动配置,这里其实无须改动什么,直接确定即可,然后系统会提示重启,重启后,COM3就能构正常使用了;       重启后,如果不喜欢COM3而仍然想用COM1,此时也很容易了,设备管理器中卸载COM3设备,然后重复上述(1)的过程,肯定会自动检测出COM1。       这样,就可以在VirtualBox中和主机一样的直接正常使用物理串口了~~~~~~


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 此文,目的在于,将VirtualBox官网中,关于如何配置串口方面的配置的英文解释: Serial ports 翻译为中文,并且截图演示,如何对应的去配置。   翻译之前,写截个图,说明一下,对于普通的VirtualBox中的虚拟机,默认配置情况下,是没有开启对应的串口的,其配置对应的是这样的: (此处以VirtualBox中的某个XP虚拟机为例) serial port not enable
关于VirtualBox中的虚拟机,为何还需要使用到串口的部分,就不翻译了。 直接翻译,和配置串口有关的内容:

配置串口的方式

可以通过VirtualBox的图形界面或者命令行工具VBoxManage去配置对应的串口。
  • 图形界面:就是上述截图中的 虚拟机配置->串口->端口1,直接去设置即可;
  • VBoxManage:此处不多解释,有兴趣的自己去看:VBoxManage modifyvm,对应所需工具去这里下载:VMWare Serial Line Gateway
 

串口数目的限制

每个虚拟机,最多可以支持2个串口,即上述截图中的,端口1,和端口2. 由于多数人都用不到串口,所以默认情况下,两个端口都是没有开启的。  

配置串口的步骤

设置串口编号

即,用哪个COM。 默认情况下,有4种,分别是:
  • COM1: I/O base 0x3F8, IRQ 4
  • COM2: I/O base 0x2F8, IRQ 3
  • COM3: I/O base 0x3E8, IRQ 4
  • COM4: I/O base 0x2E8, IRQ 3
对应着,图形界面中的,端口编号: port number  

设置端口的类型(模式)

目前支持4种模式: 4 kind of port mode  

未连接

设置成未连接,那么虚拟机内看到就是,有串口,但是物理上没有连接。 对应设置最简单了: unconnected port  

主机管道

把串口设置成主机上的一个管道pipe(pipe是个软件上的概念) 如何设置:
  • Windows系统中:名字必须为
    \.pipe> 其中name自己随便起一个(当然,应该起一个,和你的虚拟机所对应的,有意义的名字)
  • Mac/Linux/Soloris:本地域内的一个socket(local domain socket)。同时,需要保证虚拟机有对应的访问权限。其中比较常用的是 /tmp,然后再用对应的工具,比如socat去管理和操作
  此处,即可如下设置: use pipe for com1  

主机设备

说白了就是,和你主机,对应着真实的电脑中的串口。 比如你电脑中有一个COM1,那么此处就是设置为对应的 主机设备,并且对应的端口写成
  • Windows系统:COM1
  • Linux类系统:类似于/dev/ttyS0
此处,对于XP虚拟机来说,就应该这样设置: host dev port com1  

裸文件

将串口输出,放到一个文件里面去。 具体设置,就很简单了,比如我在对应的虚拟机磁盘.vdi路径下,随便创建一个文件: D: mp mp_dev_rootvirutalboxxpdeepin_xp_com1.txt 然后再去设置为 裸文件,同时填上上述文件: bare file for com1 即可。  

一些注意事项

很容易想到,如果使用了两个串口,那么最好不要设置为同一个COM,比如两个都设置为COM1,那么就容易有问题。因为两者共享同一个中断。 另外,如果用了两个串口,那么最好是COM1和COM2,而不是COM1和COM3,因为COM1和COM2。 其原理,从最开始的COM1到COM4的配置,即可看出。尽量使得两个串口,不要在资源使用上有冲突即可。