由于项目变更,GPU型号从Tx1变成Tx2,原来的硬件接口没有变,但是把原来UART0的console serial功能关闭变成一个串口使用的方法没法使用了。这就导致了数据通过该串口发送的数据变的很有问题,无法使用了。
经过测试,终于找到了解决的方法。
首先在虚拟机上,安装编辑设备树的软件:
$sudo apt-get update
$sudo apt-get install device-tree-compiler
然后进入下面这个文件夹:64_TX2/Linux_for_Tegra/kernel/dtb。这个是我们给Tx2刷机下载的文件夹。然后反编译dtb成dts:
$sudo dtc -I dtb -O dts -o myTX2DeviceTreeSource.dts tegra186-quill-p3310-1000-c03-00-base.dtb
然后编辑得到的dts文件:
$sudo gedit myTX2DeviceTreeSource.dts
然后Ctrl+F:搜索:console,找到最后一个
chosen {
board-has-eeprom;
bootargs = "console=ttyS1,115200";
#stdout-path = "/serial@3150000";
};
如上所示,把4行使用功能'#'注释掉,然后再编译成dtb文件。
$
sudo dtc -I dts -O dtb -o tegra186-quill-p3310-1000-c03-00-base.dtb myTX2DeviceTreeSource.dts
然后退到:64_TX2/Linux_for_Tegra/,此时可以看到flash.sh。
将开发板断电后按下powder键再按住REC恢复键不放,同时按一下RST复位键3s后送开REC恢复键。
lsusb查看是否有nvidia标识的usb设备。(和刷机步骤一样)
查看到设备之后:
$sudo ./flash.sh -r -k kernel-dtb jetson-tx2 mmcblk0p1
很快就好了。The [kernel-dtb] has been updated sucessfully。
此时,串口的使用的名称为:"/dev/ttyTHS0"。在开发板上J21上,J21左边有个三角形,其所指的是1号针脚,1号对面是2号,然后9号是GND,8号是Tx,和232的RX相接,10号是Rx,和232的Tx相接。
此时就可以使用了,开机时就不会从这个串口向外输出信号了。