这是由于官方的底板上采用INA3221芯片做了电源监控电路,只有确保5V电源达到要求的情况下才会使能USB口。而自制的底板上将上述电路省略了,所以导致了USB口无法使用。解决办法就是要给TX2更新设备树。在网上找到一些针对此问题的方法,找到了一些现成的替换文件,但是刷进去还是用不了,于是决定安装官方论坛提到的更改驱动源码重新编译,从而生成新的设备树文件进行替换。下面是亲测成功的方法:
1.主机安装JetPack,并给TX2刷机
我的主机安装的是Ubuntu 16.04 系统。
安装的JetPack版本是3.3下载链接,安装和刷机方法可以参照下面这篇文章
2.下载官方的源码
源码链接,下载“L4T Sources SHA ”这个文件并解压,里面有很多压缩包,解压这个文件kernel_src.tbz2
3.更改源码
我们需要更改下面这个文件:
<源码解压路径>/hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-
platforms/tegra186-quill-power-tree-p3310-1000-a00-00.dtsi
找到下面这一段代码,并照着修改:
pinctrl@3520000 {
vbus-0-supply = <&vdd_usb0_5v>;
vbus-1-supply = <&vdd_usb1_5v>;
vbus-2-supply = <&battery_reg>;
vbus-3-supply = <&dd_usb2_5v>;
vddio-hsic-supply = <&battery_reg>;
avdd_usb-supply = <&spmic_sd3>;
vclamp_usb-supply = <&spmic_sd2>;
avdd_pll_erefeut-supply = <&spmic_sd2>;
};
一般需要修改的是红色的那两行,改完之后保存。
4.编译源码,重新生成设备树
这里我们用的是官方提供的交叉编译工具,下载链接
根据自己的内核版本和主机下载,我下载的是“GCC Tool Chain for 64-bit BSP ”这个文件,解压出来可以直接使用。
接下来就是编译。打开终端:
1).输入环境变量
$ export CROSS_COMPILE=<crossbin>
$ export TEGRA_KERNEL_OUT=<outdir>
$ export ARCH=arm64
这里的 crossbin就是我们下载编译工具的可执行文件路径,格式如下:
<编译工具解压路径>/install/bin/aarch64-unknown-linux-gnu-
而outdir则是编译目标路径,编译后生成的文件都放在这个文件夹里,这里可以在文件夹中自己手动创建,也可以通过命令$ mkdir $TEGRA_KERNEL_OUT 去创建
2).生成.config文件
打开解压的源码所在文件夹:
$ cd <源码解压路径>/kernel/kernel-4.4
对于TX2执行以下命令:
make O=$TEGRA_KERNEL_OUT tegra18_defconfig
如果是TX1则执行这个命令:
$ make O=$TEGRA_KERNEL_OUT tegra21_defconfig
3).编译生成新的设备树文件
$ make O=$TEGRA_KERNEL_OUT dtbs
稍等片刻,等待编译完成。
5.用新生成的设备树文件替换原来的文件,并烧入TX2
生成的文件在
<outdir>/arch/arm64/boot/dts/
将这个文件夹重命名为dtb并复制到一下路径:
<JetPack路径>/64_TX2/Linux_for_Tegra/kernel/
并替换原来的整个文件夹。
将主机和TX2用USB连接,给TX2上电,按电源键,之后按住REC键不放,再按一下RST键立即放开,最后放开REC键,TX2进入Recovery模式。打开终端,cd到:
<JetPack安装路径>/64_TX2 /Linux_for_Tegra
在此路径下执行以下命令来烧写设备树:
sudo ./flash.sh -r -k kernel-dtb jetson-tx2 mmcblk0p1
待设备树烧写完毕,重启TX2即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)