EM9460 USB虚拟串口应用简介

 2014-12-10         

  任何时候若想用计算机和外部设备通信,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虚拟串口设置说明