Jetson Nano – Boot Sequence

Jetson Nano

This article explains Jetson Nano’s Boot Sequence.

Components

As described in this article, Jetson Nano has two types of storage devices: rewritable internal ROM and SD Card. The “On board flash” in the figure below is the internal ROM that can be rewritten and The “ROM” is the mask ROM, which cannot be rewritten.

  • 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
    • Proprietary; Nvidia distributes binaries
  • TOS
    • Trusted OS
    • Proprietary; Nvidia distributes binaries
  • CBoot
    • Proprietary; Nvidia distributes binaries
  • u-boot
    • u-boot is Open Source and anyone can modify it.
  • initrd & kernel
    • Linux kernel and initrd
  • rootfs
    • Linux Root Filesystem
    • SDRAM
  • SDRAM
    • Main Memory for Main CPU

Boot

Start from ROM

When power is ON, BPMP fetches the ROM and starts executing the program.

Load BCT

ROM loads BCT from On board flash into SysRAM.

Load TegraBoot

ROM loads TegraBoot from on board flash into SysRAM.

Jump to TegraBoot

ROM transitions to TegraBoot on SysRAM.

Load TOS and CBoot

TegraBoot loads TOS and CBoot from on board flash into SDRAM.

Jump to TOS

TegraBoot starts the CPU, and the started CPU fetches the TOS on SDRAM and starts executing the program.

Jump to CBoot

TOS exits the Trust Zone and transitions to CBoot on SysRAM.

Load u-boot

CBoot loads u-boot from on board flash into SDRAM.

Jump to u-boot

CBoot transitions to u-boot on SDRAM.

Load initrd & kernel

u-boot loads initrd and kernel from SD card into SDRAM.

Jump to kernel

u-boot transitions to the kernel on SDRAM.

mount rootfs

The Linux kernel mounts the rootfs and starts the rootfs program.

That’s all.

Reference Articles