如何通过改写TX2内核源码及利用Nvidia SDK manager开启TX2的PCIe(配置3)

在直接烧录官方提供的系统后,在默认的情况下,根据Jetson TX2/TX2 i OEM Product Design Guide这个手册,可以看到默认情况下使用的是config2,但是在这种配置下,只有1路usb3.0和PCIe可以使用,但是我们项目要求使用3路PCIe,所以需要对TX2使用配置3才可以。如何通过改写TX2内核源码及利用Nvidia SDK manager开启TX2的PCIe(配置3)
前提准备(全程在ubuntu18.0.4实现,16.04没有试过):
①上位机安装NVIDIA SDK Manager
②在上位机进行TX2内核源码下载

核心思想:
①修改 配置文件:usr/src/jetpack/64_TX2/Linux_for_Tegra文件夹中的p2771-0000.conf.common这个文件,将ODMDATA的值修改为0x6090000。通过这个地方也可以判断当前自己的TX2处于哪种配置
注:这是在安装NVIDIA SDK Manager的上位机中进行的

②修改 TX2内核源码,修改hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-plugin-manager/文件夹中的tegra186-quill-p3310-1000-a00-00-base.dts
tegra186-quill-p3310-1000-a00-plugin-manager.dtsi
tegra186-quill-p3310-1000-c03-00-base.dts
tegra186-quill-power-tree-p3310-1000-a00-00.dtsi
上述这几个文件,注意,这里必须改官方的内核源码!!源码怎么下载在下面
③生成DTB和镜像
④通过NVIDIA SDK MANAGER刷系统

过程:

①NVIDIA SDK Manager(Jetpack) 下载地址:https://developer.nvidia.com/embedded/jetpack
注意:看好Jetpack的版本号,因为要和后面下载源码的版本对应起来,这里我们用的是 Jetpack4.3

②TX2内核源码下载:
1)从github上下载脚本文件
在上位机执行命令: git clone https://github.com/jetsonhacks/buildJetsonTX2Kernel.git
这个脚本文件直接会下载到脚本创建的buildJetsonTX2Kernel文件夹
2)cd buildJetsonTX2Kernel 然后 gitchekout vL4T32.3.1(根据Jetpack版本)
如何通过改写TX2内核源码及利用Nvidia SDK manager开启TX2的PCIe(配置3)
3)运行文件中的getKernelSources.sh脚本获取内核源码: ./getKernelSources.sh
注意:这个脚本包含了下载源码到自己的 usr/src里面并完成解压,后面会补充图,这样我们就可以找到
hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-plugin-manager/文件夹中的
tegra186-quill-p3310-1000-a00-00-base.dts
tegra186-quill-p3310-1000-a00-plugin-manager.dtsi
tegra186-quill-p3310-1000-c03-00-base.dts
tegra186-quill-power-tree-p3310-1000-a00-00.dtsi

③修改内核中的上述文件,具体如何修改上述文件见:
https://blog.****.net/rendog/article/details/102869116/

④编译内核:
执行buildJetsonTX2Kernel文件夹下面的makeKernel.sh : ./makeKernel.sh
这样就完成了TX2内核的编译,可以生成新的DTB文件和镜像

⑤保存好生成的DTB文件和镜像,替换官方的DTB文件和镜像,重新刷机到TX2里面。
在刷的过程中TX2必须进入Recovery模式:
前提:用micro usb2.0建立上位机和 TX2的联系

刷机具体方法:
①TX2进入recovery模式:
上电→立刻按住recovery按钮5秒→不松recovery,按住reset五秒→松开reset继续按住recovery五秒,最后松开recovery,在上位机上利用: lsusb 观察是否TX2连接成功
②刷机,利用NVIDIA SDK Manager来一步步进行就完事了。
③这里会出现TX2是否能识别镜像的问题,在第三步刷系统的过程中,如果需要重新解压OS文件,那么说明替换的文件没有刷进去,需要运行上位机中的 flash.sh脚本文件手动刷一次。
还有可能出现有一些组件没有安装的情况,可以先选择跳过。

(除了让TX2进入recovery模式)以上全部的操作都在上位机进行!