Jetson TX1 Downloading and Buidling U-Boot Docs need Help

I just got my Jetson TX1 setup and wish to be able to re-build the kernel to add in a custom PCIe driver that I have. (note I have this all setup and working under a Xilinx Zynq Arm/Linux build that is well documented and easy to follow from their Wiki site)

Simple I am getting quite lost in the supplied documentation and development web site for the Jetson TX1 board.
I have found and downloaded the Terga_Linux_Driver_Package_Documents_R23.2.tar and tried to read it.

Under the Downloading and Building U-Boot section the main problem is it keeps inserting things like <TAG_NAME>, <branch_name> or <your_toolchain_location> and <target_board>. Which is not very helpful at all. There ssems to be no explanation of what needs to be inserted for this labels.
I see at the top it says " is the individual board, such as p2371-2180" , so where I read
“make <target_board>_defconfig” does it mean that <target_board> should be p2371-2180? i.e. p2371-2180_defconfig? In the flash description it says “sudo ./ <target_board> sda1” again so does it mean put p2371-2180 in there also?

I not sure about the <your_toolchain_location> for the complier. Do I need to download a given version of ARM compiler from some unnamed location to use on the host Linux machine. Is it already there perhaps in the Jetpack download, which again seems not to be very clearly document as to everything that is in it.

Anyway I seem to be at a lost reading the documents as to know exactly how to build the Linux boot kernel over and load it. It does appear others have had the same issues from what I see on the Forum. (Perhaps have a Nvidia eng. that has not worked on the project should try and use the Terga_Linux_Driver_Package_Documents_R23.2 and see if they quickly also get lost like I do.)

Last can anyone write down line by line with real command lines of what to do to build the boot kernel and load it on to a SD card that then boots, I am some what afraid to load it into the internal eMMC at this point. Also details on getting the right complier setup to use on the host Linux PC for the build.


I am not at my documents at the moment, so this lacks some detail…

If you do not need your PCIe driver during boot loader stage, don’t build u-boot. The default from the R23.2 driver package is good. Most people never need to build u-boot.

Tool chain is complicated by the current L4T being 32-bit user space and 64-bit kernel space. Next release will be pure 64-bit, but the current requirement means you need the prefix to an entire 64-bit tool chain, and the 32-bit is the compiler only. Thus chain is a prefix to wherever those tools are, the 32-bit side is an exact full path to the gcc compiler.

I use Linaro’s most recent version 5.2. See:

The 64-bit is

The 32-bit is

Wherever you unpack the 32-bit, name the full path to gcc. Wherever you unpack the 64-bit, name the “prefix” of path leading up to all but the final tool name, e.g., full path ending with “-” except for gcc. Sorry, not at my dev docs, don’t remember the full path name.

Target is “jetson-tx1”. Location for eMMC install is mmcblk0p1. I suggest making this the destination even if you want a root file system elsewhere, this makes adding other boots a simple edit of “/boot/extlinux/extlinux.conf”.

The basic make config is “make tegra210_defconfig”. The Tegra X1 on this module is the tegra21x series, specifically the tegra210.

There were a couple of minor edits for the compile to succeed…once again my notes are not available, but can find them tomorrow (or google the error and answers show up on the forums here). One edit was for -fomit-frame-pointer in the Makefile, another was setting parenthesis around an expression where the newer compilers don’t like the ambiguous statement which older compilers didn’t care about.

Note also that current u-boot does not support the 64-bit decompression so use a kernel “Image” file rather than “zImage”. They are the same file, just one is compressed and the other is not.

For the feedback on how to setup the compile for Jetson board.
In searching around I was able to find build docs at
that goes over setting up the Linaro compliers, code fixes, and building the Image and all that uses the Jetpack download for Jetson TX1.
It quite well written and answered most of my questions.

At this point I was able to insert my custom pcie driver code, build it, and flash to internal eMMC.
I can see the pcie card showing up as a char device over in /dev at this point.