Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
以下要先準備的事項:
網址: https://developer.nvidia.com/embedded/linux-tegra
wget https://developer.nvidia.com/embedded/dlc/r32-3-1_Release_v1.0/t186ref_release_aarch64/Tegra186_Linux_R32.3.1_aarch64.tbz2wget https://developer.nvidia.com/embedded/dlc/r32-3-1_Release_v1.0/Sources/T186/public_sources.tbz2tar xf Tegra186_Linux_R32.3.1_aarch64.tbz2
tar xf public_sources.tbz2
source code 的 tar 包,解壓縮後會位在 Linux_for_Tegra/source/public/
https://forums.developer.nvidia.com/t/problem-flashing-u-boot-on-to-tx2-emmc/111601下載 toolchain:
wget http://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
將 toolchain 解壓縮在 opt/linaro 裡面
sudo mkdir /opt/linaro
sudo tar -C /opt/linaro -xf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
安裝可能會用到的套件
sudo apt update
sudo apt install flex device-tree-compiler
解壓縮原始碼
cd Linux_for_Tegra/source/
mkdir u-boot_src
tar -C u-boot_src/ -xf public/u-boot_src.tbz2
cd u-boot_src/u-boot/
設定toolchain的環境變數
export CROSS_COMPILE=/opt/linaro/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
重新編譯
make distclean
make p2771-0000-500_defconfig
make
將產生的u-boot.bin 檔 copy 到 flash.sh 將會讀取的目錄
cp u-boot.bin ../../../bootloader/t186ref/p2771–0000/500/
將TX2板子連接電腦並進入recovery mode,並連接 serial console 以監看 log
再使用flash.sh寫入 TX2 板子
cd ../../../
sudo ./flash.sh -r -k kernel jetson-tx2 mmcblk0p1
驗證:
將 source code 做些修改
vim common/board_info.c
在 int show_board_info(void) 這個 function 中加入一行
printf(“HELLO THERE~~~~~~~~~~~~~~~~\n”);
存檔,重新編譯並flash一次
查看 serial console 若有看到加入的文字
表示 flash 進去的u-boot.bin 確實是自行編譯過的。
然後,官方在以下網址指出:(Flashing U-Boot Only)
由此可知 u-boot 是跟 kernel 在同一個partition,所以在燒寫的時候應該是kernel 和 u-boot 是一起的。但是照著文件下 -k LNX 參數會有錯誤發生,看了以下連結才知道要下 -r -k kernel
此外,眼尖的話在操作過程會發現source目錄下有一些 script 檔,這些都是可以使用的,像是
nv_src_build.sh
會把全部的 source code 都 build 完。解壓縮後的 u-boot source 也會看到
nvbuild.sh
設定好它需要的環境變數後就可以直接一鍵執行編譯 u-boot 。