任何时候若想用计算机和外部设备通信,USB都是一个方便、可行的解决方案,因为USB拥有使用方便、数据传输快速可靠、成本低以及省电等优点。英创公司提供嵌入式板卡EM9460若想实现和计算机的数据通信,最方便的方法就是利用EM9460中的USB device设备口和PC机的USB主控口相连,在EM9460的USB device驱动实现将其映射为一个虚拟串口的功能,PC和EM9460就可按照串口通讯的方式进行数据通讯了,虚拟串口的波特率只是形式化的一个参数,而实际的数据传输速率是由USB的传输速率决定,EM9460的USB设备口支持USB1.1标准,数据通讯速率为12Mbps。
EM9460内核版本为Linux-2.6.30,在Linux内核中Linux USB gadget serial driver是Linux USB gadget driver的一种标准应用,在EM9460端加载gadget serial driver之后,对于PC机这端来说就是一个基于USB接口的串口设备。
PC端大部分都是采用的Windows操作系统,对于Win7系统来说,直接根据提示安装驱动即可,对于WinXP系统,安装微软提供的usbser.sys驱动以及相应的inf文件。
1、USB设备端驱动
EM9460作为USB设备端,其Linux内核配置如下:
Device Drivers --->
[*] USB support --->
<*> USB Gadget Support --->
USB Gadget Drivers
Serial Gadget (with CDC ACM and CDC OBEX support)
内核编译后后生成相应的g_serial.ko文件,并将该文件放置于EM9X60 文件系统中的/lib/module/2.6.30/目录下。
[root@EM9X60 /]#insmod /lib/modules/2.6.30/g_serial.ko
g_serial gadget: Gadget Serial v2.4
g_serial gadget: g_serial ready
表明USB设备驱动加载成功,系统中会增加一个/dev/ttyGS0的节点:
[root@EM9X60 /]#ls /dev/ttyGS0 -l
crw-rw---- 1 root root 252, 0 Jan 1 00:14 /dev/ttyGS0
EM9460板卡可以直接按照串口通讯的方式打开该节点 /dev/ttyGS0,进行数据读写操作。
2、PC机端Windows操作系统
Win7操作系统可以自动加载基于udc标准的serial驱动,接上EM9460后,会自动提示“正在安装设备驱动程序软件”,安装成功后:
EM9460对于PC机来说就是一个串口设备,设备号为“COM10”。
对于WinXP操作系统,要使用ACM串口,需要WindowsXP机器上有gserial.inf和usbser.sys这两个文件,其中gserial.inf的配置如下:
[Version]
Signature='$Windows NT$'
Class=Ports
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
Provider=%LINUX%
DriverVer=08/17/2004,0.0.2.0
; Copyright (C) 2004 Al Borchers (alborchers@steinerpoint.com)
[Manufacturer]
%LINUX%=GSerialDeviceList
[GSerialDeviceList]
%GSERIAL%=GSerialInstall, USB\VID_0525&PID_A4A7
[DestinationDirs]
DefaultDestDir=10,System32\Drivers
[GSerialInstall]
CopyFiles=GSerialCopyFiles
AddReg=GSerialAddReg
[GSerialCopyFiles]
usbser.sys
[GSerialAddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,usbser.sys
HKR,,EnumPropPages32,,'MsPorts.dll,SerialPortPropPageProvider'
[GSerialInstall.Services]
AddService = usbser,0x0002,GSerialService
[GSerialService]
DisplayName = %GSERIAL_DISPLAY_NAME%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %10%\System32\Drivers\usbser.sys
LoadOrderGroup = Base
[Strings]
LINUX = 'Linux'
GSERIAL = 'Gadget Serial'
GSERIAL_DISPLAY_NAME = 'USB Gadget Serial Driver'
安装成功后,在设备管理器中可以看到 “Gadget Serial (COM11) '这个端口。
基于这种USB连接的方式,EM9460可以类似于一个超级单片机,作为前置的智能控制器,而PC机作为一个主控方,从而构成一个高性能的智能监控系统。
本文所介绍的方法同样适用于EM9X60系列的其它产品型号,如:EM9160、EM9260、EM9360等。
WinCEx版的工控主板管理虚拟串口方法如下:英创工控主板USB虚拟串口设置说明
全部0条评论
快来发表一下你的评论吧 !