开源BeagleBone的USB串口驱动安装

作者: Pollux
上传时间为: 2012-02-28 12:17 AM
2012-02-28
阅读:

BeagleBone是一个低成本、高扩展性的开源ARM开发板。如同一个ARM架构的最小系统,只留下USB和Ethernet这些必要的调试接口,甚至没有显示接口。BeagleBone的USB驱动安装并不复杂,不过之前的A3版本USB驱动没有使用通用的FTDI芯片VID/PID号,还是要费一番功夫,下面主要介绍在Windows XP系统和Linux(Ubuntu)系统下的驱动安装。

BeagleBone目前发布的硬件版本为A5,相比之前发布的A3、A4版本变化并不大,最主要的是更改了USB的PID(产品识别码)为通用的号码,这样USB的驱动安装更为简便。这次拿到还是A3版本的BeagleBone,因此主要说说怎么安装USB驱动

1. Windows XP

BeagleBone上USB设备还是蛮多的,所有的设备都是通过一个mini USB口连接:

  1. ——SMSC USB HUB  这是一个2口的USB HUB
  2. ——FTDI USB转串口
  3. ——FTDI USB转JTAG口

在Windows XP下有的USB HUB驱动可以自动安装上,不过FTDI USB驱动的要去官网下载。在BeagleBoard的网站上可以下载BeagleBone的驱动文件BONE_DRV.exe,不过运行的时候会报错,

可能在中文Windows下不兼容,所以首先还是去FDTI官网下载USB转串口的驱动文件

在BeagleBone A3版本中,FTDI FT2232H USB转接芯片的VID/PID号与TI仿真器XDS100上的一样是0x0403/0xA6D0,而与通用的FTDI VID/PID(0x0403/0x6010)有所不同,因此下载FTDI驱动程序后要对安装信息文件inf修改一下才行。(如果你拿到的是BeagleBone A5版本的话可以跳过修改inf文件,直接安装驱动)

解压所下载的FTDI驱动程序

首先修改ftdibus.inf文件。要修改的是文件中的[FtdiHw], [FtdiHw.NTamd64] and [Strings]块。

[FtdiHw] %USBVID_0403&PID_6001.DeviceDesc%=FtdiBus.NT,USBVID_0403&PID_6001 %USBVID_0403&PID_6010&MI_00.DeviceDesc%=FtdiBus.NT,USBVID_0403&PID_6010&MI_00 %USBVID_0403&PID_6010&MI_01.DeviceDesc%=FtdiBus.NT,USBVID_0403&PID_6010&MI_01 %USBVID_0403&PID_6011&MI_00.DeviceDesc%=FtdiBus.NT,USBVID_0403&PID_6011&MI_00 %USBVID_0403&PID_6011&MI_01.DeviceDesc%=FtdiBus.NT,USBVID_0403&PID_6011&MI_01 %USBVID_0403&PID_6011&MI_02.DeviceDesc%=FtdiBus.NT,USBVID_0403&PID_6011&MI_02 %USBVID_0403&PID_6011&MI_03.DeviceDesc%=FtdiBus.NT,USBVID_0403&PID_6011&MI_03 %USBVID_0403&PID_6014.DeviceDesc%=FtdiBus.NT,USBVID_0403&PID_6014

[FtdiHw.NTamd64] %USBVID_0403&PID_6001.DeviceDesc%=FtdiBus.NTamd64,USBVID_0403&PID_6001 %USBVID_0403&PID_6010&MI_00.DeviceDesc%=FtdiBus.NTamd64,USBVID_0403&PID_6010&MI_00 %USBVID_0403&PID_6010&MI_01.DeviceDesc%=FtdiBus.NTamd64,USBVID_0403&PID_6010&MI_01 %USBVID_0403&PID_6011&MI_00.DeviceDesc%=FtdiBus.NTamd64,USBVID_0403&PID_6011&MI_00 %USBVID_0403&PID_6011&MI_01.DeviceDesc%=FtdiBus.NTamd64,USBVID_0403&PID_6011&MI_01 %USBVID_0403&PID_6011&MI_02.DeviceDesc%=FtdiBus.NTamd64,USBVID_0403&PID_6011&MI_02 %USBVID_0403&PID_6011&MI_03.DeviceDesc%=FtdiBus.NTamd64,USBVID_0403&PID_6011&MI_03 %USBVID_0403&PID_6014.DeviceDesc%=FtdiBus.NTamd64,USBVID_0403&PID_6014

………

[Strings] Ftdi="FTDI" DESC="CDM Driver Package - Bus/D2XX Driver" DriversDisk="FTDI USB Drivers Disk" USBVID_0403&PID_6001.DeviceDesc="USB Serial Converter" USBVID_0403&PID_6010&MI_00.DeviceDesc="USB Serial Converter A" USBVID_0403&PID_6010&MI_01.DeviceDesc="USB Serial Converter B" USBVID_0403&PID_6011&MI_00.DeviceDesc="USB Serial Converter A" USBVID_0403&PID_6011&MI_01.DeviceDesc="USB Serial Converter B" USBVID_0403&PID_6011&MI_02.DeviceDesc="USB Serial Converter C" USBVID_0403&PID_6011&MI_03.DeviceDesc="USB Serial Converter D" USBVID_0403&PID_6014.DeviceDesc="USB Serial Converter" SvcDesc="USB Serial Converter Driver" ClassName="USB"

上面是FTDI通用的VID/PID号,把它们改为

[FtdiHw] %USBVID_0403&PID_A6D0&MI_00.DeviceDesc%=FtdiBus.NT,USBVID_0403&PID_A6D0&MI_00 %USBVID_0403&PID_A6D0&MI_01.DeviceDesc%=FtdiBus.NT,USBVID_0403&PID_A6D0&MI_01 [FtdiHw.NTamd64] %USBVID_0403&PID_A6D0&MI_00.DeviceDesc%=FtdiBus.NT,USBVID_0403&PID_A6D0&MI_00 %USBVID_0403&PID_A6D0&MI_01.DeviceDesc%=FtdiBus.NT,USBVID_0403&PID_A6D0&MI_01

[Strings] Ftdi="FTDI" DESC="CDM Driver Package - Bus/D2XX Driver" DriversDisk="FTDI USB Drivers Disk" USBVID_0403&PID_A6D0&MI_00.DeviceDesc="USB Serial Converter A" USBVID_0403&PID_A6D0&MI_01.DeviceDesc="USB Serial Converter B" SvcDesc="USB Serial Converter Driver" ClassName="USB"

然后再修改fdtiport.inf文件中[FtdiHw], [FtdiHw.NTamd64] and [Strings]块相应内容

[FtdiHw] %VID_0403&PID_6001.DeviceDesc%=FtdiPort.NT,FTDIBUSCOMPORT&VID_0403&PID_6001 %VID_0403&PID_6010.DeviceDesc%=FtdiPort.NT,FTDIBUSCOMPORT&VID_0403&PID_6010 %VID_0403&PID_6011.DeviceDesc%=FtdiPort.NT,FTDIBUSCOMPORT&VID_0403&PID_6011 %VID_0403&PID_6014.DeviceDesc%=FtdiPort.NT,FTDIBUSCOMPORT&VID_0403&PID_6014

[FtdiHw.NTamd64] %VID_0403&PID_6001.DeviceDesc%=FtdiPort.NTamd64,FTDIBUSCOMPORT&VID_0403&PID_6001 %VID_0403&PID_6010.DeviceDesc%=FtdiPort.NTamd64,FTDIBUSCOMPORT&VID_0403&PID_6010 %VID_0403&PID_6011.DeviceDesc%=FtdiPort.NTamd64,FTDIBUSCOMPORT&VID_0403&PID_6011 %VID_0403&PID_6014.DeviceDesc%=FtdiPort.NTamd64,FTDIBUSCOMPORT&VID_0403&PID_6014

[Strings] FTDI="FTDI" DESC="CDM Driver Package - VCP Driver" DriversDisk="FTDI USB Drivers Disk" PortsClassName = "Ports (COM & LPT)" VID_0403&PID_6001.DeviceDesc="USB Serial Port" VID_0403&PID_6010.DeviceDesc="USB Serial Port" VID_0403&PID_6011.DeviceDesc="USB Serial Port" VID_0403&PID_6014.DeviceDesc="USB Serial Port" SvcDesc="USB Serial Port Driver" SerEnum.SvcDesc="Serenum Filter Driver"

改为

[FtdiHw] %VID_0403&PID_A6D0.DeviceDesc%=FtdiPort.NT,FTDIBUSCOMPORT&VID_0403&PID_A6D0 [FtdiHw.NTamd64] %VID_0403&PID_A6D0.DeviceDesc%=FtdiPort.NTamd64,FTDIBUSCOMPORT&VID_0403&PID_A6D0

[Strings] FTDI="FTDI" DESC="CDM Driver Package - VCP Driver" DriversDisk="FTDI USB Drivers Disk" PortsClassName = "Ports (COM & LPT)" VID_0403&PID_A6D0.DeviceDesc="BeagleBone USB Serial Port" SvcDesc="USB Serial Port Driver" SerEnum.SvcDesc="Serenum Filter Driver"

驱动文件改好后,现在我们可以接通电源了。BeagleBone有两种供电,可以通过5V的稳压电源线供电,也可以直接通过USB线供电。为了方便,我们先通过USB线来工作。

BeagleBone购买时会附送两张micro SD卡,其中一张里面是装好的测试系统Angstrom,先不管他是什么系统,插上以后我们首先装好驱动。连接USB线到PC机,电源指示灯会亮。

通用USB HUB驱动,windows会自动识别。

接着会出现第一个USB串口转换A

选择从列表或指定位置安装

指定到下载的USB驱动程序目录

由于我们更改过了inf文件,因此跳出没有验证的窗口,不用管它继续安装

USB串口转换A口就安装好了,之后会弹出USB串口转换B口

同样的步骤安装好USB串口转换B口

安装好以后,之后会跳出BeagleBone USB串口

还是同样的步骤安装串口

我们可以看到设备管理器中出现了BeagleBone串口。

下面看看串口有没有配置成功。首先要建立串口的通讯,就采用widowns下的超级终端。

在Windows XP的附件->通讯下新建立一个超级终端,任意取个名字

选择BeagleBone的串口端号,注意是刚刚安装好的BeagleBone的虚拟串口

然后在设置参数,波特率115200,数据位8位,无奇偶校验,1位停止位,数据流控制无

设置好以后,复位BeagleBone,复位键很小

这时串口监视窗口会跑很多系统启动信息

预制的Linux Angstrom系统启动以后出现登陆提示。

输入root,可以登入BeagleBone上的Linux系统了。

这样在Windows XP下BeagleBone的串口驱动装好了,还可以通过串口监视系统运行以及登陆。下面看看Linux系统下驱动安装的情况。

2. Linux下驱动(Ubuntu)

Linux系统下USB驱动相对来说简单一点。我们使用的是Ubuntu11.10版本的Linux。

不需要再下载Linux下的USB驱动程序,只需要重新挂载USB设备,在终端窗口输入:

sudo modprobe ftdi_sio vendor=0x0403 product=0xa6d0

如果是超级用户root登陆的话可以不用前面的sudo,注意USB的VID/PID号。

输入lsmod,可以检查设备有没有挂载上。这只是临时挂载USB设备,如果想每次系统重启时自动挂载BeagleBone USB串口,需要加一个udev rule文件,如/etc/udev/rules.d/73-beaglebone.rules,在这个目录下增加rules文件。

USB串口挂载好了,用串口监视程序看看结果。这里采用了minicom,输入命令:minicom。如果没有安装的话先安装程序:apt-get install minicom

首先设置一下程序。在终端输入:minicom -s。进入串口设置里修改参数。这里USB转串口设备有两个,其中ttyUSB0是USB转JTAG用,而ttyUSB1这是USB转串口设备。按下图设置参数,然后保存退出。

之后就进入了BeagleBone里的Angstrom系统。重新复位,输入root可以进入管理员账户。

3 修改EEPROM信息 

在BeagleBone A5版本中最主要修改就是更改了USB的VID/PID号为通用的FTDI号(0x0403/0x6010),因此USB驱动程序安装更方便,在windows下可以自动完成。

在BeagleBone A3版本下也可以自己修改EEPROM的信息,使得安装USB串口驱动变得简单,不需要再修改FTDI的安装信息文件。

首先下载一个EEPROM的编程工具FT_Prog,解压压缩文件。

运行FT_Prog应用程序, 弹出窗口

选择scan and pares,或者直接F5快捷键,读取EEPROM中的信息。修改AD60为6010

选择program,EEPROM中的USB PID信息就被修改了。

这样A3版本的VID/PID信息就修改了和A5版本一样,现在USB驱动安装更方便了。

小结,BeagleBone中的USB串口驱动安装并不复杂,,不过如果用的是以前的A3版本以及对Linux系统不熟悉的话还是要花点时间装USB驱动。这里仅给大家作为一个参考。在下一篇将介绍下BeagleBone上面的Linux系统,以及怎么安装包括其他的系统如Android等。

全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示