背景:用TK1来进行ROS开发,难免会用到各种各样的USB设备,但是TK1有些USB转串口的驱动是默认不装的,如CP210X,CH340/341,FTDI等等,这也就是为什么插上设备后看不到那些你期望看到的ttyUSB*。本文着重讲解TK1的USB驱动问题。
吃水不忘挖井人:参考链接(原链接有点错误,本文进行了勘正)
把rpLidar插入Hub,然后输入命令
[plain] view plain copy ls –l /dev | grep ttyUSB
发现并没有出现/dev/ttyUSB0 !!!
然后就各种度、各种歌,最后找到如下网址:
https://devtalk.nvidia.com/default/topic/890599/?comment=4710941
http://elinux.org/Jetson/Tutorials/Program_An_Arduino
http://www.jetsonhacks.com/2016/06/29/build-custom-kernel-nvidia-jetson-tk1/
问题的原因是(第一个网址中提到):CP210x驱动没有在L4T内核中组建,但是其已经在L4T内核资源树种。所以,我们需要添加cp210x驱动。添加方法主要参考第三个网址(第二也行,但是第三个比较方便),此处注意第二和第三个网址是添加FTDI驱动,此处我们添加的是cp210x驱动,在 makexconfig或make menuconfig的时候要注意选对,即Device Drivers -> USB Support -> USB Serial Converter Support 选择CP210x。若使用makexconfig,则以“圆圈”的形式选中,若使用make menuconfig,则设为‘m’。还有,在配置.config的时候,要用命令uname –r ,看看你的本地版本信息,Tk1一般为“-gdacac96”,并把它添加到LOCALVERSION处。
步骤如下:
[plain] view plain copy $ git clone https://github.com/jetsonhacks/buildJetsonTK1Kernel.git
[plain] view plain copy $ cd buildJetsonTK1Kernel
[plain] view plain copy $ ./getKernelSources.sh (原链接 这里有错误,这一步其实就已经弹出串口了,千万别x掉,按要求选中你要安装的驱动,这里我无脑的全部选中了,记得保存,重要的事情说三遍!!!)此命令结束后,会出现一个设置窗口,此步骤非常重要,在窗口中找到Device Drivers -> USB Support -> USB Serial Converter Support->CP210x,并以圆圈的形式(模型模式)选中,这里也可以顺便把FTDI那个(USB FTDI Single Port Serial Driver)选中,然后记得保存!顺便把UVC也选了,位置在Device Drivers -> Multimedia Support -> Media USB Adapters -> USB Video Class (UVC)记得以圆圈的形式选中。
然后再打开一个终端:
[plain] view plain copy $ cd /usr/src/kernel
[plain] view plain copy $ sudo gedit .config 把里边的“LOCALVERSION”,设置成” -gdacac96”,(具体跟你uname –r得到的本地版本而定)。
回到第一个窗口:
[plain] view plain copy $ ./buildKernel.sh
[plain] view plain copy $ ./copyzImage.sh
最后插上RPlidar发现有ttyUSB0出现,说明安装成功。
最后介绍一个更坑的问题,关于TK1的USB3.0
TK1的USB默认为USB 2.0,必须修改/boot/extlinux/extlinux.conf才能启用USB 3.0。/usr/local/bin中安装了两个脚本,为了节省电力,默认情况下,Jetson在不使用USB时,会暂停USB端口的电源。 在桌面环境中,这可能会导致诸如相机和网络摄像头等设备的问题。 第一个脚本禁用USB autosuspend。为了节省电力,Jetson还可以处理CPU内核和GPU时钟速度。 第二个脚本设置所有功能,以获得最佳性能。设置步骤如下:
[plain] view plain copy git clone https://github.com/jetsonhacks/postFlash.git cd postFlash ./configureSystem.sh
关于多个设备的绑定问题,参看树莓派学习笔记中的USB设备绑定。
