最近由于学校实验室准备参加ICRA的DJI AI Challenge ,所以我在使用TX2跑ROS。我用的是ubuntu 16.04, ros kinetic版本。然后遇到了一些问题。再插上通信串口之后usb并没有反应。
通过lsusb命令可以看到对应的usb设备。
但是在使用ls /dev时却无法找到对应的设备名。经过一番查找发现是tx2缺少这部分的驱动程序,需要我们自己编译内核安装。
下面附上我的步骤进行记录:
一、
如何区分自己的版本是L4T 27.1还是L4T 28.1?
使用uname -r提示的消息是“4.4.15-tegra”,则说明版本是L4T 27.1;
使用uname -r提示的消息是“4.4.38-tegra”,则说明版本是L4T 28.1;
Build Kernel and Modules – NVIDIA Jetson TX2–L4T 27.1
Build Kernel and Modules – NVIDIA Jetson TX2–L4T 28.1
本文剩余部分的内容是对视频教程内容的总结与说明,以NVIDIA Jetson TX2--L4T 28.1版本为例,它比NVIDIA Jetson TX2--L4T 28.1的配置多一步,待会会重点强调。
2. L4T 27.1配置启动ttyACM模块
下载脚本文件(27.1与28.1的区别在此步骤,多最后一行命令)
$ git clone https://github.com/jetsonhacks/buildJetsonTX2Kernel.git
$ cd buildJetsonTX2Kernel
# 如果你使用的`Tegra`版本是 `L4T 27.1`, 那么需要切换分分支:
$ git checkout vL4T27.1
一共有3个脚本文件。
1、获取内核源码
第一个脚本getKernelSources.sh从NVIDIA developer网站获取内核源码, 然后将源码解压到/usr/src/kernel目录中。
$ ./getKernelSources.sh
源码下载完毕后,脚本会打开一个xconfig配置界面。
此处需要说明的是,xconfig实际上在位于/usr/src/kernel/kernel -4.4文件夹下,如果第一次配置不成功,不需要重新运行./getKernelSources.sh。可以运行以下命令,打开xconfig配置界面。
cd /usr/src/kernel/kernel -4.4
make xconfig
设置Genral Setup->Local version - append to kernel release ,双击Local version - append to kernel release在文本框内输入-jetsonbot-v0.1,回车;如图所示:
在xconfig中按Ctrl+F,弹出一个搜索框。
输入ACM,点击search按钮,点击搜索结果中的CDC ACM(多点击几次,直到左边框中显示对钩),最后结果如图所示:
输入CH341,在显示的结果中,点击(多点击几次,直到框中显示为圆点),然后点退出关闭该子窗口。
点击File--->save,保存刚才的设置,最后点击Quit键退出xconfig。
编译内核
$ ./makeKernel.sh
第二个脚本makeKernel.sh, 会给一部分Makefile文件更新补丁以满足Jetson TX2平台的编译条件,之后就开始内核编译。 脚本中的make modules install命令会将模块安装到/lib/modules/目录中。
将之前的启动镜像更新为新的镜像
$ ./copyImage.sh
第三个脚本文件copyImage.sh会将新的编译镜像Image和zImage文件拷贝到/boot目录。
一般不会出错,若出现没有目标文件的错误时,请检查,新的镜像是否生成成功。
cd /usr/src/kernel/kernel-4.4/arch/arm64/boot/
看该文件夹下是否有Image与zImage文件。如果没有,重新运行第8步的./makeKernel.sh,再试。
重启 TX2
reboot
开机后,就可以检测到连接的hokuyo。
如果以上操作都成功,并且成功安装了ACM模块,请删除之前安装时用到的源文件。
cd /usr/src
sudo rm -rf kernel sources r27.1.0_sources.tbz2 kernel_src.tbz2