I have R28.2 (from Jetpack 3.2) installed on my Jetson TX1 and I am following this to enable SPI1 on my system. With the R28.2, updating the .dtb file requires flashing it instead of just editing extlinux.conf file. However, when I try a command similar to:
sudo ./flash.sh -r -k DTB jetson-tx1 mmcblk0p1
or
sudo ./flash.sh DTB jetson-tx1 mmcblk0p1
I obtain the following error:
Error: probing the target board failed.
Make sure the target board is connected through
micro-B USB port and is in recovery mode.
The above problem does not appear when I flash stock .dtb file. Hence, I don’t think it is related to the micro USB cable or other hardware. My modified .dtb file is located inside Linux_for_Tegra/kernel/dtb and I have deleted the existing .dtb file. I also rename the modified .dtb file to the original .dtb file that was used. Also, it seems that the flashing commands I am using correspond to versions upto R28.1 not R28.2. What command should I use?
Please note:
- I am using the micro USB cable that came with the kit.
- The host is not a VM.
- The host runs Ubuntu 16.04.
- When lsusb command is run prior to flashing, it correctly displays:
Bus 001 Device 040: ID 0955:7721 NVidia Corp.
- The modified .dtb file that I generated is called:
tegra210-jetson-tx1-p2597-2180-a01-devkit-gpio.dtb
The different commands that I have tried include:
sudo ./flash.sh -d kernel/dtb/tegra210-jetson-tx1-p2597-2180-a01-devkit-gpio.dtb jetson-tx1 mmcblk0p1
sudo ./flash.sh -d kernel/dtb/tegra210-jetson-tx1-p2597-2180-a01-devkit-gpio.dtb DTB jetson-tx1 mmcblk0p1
sudo ./flash.sh -d tegra210-jetson-tx1-p2597-2180-a01-devkit-gpio.dtb DTB jetson-tx1 mmcblk0p1
I have also tried similar command by renaming the file to:
tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
and then replacing the original file with the same name.
This works for me on R28.2 TX1, but I have not modified any of the dtb files (the “Linux_for_Tegra/” sub-directory was populated by a previous flash and all dtb files in place are the standard ones):
sudo ./flash.sh -r -k DTB jetson-tx1 mmcblk0p1
I am able to flash the standard ones. My objective is to enable SPI1 on the Jetson TX1 development board. So I made the following changes:
- Added the following inside gpio@6000d000 {}; block of dts:
gpio_default: default {
gpio-to-sfio = <16 17 18 19 20>;
};
- Also added the following:
spi@7000d400 {
status = "okay";
spi0_0 {
#address-cells = <0x1>;
#size-cells = <0x0>;
compatible = "spidev";
reg = <0x0>;
spi-max-frequency = <0x17d7840>;
nvidia,enable-hw-based-cs;
nvidia,cs-setup-clk-count = <0x1e>;
nvidia,cs-hold-clk-count = <0x1e>;
nvidia,rx-clk-tap-delay = <0x1f>;
nvidia,tx-clk-tap-delay = <0x0>;
};
};
I am able to compile a .dtb after making the changes. But I am not able to flash it. But it seems that these edits are meant for R24.x not for R28.2. I have found this link which I am yet to try.
So I tried your command after copying modified .dtb file to to the folders:
/64_TX1/Linux_for_Tegra/kernel/dtb
and
/64_TX1/Linux_for_Tegra/rootfs/boot
, and then renaming the file as:
tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
This time I was able to flash the .dtb file. However, I did not see the SPI bus enabled. The
sudo cat /sys/kernel/debug/tegra_gpio
command given in this link did not produce the expected result (also shown in the same link). I am yet to try the new modifications I mentioned towards the end of previous reply.
I made the changes from this link and tried your command. It showed that the flashing was successful but when I run the command:
sudo cat /sys/kernel/debug/tegra_gpio
it still does not provide required results.
Also, I used this command:
dtc -I fs -O dts -o extracted.dts /proc/device-tree
posted by you, to extract the .dts.
FYI, in the R28.x series firmware and device tree files in “/rootfs/boot/” will not matter…this is leftover baggage from a previous release and is ignored (or if not ignored it won’t do as expected).
You are correct that the 3.x kernel series device tree is not compatible with a 4.x series kernel device tree. This would be the root of the problem.
It seems the real problem is what device tree change is required for your SPI controller, but I do not know the answer to this. The pinmux spreadsheet is probably the way to go, but someone who has enabled SPI may want to comment on specific changes.
I switched from pinmux spreadsheet method to this one because the Nvidia documentation for this method doesn’t seem upto date. I had to make too many assumptions with several steps. But I didn’t want to break the board.
I switched to R28.1 and ran the following command:
sudo ./flash.sh -r -d tegra210-jetson-tx1-p2597-2180-a01-devkit-gpio-new.dtb jetson-tx1 mmcblk0p1
Now
sudo cat /sys/kernel/debug/tegra_gpio
gives the right results. Thank you for the help.