NVIDIA Jetson TX2 编译并启动ttyACM模块
平台: TX2 L4T 27.1
系统:ubuntu 16.04
传感器:hokuyo UTM-30LX laser
有两个TX2,第一个连上hokuyo激光时,直接就能识别ttyACM。当用另一台TX2读取hokuyo UTM-30LX 激光的数据时,运行ls -l /dev/ttyACM*时发现,TX2的串口并没有识别hokuyo。后来发现,是新的这台没有启动ttyACM模块,从而导致无法识别hokuyo。网上有一些中文问题总结,但是不全面,有些关键步骤漏掉了,这是我多次按照他们方法配置仍失败的原因。我把原始的英文教程总结,以备查阅。
1. 出处
原始英文配置教程对于TX2系统的两个版本分别有两套配置教程,BumBleBee009|CSDN博客中给出如何查看版本,引在此处:
Note
如何区分自己的版本是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
如果,想参照原始英文教程配置,建议先科学上网,参照里面的youtube视频教程进行,文字教程省略了很多关键步骤。重点!!!!
本文剩余部分的内容是对视频教程内容的总结与说明,以NVIDIA Jetson TX2–L4T 27.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个脚本文件。
- 获取内核源码
第一个脚本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
,再试。
- reboot TX2
reboot
开机后,就可以检测到连接的hokuyo。
- 如果以上操作都成功,并且成功安装了ACM模块,请删除之前安装时用到的源文件。
cd /usr/src
sudo rm -rf kernel sources r27.1.0_sources.tbz2 kernel_src.tbz2
END