ユーザ用ツール

サイト用ツール


u-bootのカスタマイズ

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
u-bootのカスタマイズ [2022/08/24 11:15] makotoa67u-bootのカスタマイズ [2023/06/16 14:08] (現在) – [U-Bootのビルド] makotoa67
行 2: 行 2:
  
 Jetson TX2 NX Moduleで、U-BootのTX2 NX向けバージョンのバグを修正する必要に迫られて、一度、U-Bootを自分でビルドして実際に書き込んで使用したことはあるが、そのときは、詳細な記録を残していなかったので、今回、Jetson Nano Moduleの環境にて、U-Bootのカスタマイズ、というか、具体的に変更する必要のあるネタは今のところないので、とりあえず、自分でビルドしてそれを使ってみるとして、その記録をここに残す。 Jetson TX2 NX Moduleで、U-BootのTX2 NX向けバージョンのバグを修正する必要に迫られて、一度、U-Bootを自分でビルドして実際に書き込んで使用したことはあるが、そのときは、詳細な記録を残していなかったので、今回、Jetson Nano Moduleの環境にて、U-Bootのカスタマイズ、というか、具体的に変更する必要のあるネタは今のところないので、とりあえず、自分でビルドしてそれを使ってみるとして、その記録をここに残す。
- 
 ## U-Bootのビルド ## U-Bootのビルド
  
行 22: 行 21:
  
 を参照しつつやってみる。(TX2 NXのときもそうしたはず) を参照しつつやってみる。(TX2 NXのときもそうしたはず)
 +
 +まずは、ダウンロードして展開。
  
 ``` ```
-arioka@beelink-u59:~/work/git$ git clone -n git://nv-tegra.nvidia.com/3rdparty/u-boot.git+$ git clone -n git://nv-tegra.nvidia.com/3rdparty/u-boot.git
 Cloning into 'u-boot'... Cloning into 'u-boot'...
 remote: Enumerating objects: 691094, done. remote: Enumerating objects: 691094, done.
行 32: 行 33:
 Receiving objects: 100% (691094/691094), 136.85 MiB | 1.46 MiB/s, done. Receiving objects: 100% (691094/691094), 136.85 MiB | 1.46 MiB/s, done.
 Resolving deltas: 100% (573623/573623), done. Resolving deltas: 100% (573623/573623), done.
-arioka@beelink-u59:~/work/git$ cd u-boot/ +$ cd u-boot/ 
-arioka@beelink-u59:~/work/git/u-boot$ ls +$ git checkout -b jetson_nano_module_u-boot_customization tegra-l4t-r32.7.1
-arioka@beelink-u59:~/work/git/u-boot$ git checkout -b jetson_nano_module_u-boot_customization tegra-l4t-r32.7.1+
 Updating files: 100% (16598/16598), done. Updating files: 100% (16598/16598), done.
 Switched to a new branch 'jetson_nano_module_u-boot_customization' Switched to a new branch 'jetson_nano_module_u-boot_customization'
-arioka@beelink-u59:~/work/git/u-boot$  +$ git branch
-arioka@beelink-u59:~/work/git/u-boot$  +
-arioka@beelink-u59:~/work/git/u-boot$ git branch+
 * jetson_nano_module_u-boot_customization * jetson_nano_module_u-boot_customization
-arioka@beelink-u59:~/work/git/u-boot$ ls+$ ls
 Kbuild      Makefile  board   configs  dts      include  scripts Kbuild      Makefile  board   configs  dts      include  scripts
 Kconfig      README    cmd   disk    env      lib      test Kconfig      README    cmd   disk    env      lib      test
 Licenses     api       common   doc    examples  net      tools Licenses     api       common   doc    examples  net      tools
 MAINTAINERS  arch      config.mk  drivers  fs      post MAINTAINERS  arch      config.mk  drivers  fs      post
-arioka@beelink-u59:~/work/git/u-boot$ git checkout-index -a --prefix=exports/ +$ git checkout-index -a --prefix=exports/ 
-arioka@beelink-u59:~/work/git/u-boot$ ls+$ ls
 Kbuild      Makefile  board   configs  dts      fs       post Kbuild      Makefile  board   configs  dts      fs       post
 Kconfig      README    cmd   disk    env      include  scripts Kconfig      README    cmd   disk    env      include  scripts
 Licenses     api       common   doc    examples  lib      test Licenses     api       common   doc    examples  lib      test
 MAINTAINERS  arch      config.mk  drivers  exports   net      tools MAINTAINERS  arch      config.mk  drivers  exports   net      tools
-arioka@beelink-u59:~/work/git/u-boot$ mv exports/ +$ mkdir ~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/sources 
-.azure-pipelines.yml  Makefile              dts/ +$ mv exports ~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/sources/u-boot 
-.checkpatch.conf      README                env/ +$ cd ~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/sources/u-boot 
-.gitattributes        api/                  examples/ +$ ls
-.github/              arch/                 fs/ +
-.gitignore            board/                include/ +
-.gitlab-ci.yml        cmd/                  lib/ +
-.mailmap              common/               net/ +
-.travis.yml           config.mk             post/ +
-Kbuild                configs/              scripts/ +
-Kconfig               disk/                 test/ +
-Licenses/             doc/                  tools/ +
-MAINTAINERS           drivers/               +
-arioka@beelink-u59:~/work/git/u-boot$ mv exports ~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/ +
-Linux_for_Tegra/     public_sources.tbz2   +
-arioka@beelink-u59:~/work/git/u-boot$ mv exports ~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/source +
-source/         source_sync.sh   +
-arioka@beelink-u59:~/work/git/u-boot$ mv exports ~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/source +
-source/         source_sync.sh   +
-arioka@beelink-u59:~/work/git/u-boot$ mv exports ~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/bootloader/ +
-189992/ +
-BUP_generator.py +
-LICENSE +
-LICENSE.chkbdinfo +
-LICENSE.mkbctpart +
-LICENSE.mkbootimg +
-LICENSE.mkgpt +
-LICENSE.mksparse +
-LICENSE.tegraopenssl +
-LICENSE.tos-mon-only.img.arm-trusted-firmware +
-LICENSE.u-boot +
-NVIDIA_Trademark_License_Addendum_SW.pdf +
-P3448_A00_lpddr4_204Mhz_P987.cfg +
-__pycache__/ +
-bbd.bin +
-bmp.blob +
-boot.img +
-boot.img.sb +
-cboot.bin +
-chkbdinfo +
-crc-flash.xml.bin +
-crc-flash.xml.tmp +
-cvm.bin +
-arioka@beelink-u59:~/work/git/u-boot$ ls ~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/bootloader/ +
-189992 +
-BUP_generator.py +
-LICENSE +
-LICENSE.chkbdinfo +
-LICENSE.mkbctpart +
-LICENSE.mkbootimg +
-LICENSE.mkgpt +
-LICENSE.mksparse +
-LICENSE.tegraopenssl +
-LICENSE.tos-mon-only.img.arm-trusted-firmware +
-LICENSE.u-boot +
-NVIDIA_Trademark_License_Addendum_SW.pdf +
-P3448_A00_lpddr4_204Mhz_P987.cfg +
-__pycache__ +
-bbd.bin +
-bmp.blob +
-boot.img +
-boot.img.sb +
-cboot.bin +
-chkbdinfo +
-crc-flash.xml.bin +
-crc-flash.xml.tmp +
-cvm.bin +
-eks.img +
-emmc_bootblob_ver.txt +
-extlinux.conf +
-flash.xml +
-flash.xml.sb +
-flash_parameters.txt +
-flash_win.bat +
-flashcmd.txt +
-initrd +
-kernel_tegra210-p3448-0000-p3449-0000-b00.dtb +
-kernel_tegra210-p3448-0000-p3449-0000-b00.dtb.sb +
-kernel_tegra210-p3448-0002-p3449-0000-b00.dtb +
-kernel_tegra210-p3448-0002-p3449-0000-b00.dtb.sb +
-l4t_bup_gen.func +
-l4t_initrd.img +
-mkbctpart +
-mkbootimg +
-mkgpt +
-mksparse +
-nv_boot_control.conf +
-nvidia-l4t-bootloader_32.7.2-20220420143418_arm64.deb +
-nvtboot.bin +
-nvtboot_cpu.bin +
-nvtboot_cpu_rb.bin +
-nvtboot_recovery.bin +
-nvtboot_recovery_cpu.bin +
-qspi_bootblob_ver.txt +
-rp4.blob +
-sc7entry-firmware.bin +
-system.img +
-system.img.raw +
-t210ref +
-tegra210-p3448-0000-p3449-0000-b00.dtb +
-tegra210-p3448-0002-p3449-0000-b00.dtb +
-tegrabct +
-tegradevflash +
-tegraflash.py +
-tegraflash_internal.py +
-tegrahost +
-tegraopenssl +
-tegraparser +
-tegrarcm +
-tegrasign +
-tegrasign_v3.py +
-tegrasign_v3_internal.py +
-tegrasign_v3_util.py +
-tos-mon-only.img +
-tos.img +
-warmboot.bin +
-arioka@beelink-u59:~/work/git/u-boot$ ^C +
-arioka@beelink-u59:~/work/git/u-boot$ ls ~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/ +
-README_Autoflash.txt                nvautoflash.sh +
-README_Massflash.txt                nvmassflashgen.sh +
-README_RAPID_BOOT.txt               nvsdkmanager_flash.sh +
-TX1_boot-firmware-redundancy.txt    p2371.conf +
-apply_binaries.sh                   p2597-0000+p2180-1000-24x7.conf +
-bootloader/                         p2597-0000+p2180-1000.conf +
-build_l4t_bup.sh                    p3448-0000-max-spi.conf +
-flash.sh                            p3448-0000.conf.common +
-jetson-nano-2gb-devkit.conf         p3449-0000+p3448-0000-qspi-sd.conf +
-jetson-nano-devkit-emmc.conf        p3449-0000+p3448-0000-qspi.conf +
-jetson-nano-devkit.conf             p3449-0000+p3448-0002.conf +
-jetson-nano-emmc.conf               p3450.conf +
-jetson-nano-qspi-sd.conf            p3542-0000+p3448-0003-qspi-sd.conf +
-jetson-nano-qspi.conf               p3542-0000+p3448-0003-qspi.conf +
-jetson-tx1-devkit.conf              p3542.conf +
-jetson-tx1.conf                     rootfs/ +
-kernel/                             source/ +
-l4t_generate_soc_bup.sh             source_sync.sh +
-nv_tegra/                           tools/ +
-nv_tools/                            +
-arioka@beelink-u59:~/work/git/u-boot$ ls ~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/ +
-README_Autoflash.txt   nvautoflash.sh +
-README_Massflash.txt   nvmassflashgen.sh +
-README_RAPID_BOOT.txt   nvsdkmanager_flash.sh +
-TX1_boot-firmware-redundancy.txt  p2371.conf +
-apply_binaries.sh   p2597-0000+p2180-1000-24x7.conf +
-bootloader   p2597-0000+p2180-1000.conf +
-build_l4t_bup.sh   p3448-0000-max-spi.conf +
-flash.sh   p3448-0000.conf.common +
-jetson-nano-2gb-devkit.conf   p3449-0000+p3448-0000-qspi-sd.conf +
-jetson-nano-devkit-emmc.conf   p3449-0000+p3448-0000-qspi.conf +
-jetson-nano-devkit.conf   p3449-0000+p3448-0002.conf +
-jetson-nano-emmc.conf   p3450.conf +
-jetson-nano-qspi-sd.conf   p3542-0000+p3448-0003-qspi-sd.conf +
-jetson-nano-qspi.conf   p3542-0000+p3448-0003-qspi.conf +
-jetson-tx1-devkit.conf   p3542.conf +
-jetson-tx1.conf   rootfs +
-kernel   source +
-l4t_generate_soc_bup.sh   source_sync.sh +
-nv_tegra   tools +
-nv_tools +
-arioka@beelink-u59:~/work/git/u-boot$ ls ~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/source +
-source/         source_sync.sh   +
-arioka@beelink-u59:~/work/git/u-boot$ mkdir ~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/sources +
-arioka@beelink-u59:~/work/git/u-boot$ mv exports ~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/sources/u-boot +
-arioka@beelink-u59:~/work/git/u-boot$ cd ~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/sources/u-boot +
-arioka@beelink-u59:~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/sources/u-boot$ ls+
 Kbuild      Makefile  board   configs  dts      include  scripts Kbuild      Makefile  board   configs  dts      include  scripts
 Kconfig      README    cmd   disk    env      lib      test Kconfig      README    cmd   disk    env      lib      test
 Licenses     api       common   doc    examples  net      tools Licenses     api       common   doc    examples  net      tools
 MAINTAINERS  arch      config.mk  drivers  fs      post MAINTAINERS  arch      config.mk  drivers  fs      post
-arioka@beelink-u59:~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/sources/u-boot+``` 
 + 
 +次に、ビルド。環境変数を設定して、makeなど。 
 + 
 +``` 
 +$ export CROSS_COMPILE=$HOME/l4t-gcc/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- 
 +$ make distclean 
 +$ make p3450-0000_defconfig 
 +$ make 
 +``` 
 + 
 +無事にmakeできたっぽい。(っぽいと書くのは、もちろん、単にmakeして、エラーらしきメッセージが出なかっただけだから) 
 + 
 +ちなみに、32.6.1のときのTX2 NX向けのバグだったところをみると、 
 + 
 +``` 
 +$ grep kernel_addr_r_size include/configs/p3636-0001.h  
 + "kernel_addr_r_size=08000000\0"
 +``` 
 + 
 +と、この32.7.1ではちゃんと修正されていることが確認できた。 
 + 
 +まだカスタマイズまではいかず。。。 
 + 
 +(2022/10/7) 
 + 
 +2022/9/21に非公開領域にて記録していた内容だが、U-Bootのカスタマイズの一例としてこちらに転記。 
 + 
 +ひとまず、U-Bootのデフォルトのブート順序を変更してみる。 
 + 
 +U-Bootのソース内、include/configs/p3450-0000.h内に定義されている、マクロBOOT_TARGET_DEVICESの定義を以下のように変更した。 
 + 
 +``` 
 +/*#define BOOT_TARGET_DEVICES(func)             \ 
 +        func(MMC, mmc, 1) \ 
 +        func(MMC, mmc, 0) \ 
 +        func(USB, usb, 0) \ 
 +        func(NVME, nvme, 0) \ 
 +        func(PXE, pxe, na) \ 
 +        func(DHCP, dhcp, na)*/ 
 +#define BOOT_TARGET_DEVICES(func) \ 
 +        func(NVME, nvme, 0) \ 
 +        func(MMC, mmc, 1) \ 
 +        func(MMC, mmc, 0) \ 
 +        func(USB, usb, 0) \ 
 +        func(PXE, pxe, na) \ 
 +        func(DHCP, dhcp, na) 
 +``` 
 + 
 +これでmake。 
 +"Before Flashing"に従って所定の場所にコピーした上で、 
 + 
 +``` 
 +$ sudo ./flash.sh -k LNX jetson-nano-devkit-emmc mmcblk0p1 
 +``` 
 + 
 +とやるが、初期状態では無理のようで、一旦は、全体的にflash、つまり、 
 + 
 +``` 
 +$ sudo ./flash.sh -r jetson-nano-devkit-emmc mmcblk0p1 
 +``` 
 + 
 +と実行。 
 +これで、デバッグシリアルから手動でブート順序をSSD優先に変更することなく、そのままデフォルトでSSDからブートできたみたい。OK。 
 + 
 +(2023/6/16) 
 + 
 +今日は、SPI通信ができなくなったJetson Nanoに対して、U-Bootのバージョンを変更してみることにより、SPIが復活するかどうかをみていく。 
 + 
 +というのは、SPI通信が突如できなくなったJetson Nanoに対して、SDK Managerにて初期化してSPIが復活した個体(Jetson Nano #1)と、SDK Managerで初期化してもSPIが復活しなかった個体(Jetson Nano #2)とが発生しているが、Jetson Nano #1と#2とでどちらも同じシステムSDにて起動しているが、その違いが発生している。ということから、は現在のところ、U-Bootのバージョンの違いによってその違いが発生していると推測。 
 + 
 +今回、R32.7.3をベースに作業してみているので、以下のページを参照。 
 + 
 +https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3273/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/uboot_guide.html# 
 + 
 +Downloading and Building U-Bootで、まず、U-bootをダウンロード。 
 + 
 +``` 
 +$ git clone -n git://nv-tegra.nvidia.com/3rdparty/u-boot.git 
 +$ git checkout -b jetson_nano_u-boot_customization tegra-l4t-r32.7.1 
 +$ make distclean 
 +$ make p3450-0000_defconfig 
 +$ make 
 +$ cp u-boot{,.bin,.dtb,-dtb.bin} ~/nvidia/nvidia_sdk/JetPack_4.6.3_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/bootloader/t210ref/p3450-0000/ 
 +sudo ./flash.sh -k LNX jetson-nano-qspi-sd mmcblk0p1
 ``` ```
u-bootのカスタマイズ.1661307332.txt.gz · 最終更新: 2022/08/24 11:15 by makotoa67