用虚拟机建立完整Linux串口开发环境

2019-07-13 05:50发布

一.开发背景.

很多嵌入式Linux需要充当下位进行串口通讯,而上位机的程序往往Windows程序.这是一个典型的组合. 这种情况最真实的组合是Windows安装USB转串口驱动,然后用串口线与开发板相连接.但是这个需要带一大堆家伙. 另外一种方法,在windows下安装两台VMWare的虚拟机,一台安装windows,另外一台安装Ubuntu,两个虚拟机用命名管道充当串口来连接.这样可以省掉一大堆硬件,但是同时开两个虚拟机需要高级版本,而且占用资源极大,未必好调试. 最后我找到一种最为简洁方便做法,即在Windows下安装VMWare虚拟机.用windows下的虚拟串口驱动与虚拟机的Ubuntu建立联接.这样不需要任何额外硬件的情况,建立一个完整的Windows+Ubuntu的串口开发环境.这个环境下,windows上位机程序(不需要源码)和ubuntu下程序都认为自己在跟一个真实串口通讯.

二.所需要的软件

首先安装VMMare和VPDS. 在虚拟创建一个ubuntu虚拟机.
并联网安装minicom
sudo apt-get install minicom

2.1 配置VPDS

这个安装好后,桌面会有一个虚拟串口配置工具,打开即用
这里我们把COM1与COM2组合起来.
1493747-0a815af5e402b9ea.png Paste_Image.png 配置好的样子 1493747-ddeb19cf51ec42f4.png Paste_Image.png 用串口工具测试,在COM2发,可以看到COM1收到数据 1493747-3509d9aded6472d7.png Paste_Image.png 这样VDPS配置成功

2.2 VMWare配置

关掉虚拟机,在设置里增加串口设备,并选择使用物理串行端口,并选择COM1 1493747-7e52df35d5577df4.png Paste_Image.png 注意不知道是我安装是简化版VMware还是VMWare不认VDPS的虚口.在图形界面物理串口列表总是只有一项 "自动选择".无法输入. 最后的解决办法是,直接修改虚拟机的配置文件,即后缀名为vmx的文本文件.
直接加入如下配置(如果有就直接修改),这样重新打开界面才显示COM1已经连接. serial0.present = "TRUE" serial0.fileType = "device" serial0.fileName = "COM1" 而按照映射规则,第一个串口(COM1)会被虚拟机中第一个串口所使用,它对应设备文件是 /dev/ttyS0.因此我们minicom有如下配置
sudo minicom -s
1493747-f6197b97cb9948c8.png Paste_Image.png 而且COM1又被VDPS连接到COM2上. 这样我们在windows上COM2上发包就会被虚拟机中的/dev/ttyS0所接收.实测即是如此. 1493747-a442bc8649b17fd1.png Paste_Image.png 这样我们就能在ubuntu下写C程序与windows下的上位机程序通讯了.这里只需一台windows机器就完全搞掂了,开发完了,简单换一个编译器即可移植到ARM-Linux上