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
- Main CPU
- BPMP
- Boot Power Management Processor
- ARM7
- Boot Power Management Processor
- 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
- https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3271/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/bootloader_secure_boot.html
- https://www.brainshark.com/1/player/nvidia?dm=5&pause=1&nrs=1&fb=0&r3f1=ecd6a8fbf7faa2b0e0aac9aba1e0e6f7f8a3b890bfe0eaa6&custom=jetson_security_secureboot
- https://www.thegoodpenguin.co.uk/blog/diving-into-the-nvidia-jetson-nano-boot-process/
- https://www.youtube.com/watch?v=Td4o7b24I28