1、官網下載源碼:
https://developer.nvidia.com/embedded/downloads#?tx=$software,l4t-tx1
解壓u-boot_src.tbz2到本地:
$ tar -xvjf u-boot_src.tbz2
$ cd u-boot/
2、u-boot修改與編譯
設置環境變量:
$ export ARCH=arm
$ export CROSS_COMPILE=<your_toolchain_location>
例子:export CROSS_COMPILE=/opt/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnun/bin/aarch64-linux-gnu-
配置和編譯
$ make distclean
$ make p2371-2180_defconfig
$ make menuconfig
可以根據需要進行配置,然後編譯
$ make
編譯結果:
3、u-boot燒寫:
將編譯結果u-boot, u-boot.bin, u-boot-dtb.bin, u-boot.dtb 這4個文件拷貝到~/Linux_for_Tegra/bootloader/t210ref/p2371-2180/
建議將原有的u-boot文件放在文件夾uboot_backup中,作爲錯誤恢復文件使用。
將devkit運行在recover模式,然後在host主機中~/Linux_for_Tegra/目錄運行下面命令進行燒寫u-boot:
$ sudo ./flash.sh -k EBT jetson-tx1 mmcblk0p1
燒寫後,target重啓:
完。
4、編譯遇到的問題:
1)、提示error:bad value (armv8-a) for -march=switch
原因是沒有arm64,應該設置成ARCH=arm
2)、提示缺少compiler-gcc6.h
由於用的是gcc6.3 版本編譯器,需要這個最新的文件。網上下載然後放在~/u-boot/include/linux/中
3)、提示dtc版本太舊了
解決方法,安裝最新device-tree-compiler:
$ sudo apt-get install device-tree-compiler
安裝後就可以成功編譯。