Jetson Nano – Boot Sequence

Jetson Nano

この記事ではJetson NanoのBoot Sequenceについて解説します。

Components

こちらの記事でも紹介しましたが、Jetson Nanoには書き換え可能な内部のROMとSD Cardなどのストレージの2つが存在します。下記図のOn board flashが書き換え可能な内部のROMのことです。ROMと書かれた部分は、Mask ROMのことで書き換えはできません。

  • CPU
    • Main CPU
      • Cortex-A57
  • BPMP
    • Boot Power Management Processor
      • ARM7
  • ROM
    • Mask ROM
  • SysRAM
    • Internal RAM for BPMP
  • On board flash
    • Internal ROM
  • BCT
    • Boot Configuration Table
  • TegraBoot
    • プロプライエタリ。Nvidiaがバイナリを配布
  • TOS
    • Trusted OS
    • プロプライエタリ。Nvidiaがバイナリを配布
  • CBoot
    • プロプライエタリ。Nvidiaがバイナリを配布
  • u-boot
    • u-bootはOpen Sourceで誰でも変更可能です。
  • initrd & kernel
    • Linux kernel and initrd
  • rootfs
    • Linux Root Filesystem
    • SDRAM
  • SDRAM
    • Main Memory for Main CPU

Boot

Start from ROM

電源が投入されるとBPMPがROMをフェッチしプログラムの実行を開始します。

Load BCT

ROMはOn board flashからBCTをSysRAMにロードします。

Load TegraBoot

ROMはOn board flashからTegraBootをSysRAMにロードします。

Jump to TegraBoot

ROMはSysRAM上のTegraBootに遷移します。

Load TOS and CBoot

TegraBootはOn board flashからTOSとCBootをSDRAMにロードします。

Jump to TOS

TegraBootはCPUを開始し、開始されたCPUはSDRAM上のTOSをフェッチしプログラムの実行を開始します。

Jump to CBoot

TOSはTrust Zoneから抜けSysRAM上のCBootに遷移します。

Load u-boot

CBootはOn board flashからu-bootをSDRAMにロードします。

Jump to u-boot

CBootはSDRAM上のu-bootに遷移します。

Load initrd & kernel

u-bootはSD cardからinitrdとkernelをSDRAMにロードします。

Jump to kernel

u-bootはSDRAM上のkernelに遷移します。

mount rootfs

Linux kernelはrootfsをマウントしrootfsのプログラムを開始します。

以上です。

参考記事