dev编译按钮是灰色_Jetpack 3.3 & 4.3 编译内核

Jetpack 默认内核不支持手柄的,在装好的 Jetson 板子上接入手柄,识别不了...

79142aea45df861f89fde9a60b4aa0bc.png

可以看到当前我装的是 Jetpack 3.3.2,内核版本是 4.4.159-tegra,插上手柄之后在 /dev/input里是看不到 jsx的。

为了 RACECAR 的调试及控制,我们首先要对 Jetpack 重新编译内核,添加手柄支持。

简单理解就是,Jetpack 的系统是阉割版,有些 ubuntu 默认功能它不支持。

Jetsonhacks 网站做过编译内核的脚本,只要运行就可以编译 [1]。但这个太久没更新了,最后留下的是针对 Jetpack 3.2.1 的支持,现在都到 4.3 版本了,而且使用 NVIDIA SDK Manager 安装的话,最老版本也是 Jetpack 3.3.1。

所以我对脚本进行了部分修改,现在可以支持 Jetpack 3.3.x 和 Jetpack 4.3 的内核编译了。

其实就是在脚本文件内增加了相应版本的 kernel 源文件地址并做了相应的修改。如果你想编译其他内核,在 Nvidia 网站上找相应的 Kernel 文件就可以了 [2]

来看下怎么操作吧。

这里是用的方法是在 Jetson 主机上编译 ,我用的 VNC 登录的 Jetson 远程桌面,你也可以尝试交叉编译,速度更快一些 [3]

一、下载脚本文件

首先下载我修改过的 Github Repo

$ git clone https://github.com/gwwang16/buildJetsonTX2Kernel

然后进入 Repo 的目录下

$ cd buildJetsonTX2Kernel

二、获取内核源文件并修改设置

  • 首先看看自己系统的版本信息,运行小脚本 jetson_release.sh

c0ac56a26d577e4bedad641847c3e4a5.png

根据你安装的 Jetpack 版本不同,需要切换到相应 tag。如果是 Jetpack 3.3.x,对应的 L4T 28.3.x;如果是 Jetpack 4.3,对应的是 L4T 32.3.1。 不同版本不通用!

这里看到我安装的系统版本是 Jetpack 3.3.2 , L4T28.3.2,切换到相应分支,执行

$ git checkout L4T28.3.2
  • 然后要下载相应版本的内核文件,解压出来,并进行相应设置。有脚本后只需要执行就可以自动操作了。
$ ./getKernelSources.sh
  • 该脚本执行的最后一步会打开一个 GUI,在打开的 GUI 内找到 Joystick 支持,勾选上保存就可以了。具体步骤是:先取个名字,便于区分当前内核与原版内核。左侧选中General setup --> 在右侧双击 Local version-->填入你的版本号。我这里设置的是 racecar-v0.1

78d03dca7d3d0f9d034397c49241d672.png
  • 下一步,在左侧找到 Input device support,右侧确认 Joystick interface已勾选。

e325a0cc35253a7f0a35b7d7084f1e7f.png
  • 继续在右侧的下方打开 Joysticks/Gamepads 选项卡,我用的是 Xbox 360 手柄,所以选择了下图里的三项,具体根据你的手柄品牌选择。

9c07448a39db510003af341ae7dd81cd.png
  • 设置完之后,点击左上方的保存按钮,便可以关闭当前 GUI 了。
你如果想要其他支持,都可以在这里面勾选。

三、编译内核

想要的内核配置完之后,就开始编译并安装了。具体执行的是更新配置、编译内核、编译并安装模块

$ make prepare
$ make modules_prepare
$ make Image
$ make modules 
$ make modules_install

有脚本就简单了,只需要执行

$ ./makeKernel.sh

这一步时间较长,Jetpack 3.3 大约 20分钟,Jetpack 4.3 大约 40 分钟...(记得打开 Jetson 的高性能模式)

四、复制内核

执行下面脚本将刚刚编译好的内核文件复制到 /boot 目录替换原内核文件,最好先备份一下。如果你在用外部设备(比如挂载了 SSD)作为根目录,并且在用 eMMC 引导,则需要将映像文件同样复制到 eMMC 的 /boot 目录下。

$ sudo cp /boot/Image /boot/image.bak
$ ./copyImage.sh
如果出现错误:提示找不到Image文件说明上一步的内核编译出现问题,将/usr/src/中的kernel文件夹删除,同时删除下载的压缩包和source文件夹,删除完后重启TX2,重新进行编译。

复制完成后重启 Jetson,打开终端输入 uname -r,看是否显示 4.4.159racecar-v0.1,如果是就说明内核编译成功了。

这时插入 XBOX 360 手柄,在终端内输入ls /dev/input/ ,应该可以看到 jsx 显示了,使用 jstest 测试一下看是否正常使用。

$ jstest /dev/input/js0

77f1b3b9c17b0e211d409bba29bd36f0.png

五、清理文件

当确认一切正常之后,可以把不需要的文件清理掉了,还是相当占空间的。执行下面命令会清理该过程中的所有中间文件和源 Kernel 文件。在操作之前最好是做个备份,以后可以继续用。

我没备份,因为我懒… 确认能用之后就直接删除了,如果出了问题以后重新编译...
$ ./removeAllKernelSources.sh

这样,编译内核就结束啦。

参考

  1. ^https://www.jetsonhacks.com/2018/03/22/build-kernel-modules-nvidia-jetson-tx2-2/
  2. ^https://developer.nvidia.com/embedded/jetpack-archive
  3. ^https://blog.csdn.net/huiyuanliyan/article/details/92803764
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值