任何時候若想用計算機(jī)和外部設(shè)備通信,USB都是一個方便、可行的解決方案,因為USB擁有使用方便、數(shù)據(jù)傳輸快速可靠、成本低以及省電等優(yōu)點。英創(chuàng)公司提供嵌入式板卡EM9460若想實現(xiàn)和計算機(jī)的數(shù)據(jù)通信,最方便的方法就是利用EM9460中的USB device設(shè)備口和PC機(jī)的USB主控口相連,在EM9460的USB device驅(qū)動實現(xiàn)將其映射為一個虛擬串口的功能,PC和EM9460就可按照串口通訊的方式進(jìn)行數(shù)據(jù)通訊了,虛擬串口的波特率只是形式化的一個參數(shù),而實際的數(shù)據(jù)傳輸速率是由USB的傳輸速率決定,EM9460的USB設(shè)備口支持USB1.1標(biāo)準(zhǔn),數(shù)據(jù)通訊速率為12Mbps。
EM9460內(nèi)核版本為Linux-2.6.30,在Linux內(nèi)核中Linux USB gadget serial driver是Linux USB gadget driver的一種標(biāo)準(zhǔn)應(yīng)用,在EM9460端加載gadget serial driver之后,對于PC機(jī)這端來說就是一個基于USB接口的串口設(shè)備。
PC端大部分都是采用的Windows操作系統(tǒng),對于Win7系統(tǒng)來說,直接根據(jù)提示安裝驅(qū)動即可,對于WinXP系統(tǒng),安裝微軟提供的usbser.sys驅(qū)動以及相應(yīng)的inf文件。
1、USB設(shè)備端驅(qū)動
EM9460作為USB設(shè)備端,其Linux內(nèi)核配置如下:
Device Drivers --->
[*] USB support --->
<*> USB Gadget Support --->
USB Gadget Drivers
Serial Gadget (with CDC ACM and CDC OBEX support)
內(nèi)核編譯后后生成相應(yīng)的g_serial.ko文件,并將該文件放置于EM9X60 文件系統(tǒng)中的/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設(shè)備驅(qū)動加載成功,系統(tǒng)中會增加一個/dev/ttyGS0的節(jié)點:
[root@EM9X60 /]#ls /dev/ttyGS0 -l
crw-rw---- 1 root root 252, 0 Jan 1 00:14 /dev/ttyGS0
EM9460板卡可以直接按照串口通訊的方式打開該節(jié)點 /dev/ttyGS0,進(jìn)行數(shù)據(jù)讀寫操作。
2、PC機(jī)端Windows操作系統(tǒng)
Win7操作系統(tǒng)可以自動加載基于udc標(biāo)準(zhǔn)的serial驅(qū)動,接上EM9460后,會自動提示“正在安裝設(shè)備驅(qū)動程序軟件”,安裝成功后:
EM9460對于PC機(jī)來說就是一個串口設(shè)備,設(shè)備號為“COM10”。
對于WinXP操作系統(tǒng),要使用ACM串口,需要WindowsXP機(jī)器上有g(shù)serial.inf和usbser.sys這兩個文件,其中g(shù)serial.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'
安裝成功后,在設(shè)備管理器中可以看到 “Gadget Serial (COM11) '這個端口。
基于這種USB連接的方式,EM9460可以類似于一個超級單片機(jī),作為前置的智能控制器,而PC機(jī)作為一個主控方,從而構(gòu)成一個高性能的智能監(jiān)控系統(tǒng)。
本文所介紹的方法同樣適用于EM9X60系列的其它產(chǎn)品型號,如:EM9160、EM9260、EM9360等。
WinCEx版的工控主板管理虛擬串口方法如下:英創(chuàng)工控主板USB虛擬串口設(shè)置說明
-
WINDOWS
+關(guān)注
關(guān)注
4文章
3564瀏覽量
89107 -
嵌入式主板
+關(guān)注
關(guān)注
7文章
6086瀏覽量
35523
發(fā)布評論請先 登錄
相關(guān)推薦
評論