[经验]
开源BeagleBone的USB串口驱动安装
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口连接:
- ——SMSC USB HUB 这是一个2口的USB HUB
- ——FTDI USB转串口
- ——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]
- %USB\VID_0403&PID_6001.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6001
- %USB\VID_0403&PID_6010&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6010&MI_00
- %USB\VID_0403&PID_6010&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6010&MI_01
- %USB\VID_0403&PID_6011&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6011&MI_00
- %USB\VID_0403&PID_6011&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6011&MI_01
- %USB\VID_0403&PID_6011&MI_02.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6011&MI_02
- %USB\VID_0403&PID_6011&MI_03.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6011&MI_03
- %USB\VID_0403&PID_6014.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6014
- [FtdiHw.NTamd64]
- %USB\VID_0403&PID_6001.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6001
- %USB\VID_0403&PID_6010&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6010&MI_00
- %USB\VID_0403&PID_6010&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6010&MI_01
- %USB\VID_0403&PID_6011&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6011&MI_00
- %USB\VID_0403&PID_6011&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6011&MI_01
- %USB\VID_0403&PID_6011&MI_02.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6011&MI_02
- %USB\VID_0403&PID_6011&MI_03.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6011&MI_03
- %USB\VID_0403&PID_6014.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6014
- ………
- [Strings]
- Ftdi="FTDI"
- DESC="CDM Driver Package - Bus/D2XX Driver"
- DriversDisk="FTDI USB Drivers Disk"
- USB\VID_0403&PID_6001.DeviceDesc="USB Serial Converter"
- USB\VID_0403&PID_6010&MI_00.DeviceDesc="USB Serial Converter A"
- USB\VID_0403&PID_6010&MI_01.DeviceDesc="USB Serial Converter B"
- USB\VID_0403&PID_6011&MI_00.DeviceDesc="USB Serial Converter A"
- USB\VID_0403&PID_6011&MI_01.DeviceDesc="USB Serial Converter B"
- USB\VID_0403&PID_6011&MI_02.DeviceDesc="USB Serial Converter C"
- USB\VID_0403&PID_6011&MI_03.DeviceDesc="USB Serial Converter D"
- USB\VID_0403&PID_6014.DeviceDesc="USB Serial Converter"
- SvcDesc="USB Serial Converter Driver"
- ClassName="USB"
上面是FTDI通用的VID/PID号,把它们改为- [FtdiHw]
- %USB\VID_0403&PID_A6D0&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_A6D0&MI_00
- %USB\VID_0403&PID_A6D0&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_A6D0&MI_01
- [FtdiHw.NTamd64]
- %USB\VID_0403&PID_A6D0&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_A6D0&MI_00
- %USB\VID_0403&PID_A6D0&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_A6D0&MI_01
- [Strings]
- Ftdi="FTDI"
- DESC="CDM Driver Package - Bus/D2XX Driver"
- DriversDisk="FTDI USB Drivers Disk"
- USB\VID_0403&PID_A6D0&MI_00.DeviceDesc="USB Serial Converter A"
- USB\VID_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,FTDIBUS\COMPORT&VID_0403&PID_6001
- %VID_0403&PID_6010.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6010
- %VID_0403&PID_6011.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6011
- %VID_0403&PID_6014.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6014
- [FtdiHw.NTamd64]
- %VID_0403&PID_6001.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6001
- %VID_0403&PID_6010.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6010
- %VID_0403&PID_6011.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6011
- %VID_0403&PID_6014.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&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,FTDIBUS\COMPORT&VID_0403&PID_A6D0
- [FtdiHw.NTamd64]
- %VID_0403&PID_A6D0.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&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驱动。这里仅给大家作为一个参考。